Showing posts with label HBA. Show all posts
Showing posts with label HBA. Show all posts

Thursday, July 21, 2011

How to check connectivity between Linux host and a disk array


Determine hardware and drivers from dmesg output

Following is a brief description of some typical dmesg output required for the connectivity of a linux server to a disk array.
Match the following headers with the corresponding highlighted lines from the dmesg output below.

Fusion MPT SCSI Host driver 3.01.16
The LSI 1030 controller implements the LSI Logic Fusion-MPT architecture, a multithreaded I/O algorithim that supports data transfers between host system and SCSI devices with minimal host processor intervention.
Vendor: LSILOGIC Model: 1030 IM IM Rev: 1000
The LSI153C1030 PCI-X to Dual Channel Ultra320 SCSI Multifunction Controller brings Ultra320 SCSI performance to host adapter, workstation and server designs enabling the addition of a high-performance SCSI bus to any PCI or PCI-X system.
QLogic Fibre Channel HBA Driver: 8.01.06-fo
Driver version 8.01.06.fo for the Qlogic QMC2462S HBA
QLogic QMC2462S HBA- IBM eServer BC 4Gb FC Expansion Card SFF
Qlogic SANblade QMC2462S - Dual port 4-Gbps fibre channel (FC) small form factor (SFF) expansion card for IBM bladecenter. 300,000 IOPS delivers high I/O transfer rates for storage applications.
Vendor: IBM Model: 1815 FAStT Rev: 0914
IBM 1815 is the model number for a DS4800 storage array. This dmesg entry indicates that the following SCSI device sdx is attached to the array. FAStT = Fibre Array Storage Technology

dmesg output

From the output below we can see that the scsi disk sda is a local disk and scsi disks sdb, sdc, sdd, sde, sdf are connected to a DS4800 array (Model 1815).
Type the following command, dmesg
SCSI subsystem initialized
Fusion MPT base driver 3.01.16
Copyright (c) 1999-2004 LSI Logic Corporation
ACPI: PCI interrupt 0000:02:01.0[A] -> GSI 24 (level, low) -> IRQ 225
mptbase: Initiating ioc0 bringup
ioc0: 53C1030: Capabilities={Initiator}
Fusion MPT SCSI Host driver 3.01.16
scsi0 : ioc0: LSI53C1030, FwRev=01032933h, Ports=1, MaxQ=222, IRQ=225
Using cfq io scheduler
Vendor: LSILOGIC Model: 1030 IM IM Rev: 1000
Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 71020544 512-byte hdwr sectors (36363 MB)
SCSI device sda: drive cache: write through
 sda: sda1 sda2 sda3
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
QLogic Fibre Channel HBA Driver
ACPI: PCI interrupt 0000:06:01.0[A] -> GSI 49 (level, low) -> IRQ 193
qla2400 0000:06:01.0: Found an ISP2422, irq 193, iobase 0xf8818000
qla2400 0000:06:01.0: Configuring PCI space...
qla2400 0000:06:01.0: Configure NVRAM parameters...
qla2400 0000:06:01.0: Verifying loaded RISC code...
qla2400 0000:06:01.0: Allocated (64 KB) for EFT...
qla2400 0000:06:01.0: Allocated (1413 KB) for firmware dump...
qla2400 0000:06:01.0: Waiting for LIP to complete...
qla2400 0000:06:01.0: LOOP UP detected (4 Gbps).
qla2400 0000:06:01.0: Topology - (F_Port), Host Loop address 0x0
qla020: ConfigRequired is set.
scsi1 : qla2xxx
qla2400 0000:06:01.0:
QLogic Fibre Channel HBA Driver: 8.01.06-fo
QLogic QMC2462S - IBM eServer BC 4Gb FC Expansion Card SFF
ISP2422: PCI-X Mode 1 (133 MHz) @ 0000:06:01.0 hdma+, host#=1, fw=4.00.23 [IP]
Vendor: IBM Model: 1815 FAStT Rev: 0914
Type:   Direct-Access                      ANSI SCSI revision: 03
qla2400 0000:06:01.0: scsi(1:0:0:0): Enabled tagged queuing, queue depth 32.
SCSI device sdb: 41943040 512-byte hdwr sectors (21475 MB)
SCSI device sdb: drive cache: write back
 sdb: unknown partition table
Attached scsi disk sdb at scsi1, channel 0, id 0, lun 0
  Vendor: IBM       Model: 1815      FAStT   Rev: 0914
  Type:   Direct-Access                      ANSI SCSI revision: 03
