====== 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.