Inhaltsverzeichnis

Datacore Multipath

Auf den RedHat 5.5 Systemen sind folgende Treiber und Software von HP installiert:

Für die „fibreutils“ war zusätzlich die „libnl“ nötig die erst über den RedHat-Support beschafft werden musste.

Der Treiber

Nach dem der Treiber (qla2xxx) geladen ist stehen sofort alle LUNs die zu diesem Zeitpunkt zugewiesen wurden zur Verfügung. Schwieriger wird es, wenn LUNs nach dem der Treiber geladen wurde hinzu kommen. Man muss dann pro HBA einen Rescann veranlassen. Für diesen Zweck gibt es ein Script:

rescan-scsi-bus.sh

Das Script löscht auch ggf. nicht mehr existierende Devicenodes. Der Treiber liefert für jedes LUN vier „sd“-Devices, die die vier Pfade auf denen sie erreichbar sind repräsentieren:

brw-r----- 1 root   disk 65, 160 Dec 21 12:00 /dev/sdaa
brw-r----- 1 root   disk 65, 176 Dec 21 12:00 /dev/sdab
brw-r----- 1 root   disk 65, 192 Dec 21 12:00 /dev/sdac
brw-r----- 1 root   disk 65, 208 Dec 21 12:00 /dev/sdad
brw-r----- 1 root   disk 65, 224 Dec 21 14:21 /dev/sdae
brw-r----- 1 root   disk 65, 240 Dec 21 14:21 /dev/sdaf
brw-r----- 1 root   disk 66,   0 Dec 21 14:21 /dev/sdag
brw-r----- 1 root   disk 66,  16 Dec 21 14:21 /dev/sdah
brw-r----- 1 root   disk  8,  32 Dec 12 17:07 /dev/sdc
brw-r----- 1 root   disk  8,  48 Dec 12 17:07 /dev/sdd
brw-r----- 1 root   disk  8,  64 Dec 12 17:07 /dev/sde
brw-r----- 1 root   disk  8,  80 Dec 12 17:07 /dev/sdf
brw-r----- 1 root   disk  8,  96 Dec 21 11:29 /dev/sdg
brw-r----- 1 root   disk  8, 112 Dec 21 11:29 /dev/sdh
brw-r----- 1 root   disk  8, 128 Dec 21 11:29 /dev/sdi
brw-r----- 1 root   disk  8, 144 Dec 21 11:29 /dev/sdj
brw-r----- 1 root   disk  8, 160 Dec 21 12:00 /dev/sdk
brw-r----- 1 root   disk  8, 176 Dec 21 12:00 /dev/sdl
brw-r----- 1 root   disk  8, 192 Dec 21 12:00 /dev/sdm
brw-r----- 1 root   disk  8, 208 Dec 21 12:00 /dev/sdn
brw-r----- 1 root   disk  8, 224 Dec 21 12:00 /dev/sdo
brw-r----- 1 root   disk  8, 240 Dec 21 12:00 /dev/sdp
brw-r----- 1 root   disk 65,   0 Dec 21 12:00 /dev/sdq
brw-r----- 1 root   disk 65,  16 Dec 21 12:00 /dev/sdr
brw-r----- 1 root   disk 65,  32 Dec 21 12:00 /dev/sds
brw-r----- 1 root   disk 65,  48 Dec 21 12:00 /dev/sdt
brw-r----- 1 root   disk 65,  64 Dec 21 12:00 /dev/sdu
brw-r----- 1 root   disk 65,  80 Dec 21 12:00 /dev/sdv
brw-r----- 1 root   disk 65,  96 Dec 21 12:00 /dev/sdw
brw-r----- 1 root   disk 65, 112 Dec 21 12:00 /dev/sdx
brw-r----- 1 root   disk 65, 128 Dec 21 12:00 /dev/sdy
brw-r----- 1 root   disk 65, 144 Dec 21 12:00 /dev/sdz

Mulipath

Um die WWIDs zu ermitteln kann man „multipath“ benutzen:

multipath -v5 -d

Diese Devices müssen jetzt noch zu echten FC-Devices mit der gewünschten Failover-Funktionalität zusammengefasst werden. Dafür wird das „multipath“-System benutzt welches über die Datei /etc/multipath.conf konfiguriert wird:

blacklist {
        devnode "*"
}
blacklist_exceptions {
	Vendor		"DataCore"
	Product		"Virtual Disk"
	devnode		"^sd[c-z]"
	devnode		"^sd[a-z][a-z]"
}
defaults {
	user_friendly_names yes
}
device {
	vendor			"DataCore"
	product			"Virtual Disk"
	path_grouping_policy	failover
	path_checker		tur
	failback		10
}

multipaths {
        multipath {
                wwid                    360030d90e0215801f793aba3ea4b5c71
                alias                   ora_asm_data01
        }
        multipath {
                wwid                    360030d90ca225801fc4905a375450438
                alias                   ora_asm_fra01
        }
        multipath {
                wwid                    360030d902704e4060acad4d42a6641a1
                alias                   ora_ocr1
        }
        multipath {
                wwid                    360030d907e05e406b623c76fba48bce9
                alias                   ora_ocr2
        }
        multipath {
                wwid                    360030d904906e4066cabbed2491c88e2
                alias                   ora_vote1
        }
        multipath {
                wwid                    360030d901307e4068f9b8b33a58fa8e1
                alias                   ora_vote2
        }
        multipath {
                wwid                    360030d90ee07e40668cdc3ebe826af1e
                alias                   ora_vote3
        }
}
Zu den Einträgen:

