Datacore – migration von LVM Host based mirror auf PVlinks remote mirror


Vorab: Wenn die Datacore Spiegel jemals zerfallen, wird es sehr “spannend” im LVM Layer aussehen.
Eine Zusammenfassung fehlt, und es gaebe nen Hardcoreweg, den ich aber nur selber machen wuerde 🙂
3/4 des Texts sind sicherstellen, dass es sauber gespiegelt ist.
Es passt nur fuer 11.00/11.11/11.23 – ein 11iv3 habe ich noch nie in die Finger bekommen.

erstmal: safeguards

test -r /etc/lvmpvg || echo "this isn't a PVG setup, mirrors are not guaranteed to be OK"

Das gleiche mit
vgdisplay -v /dev/vguserdata
anschauen und exakt pruefen. Es muss offensichtlich sein, dass alle volumes der einen Seite in einer PVG und alle von der anderen in der anderen PVG sind.

# check and force PVG strict mirroring, will fail if volume is already mirrored
    lvdisplay $lv | grep Allocation 

# first set up CORRECT PVGs 
   just edit /etc/lvmpvg in vi
# safely re-mirror using:
    lvreduce -m 0 (list_all_mirror_0 disks) $lv # drop mirrors from *one* side
    lvchange -s y $lv # drop pvg-strict req, which is ok if already fucked up

    for disk in list_all_mirror_0 disks 
      do 
        pvmove $disk MIRROR_1_PVG # kick all PEs to ONE side by force
        lvchange -s g $lv # reenable PVG-strict mirror policy
        lvextend -m 1 $lv # create a fresh mirror, now automatically on the right spot in set 0.
   done

Den Spiegel fuer eine perfekte 1:1 zuordnung auch andersrum neu zu bauen, ist nutzlos, da der ja eh rausfliegt.

Danach kann man noch sicherheitshalber wichtige Settings neu machen.
# disable bad block relocation (avoid running it in OS *and* storage)
lvchange -r N $lv

# set all PVs to a 2 minute safety timeout (this will graciously cope with switch reboots)
pvchange -t 120 $pv

Und dann geht’s los:

identifiziere den HW-Pfad, der zur Mirrorseite 1 gehoert (hier jetzt mal c21 und c23)

for vg in /dev/vg* 
  for lv in $vg/lv* 
     do 
       lvreduce -A n -m 0 $lv
  done
# Wenn Du hier den grep nach den HW Pfaden nicht hast, ist die Kiste nach dem rmsf am A****
  for pv in $( vgdisplay $vg | grep "PV Name" | grep -e c21 -e c23 | sort -u | awk '{print $3}' )
       do
        vgreduce -A n $vg $pv
        pvremove $( echo $pv | sed 's/dsk/rdsk/' )
        rmsf -k $pv
  done
  vgcfgbackup $lv
done

jetzt sind hoffentlich die Mirror 1 – Devices freigegeben und ein sauberer Spiegel liegt auf Mirror 0.
Also Zeit, die Konfig anzupassen, so dass auf der Mirror 1 Seite nun nur noch alternative Pfade sichtbar sind.

Danach mit ioscan -fnCdisk die Platten sichtbar machen.

BITTE dann erstmal manuell checken, ob sie ok aussehen.
(Link zu PVID-Scan sollte hier rein)

# Aktuelle LVM Config wegschieben – ab jetzt keine Aenderungen “commiten”, solange es nicht gut aussieht.
Falls ja:

mv /etc/lvmpvg /etc/lvmpvg.save.$$

vgscan -v -p

Vgscan output exakt kontrollieren, falls der alle Pfade und VGs mit Namen kennt, ist das gut, dann einfach nochmal mit vgscan -v laufen lassen.
Klappt aber auch oft nicht.
Dann muessen die Alternates halt manuell ermittelt und mit vgextend einzeln zugeordnet werden.

Fuer Loadbalancing kannst Du danach noch die Primary-Alternate Links mit vgreduce/vgextend neu sortieren, oder nur temporaer mit pvchange -s umschalten.

Ausserdem: die QueueDepth Settings sollte man ueberpruefen, da HP-UX Defaultmaessig ne Queue Laenge von 8 nutzt – ausser $Vendor liefert gute Treiber mit. Kommt aber niiiiiiiieee vor, deswegen einfach ein rc-Script bauen, was diese mit scsictl beim Boot setzt.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s