qla2400 0000:06:01.0: scsi(1:0:0:1): Enabled tagged queuing, queue depth 32.
SCSI device sdc: 41943040 512-byte hdwr sectors (21475 MB)
SCSI device sdc: drive cache: write back
 sdc: unknown partition table
Attached scsi disk sdc at scsi1, channel 0, id 0, lun 1
  Vendor: IBM       Model: 1815      FAStT   Rev: 0914
  Type:   Direct-Access                      ANSI SCSI revision: 03
qla2400 0000:06:01.0: scsi(1:0:0:2): Enabled tagged queuing, queue depth 32.
SCSI device sdd: 77594624 512-byte hdwr sectors (39728 MB)
SCSI device sdd: drive cache: write back
 sdd: unknown partition table
Attached scsi disk sdd at scsi1, channel 0, id 0, lun 2
  Vendor: IBM       Model: 1815      FAStT   Rev: 0914
  Type:   Direct-Access                      ANSI SCSI revision: 03
qla2400 0000:06:01.0: scsi(1:0:0:3): Enabled tagged queuing, queue depth 32.
SCSI device sde: 209715200 512-byte hdwr sectors (107374 MB)
SCSI device sde: drive cache: write back
 sde: unknown partition table
Attached scsi disk sde at scsi1, channel 0, id 0, lun 3
  Vendor: IBM       Model: 1815      FAStT   Rev: 0914
  Type:   Direct-Access                      ANSI SCSI revision: 03
qla2400 0000:06:01.0: scsi(1:0:0:4): Enabled tagged queuing, queue depth 32.
SCSI device sdf: 445100032 512-byte hdwr sectors (227891 MB)
SCSI device sdf: drive cache: write back
 sdf: unknown partition table
Attached scsi disk sdf at scsi1, channel 0, id 0, lun 4
ACPI: PCI interrupt 0000:06:01.1[B] -> GSI 50 (level, low) -> IRQ 201
qla2400 0000:06:01.1: Found an ISP2422, irq 201, iobase 0xf881a000
qla2400 0000:06:01.1: Configuring PCI space...
qla2400 0000:06:01.1: Configure NVRAM parameters...
qla2400 0000:06:01.1: Verifying loaded RISC code...
qla2400 0000:06:01.1: Allocated (64 KB) for EFT...
qla2400 0000:06:01.1: Allocated (1413 KB) for firmware dump...
qla2400 0000:06:01.1: Waiting for LIP to complete...
qla2400 0000:06:01.1: LOOP UP detected (4 Gbps).
qla2400 0000:06:01.1: Topology - (F_Port), Host Loop address 0x0
qla021: ConfigRequired is set.
scsi2 : qla2xxx
qla2400 0000:06:01.1:
 QLogic Fibre Channel HBA Driver: 8.01.06-fo
  QLogic QMC2462S - IBM eServer BC 4Gb FC Expansion Card SFF
  ISP2422: PCI-X Mode 1 (133 MHz) @ 0000:06:01.1 hdma+, host#=2, fw=4.00.23 [IP]

Display further disk information using fdisk

The output from fdisk -l gives further information about the disks displayed in the dmesg output above.
Type the following command, fdisk -l
Disk /dev/sda: 36.3 GB, 36362518528 bytes
255 heads, 63 sectors/track, 4420 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          38      305203+  83  Linux
/dev/sda2              39         299     2096482+  82  Linux swap
/dev/sda3             300        4420    33101932+  8e  Linux LVM

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 39.7 GB, 39728447488 bytes
64 heads, 32 sectors/track, 37888 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sde doesn't contain a valid partition table

Disk /dev/sdf: 227.8 GB, 227891216384 bytes
255 heads, 63 sectors/track, 27706 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdf doesn't contain a valid partition table

Check the contents of files in /proc/scsi/qla2xxx

List the contents of the files in proc/scsi/qla2xxx to determine if the qlogic driver is installed and loaded.
We can see from the output below that this server is using fibre channel host adapters.
Type the following, cat /proc/scsi/qla2xxx/1
QLogic PCI to Fibre Channel Host Adapter for QMC2462S:
        Firmware version 4.00.23 [IP] , Driver version 8.01.06-fo
ISP: ISP2422
Request Queue = 0x37b80000, Response Queue = 0x37b60000
Request Queue count = 4096, Response Queue count = 512
Total number of active commands = 0
Total number of interrupts = 122558379
    Device queue depth = 0x20
Number of free request entries = 2618
Number of mailbox timeouts = 0
Number of ISP aborts = 0
Number of loop resyncs = 0
Number of retries for empty slots = 0
Number of reqs in pending_q= 0, retry_q= 0, done_q= 0, scsi_retry_q= 0
Number of reqs in failover_q= 0
Host adapter:loop state = , flags = 0x1e43
Dpc flags = 0x4000000
MBX flags = 0x0
Link down Timeout = 030
Port down retry = 012
Login retry count = 012
Commands retried with dropped frame(s) = 0
Product ID = 0000 0000 0000 0000


