VMware Cloud Community
roit31
Contributor
Contributor

Hilfe: Skript für Storage-Pfad fixierung

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:

01.png

01-02.png

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

01-03.png

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):

02.png

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:

03.png

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.

0 Kudos
0 Replies