LVM Mirrored Volume

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

Ein Mirrored Volume besteht aus einem linearen Logical Volume (LV) und einer Kopie davon. Dazu kann beim Erstellen der LVs mit lvcreate der Parameter "-m" und die Anzahl der gewünschten Kopien angegeben werden. So würde -m2 zwei Spiegelungen erzeugen, wodurch mit dem Referenz-LV drei Kopien des Dateisystems vorhanden sind.

Anlegen von Mirrored LVMs

Zu Beginn werden 2 neue PVs erzeugt und in einer VG zusammengefasst:

root@ubuntu:~# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created
root@ubuntu:~# pvcreate /dev/sde1
  Physical volume "/dev/sde1" successfully created
root@ubuntu:~# vgcreate mirrdata /dev/sdd1 /dev/sde1 
  Volume group "mirrdata" successfully created

Nun wird in dieser VG ein mirrored LV erstellt, dass /dev/sdd1 und /dev/sde1 als Legs verwendet. Legs bezeichnen die beiden Standbeine, aus denen der Spiegel besteht. Das Synchronisations-Log wird dabei mit der Option "--corelog" in den Hauptspeicher verlegt. Dieses Vorgehen ist nur für Testzwecke zu empfehlen, da nach einem Reboot das Log verloren geht und somit auch keine Information mehr vorhanden ist, welche Teile synchronisiert wurden. Die Synchronisation müsste daher von Beginn an starten. Daher wäre ein drittes PV für Log-Daten zu empfehlen.[1] Mit folgendem Befehl wird das gespiegelte LV erzeugt:

lvcreate -l50%FREE -m1 -n mirrorlv mirrdata /dev/sdd1 /dev/sde1 --corelog

Fällt nun ein Leg aus, so wird das zweite automatisch als lineares LV bereitgestellt und das ausgefallene Leg kann ausgetauscht werden. Das nun als lineare LV bereitgestellte kann anschließend wieder in ein mirrored LV konvertiert werden, wenn wieder genügend Platz in der VG vorhanden ist. Dazu gibt es ein lvconvert Kommando. Eine gute Beschreibung, wie dieses Szenario von Beginn an vonstatten geht, kann unter [2] gefunden werden. Ein kurzes Beispiel, wie die Konvertierung eines LVs "data" der VG "vg00" -- diese muss genügend Platz aufweisen -- sieht so aus:

root@ubuntu:~# lvconvert -m1 vg00/data --corelog 
  vg00/data: Converted: 70.1% 
  vg00/data: Converted: 100.0% 
  Logical volume data converted

Um zu überprüfen, ob die Daten auch wirklich gespiegelt sind und auf welchen Devices sich die Legs befinden, kann über den Befehl lvs heraus gefiltert werden:

root@ubuntu:~# lvs -a -o +devices  
   LV                  VG       Attr   LSize    Origin Snap%  Move Log  Copy%  Convert Devices
mirrorlv             mirrdata mwi-a- 1020.00m                        100.00          mirrorlv_mimage_0(0),mirrorlv_mimage_1(0)
 [mirrorlv_mimage_0] mirrdata iwi-ao 1020.00m                                       /dev/sdd1(0) 
 [mirrorlv_mimage_1] mirrdata iwi-ao 1020.00m                                       /dev/sde1(0)

Einzelnachweise