Details: man multipath.conf

Startet man die Multipathdienst (neu) per /etc/init.d/multipath restart werden Device-Nodes in dieser Art erzeugt:

lrwxrwxrwx 1 root root 7 Dec 12 17:11 /dev/mpath/mpath2 -> ../dm-2
lrwxrwxrwx 1 root root 7 Dec 21 11:31 /dev/mpath/mpath3 -> ../dm-3
lrwxrwxrwx 1 root root 7 Dec 21 12:03 /dev/mpath/mpath4 -> ../dm-4
lrwxrwxrwx 1 root root 7 Dec 21 12:03 /dev/mpath/mpath5 -> ../dm-5
lrwxrwxrwx 1 root root 7 Dec 21 12:03 /dev/mpath/mpath6 -> ../dm-6
lrwxrwxrwx 1 root root 7 Dec 21 12:03 /dev/mpath/mpath7 -> ../dm-7
lrwxrwxrwx 1 root root 7 Dec 21 12:03 /dev/mpath/mpath8 -> ../dm-8
lrwxrwxrwx 1 root root 7 Dec 21 14:21 /dev/mpath/mpath9 -> ../dm-9

Das Komando:

multipath -l 

Gibt dann noch genauer Auskunft wie die Devices verbunden werden:

lnx_data2_lun_13 (360030d907e05e406b623c76fba48bce9) dm-4 DataCore,Virtual Disk
[size=5.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:13 sdaa 65:160 [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:13 sdl  8:176  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:13 sdq  65:0   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:13 sdv  65:80  [active][undef]
lnx_db1_lun_11 (360030d90ca225801fc4905a375450438) dm-3 DataCore,Virtual Disk
[size=1.0T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:11 sdg  8:96   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:11 sdh  8:112  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:11 sdi  8:128  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:11 sdj  8:144  [active][undef]
lnx_db1_lun_10 (360030d90e0215801f793aba3ea4b5c71) dm-2 DataCore,Virtual Disk
[size=1.0T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:10 sdc  8:32   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:10 sdd  8:48   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:10 sde  8:64   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:10 sdf  8:80   [active][undef]
lnx_data5_lun_16 (360030d90ee07e40668cdc3ebe826af1e) dm-7 DataCore,Virtual Disk
[size=5.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:16 sdad 65:208 [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:16 sdo  8:224  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:16 sdt  65:48  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:16 sdy  65:128 [active][undef]
lnx_data3_lun_14 (360030d904906e4066cabbed2491c88e2) dm-5 DataCore,Virtual Disk
[size=5.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:14 sdab 65:176 [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:14 sdm  8:192  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:14 sdr  65:16  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:14 sdw  65:96  [active][undef]
mpath9 (360030d9068503901b6a5535270ff85e0) dm-9 DataCore,Virtual Disk
[size=200G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:3  sdae 65:224 [failed][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:3  sdaf 65:240 [failed][undef]
\_ round-robin 0 [prio=0][active]
 \_ 9:0:0:3  sdag 66:0   [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:3  sdah 66:16  [active][undef]
lnx_data1_lun_12 (360030d902704e4060acad4d42a6641a1) dm-8 DataCore,Virtual Disk
[size=5.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:12 sdk  8:160  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:12 sdp  8:240  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:12 sdu  65:64  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:12 sdz  65:144 [active][undef]
lnx_data4_lun_15 (360030d901307e4068f9b8b33a58fa8e1) dm-6 DataCore,Virtual Disk
[size=5.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:1:15 sdac 65:192 [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:0:15 sdn  8:208  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 8:0:1:15 sds  65:32  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 9:0:0:15 sdx  65:112 [active][undef]

Hier sieht man dann welche WWID welchen Alias zugeordnet wurde und welche „sd“-Devices zu welchen Multipath-Devices (hier nur die dm-Devices) zusammengefasst wurden. Ausserdem sieht man hier auch den Status der einzelen Pfade (Devices), z.b. „enabled“ und „active“.

Mit:

multipathd -k

bekommt man eine Konsole, auf der man Komandos interaktiv absetzen kann. Funktional bringt das aber keinen echten Vorteil im Vergleich zum „multipath“-Komando.

SAN-Surfer

Die Konfiguration der HBAs erfolgt über den SAN-Surfer. Dieser ist auf den Servern installiert und ist ein X-Windows-Applikation. Am einfachsten startet man diese per SSH und X-Forwarding von einem Linux aus. z.B.

% ssh sbaas67 -X
Last login: Mon Jan  2 16:11:06 2012 from 172.27.104.206
[root@server ~]# /opt/QLogic_Corporation/SANsurfer/SANsurfer

Man darf sich hier nicht irritieren lassen. Die Server haben mehrer IP-Adressen. Für jede dieser IPs wird jeder HBA angezeigt. Welchen man betrachtet ist aber egal, da es immer der selbe ist.

Man sieht jetzt auch warum Konsistenz bei den LUNs wichtig ist: Die Aliase oder irgend welche Namen werden nicht angezeigt sondern nur die LUN-IDs.