Back to the main page

Solaris SAN LUNs info (with Veritas version 6 as file system)

Here is the example of Solaris 10 SPARC system having LUNs from 3PAR external storage.

First, enable multipath support for specific storage, the /kernel/drv/scsi_vhci.conf should have section like:

# For enabling MPxIO support for 3rd party symmetric device need an
# entry similar to following in this file. Just replace the "SUN     SENA"
# part with the Vendor ID/Product ID for the device, exactly as reported by
# Inquiry cmd.
#
device-type-scsi-options-list =
"3PARdataVV" , "symmetric-option";
# "SUN     SENA", "symmetric-option";
#
symmetric-option = 0x1000000;

The 3PARdataVV is taken from format command.
AVAILABLE DISK SELECTIONS:
       0. c4t20110002AC0086D2d2 < 3PARdata-VV-3123 cyl 13795 alt 2 hd 8 sec 304>
          /pci@3,700000/pci@0/pci@1/pci@0/pci@9/SUNW,emlxs@0/fp@0,0/ssd@w20110002ac0086d2,2
       1. c4t20110002AC0086D2d3 < 3PARdata-VV-3123 cyl 13795 alt 2 hd 8 sec 304>
          /pci@3,700000/pci@0/pci@1/pci@0/pci@9/SUNW,emlxs@0/fp@0,0/ssd@w20110002ac0086d2,3

HP/3PAR has below utility to see 3PAR LUNs.
[hostname/tmp]  /usr/local/bin/HP3PARInfo -i 

Device File Name                     Size [MB]       Tgt       Lun                            LUN WWN        VV Name     Code Rev     Serial#
==============================================================================================================================================
/dev/rdsk/c4t20110002AC0086D2d29s2     524288       ---        1d      60002ac0000000000000001d000086d2       VV_0029    3.1.2 MU3    01634514
/dev/rdsk/c4t20110002AC0086D2d28s2     524288       ---        1c      60002ac0000000000000001c000086d2       VV_0028    3.1.2 MU3    01634514
...
/dev/rdsk/c4t20110002AC0086D2d36s2      76800       ---        24      60002ac000000000000000e7000086d2       VV_0231    3.1.2 MU3    01634514
/dev/rdsk/c5t21120002AC0086D2d36s2      76800       ---        24      60002ac000000000000000e7000086d2       VV_0231    3.1.2 MU3    01634514

But with Veritas on the top of 3PAR, below script can be useful (feel free to improve the script and add new features :)
#!/bin/sh
#set -x

# tested only with Solaris 10 and 3PAR

err() {
        echo "\n ERROR: $* \n"
        exit 1
}

# check if you run script as root
[ `id | cut -d= -f3 | cut -d\( -f1` = 0 ] || err "Sorry, you are NOT root ... exiting"

# check if this is solaris 10
[ `uname -a  |awk '{print $3}'` = 5.10 ] || err "The script is only for Solaris 10 ... exiting"

# check if multipathing is enabled
echo Checking multipathing, may take a while ....
mp=`stmsboot -L | head -1 | awk -F: '{print $2}'`
[ "${mp}" = " MPxIO is not enabled" ] && err "Multipathing is disabled, enable it with 'stmsboot -e' ... exiting"

number_of_hba=`fcinfo hba-port | grep "HBA Port WWN" | wc -l | nawk '{print $1}'`
wwn_of_hba=`fcinfo hba-port | grep "HBA Port WWN" | nawk '{print $4}'`
echo Total number of HBA: ${number_of_hba}
echo WWN of all HBA: ${wwn_of_hba}

number_of_hba_fc=`cfgadm -al  |grep fc-fabric  |awk '{print $1}'  |wc -l`
hba_fc_list=`cfgadm -al  |grep fc-fabric  |awk '{print $1}'`
mp_channel=`format < /dev/null | grep 3PARdata | head -1 | awk '{print $2}'  |cut -c1-2`
echo Number of HBA connected to SAN is ${number_of_hba_fc} and Channel are: ${hba_fc_list}
echo Multipath Channel is ${mp_channel}

for i in ${wwn_of_hba}
do
        for j in ${hba_fc_list}
        do
        remote_www=`cfgadm -al | grep ${j} | grep disk | awk '{print $1}' | awk -F: '{print $3}'`
        wwn_hba_fc=`fcinfo remote-port -p ${i} | grep ${remote_www}`
        [ $? -eq 0 ] && echo "HBA WWN ${i} is connected to SAN"
        done
done

printf "\n################################################################################################### \n"
printf "%-37s %-10s %-20s %-20s %-20s\n" "Solaris Disk" "Size(GB)" "VxVM Device" "VxVM Disk" "DG"
printf "################################################################################################### \n"

for i in `luxadm probe | grep Logical | grep /dev/rdsk/${mp_channel}  | awk -F: '{print $2}'`

