Informationen:
ESXi 5.5.0 Build 2403361
Situation:
Zur Situation wir haben mehrere ESXi-Hosts in zwei Standorte aufgeteilt. (Standort A und Standort B)
Auch unser Storage ist auf diesen zwei Standorten aufgeteilt.
Wir haben die LUNs/Datastores (naa.600…) per Fibre Channel angeschlossen.
Pro LUN haben wir vier Pfade. Zwei Pfade für den Standort A und zwei Pfade für den Standort B.
Der Standort der Pfade kann mittels der letzten zwei Zeichen, sprich der IO-Gruppe (blau markiert (bd/b9) oder im zweiten Bild rot umrandet), im Target ausgelesen werden:
Standort A: B9, A1, 9C
Standort B: BD, CB, C6
Beispiel:
Alle Storage-Pfade die B9, A1 oder 9C am Schluss des Targets haben sind im Standort A.
Alle Storage-Pfade die BC, CB oder C6 am Schluss des Targets haben sind im Standort B.
Anforderungen:
Bis anhin haben wir die Storage-Pfade per Round Robin (VMW_PSP_RR) angebunden.
Nun wollen wir durch Performance Probleme diese auf Fixed (VMW_PSP_FIXED) umschalten. Sprich die Storage-Pfade Policy umschalten.
Was wir bereits haben bzw. herausgefunden haben:
Mit folgender Befehl-Schleife können wir die Storage-Pfade Policy aller LUNs auf Fixed (VMW_PSP_FIXED).
for i in `esxcli storage nmp device list | grep -B4 VMW_PSP_RR | grep ^naa.`
do
esxcli storage nmp device set --device $i --psp VMW_PSP_FIXED
done
Nur leider nimmt da der ESXi-Host der Pfad der ihm am besten passt und nicht immer den Pfad der am richtigen Standort ist.
Zudem wollen wir nicht das alle LUNs über den gleichen Pfad des Standortes verläuft. Darum wollen wir das in Fabric's einteilen (in 10ner Schritten, siehe Bild rechts):
Alle LUNs die mit nur einer Stelle, sprich LUN 1, 2, 3, usw. sind gerade.
Alle LUNs die zwei Stellen haben, sprich LUN 10, 11, 12, usw. muss nur auf die erste Stelle geachtet werden, 10, 11, 12 sind somit ungerade. Hingegen 20, 21, 22 sind gerade.
Alle LUNs die drei Stellen haben, sprich LUN 110, 112, 113, usw. sind ungerade. Hingegen LUN 101, 102, 103 gerade. (Bei drei Stellen soll nur auf die mittlere Ziffer geachtet werden.)
Informationen zum Skript:
Damit das Skript funktioniert muss es meiner Meinung nach zwei Skripte geben.
Eins für den Standort A (B9, A1, 9C) und eins für den Standort B (BD, CB, C6).
Beispiel: Alle LUNs für den Standort B anzeigen und auf einer Linie darstellen:
esxcli storage core path list | grep -A1 UID: | grep -A1 -E "bc-|cb-|c6-" | grep -v "^--" | sed 'N;s/\n/;/g'
Ausgabe des Beispiels:
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002f4; Runtime Name: vmhba64:C0:T3:L16
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000328; Runtime Name: vmhba64:C0:T3:L19
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000026f; Runtime Name: vmhba64:C0:T3:L50
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000354; Runtime Name: vmhba64:C0:T3:L54
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000357; Runtime Name: vmhba64:C0:T3:L55
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000355; Runtime Name: vmhba64:C0:T3:L56
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000356; Runtime Name: vmhba64:C0:T3:L58
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000329; Runtime Name: vmhba1:C0:T1:L21
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000295; Runtime Name: vmhba1:C0:T1:L22
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002ce; Runtime Name: vmhba1:C0:T1:L23
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002cd; Runtime Name: vmhba1:C0:T1:L25
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002cc; Runtime Name: vmhba1:C0:T1:L26
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002ca; Runtime Name: vmhba1:C0:T1:L27
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002cb; Runtime Name: vmhba1:C0:T1:L28
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000028a; Runtime Name: vmhba1:C0:T1:L29
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000329; Runtime Name: vmhba64:C0:T3:L21
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000295; Runtime Name: vmhba64:C0:T3:L22
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002ce; Runtime Name: vmhba64:C0:T3:L23
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002cd; Runtime Name: vmhba64:C0:T3:L25
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002cc; Runtime Name: vmhba64:C0:T3:L26
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002ca; Runtime Name: vmhba64:C0:T3:L27
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002cb; Runtime Name: vmhba64:C0:T3:L28
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000028a; Runtime Name: vmhba64:C0:T3:L29
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000001cf; Runtime Name: vmhba64:C0:T3:L2
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000001d0; Runtime Name: vmhba64:C0:T3:L3
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000001f7; Runtime Name: vmhba1:C0:T1:L30
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000020a; Runtime Name: vmhba1:C0:T1:L31
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000258; Runtime Name: vmhba1:C0:T1:L32
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000259; Runtime Name: vmhba1:C0:T1:L33
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000266; Runtime Name: vmhba1:C0:T1:L35
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000026b; Runtime Name: vmhba1:C0:T1:L37
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000267; Runtime Name: vmhba1:C0:T1:L38
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000333; Runtime Name: vmhba1:C0:T1:L39
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000001f7; Runtime Name: vmhba64:C0:T3:L30
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000020a; Runtime Name: vmhba64:C0:T3:L31
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000258; Runtime Name: vmhba64:C0:T3:L32
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000259; Runtime Name: vmhba64:C0:T3:L33
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000266; Runtime Name: vmhba64:C0:T3:L35
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000026b; Runtime Name: vmhba64:C0:T3:L37
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000267; Runtime Name: vmhba64:C0:T3:L38
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000333; Runtime Name: vmhba64:C0:T3:L39
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000269; Runtime Name: vmhba1:C0:T1:L40
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000026a; Runtime Name: vmhba1:C0:T1:L41
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000334; Runtime Name: vmhba1:C0:T1:L42
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000028b; Runtime Name: vmhba1:C0:T1:L43
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000291; Runtime Name: vmhba1:C0:T1:L44
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000292; Runtime Name: vmhba1:C0:T1:L45
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000293; Runtime Name: vmhba1:C0:T1:L46
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000294; Runtime Name: vmhba1:C0:T1:L47
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002a0; Runtime Name: vmhba1:C0:T1:L49
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000001cf; Runtime Name: vmhba1:C0:T1:L2
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000001d0; Runtime Name: vmhba1:C0:T1:L3
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000269; Runtime Name: vmhba64:C0:T3:L40
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000026a; Runtime Name: vmhba64:C0:T3:L41
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000334; Runtime Name: vmhba64:C0:T3:L42
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de80000000000028b; Runtime Name: vmhba64:C0:T3:L43
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000291; Runtime Name: vmhba64:C0:T3:L44
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000292; Runtime Name: vmhba64:C0:T3:L45
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000293; Runtime Name: vmhba64:C0:T3:L46
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de800000000000294; Runtime Name: vmhba64:C0:T3:L47
UID: fc.50060b0000c26a27:50060b0000c26a26-fc.500507680100e9cb:500507680140e9cb-naa.600507680180874de8000000000002a0; Runtime Name: vmhba64:C0:T3:L49
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de8000000000002f4; Runtime Name: vmhba1:C0:T1:L16
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000328; Runtime Name: vmhba1:C0:T1:L19
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000026f; Runtime Name: vmhba1:C0:T1:L50
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000354; Runtime Name: vmhba1:C0:T1:L54
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000357; Runtime Name: vmhba1:C0:T1:L55
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000355; Runtime Name: vmhba1:C0:T1:L56
UID: fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de800000000000356; Runtime Name: vmhba1:C0:T1:L58
Wenn man wie im obigen Befehl zwei Skripts (eines Pro Standort) erstellt bzw. danach filtert sind nur noch zwei Pfade pro LUN da.
Anforderungen an das Skript:
Das Skript müsste nun zwei Zahlen überprüfen können (gerade oder ungerade):
Die LUN-ID 32 ist ungerade da man sie zweistellig ist und so nur auf die 3 geachtet werden muss.
Nun muss noch das richtige Fabric ausgewählt werden. Sprich wenn die LUN-ID 32 ist muss der Pfad des Fabrics gewählt werden der ebenfalls ungerade ist. In diesem Fall:
Nun haben wir den richtigen Storage-Pfad, dieser müsste nun bevorzugt (preferred) werden.
Dies funktioniert mit folgendem Befehl:
esxcli nmp fixed setpreferred --device <naa_id> --path <storage-path>
Beispiel mit dem oberen Beispiel:
esxcli nmp fixed set preferred --device naa.600507680180874de800000000000258 --path fc.50060b0000c26a25:50060b0000c26a24-fc.500507680100e9cb:500507680130e9cb-naa.600507680180874de80000000000025
Nun alle diese Schritte sollten automatisch mit einem Skript gemacht werden (Ein Skript pro Standort). Könnt Ihr mir da helfen?
Ich bedanke mich für jede Bemühung und hoffe meine Beschreibung ist einigermassen verständlich.