SCSI Device Information:
scsi-qla0-adapter-node=200000e08b54bb23;
scsi-qla0-adapter-port=210000e08b54bb23;
scsi-qla0-target-0=202400a0b678eb36;

FC Port Information:
scsi-qla0-port-0=200400a0b811eb36:202400a0b678eb36:670000:81;
scsi-qla0-port-1=200000e08b8e0979:210000e08b8e0345:670300:82;
scsi-qla0-port-2=200400a0b811eb36:202500a0b678eb36:680000:83;
scsi-qla0-port-3=200100e08bae0979:210100e08bae345:680300:84;
scsi-qla0-port-4=200100e08ba9bb23:210100e08ba8dd23:680200:85;

SCSI LUN Information:
(Id:Lun)  * - indicates lun is not registered with the OS.
( 0: 0): Total reqs 31229134, Pending reqs 0, flags 0x2, 1:3:83 00
( 0: 1): Total reqs 11643657, Pending reqs 0, flags 0x2, 0:0:81 00
( 0: 2): Total reqs 25397262, Pending reqs 0, flags 0x2, 0:0:81 00
( 0: 3): Total reqs 51159056, Pending reqs 0, flags 0x2, 0:0:81 00
( 0: 4): Total reqs 34337567, Pending reqs 0, flags 0x2, 0:0:81 00

Check the modprobe.conf file for the relevant lines to load the qlogic modules

Type the following, grep qla /etc/modprobe.conf
alias scsi_hostadapter2 qla2xxx_conf
alias scsi_hostadapter3 qla2xxx
alias scsi_hostadapter4 qla2400

options qla2xxx ConfigRequired=1 ql2xsuspendcount=70 ql2xretrycount=60

Check the qlogic modules are loaded

Type the following, lsmod | grep qla
qla2400               207104  0
qla2xxx               307448  14 qla2400
qla2xxx_conf          305924  1
scsi_mod              116557  3 qla2xxx,mptscsih,sd_mod

Wednesday, July 6, 2011

How to temporarily prevent a Suse linux server from "seeing" it's array on reboot


In this scenario we have a Suse linux host with two HBA fibre controllers installed. Each HBA is connected via fibre to a separate Brocade SAN switch. Then from each SAN switch we have a fibre connection to separate controllers on a DS4300 disk array.
All the operating system files are stored on local disks and only applications and data are stored on the array.
There were some errors with the linux server and we wanted to temporarily remove the array and then reboot the linux server to see whether the errors disappeared, however this was not to be a complete removal of LUNs and Volume Groups from the linux box as the array needs to be back after the test.
The quickest way to prevent the linux server from "seeing" the array was to disable the port on the SAN switch that is connected to the array.
However firstly we need to ensure that all filesystems mounted onto LUNs mapped out from the array are unmounted
To do this we must ensure that all filesystems to be unmounted are quiescent, and therefore any applications referencing these filesystems must be stopped.
Then to unmount the filesystems type umount /filesystem where /filesystem is to be replaced with your mounted filesystem name.
It is a good idea then to deactivate the volume groups that contain array LUNs.
To deactive the volume groups type vgchange -a n /dev/vg_name for each volume group, where /dev/vg_name is to be replaced by your volume group name.
We are going to reboot the linux server so these changes need to be made such that the linux server does not try to activate volume groups with non existent LUNs and mount non existent filesystems on the way up.
To prevent the linux server automatically mounting filesystems we need to edit /etc/fstab. (It is a good idea to make a copy of this file prior to any modifications).
Then edit /etc/fstab ensuring to comment out all filesystems containing LUNs on the array.
Next we need to prevent the activation of volume groups containing array LUNs.
To do this edit the file /etc/sysconfig/lvm, and between the quotes of the LVM_VGS_ACTIVATED_ON_BOOT="" variable add only the volume group you want to be activated. In our case we only want the system volume group on the local disks to be activated. This is called sysvg so our variable will look like the following LVM_VGS_ACTIVATED_ON_BOOT="sysvg".
We are now ready to disable the port on the SAN switch, make sure that no other arrays are using the port then on the switch typeportdisable portnum where portnum will be the number of your port i.e. 3.
Disable the ports on both switches.
Now we can reboot the linux server, type init 6 and hopefully it will come back up without the array being presented.
To present the array back to the Suse linux server just reverse the above procedure