====== Datacore Multipath ======
Auf den RedHat 5.5 Systemen sind folgende Treiber und Software von HP installiert:
* Linux FCoE/FC Driver Kit for HP Branded Qlogic CNAs, HBAs (8_03_07_03_5_6_RHEL5_5_RHEL5_6.zip - Installer-Package)
* HP Fibre Channel Utility for Linux - fibreutils (hp-fc-enablement-1.2-5.noarch.rpm)
* SanSurfer Utility (hp_sansurfer-5.0.1b45-1.x86_64.rpm)
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:
* blacklist - Alle Geräte unter /dev werden per Default ignoriert.
* blacklist_exceptions - Geräte die diesen Kriterien genügen werden für die Konfiguration verwendet.
* defaults - Gundeinstellungen
* device - Geräteeinstellungen für die resultierenden "mpath"-Geräte.
* multipaths - Legt Aliases für die WWIDs fest.
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.
{{sansurfer_fc_hba_manager_053.png|}}
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.