do
        disk_shortname=`echo ${i} | sed 's#/dev/rdsk/##g'`
        lun_size_mb=`luxadm -v display ${i} | grep capacity | awk '{print $3}'`  # in MB
        lun_size=`(echo "scale=1; ${lun_size_mb}/1024"  |bc -l)` # in GB
        vxvm_device=`vxdisk list ${disk_shortname} | grep devicetag | awk '{print $2}'`
        vxvm_disk=`vxdisk list ${disk_shortname} | grep disk | grep name | awk -F= '{print $2}'  |awk '{print $1}'`
        vxvm_group=`vxdisk list ${disk_shortname} | grep group | grep name | awk '{print $2}' | awk -F= '{print $2}'`
        printf "%-37s %-10s %-20s %-20s %-20s\n" "${i}" "${lun_size}" "${vxvm_device}" "${vxvm_disk}" "${vxvm_group}"

done
exit 0


And the script result is like (so you can see Veritas disk group where LUNs belong to):
[hostname/tmp]  /usr/local/bin/san_sol_info.sh 
Checking multipathing, may take a while ....
Total number of HBA: 6
WWN of all HBA: 10000000c96b1670 10000000c96b1671 10000000c9792f74 10000000c961aa42 10000000c9782d1a 10000000c9782d1b
Number of HBA connected to SAN is 2 and Channel are: c4 c5
Multipath Channel is c4
HBA WWN 10000000c9792f74 is connected to SAN
HBA WWN 10000000c961aa42 is connected to SAN

###################################################################################################
Solaris Disk                          Size(GB)   VxVM Device          VxVM Disk            DG
###################################################################################################
/dev/rdsk/c4t20110002AC0086D2d2s2     16.0       3pardata0_0          dg11_disk001      dg11
/dev/rdsk/c4t20110002AC0086D2d3s2     16.0       3pardata0_0_1        dg12_disk001      dg12
/dev/rdsk/c4t20110002AC0086D2d4s2     32.0       3pardata0_0_2        dgswap_disk001       dgswap
/dev/rdsk/c4t20110002AC0086D2d5s2     32.0       3pardata0_0_3        dg02_disk001   dg02
/dev/rdsk/c4t20110002AC0086D2d6s2     32.0       3pardata0_0_4        dg03_disk001   dg03
/dev/rdsk/c4t20110002AC0086D2d7s2     96.0       3pardata0_0_5        dg03cl1_disk001      dg03cl1
/dev/rdsk/c4t20110002AC0086D2d9s2     222.0      3pardata0_0_7        dg13_disk001      dg13
/dev/rdsk/c4t20110002AC0086D2d10s2    222.0      3pardata0_0_8        dg13_disk002      dg13
/dev/rdsk/c4t20110002AC0086D2d11s2    222.0      3pardata0_0_9        dg13_disk003      dg13
/dev/rdsk/c4t20110002AC0086D2d12s2    222.0      3pardata0_0_10       dg13_disk004      dg13
/dev/rdsk/c4t20110002AC0086D2d13s2    224.0      3pardata0_0_11       dg07_disk001      dg07
/dev/rdsk/c4t20110002AC0086D2d14s2    224.0      3pardata0_0_12       dg07_disk002      dg07
/dev/rdsk/c4t20110002AC0086D2d15s2    224.0      3pardata0_0_13       dg07_disk003      dg07
/dev/rdsk/c4t20110002AC0086D2d16s2    224.0      3pardata0_0_14       dg07_disk004      dg07
/dev/rdsk/c4t20110002AC0086D2d17s2    512.0      3pardata0_0_15       dg13_disk005      dg13
/dev/rdsk/c4t20110002AC0086D2d18s2    512.0      3pardata0_0_16       dg13_disk006      dg13
/dev/rdsk/c4t20110002AC0086D2d19s2    512.0      3pardata0_0_17       dg13_disk007      dg13
/dev/rdsk/c4t20110002AC0086D2d20s2    512.0      3pardata0_0_18       dg13_disk008      dg13
/dev/rdsk/c4t20110002AC0086D2d21s2    512.0      3pardata0_0_19       dg13_disk009      dg13
/dev/rdsk/c4t20110002AC0086D2d22s2    512.0      3pardata0_0_20       dg13_disk010      dg13
/dev/rdsk/c4t20110002AC0086D2d23s2    512.0      3pardata0_0_21       dg13_disk011      dg13
/dev/rdsk/c4t20110002AC0086D2d24s2    512.0      3pardata0_0_22       dg13_disk012      dg13
/dev/rdsk/c4t20110002AC0086D2d25s2    512.0      3pardata0_0_23       dg13_disk013      dg13
/dev/rdsk/c4t20110002AC0086D2d26s2    512.0      3pardata0_0_24       dg13_disk014      dg13
/dev/rdsk/c4t20110002AC0086D2d27s2    512.0      3pardata0_0_25       dg13_disk015      dg13
/dev/rdsk/c4t20110002AC0086D2d28s2    512.0      3pardata0_0_26       dg13_disk016      dg13
/dev/rdsk/c4t20110002AC0086D2d29s2    512.0      3pardata0_0_27       dgtemp_disk001       dgtemp
/dev/rdsk/c4t20110002AC0086D2d30s2    512.0      3pardata0_0_28       dgtemp_disk002       dgtemp
/dev/rdsk/c4t20110002AC0086D2d31s2    512.0      3pardata0_0_29       dgtemp_disk003       dgtemp
/dev/rdsk/c4t20110002AC0086D2d32s2    512.0      3pardata0_0_30       dgtemp_disk004       dgtemp
/dev/rdsk/c4t20110002AC0086D2d33s2    75.0       3pardata0_0_31       dg10_disk002      dg10
/dev/rdsk/c4t20110002AC0086D2d34s2    75.0       3pardata0_0_32       dg10_disk003      dg10
/dev/rdsk/c4t20110002AC0086D2d35s2    75.0       3pardata0_0_33       dg10_disk004      dg10
/dev/rdsk/c4t20110002AC0086D2d36s2    75.0       3pardata0_0_34       dg10_disk005      dg10

