AIX LVM: Mechanik von migratelp

Mit dem AIX LVM Kommando migratelp können einzelne Physical Partitions in einem Logical Volume ausgetauscht werden. Im Artikel soll genauer angeschaut werden, wie das Kommando migratelp arbeitet.

Unsere Test-Umgebung

In unserer Test-Umgebung haben wir eine Scalable Volume Group vg00 angelegt. Für die VG vg00 stehen 9 Physical Volumes zur Verfügung, welche von 3 unterschiedlichen Rechenzentren bereitgestellt werden:

    • hdisk10, hdisk11 und hdisk12 (grün) aus Rechenzentrum DC01
    • hdisk13, hdisk14 und hdisk15 (rot) aus Rechenzentrum DC02
    • hdisk16, hdisk17 und hdisk18 (blau) aus Rechenzentrum DC03

Das Kommando migratelp

Die Syntax des Kommandos migratelp ist:

migratelp lv/lp[/copy] pv[/pp]

Es verschiebt genau eine Physical Partition auf das/die angegebene(n) Ziel Physical Volume(s) pv. Die Quell Physical Partition wird als lp/lp (Logical Volume, Logical Partition Nummer, Kopie 1) oder als lv/lp/copy (Logical Volume, Logical Partition Nummer, Kopie Nummer) angegeben. Optional kann die gewünschte Physical Partition Nummer auf dem Ziel Physical Volume angegeben werden. Z.B.:

migratelp lv01/109/2 hdisk17

Fall: ungespiegeltes Logical Volume

Wir erzeugen ein kleines LV (10 LPs) mit dem folgenden Mapping File:

# cat unmirrored.map
hdisk10:1-3
hdisk14:1-3
hdisk12:1-3
hdisk14:4
# mklv -m unmirrored.map vg00 10
lv00
#

Das resultierende Logical Volume sieht dann so aus:

Die ersten 3 Physical Partitions liegen auf hdisk10 (DC01), die nächsten 3 Physical Partitions liegen auf hdisk14 (DC02), usw.

Die 4 Physical Partitions auf hdisk14 (0004, 0005, 0006 und 0010) sollen auf die hdisk11 (DC01) verschoben werden.
Wir zeigen nur das Verschieben einer Physical Partition. Für die anderen Physical Partitons geht dies analog. Die Arbeit von migratelp verfolgen wir im folgenden graphisch.

# migratelp lv00/4 hdisk11

Das resultierende Logical Volume sieht dann so aus:

# lslv -m lv00
lv00:N/A
LP    PP1  PV1             PP2  PV2             PP3  PV3
0001  0001 hdisk10          
0002  0002 hdisk10          
0003  0003 hdisk10          
0004  0009 hdisk11          
0005  0002 hdisk14          
0006  0003 hdisk14          
0007  0001 hdisk12          
0008  0002 hdisk12          
0009  0003 hdisk12          
0010  0004 hdisk14          
#

Die erste und einzige Kopie von LP 0004 liegt jetzt auf hdisk11 (DC01). Analog kann man die weiteren Physical Partitions von hdisk14 (DC02) nach hdisk11 (DC01) verschieben. Mit dem migratepv Kommando geht das natürlich deutlich einfacher!

Die Arbeitsweise von migratelp im Falle eines ungespiegelten Logical Volumes:

    1. Hinzufügen einer zweiten Spiegel-Kopie für die zu verschiebende Logical Partition auf dem Ziel Physical Volume.
    2. Aufsynchronisieren der neuen Spiegel-Kopie.
    3. Ersetzen der ersten Spiegel-Kopie durch die zweite Spiegel-Kopie.

2. Fall: gespiegeltes Logical Volume (2 Kopien)

Wir erzeugen ein kleines LV (10 LPs) mit dem folgenden Mapping File:

# cat mirrored.map
hdisk10:1-3
hdisk14:1-3
hdisk10:4-6
hdisk14:4

hdisk13:1-3
hdisk11:1-3
hdisk13:4-6
hdisk11:4
# mklv -c 2 —m mirrored.map vg00 10
lv00
#

Das resultierende Logical Volume sieht dann wie folgt aus:

# lslv -m lv00
lv00:N/A
LP    PP1  PV1             PP2  PV2             PP3  PV3
0001  0001 hdisk10         0001 hdisk13          
0002  0002 hdisk10         0002 hdisk13          
0003  0003 hdisk10         0003 hdisk13          
0004  0001 hdisk14         0001 hdisk11          
0005  0002 hdisk14         0002 hdisk11          
0006  0003 hdisk14         0003 hdisk11          
0007  0004 hdisk10         0004 hdisk13          
0008  0005 hdisk10         0005 hdisk13          
0009  0006 hdisk10         0006 hdisk13          
0010  0004 hdisk14         0004 hdisk11          
#

