Show interface status
mds9506-1# show interface brief ------------------------------------------------------------------------------- Interface Vsan Admin Admin Status SFP Oper Oper Port Mode Trunk Mode Speed Channel Mode (Gbps) ------------------------------------------------------------------------------- fc1/1 1 E on trunking swl TE 8 -- fc1/2 1 F on notConnected swl -- -- -- fc1/3 1 F off up swl F 8 -- fc1/4 1 F off up swl F 8 -- fc1/5 1 F off up swl F 4 -- fc1/6 1 F off up swl F 8 -- fc1/7 1 F off up swl F 8 -- fc1/8 1 F on notConnected swl -- -- -- fc1/9 1 F off up swl F 8 -- fc1/10 1 F off up swl F 8 -- fc1/11 1 F on notConnected swl -- -- -- fc1/12 1 F off up swl F 8 -- fc1/13 1 F off up swl F 8 -- fc1/14 1 F on notConnected swl -- -- -- fc1/15 1 F off up swl F 4 -- fc1/16 1 F off up swl F 8 --
Run both commands, the first for standard stats and the second for debug. The debug command is a hidden one
mds9506-1# clear counters interface all mds9506-1# debug system internal clear-counters all
I only have Cisco switches in my infrastructure (it has been a long time since I used a McDATA or Brocade) so this is only relevent to the Cisco switches. With Cisco you can configure all of your WWN aliases and zones before hand in a SAN-OS config text file and then upload that to the switch using the 'copy ftp:configfile.txt running-config' command.
https://community.emc.com/thread/97413?start=0&tstart=0
http://en.kioskea.net/faq/28828-sending-cisco-commands-sent-via-ssh-telnet
mdssw-1# show flogi database -------------------------------------------------------------------------------- INTERFACE VSAN FCID PORT NAME NODE NAME -------------------------------------------------------------------------------- fc1/3 1 0xaa0660 50:05:07:63:0b:13:c1:0d 50:05:07:63:0b:ff:c1:0d [ds8100_I0233] fc1/4 1 0xaa08c0 10:00:00:00:c9:c6:20:a4 20:00:00:00:c9:c6:20:a4 [nim_p0]
Step: 1 Add interface to the target VSAN
vsan database vsan 10 interface fc1/1 exit
Step: 2 Create fcalias
fcalias name host vsan 10 member pwwn 10:00:00:00:d9:81:4f:ba exit
Step: 3 Create Zone Assuming we are zoning to a existing member, say ‘vmax_3ab’ for example
zone name zn_host_vmzx_3ab vsan 10 member fcalias host member fcalias vmax_3ab exit
Step: 4 Add zone to zoneset
zoneset name zoneset1 vsan 10 member zn_host_vmzx_3ab exit
Step: 5 Activate zoneset
zoneset distribute vsan 10 zoneset activate name zoneset1 vsan 10
Step: 6 Commit
zone commit vsan 10 end
Step: 7 Copy running config to start-up config
copy run start
Step: 8 Verification
show zone name zn_host_vmzx_3ab
switch(config)# interface fc slot/port Selects a specific interface by slot and port. switch(config-if)# no shutdown Enables the interface. switch(config)# interface mgmt0 switch(config-if)# no shutdown switch(config-if)# ip address address netmask Defines the IP address and the network mask. switch(config-if)# switchport description description Defines an interface description. Enter a description of 80 characters or less. switch(config)# ip default-gateway destination-ip-address switch(config)# ip route destination-ip-address destination-prefix-mask nexthop-destination-ip-address Defines default gateway and static routes.
cat mkzone.sh #!/bin/sh # # mkzone.sh - Utility that will take a config file and generate a # procedure that can be used for Change Management as well # as cut/pasted into an ssh session to configure. # Script is able to be run on unix/linux platforms and # inside Cygwin on Windows. # # Usage: mkzone.sh <mkzone_config_file> # # Version: 0.50 # Date: 12/28//2011 # # **************************************************************************** # "THE BEER-WARE LICENSE" (Revision 42): # johnny dot mastin at gmail dot com wrote this file. As long as you retain # this notice you can do whatever you want with this stuff. If we meet some # day, and you think this stuff is worth it, you can buy me a beer in return. # **************************************************************************** # # # Condense the config file. Get rid of blank lines and comments. if [ ! -f ${1:-CONFIG} ]; then echo "ERROR: Config file ${1} not found." echo "Usage: mkzone.sh <mkzone_config_file>" echo "" exit 1 fi cat ${1} | egrep -v "^$|^#" > /tmp/zones.config.$$ CONFIG=/tmp/zones.config.$$ # Set some variables. VSAN=`grep "^VSAN," ${CONFIG} | cut -d, -f2` SWITCH_NAME=`grep "^SwitchName," ${CONFIG} | cut -d, -f2` ZONESET_NAME=`grep "^ZonesetName," ${CONFIG} | cut -d, -f2` ZONE_BY=`grep "^ZoneBy," ${CONFIG} | cut -d, -f2` DATE=`date '+%Y%m%d'` # Give disclaimer to say the person should check these configs. echo "*******************************************" echo "** NOTE **" echo "*******************************************" echo "Before adding this to Change Management and executing," echo "please double-check for accuracy as well as remove" echo "any devalias lines for devices that already exist" echo "in the database. This also applies to the backout" echo "procedures." echo "" echo "This note should be omitted from Change Management." echo "Actual Procedure/Backout follows below." echo "" echo "" echo "" echo "cut here==========8<-----------------------" echo "" echo "" echo "" # Spit out some procedures for Change Management. echo "*******************************************" echo "** Procedure **" echo "*******************************************" echo "" echo "" echo "** Login to switch ${SWITCH_NAME}" echo "** Enter the following commands:" echo "copy run start" echo "copy run bootflash:pre-${DATE}" echo "config t" echo "" echo "" # Create the devaliases. echo "device-alias database" for TYPE in SERVER ARRAY SWITCH do for DEVICE in `grep "^${TYPE}" ${CONFIG} | cut -d, -f2| sort -u` do DEVICE_WWN=`grep ",${DEVICE}," ${CONFIG} | cut -d, -f3 | head -1` echo "device-alias name ${DEVICE} pwwn ${DEVICE_WWN}" done done echo "exit" echo "device-alias commit" echo "" # Create all of the zones for TYPE in `grep ARRAY ${CONFIG} | cut -d"," -f1 | cut -c6- | sort -u` do SERVER_LIST=`grep "^SERVER${TYPE}," ${CONFIG} | cut -d, -f2` for SERVER in ${SERVER_LIST} do SERVER_WWN=`grep ",${SERVER}," ${CONFIG} | cut -d, -f3 | head -1` ARRAY_LIST=`grep "^ARRAY${TYPE}" ${CONFIG} | cut -d, -f2` for ARRAY in ${ARRAY_LIST} do ARRAY_WWN=`grep ",${ARRAY}," ${CONFIG} | cut -d, -f3 | head -1` echo "zone name ${SERVER}_${ARRAY} vsan ${VSAN}" case ${ZONE_BY} in "pwwn") echo " member pwwn ${SERVER_WWN}" echo " member pwwn ${ARRAY_WWN}" ;; "devalias") echo " member device-alias ${SERVER}" echo " member device-alias ${ARRAY}" ;; *) echo " member pwwn ${SERVER_WWN}" echo " member pwwn ${ARRAY_WWN}" ;; esac done done done echo "exit" echo "" # If you are modifying an existing zoneset for a vsan, it is a good idea # to copy it to a new zoneset name and activate the new zoneset. That # way, the old zoneset is avaialable for fallback. ZONESET_CLONE=`grep "^ZonesetClone," ${CONFIG} | cut -d, -f2` if [ ${ZONESET_CLONE} != "NOT_IN_USE" ]; then echo "zoneset clone ${ZONESET_CLONE} ${ZONESET_NAME} vsan ${VSAN}" fi # Create the active zoneset and activate it echo "zoneset name ${ZONESET_NAME} vsan ${VSAN}" for TYPE in `grep ARRAY ${CONFIG} | cut -d"," -f1 | cut -c6- | sort -u` do SERVER_LIST=`grep "^SERVER${TYPE}," ${CONFIG} | cut -d, -f2` for SERVER in ${SERVER_LIST} do ARRAY_LIST=`grep "^ARRAY${TYPE}" ${CONFIG} | cut -d, -f2` for ARRAY in ${ARRAY_LIST} do echo "member ${SERVER}_${ARRAY}" done done done echo "exit" echo "" echo "zoneset activate name ${ZONESET_NAME} vsan ${VSAN}" echo "" echo "" echo "copy run start" echo "copy run bootflash:post-${DATE}" echo "" echo "** Logout of switch ${SWITCH_NAME}" echo "" echo "" echo "*******************************************" echo "** Backout Procedure **" echo "*******************************************" echo "" echo "" echo "** Login to switch ${SWITCH_NAME}" echo "** Enter the following commands:" echo "copy run start" echo "copy run bootflash:pre-${DATE}" echo "config t" echo "" echo "" # If you have an old zoneset, activate that. if [ ${ZONESET_CLONE} != "NOT_IN_USE" ]; then echo "zoneset activate name ${ZONESET_CLONE} vsan ${VSAN}" echo "no zoneset name ${ZONESET_NAME} vsan ${VSAN}" else echo "no zoneset activate name ${ZONESET_NAME} vsan ${VSAN}" fi echo "" # Delete all of the zones for TYPE in `grep ARRAY ${CONFIG} | cut -d"," -f1 | cut -c6- | sort -u` do SERVER_LIST=`grep "^SERVER${TYPE}," ${CONFIG} | cut -d, -f2` for SERVER in ${SERVER_LIST} do ARRAY_LIST=`grep "^ARRAY${TYPE}" ${CONFIG} | cut -d, -f2` for ARRAY in ${ARRAY_LIST} do echo "no zone name ${SERVER}_${ARRAY} vsan ${VSAN}" done done done echo "" # Remove the devaliases. echo "device-alias database" for TYPE in SERVER ARRAY SWITCH do for DEVICE in `grep "^${TYPE}" ${CONFIG} | cut -d, -f2 | sort -u` do DEVICE_WWN=`grep ",${DEVICE}," ${CONFIG} | cut -d, -f3 | head -1` echo "no device-alias name ${DEVICE} pwwn ${DEVICE_WWN}" done done echo "exit" echo "device-alias commit" echo "" echo "" echo "copy run start" echo "copy run bootflash:post-${DATE}" echo "" echo "** Logout of switch ${SWITCH_NAME}" # Clean up and exit. #rm /tmp/zones.config.$$ exit 0
http://en.kioskea.net/faq/28828-sending-cisco-commands-sent-via-ssh-telnet
This is my modifications for AIX…and other I check on which fabric the port is loggin and the propose a zoning based on predefined storage, also add a second port for AIX servers using NPIV.
root@nimbcp - /root/scripts/san > cat config_file
# Choose an array in ds8800-prd ds8800-bcp svc-prd svc-bcp # ARRAYx,<storage> # the array number and server number must match ARRAY1,svc-bcp ARRAY2,svc-bcp # add SERVERx,<fcalias>,<WWN> # WWN can be with different formats: C05076004B64002A c0:50:76:00:4b:64:00:2a SERVER1,v_prodaix1_p0,c0507604669b0050 SERVER1,v_prodaix1_p1,c0507604670b0052 SERVER1,v_prodaix1_p2,c0507604670b0054 SERVER1,v_prodaix1_p3,c0507604670b0056
root@nim - /root/scripts/san > cat mkzone.sh
#!/bin/ksh93 #set -x # # mkzone.sh - Utility that will take a config file and generate a # procedure that can be used for Change Management as well # as cut/pasted into an ssh session to configure. # Script is able to be run on unix/linux platforms and # inside Cygwin on Windows. # # Usage: mkzone.sh <mkzone_config_file> # # Version: 0.50 # Date: 12/28//2011 # # **************************************************************************** # "THE BEER-WARE LICENSE" (Revision 42): # johnny dot mastin at gmail dot com wrote this file. As long as you retain # this notice you can do whatever you want with this stuff. If we meet some # day, and you think this stuff is worth it, you can buy me a beer in return. # **************************************************************************** # #show flogi database # # Condense the config file. Get rid of blank lines and comments. if [ ! -f ${1:-CONFIG} ]; then echo "ERROR: Config file ${1} not found." echo "Usage: mkzone.sh <mkzone_config_file>" echo "" exit 1 fi logpath=/root/scripts/san/logs errlog=$logpath/errlog cat ${1} | egrep -v "^$|^#" > $logpath/zones.config.$$ CONFIG=$logpath/zones.config.$$ CONFIG1=$logpath/zones.config.ok HOST_FABRIC_A=mdssw-1 HOST_FABRIC_B=mdssw-4 ALL_HOST_A="mdssw-1 mdssw-3" ALL_HOST_B="mdssw-2 mdssw-4" LOGIN=admin # Set some variables. #VSAN=`grep "^VSAN," ${CONFIG} | cut -d, -f2` #SWITCH_NAME=`grep "^SwitchName," ${CONFIG} | cut -d, -f2` #ZONESET_NAME=`grep "^ZonesetName," ${CONFIG} | cut -d, -f2` #ZONE_BY=`grep "^ZoneBy," ${CONFIG} | cut -d, -f2` DATE=`date '+%Y%m%d'` if [ -e $errlog ] then rm $errlog fi convert_wwn () { wwn=$1 wwn_nodot=$(echo $wwn | sed 's/://g;s/\.//g' | tr 'a-z' 'A-Z') wwn_dot=$(echo $wwn_nodot | sed 's/../&:/g;s/:$//' | tr 'A-Z' 'a-z') echo $wwn_dot } ssh $LOGIN@mdssw-1 "show flogi database" | grep : | grep fc > $logpath/flogi.A 2>/dev/null ssh $LOGIN@mdssw-3 "show flogi database" | grep : | grep fc >> $logpath/flogi.A 2>/dev/null ssh $LOGIN@mdssw-2 "show flogi database" | grep : | grep fc > $logpath/flogi.B 2>/dev/null ssh $LOGIN@mdssw-4 "show flogi database" | grep : | grep fc >> $logpath/flogi.B 2>/dev/null grep "^ARRAY" ${CONFIG} > $CONFIG1.A grep "^ARRAY" ${CONFIG} > $CONFIG1.B for line in $(grep "^SERVER" ${CONFIG}) do DEVICE_WWN=$(echo $line | cut -d, -f3) ## This is specific for AIX to add the second WWN for each FC port LAST_DIGIT=$(echo $DEVICE_WWN | rev | cut -c1 | rev) BEGIN_DIGITS=$(echo $DEVICE_WWN | rev | cut -c2- | rev) LAST_DIGIT1=$((0x$LAST_DIGIT + 1)) LAST_DIGIT_HEX=$(echo 16o${LAST_DIGIT1}p |dc) DEVICE_WWN1=$(echo ${BEGIN_DIGITS}${LAST_DIGIT_HEX}) ## End This is specific for AIX to add the second WWN for each FC port PWWN=$(convert_wwn $DEVICE_WWN) fabric=$(grep "$PWWN" $logpath/flogi.* | cut -d'.' -f2- | cut -d':' -f1) line1=$(echo $line | cut -d',' -f1-2) echo $fabric | egrep "A|B" > /dev/null if [ $? -ne 0 ] then echo "$PWWN doesn't exists on a FABRIC" else echo $line1,$PWWN,$fabric >> $CONFIG1.$fabric fi done for connect in ${HOST_FABRIC_A} ${HOST_FABRIC_B} do # Backup of config before ssh $LOGIN@$connect "show zoneset active" > $logpath/zoneset_active_before.$connect.$DATE 2>/dev/null ssh $LOGIN@$connect "show startup-config" > $logpath/backup_config.$connect.$DATE 2>/dev/null ssh $LOGIN@$connect "show zoneset brief active" > $logpath/zoneset.$connect 2>/dev/null VSAN=$(grep "zoneset name" $logpath/zoneset.$connect | awk '{print $5}') ZONESET_NAME=$(grep "zoneset name" $logpath/zoneset.$connect | awk '{print $3}') echo $ZONESET_NAME | grep "cfg_A" > /dev/null 2>&1 if [ $? -eq 0 ] then CONFIGOK="${CONFIG1}.A" else echo $ZONESET_NAME | grep "cfg_B" > /dev/null 2>&1 if [ $? -eq 0 ] then CONFIGOK="${CONFIG1}.B" else echo "ERROR fabric not found" exit 1 fi fi banner "$connect" echo "** Login to switch ${connect}" echo "** Enter the following commands:" echo "***************************************************" echo "" echo "ssh $LOGIN@${connect}" echo "copy run start" # echo "copy run bootflash:pre-${DATE}" echo "" # Check alias ssh $LOGIN@$connect "show fcalias" > $logpath/fcalias.$connect 2>/dev/null # Create the fcaliases. echo "config t" for TYPE in SERVER do for DEVICE in $(grep "^${TYPE}" ${CONFIGOK} | cut -d, -f2| sort -u) do DEVICE_WWN=$(grep ",${DEVICE}," ${CONFIGOK} | cut -d, -f3 | head -1) PWWN=$(convert_wwn $DEVICE_WWN) PWWN1=$(convert_wwn $DEVICE_WWN1) #echo "$PWWN" grep "fcalias $DEVICE " $logpath/fcalias.$connect > /dev/null 2>&1 if [ $? -eq 0 ] then grep -p "$PWWN" $logpath/fcalias.$connect > /dev/null 2>&1 if [ $? -eq 0 ] then echo "FCalias $DEVICE $DEVICE_WWN still exists" >> $errlog else echo "FCalias $DEVICE still exists but with wrong WWN" >> $errlog fi else grep $PWWN $logpath/fcalias.$connect > /dev/null 2>&1 if [ $? -eq 0 ] then echo "WWN $PWWN still exists" >> $errlog grep -p "$PWWN" $logpath/fcalias.$connect >> $errlog fi echo "fcalias name ${DEVICE} vsan ${VSAN}" echo "member pwwn ${PWWN}" echo "member pwwn ${PWWN1}" fi done done echo "exit" echo "" # Create all of the zones echo "config t" ZONE_ADD="" for line in $(grep "^SERVER" ${CONFIGOK}) do SERVER=$(echo $line | cut -d, -f2) NUMBER=$(echo $line | cut -d, -f1 | sed 's/SERVER//') for storage in $(grep "^ARRAY${NUMBER}," ${CONFIGOK} | cut -d, -f2- | sed 's/,/\ /g') do case ${storage} in svc-prd) word1=svc3-prd ; word2=svc4-prd ;; svc-bcp) word1=svc3-bcp ; word2=svc4-bcp ;; ds8800-prd) word1=ds8800-prd ; word2=ds8800-prd ;; ds8800-bcp) word1=ds8800-bcp ; word2=ds8800-bcp ;; esac for ARRAY in $(egrep "$word1|$word2" $logpath/fcalias.$connect | awk '{print $3}' | grep -v "_mm_") do echo "zone name ${SERVER}_${ARRAY} vsan ${VSAN}" echo "member fcalias ${SERVER}" echo "member fcalias ${ARRAY}" ZONE_ADD=$(echo "$ZONE_ADD ${SERVER}_${ARRAY}") done done done echo "exit" echo "" # Create the active zoneset and activate it echo "zoneset name ${ZONESET_NAME} vsan ${VSAN}" for ZONEADD in ${ZONE_ADD} do echo "member ${ZONEADD}" done echo "exit" echo "zoneset distribute vsan ${VSAN}" echo "sleep 10" echo "zoneset activate name ${ZONESET_NAME} vsan ${VSAN}" echo "sleep 10" echo "copy run start" # echo "copy run bootflash:post-${DATE}" echo "exit" echo "exit" echo "***************************************************" echo "** Logout of switch ${connect}" # Backup of config after #ssh $LOGIN@$connect "show zoneset active" > $logpath/zoneset_active_after.$DATE 2>/dev/null done if [ -e $errlog ] then echo echo "***** Warning report:" cat $errlog fi # Clean up and exit. rm $CONFIG exit 0
1. Firstly we need to know the specific names of the Zones that we intend to delete. To gather the full list of zone members within a Zoneset run show zoneset vsan xx. The output will return all of the member names for the Zoneset, the output can be reduced if you know the naming conventions associated with the hosts; for example if the Zone names begin with V21212Oracle-1 then issuing the command show zoneset brief | include V21212Oracle-1 will return in this case all the Zones associated with Oracle-1: RZ1
2. To View the active Zones for Oracle-1 within the Zonseset: show zoneset active | include V21212Oracle-1 RZ2
3. Example of Removing half the Zones (Paths) associated with host Oracle-1 from the active Zoneset name vsan10_zs: config t zoneset name vsan10_zs vsan 10 no member V21212Oracle-1_hba1-VMAX40K_9e0 no member V21212Oracle-1_hba1-VMAX40K_11e0 no member V21212Oracle-1_hba2-VMAX40K_7e0 no member V21212Oracle-1_hba2-VMAX40K_5e0
4. Re-activating the Zoneset vsan10_zs after the config changes of removing the specified Zoneset members: zoneset activate name vsan10_zs vsan 10 zone commit vsan 10
5. Finally removing the Zones from the configuration: no zone name V21212Oracle-1_hba1-VMAX40K_9e0 vsan 10 no zone name V21212Oracle-1_hba1-VMAX40K_11e0 vsan 10 no zone name V21212Oracle-1_hba2-VMAX40K_7e0 vsan 10 no zone name V21212Oracle-1_hba2-VMAX40K_5e0 vsan 10 zone commit vsan 10 end copy run start
Confirm configuration conatins the correct Active Zoning: show zoneset brief | include V21212Oracle-1 show zoneset active | include V21212Oracle-1
In this post, I’ll detail some useful commands that can be leveraged to rename Cisco zoning components:
FCALIAS ZONE ZONESET
RENAME ALIAS FOR HOSTS (vsan id of 10):
switch(config)# fcalias rename old-AliasName new-AliasName vsan 10 RENAME ZONES: switch(config)# zone rename old-ZoneName new-ZoneName vsan 10 RENAME ZONESETS: switch(config)# zoneset rename old-ZoneSetName new-ZoneSetName vsan 10
Once complete Activate and Commit these changes:
zoneset activate name vsan10_zs vsan 10 zone commit vsan 10
Displays alias mappings.
switch# show fcalias
Displays zone mappings.
switch# show zone
Displays all zone sets.
switch# show zoneset
Displays the active zone set for each VSAN, including which devices have logged in and are communicating.
switch# show zoneset active
Displays the devices that have logged into the fabric. Retrieve pWWNs for aliases and zoning from this database.
switch# show flogi database
Creates the VSAN with the specified vsan-id range.
switch(config)# vsan database switch(config-vsan-db)# vsan <vsan-id>
Adds a description to a VSAN, where vsan-id is the VSAN and vsan-name is the VSAN description.
switch(config-vsan-db)# vsan <vsan-id> name <vsan-name>
Adds an interface to a VSAN, where vsan-id is the VSAN number and type, slot/port is the interface.
switch(config-vsan-db)# vsan <vsan-id> interface <type slot/port>
Adds a specified range of interfaces into a VSAN from the same line card.
switch(config-vsan-db)# vsan <vsan-id> interface <type slot/port - port>
Lists all VSANs.
switch# show vsan
Lists ports within a VSAN.
switch# show vsan membership
Forces the VSAN to reconfigure without data traffic disruption.
switch(config)# fcdomain restart vsan <vsan-id>
Forces the VSAN to reconfigure with data traffic disruption
switch(config)# fcdomain restart disruptive <vsan vsan-id>
Configures the switch in the specified VSAN to request a preferred domain ID.
switch (config)# fcdomain domain <id> preferred vsan <vsan-id>
Configures the switch in the specified VSAN to take only a specific ID and moves the local interfaces in the VSAN to an isolated state if the domain ID is not granted.
switch(config)# fcdomain domain <id> static vsan <vsan-id>
Displays the devices that have logged into the fabric. Retrieve pWWNs for aliases and zoning from this database.
switch# show flogi database
Displays device name server registration information per VSAN.
switch# show fcns database
Configures an alias mapping for a device where alias-name is the canonical name within the VSAN.
switch(config)# fcalias name <alias-name> vsan <vsan-id>
Defines a mapping of pWWN hh:hh:hh… to the fcalias name. pWWN can be retrieved from the FLOGI or FCNS database.
switch(config-fcalias)# member pwwn <hh:hh:hh…>
Creates a named zone within the VSAN.
switch(config)# zone name <name> vsan <vsan-id>
Adds the node referenced by the named fcalias to the zone.
switch(config-zone)# member fcalias <name>
Adds the device referenced by pWWN hh:hh:hh… to the zone.
switch(config-zone)# member pwwn <hh:hh:hh….>
Creates a named zone set within the VSAN and adds a named zone to the zone set.
switch(config)# zoneset name <name> vsan <vsan-id> switch(config-zoneset)# member <name>
Configures the switch to distribute all zone sets rather than just the active zone set for the VSAN.
switch(config)# zoneset distribute full vsan <vsan-id>
Displays alias mappings.
switch# show fcalias
Displays zone mappings.
switch# show zone
Displays all zone sets.
switch# show zoneset
Displays the active zone set for each VSAN, including which devices have logged in and are communicating.
switch# show zoneset active