GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
28. Juli 2003

Neuaufsetzen eines LV-Spiegels unter Verwendung von Map-Dateien

Inhalt

  1. Das Problem
  2. Welche LVs sind betroffen?
  3. Erzeugen der Map-Dateien
  4. Löschen des Spiegels
  5. Löschen der betroffenen Platte aus ODM und /dev
  6. Neue Platte einbauen und verfügbar machen
  7. 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.