Auch bei gespiegelten LVs erzeugt migratelp temporär eine zusätzliche Spiegel-Kopie. Im Falle von gespiegelten LVs hängt die Arbeitsweise von migratelp allerdings davon ab, ob die Spiegel-Kopie 1 oder die Spiegel-Kopie 2 einer Logical Partition verschoben wird.

    • Variante 1: Wird die Spiegel-Kopie 1 auf ein anderes Physical Volume verschoben, dann wird die zusätzliche Spiegel-Kopie vor der Spiegel-Kopie 1 eingefügt. D.h. die existierende Spiegel-Kopie 1 wird zur Kopie 2 und die existierende Spiegel-Kopie 2 wird zur Kopie 3.
    • Variante 2: Wird die Spiegel-Kopie 2 auf ein anderes Physical Volume verschoben, dann wird die zusätzliche Spiegel-Kopie wie gehabt hinten angefügt und ist in diesem Falle die Kopie 3.

Variante 1

Wir schauen uns zunächst die Variante 1 genauer an. Hierzu verschieben wir die erste Kopie der Logical Partition 0004 von hdisk14 (DC02) nach hdisk12 (DC01).

Wir verfolgen die Arbeit von migratelp wieder graphisch.

# migratelp lv00/4 hdisk12

Das resultierende Logical Volume sieht dann so aus:

# lslv -m lv00
lv00:N/A
LP    PP1  PV1             PP2  PV2             PP3  PV3
0001  0001 hdisk10         0001 hdisk13          
0002  0002 hdisk10         0002 hdisk13          
0003  0003 hdisk10         0003 hdisk13          
0004  0009 hdisk12         0001 hdisk11           
0005  0010 hdisk14         0002 hdisk11          
0006  0011 hdisk14         0003 hdisk11          
0007  0004 hdisk10         0004 hdisk13          
0008  0005 hdisk10         0005 hdisk13          
0009  0006 hdisk10         0006 hdisk13          
0010  0012 hdisk14         0004 hdisk11            
#

Die erste Kopie von LP 0004 liegt jetzt auf hdisk12 (DC01).

Die Arbeitsweise von migratelp im Falle eines gespiegelten LVs (2 Kopien) und Verschieben einer Physical Partition in der Spiegel-Kopie 1:

    1. Spiegel-Kopie 2 wird zu Kopie 3 und Spiegel-Kopie 1 wird zu Kopie 2. Die zu ersetzende Physical Partition ist damit in der Spiegel-Kopie 2, nicht mehr in der Spiegel-Kopie 1!
    2. Einfügen der Physical Partition auf dem Ziel Physical Volume als Spiegel-Kopie 1.
    3. Aufsynchronisieren der neuen Spiegel-Kopie 1.
    4. Ersetzen der Spiegel-Kopie 2 durch die Kopie 3.

Variante 2

Die Variante 2, bei der in der zweiten Spiegel-Kopie verschoben wird, ist ähnlich dem ungespiegelten Fall. Hierzu verschieben wir die zweite Kopie der Logical Partition 0004 von hdisk11 (DC01) nach hdisk15 (DC02).

Wir verfolgen die Arbeit von migratelp wieder graphisch.

# migratelp lv00/4/2 hdisk15

Das resultierende Logical Volume sieht dann so aus:

# lslv -m lv00
lv00:N/A
LP    PP1  PV1             PP2  PV2             PP3  PV3
0001  0001 hdisk10         0001 hdisk13          
0002  0002 hdisk10         0002 hdisk13          
0003  0003 hdisk10         0003 hdisk13          
0004  0001 hdisk14         0009 hdisk15           
0005  0002 hdisk14         0002 hdisk11          
0006  0003 hdisk14         0003 hdisk11          
0007  0004 hdisk10         0004 hdisk13          
0008  0005 hdisk10         0005 hdisk13          
0009  0006 hdisk10         0006 hdisk13          
0010  0004 hdisk14         0004 hdisk11            
#

Die zweite Kopie von LP 0004 liegt jetzt auf hdisk15 (DC02).

Die Arbeitsweise von migratelp im Falle eines gespiegelten LVs (2 Kopien) und Verschieben einer Physical Partition in der Spiegel-Kopie 2:

    1. Hinzufügen der Spiegel-Kopie 3 auf dem Ziel Physical Volume.
    2. Aufsynchronisieren der neuen Spiegel-Kopie 3.
    3. Ersetzen der Spiegel-Kopie 2 durch die Spiegel-Kopie 3.

Mirror Pools und migratelp

Beim migratelp Kommando findet keine Überprüfung statt ob das ausgewählte Ziel Physical Volume im richtigen Mirror Pool liegt!

Der Fall eines Logical Volumes mit 3 Spiegel-Kopien wird in einem separaten Artikel betrachtet.