For many environments, a Qlogic switch can be as simple as plugging it into the wall to get working. The web interface is a great tool and appropriate for many a configuration, but the interactive shell environment on the switches gives a few more options.
Let’s first get logged into the switch. The switch will have an IP address, so telnet into that address (I’ll use the my IP rather than the default IP of 10.0.0.1 that the switches ship with):
telnet 192.168.210.87
Once you provide a password you’ll be placed into an Interactive Command Line Interface SHell environment, which Qlogic calls CLISH.
Establishing connection… Please wait.
*****************************************************
* *
* Command Line Interface SHell (CLISH) *
* *
*****************************************************
SystemDescription SANbox 5600 FC Switch
HostName 5600
EthIPv4NetworkAddr 192.168.210.87
EthIPv6NetworkAddr ab50::2c0:eeaa:fe17:337e
MACAddress 00:c0:dd:07:37:7e
WorldWideName 10:00:00:c0:bd:07:27:74
SerialNumber 0240A00557
SymbolicName CHARLES_HOME_TEST_5600
ActiveSWVersion V7.4.0.16.0
ActiveTimestamp Thu Mar 19 22:20:51 2009
DiagnosticsStatus Passed
LicensedPorts 20
SwitchMode Full Fabric
This switch supports a dual-stacked IPv4 and IPv6 network connection.
Use the ‘set setup system’ command to change the network settings.
Either IPv4 or IPv6 can be disabled, otherwise the switch will run in
dual-stack mode.
Because you need to be an administrator to do almost anything fun on these things, let’s start an administrative session by issuing the admin command in the interactive shell, followed by the start verb:
admin start
Next up, let’s look at our active ports using the show command, along with the port verb:
show port
Once we can see our ports, let’s check out one specific port, again using the show port, but this time specifying a port number:
show port 2
Which results in:
Port Number: 2
————
AdminState Online OperationalState Offline
AsicNumber 0 PerfTuningMode Normal
AsicPort 2 PortID 030200
ConfigType F PortWWN 20:02:00:d0:bb:07:34:75
DiagStatus Passed RunningType Unknown
DownstreamISL False MediaPartNumber AFBR-57D7APZ
EpConnState None MediaRevision G2.3
EpIsoReason NotApplicable MediaType 800-MX-SN-I
IOStreamGuard Enabled MediaVendor AVAGO
Licensed True MediaVendorID 0000176a
LinkSpeed 4Gb/s SupportedSpeeds 1, 2, 4Gb/s
LinkState Inactive SymbolicName Port2
LoginStatus NotLoggedIn SyncStatus SyncLost
MaxCredit 16 UpstreamISL False
MediaSpeeds 2, 4, 8Gb/s XmitterEnabled True
ALInit 0 LIP_F8_F7 0
ALInitError 0 LinkFailures 0
BadFrames 0 Login 0
BBCR_FrameFailures 0 Logout 0
BBCR_RRDYFailures 0 LongFramesIn 0
Class2FramesIn 0 LoopTimeouts 0
Class2FramesOut 0 LossOfSync 0
Class2WordsIn 0 LostFrames 0
Class2WordsOut 0 LostRRDYs 0
Class3FramesIn 0 PrimSeqErrors 0
Class3FramesOut 0 RxLinkResets 0
Class3Toss 0 RxOfflineSeq 0
Class3WordsIn 0 ShortFramesIn 0
Class3WordsOut 0 TotalErrors 0
DecodeErrors 0 TotalLinkResets 0
EpConnects 0 TotalLIPsRecvd 0
FBusy 0 TotalLIPsXmitd 0
FlowErrors 0 TotalOfflineSeq 0
FReject 0 TotalRxFrames 0
InvalidCRC 0 TotalRxWords 0
InvalidDestAddr 0 TotalTxFrames 0
LIP_AL_PD_AL_PS 0 TotalTxWords 0
LIP_F7_AL_PS 0 TxLinkResets 0
LIP_F7_F7 0 TxOfflineSeq 0
This shows us a pretty good amount of information, from the link speed plugged into a given port to the brand of transceiver that is being used and the WWN of the actual , in this case, initiator. We also see whether or not IOStreamGuard is enabled (in this case we’re dealing with an initiator, so it is) and what the available media speeds are for the port as well as available speeds for that port. Also notice that the ports have no statistics. Here, we want to keep an eye on things like TotalErrors, LIPs (LIP*), LinkFailures, RxLinkResets and ALInitError. Basically, if it’s in the above list and it sounds bad then it probably is…
Because switches have been running in many cases for years, it turns out that sometimes you’ll find resetting port statistics to be pretty helpful as it will enable you to see only the latest information for troubleshooting. When troubleshooting, you can use the baseline options in the GUI, but every now and then while you’re troubleshooting, many will want to work with as small a subset of data as possible and so will want to clear out information regarding a port. The GUI can clear baseline stats, but not historical statistics. To clear these stats, we’re going to use the set command, along with the port (as we’re setting something on a port) followed by the clear verb and then the port number:
set port clear 1
You can also do the same command without indicating a port numbering order to clear ’em all out:
set port clear
Show also comes with a an option to show logs:
show log
And to see more historical information:
show log archive
I usually pipe that information into a text file for easier parsing. Because the date seems off on most switches where people forget to put time servers in, running the date command will let you figure out an appropriate offset for log file isolation:
date
And one of my favorite commands tells me how long the switch has been up:
uptime
As with Mac OS X and linux, the ps command shows us running processes:
ps
And show interface is the equivalent of an ifconfig in a standard shell environment:
show interface
And many a problem is based on a port configuration issue, so to see information on a given port:
show config port 2
Which results in:
—-
Configuration Name: default
——————-
Port Number: 2
————
AdminState Online
LinkSpeed Auto
PortType F
SymbolicName Port2
ALFairness False
DeviceScanEnabled True
ForceOfflineRSCN False
ARB_FF False
InteropCredit 0
ExtCredit 0
FANEnabled True
AutoPerfTuning True
MSEnabled True
NoClose False
IOStreamGuard Disabled
PDISCPingEnabled True
Next up, let’s look at zoning. This is one of the most common things that you’ll need to use the command line for as you cannot enable the default zone using the GUI and the 9200 ships with it disabled. To start off, let’s use that show command, along with the config (as we’re going to be looking at a configuration option) and then zoning so we only see our options for zoning:
show config zoning
While we’re in admin mode, we’re not a mode to edit our configuration, so let’s jump into the config mode:
config edit
Now that we can actually edit our configuration, let’s run the set command, along with the config and then zoning:
set config zoning
On a 56xx, this brings up a little wizard that asks us 3 questions, the current answer to which is in brackets and can be retained by simply hitting the enter key for that option. Or, type the other option. In the following example we’re allowing the DefaultZone:
MergeAutoSave (True / False) [True ]
DefaultZone (Allow / Deny) [Deny ] Allow
DiscardInactive (True / False) [False]
But on a 9×00 it brings up 4 options, the 4th being oft problematic as most Xsan’s these days seem to have more than 64 nodes per zone (although most Xsan environments are’t gonna’ hit the 10,000 limit):
Zoning Configuration Information
——————————–
MergeAutoSave True
DefaultZone Allow
DiscardInactive False
ImplicitHZ False
And then we’re saving our configuration to nvram:
config save
Now that you have a new configuration saved, you can activate it to be live (be careful not to knock ports offline if you are in a production environment):
config activate
To then look at the zone sets configured on the device (or fabric):
zoneset list
And to see which is active:
zoneset active
And to see what this means (ie a list of wwnns per zone:
zoning active
The admin command has an option to use an end verb, which intriguingly ends an active administrative session:
admin end
Since we’re done, we’ll issue a quit command:
quit
Let’s log into a 9200 and look at one more thing before I wrap this little article:
login: admin
Password:
Establishing connection… Please wait.
*****************************************************
* *
* Command Line Interface SHell (CLISH) *
* *
*****************************************************
SystemDescription SANbox 9000 Series
HostName Qlogic9200
EthIPv4NetworkAddr 192.168.210.88
EthIPv6NetworkAddr <undefined>
MACAddress 00:c0:dd:0c:12:ce
WorldWideName 10:00:00:c0:ee:1d:72:db
ChassisSerialNumber 0816B50816
SymbolicName Charles_Home_9200
ActiveSWVersion V7.8.0.8.0
ActiveTimestamp Fri Dec 26 17:50:21 2008
POSTStatus Passed
PrimaryCPU CPU0
SecondaryCPUStatus HotStandby (switch is Fault Tolerant)
And that last thing is to look at the environmental statistics on the 9200. To do so we’re going to continue on with that show command:
show env
Which gives us:
Temperature(C) Sensors:
Blade ID Sensor Description Status Current High Warn High Alarm
——– —— ———– —— ——- ——— ———-
IO0 0 BOARD Normal 41 75 85
IO0 1 DS1780_0 Normal 42 65 70
IO0 2 DS1780_1 Normal 41 65 70
IO0 3 MAX1617 Normal 42 65 70
IO0 4 ASIC Normal 51 95 100
IO1 0 BOARD Normal 43 75 85
IO1 1 DS1780_0 Normal 42 65 70
IO1 2 DS1780_1 Normal 41 65 70
IO1 3 MAX1617 Normal 42 65 70
IO1 4 ASIC Normal 51 95 100
IO2 0 BOARD Normal 41 75 85
IO2 1 DS1780_0 Normal 41 65 70
IO2 2 DS1780_1 Normal 40 65 70
IO2 3 MAX1617 Normal 41 65 70
IO2 4 ASIC Normal 50 95 100
IO3 0 BOARD Normal 40 75 85
IO3 1 DS1780_0 Normal 40 65 70
IO3 2 DS1780_1 Normal 39 65 70
IO3 3 MAX1617 Normal 40 65 70
IO3 4 ASIC Normal 48 95 100
IO4 0 BOARD_0 Normal 38 75 85
IO4 1 BOARD_1 Normal 38 75 85
IO4 2 DS1780_0 Normal 39 65 70
IO4 3 DS1780_1 Normal 37 65 70
IO4 4 MAX1617 Normal 41 75 90
IO4 5 ASIC Normal 73 110 120
IO6 0 BOARD Normal 43 75 85
IO6 1 DS1780_0 Normal 42 65 70
IO6 2 DS1780_1 Normal 42 65 70
IO6 3 MAX1617 Normal 42 65 70
IO6 4 ASIC Normal 52 95 100
IO7 0 BOARD Normal 41 75 85
IO7 1 DS1780_0 Normal 41 65 70
IO7 2 DS1780_1 Normal 41 65 70
IO7 3 MAX1617 Normal 41 65 70
IO7 4 ASIC Normal 49 95 100
CPU0 0 BOARD Normal 41 75 85
CPU0 1 DS1780_0 Normal 40 65 70
CPU0 2 DS1780_1 Normal 40 65 70
CPU0 3 MAX1617_0 Normal 42 75 90
CPU0 4 ASIC_0 Normal 60 110 120
CPU0 5 MAX1617_1 Normal 42 75 90
CPU0 6 ASIC_1 Normal 54 110 120
CPU1 0 BOARD Normal 41 75 85
CPU1 1 DS1780_0 Normal 41 65 70
CPU1 2 DS1780_1 Normal 41 65 70
CPU1 3 MAX1617_0 Normal 43 75 90
CPU1 4 ASIC_0 Normal 57 110 120
CPU1 5 MAX1617_1 Normal 42 75 90
CPU1 6 ASIC_1 Normal 53 110 120
Voltage Sensors:
Blade ID Sensor Description Status Current Low Alarm High Alarm
——– —— ———– —— ——- ——— ———-
IO0 0 1.5V Good 1.50 1.31 1.68
IO0 1 1.25V Good 1.24 1.00 1.50
IO0 2 2.5V Good 2.49 2.20 2.82
IO0 3 3.3V Good 3.31 2.99 3.62
IO0 4 12V Good 11.69 10.00 13.31
IO0 5 1.2V Good 1.19 1.04 1.38
IO0 6 1.8V Good 1.80 1.61 1.99
IO0 7 1.8V_ANALOG Good 1.78 1.61 1.99
IO0 8 2.5V_ANALOG Good 2.37 2.10 2.82
IO1 0 1.5V Good 1.50 1.31 1.68
IO1 1 1.25V Good 1.24 1.00 1.50
IO1 2 2.5V Good 2.49 2.20 2.82
IO1 3 3.3V Good 3.31 2.99 3.62
IO1 4 12V Good 11.69 10.00 13.31
IO1 5 1.2V Good 1.19 1.04 1.38
IO1 6 1.8V Good 1.80 1.61 1.99
IO1 7 1.8V_ANALOG Good 1.78 1.61 1.99
IO1 8 2.5V_ANALOG Good 2.39 2.10 2.82
IO2 0 1.5V Good 1.50 1.31 1.68
IO2 1 1.25V Good 1.24 1.00 1.50
IO2 2 2.5V Good 2.51 2.20 2.82
IO2 3 3.3V Good 3.31 2.99 3.62
IO2 4 12V Good 11.69 10.00 13.31
IO2 5 1.2V Good 1.19 1.04 1.38
IO2 6 1.8V Good 1.80 1.61 1.99
IO2 7 1.8V_ANALOG Good 1.78 1.61 1.99
IO2 8 2.5V_ANALOG Good 2.37 2.10 2.82
IO3 0 1.5V Good 1.50 1.31 1.68
IO3 1 1.25V Good 1.24 1.00 1.50
IO3 2 2.5V Good 2.49 2.20 2.82
IO3 3 3.3V Good 3.31 2.99 3.62
IO3 4 12V Good 11.75 10.00 13.31
IO3 5 1.2V Good 1.19 1.04 1.38
IO3 6 1.8V Good 1.80 1.61 1.99
IO3 7 1.8V_ANALOG Good 1.78 1.61 1.99
IO3 8 2.5V_ANALOG Good 2.39 2.10 2.82
IO4 0 2.5V Good 2.50 2.20 2.80
IO4 1 1.25V Good 1.24 1.00 1.50
IO4 2 3.3V Good 3.32 3.02 3.58
IO4 3 5V Good 4.92 4.37 5.55
IO4 4 12V Good 11.75 10.00 13.31
IO4 5 1.5V Good 1.48 1.31 1.68
IO4 6 1.8V Good 1.78 1.61 1.99
IO6 0 1.5V Good 1.50 1.31 1.68
IO6 1 1.25V Good 1.24 1.00 1.50
IO6 2 2.5V Good 2.49 2.20 2.82
IO6 3 3.3V Good 3.31 2.99 3.62
IO6 4 12V Good 11.69 10.00 13.31
IO6 5 1.2V Good 1.19 1.04 1.38
IO6 6 1.8V Good 1.80 1.61 1.99
IO6 7 1.8V_ANALOG Good 1.76 1.61 1.99
IO6 8 2.5V_ANALOG Good 2.39 2.10 2.82
IO7 0 1.5V Good 1.48 1.31 1.68
IO7 1 1.25V Good 1.24 1.00 1.50
IO7 2 2.5V Good 2.48 2.20 2.82
IO7 3 3.3V Good 3.31 2.99 3.62
IO7 4 12V Good 11.69 10.00 13.31
IO7 5 1.2V Good 1.20 1.04 1.38
IO7 6 1.8V Good 1.80 1.61 1.99
IO7 7 1.8V_ANALOG Good 1.78 1.61 1.99
IO7 8 2.5V_ANALOG Good 2.37 2.10 2.82
CPU0 0 1.55V Good 1.54 1.42 1.68
CPU0 1 1.25V Good 1.24 1.00 1.50
CPU0 2 1.8V Good 1.79 1.60 1.99
CPU0 3 3.3V Good 3.31 2.99 3.62
CPU0 4 12V Good 11.69 10.00 13.31
CPU0 5 ASIC_0_1.5V Good 1.47 1.31 1.68
CPU0 6 2.5V Good 2.50 2.20 2.80
CPU0 7 ASIC_1_1.5V Good 1.45 1.31 1.68
CPU0 8 3.3V Good 3.30 3.02 3.58
CPU1 0 1.55V Good 1.54 1.42 1.68
CPU1 1 1.25V Good 1.24 1.00 1.50
CPU1 2 1.8V Good 1.77 1.60 1.99
CPU1 3 3.3V Good 3.31 2.99 3.62
CPU1 4 12V Good 11.69 10.00 13.31
CPU1 5 ASIC_0_1.5V Good 1.45 1.31 1.68
CPU1 6 2.5V Good 2.49 2.20 2.80
CPU1 7 ASIC_1_1.5V Good 1.45 1.31 1.68
CPU1 8 3.3V Good 3.30 3.02 3.5
The reason I wanted to look at using the show env command with the 9200 is that it is one of the few that is supported in the 9200 and not in the 5600 series switches. Also, I thought it worth mentioning that given that the environmental options are much different between the 9200 and 5600, Lithium, a popular tool for monitoring Xsan environments will show errors that the 9200 has problems in the event you add it to a Lithium Console (which makes my iPad go batty with vibrations). To see the information on the snmp configuration, you guessed it:
show setup snmp