Neuaufsetzen eines LV-Spiegels unter Verwendung von Map-Dateien
Inhalt
- Das Problem
- Welche LVs sind betroffen?
- Erzeugen der Map-Dateien
- Löschen des Spiegels
- Löschen der betroffenen Platte aus ODM und /dev
- Neue Platte einbauen und verfügbar machen
- Spiegel wieder aufsetzen
I. Das Problem
Es soll ein komplett symmetrischer Spiegel eines LVs, das sich über mehrere PVs erstreckt, (wieder)aufgesetzt werden.
II. Welche LVs sind betroffen?
Durch einen Plattendefekt nicht mehr vollständig synchronisierte Spiegel präsentieren sich im Listing einer Volume Group als stale (fett hervorgehoben):
aix# lsvg -l datavg datavg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT loglv jfslog 3 6 2 open/syncd N/A swlv jfs 750 1500 4 open/stale /sw dblv jfs 498 996 4 open/stale /db |
Angenommen hdisk3 (=> errpt) ist die betroffene Platte, dann erhält man die LV-Kopien, die sich auf dieser befinden mit
aix# lspv -l hdisk3 hdisk3: LV NAME LPs PPs DISTRIBUTION MOUNT POINT dblv 111 111 94..00..00..17..00 /db swlv 216 216 02..107..107..00..00 /sw |
Alle Platten, über die sich ein betroffenes LV (hier; dblv) erstreckt, erhält man mit
aix# lslv -l dblv dblv:/db PV COPIES IN BAND DISTRIBUTION hdisk2 387:000:000 27% 000:107:107:107:066 hdisk3 111:000:000 0% 094:000:000:017:000 hdisk6 387:000:000 27% 000:107:107:107:066 hdisk7 111:000:000 0% 094:000:000:017:000 aix# lslv -l swlv swlv:/sw PV COPIES IN BAND DISTRIBUTION hdisk2 534:000:000 19% 108:104:107:107:108 hdisk3 216:000:000 49% 002:107:107:000:000 hdisk6 534:000:000 19% 108:104:107:107:108 hdisk7 216:000:000 49% 002:107:107:000:000 |
Aus dem Listing sind dann die Platten herauszusuchen, die zu der Spiegelkopie gehören, zu der
die betroffene Platte (hdisk3) gehört. Aus dem Listing oben sieht man relativ schnell,
dass hdisk3 der Spiegel von hdisk7 und hdisk2 der Spiegel von hdisk6 ist.
III. Erzeugen der Map-Dateien
Kann auf die defekte Platte noch zugegriffen werden, so lassen sich die Map-Dateien wie folgt erzeugen:
aix# for m in hdisk2 hdisk3 ; do lspv -M $m swlv ; done | grep swlv | awk '{print $1}' > /tmp/swlv.map aix# for m in hdisk2 hdisk3 ; do lspv -M $m dblv ; done | grep dblv | awk '{print $1}' > /tmp/dblv.map |
Ist dies nicht mehr möglich, muss das Mapping von der anderen Spiegel-Kopie gelesen werden:
aix# for m in hdisk6 hdisk7 ; do lspv -M $m swlv ; done | grep swlv | awk '{print $1}' | sed -e 's/hdisk6/hdisk2/g' -e 's/hdisk7/hdisk3/g' > /tmp/swlv.map aix# for m in hdisk6 hdisk7 ; do lspv -M $m dblv ; done | grep dblv | awk '{print $1}' | sed -e 's/hdisk6/hdisk2/g' -e 's/hdisk7/hdisk3/g' > /tmp/dblv.map |
Im sed-Ausdruck müssen immer die beiden Spiegelkopien paarweise auftauchen, angefangen mit der Platte, von der Sie lesen.
IV. Löschen des Spiegels
Mit den folgenden zwei Befehlen wird der Spiegel von der betroffenen Platte entfernt (es können nur komplette Spiegel entfernt werden, deshalb fällt dem rmlvcopy auch noch der Teil, der sich auf hdisk2 befindet, zum Opfer). Die betroffene Volume Group wird um die betroffene Platte verkleinert:
aix# rmlvcopy dblv 1 hdisk2 hdisk3 aix# rmlvcopy swlv 1 hdisk2 hdisk3 aix# reducevg datavg hdisk3 |
V. Löschen der betroffenen Platte aus ODM und /dev
aix# rmdev -dl hdisk3 hdisk3 deleted |
VI. Neue Platte einbauen und verfügbar machen
Anschließend kann die neue Platte eingebaut werden. Falls Sie die Maschine dafür nicht herunterfahren müssen (Hot-Plug), muss der Konfigurationsmanager aufgerufen werden:
aix# cfgmgr |
Danach sollte die neue Platte unter der Bezeichnung hdisk3 zur Verfügung stehen und kann der VG hinzugefügt werden:
aix# extendvg datavg hdisk3 |
VII. Spiegel wieder aufsetzen
Unter Zuhilfename der unter III. erzeugten Map-Dateien kann nun der Spiegel wieder aufgesetzt werden:
aix# mklvcopy -m /tmp/dblv.map dblv 2 hdisk2 hdisk3 aix# mklvcopy -m /tmp/swlv.map swlv 2 hdisk2 hdisk3 aix# varyonvg datavg |
Mit dem varyonvg am Ende stellen Sie sicher, dass die Synchronisation beginnt. Sie können den Fortschritt beobachten:
aix# while true ; do sleep 20 && lsvg datavg | grep STALE ; done STALE PVs: 2 STALE PPs: 1024 STALE PVs: 2 STALE PPs: 1009 STALE PVs: 2 STALE PPs: 994 STALE PVs: 2 STALE PPs: 979 STALE PVs: 2 STALE PPs: 964 STALE PVs: 2 STALE PPs: 950 STALE PVs: 2 STALE PPs: 935 STALE PVs: 2 STALE PPs: 920 STALE PVs: 2 STALE PPs: 906 [...] STALE PVs: 0 STALE PPs: 0 ^C |
Wenn die Anzahl der "STALE PPs" bei "0" angelangt ist, ist der Spiegel wieder vollständig synchronisiert.