Look for Veritas version:
#  pkginfo -l VRTSvxvm | grep -i version 
   VERSION:  6.0.100.000,REV=08.01.2012.11.13

#  modinfo | grep vx 
129 7b74ce30   1190 350   1  vxspec (VxVM 6.0.1 control/status drive)
130 7c002000 28f758 349   1  vxio (VxVM 6.0.1 I/O driver)
131 7b258000  57900 348   1  vxdmp (VxVM 6.0.1 Multipathing Driver)
221 7affa000   22f0 351   1  vxlo (Veritas Loopback Driver 0.1)
222 7b2b1300    db0 352   1  vxportal (VxFS 6.0.100.000 portal driver)
223 7c26c000 241ee0  21   1  vxfs (VxFS 6.0.100.000 SunOS 5.10)

See Veritas DG:
# vxdg list
NAME         STATE           ID
dgswap       enabled,cds          1390003875.96.hostname
dgtemp       enabled,cds          1391622109.64.hostname
dg02         enabled,cds          1390004803.98.hostname
dg03      enabled,cds          1390004827.100.hostname
dg03      enabled,cds          1390004848.102.hostname
dg07      enabled,cds          1390004956.110.hostname
dg10      enabled,cds          1390004882.104.hostname
dg11      enabled,cds          1390004907.106.hostname
dg12      enabled,cds          1390004924.108.hostname
dg13      enabled,cds          1390005625.112.hostname

Some other useful commands to list storage info:
#  vxdmpadm gettune all 
            Tunable               Current Value  Default Value
------------------------------    -------------  -------------
dmp_cache_open                           on               on
dmp_daemon_count                         10               10
dmp_delayq_interval                      15               15
dmp_fast_recovery                        on               on
dmp_health_time                          60               60
dmp_log_level                             1                1
dmp_low_impact_probe                     on               on
dmp_lun_retry_timeout                     0                0
dmp_path_age                            300              300
dmp_pathswitch_blks_shift                 9                9
dmp_probe_idle_lun                       on               on
dmp_probe_threshold                       5                5
dmp_restore_cycles                       10               10
dmp_restore_interval                    300              300
dmp_restore_policy             check_disabled   check_disabled
dmp_restore_state                   enabled          enabled
dmp_retry_count                           5                5
dmp_scsi_timeout                         30               30
dmp_sfg_threshold                         1                1
dmp_stat_interval                         1                1
dmp_monitor_ownership                    on               on
dmp_native_multipathing                 off              off
dmp_monitor_fabric                       on               on
dmp_monitor_osevent                      on               on
dmp_native_support                      off              off

#  vxdmpadm listctlr all 
CTLR-NAME       ENCLR-TYPE      STATE      ENCLR-NAME
=====================================================
c4              3PARDATA        ENABLED      3pardata0
c5              3PARDATA        ENABLED      3pardata0
c6              Disk            ENABLED      disk

#  vxdmpadm listenclosure all 
ENCLR_NAME        ENCLR_TYPE     ENCLR_SNO      STATUS       ARRAY_TYPE     LUN_COUNT
=======================================================================================
disk              Disk           DISKS                CONNECTED    Disk        4
3pardata0         3PARDATA       34514                CONNECTED    A/A        35

#  vxdmpadm listenclosure 3pardata0 
ENCLR_NAME        ENCLR_TYPE     ENCLR_SNO      STATUS       ARRAY_TYPE     LUN_COUNT
===================================================================================
3pardata0         3PARDATA       86D2                 CONNECTED    A/A        33

#  vxdmpadm getdmpnode nodename=c6t60002AC00000000000000237000086D2d0 
NAME                 STATE        ENCLR-TYPE   PATHS  ENBL  DSBL  ENCLR-NAME
==============================================================================
3pardata0_0          ENABLED      3PARDATA     1      1     0     3pardata0

Back to the main page