Gibt es eine einfache Möglichkeit, ein logisches Volume von einer Volume-Gruppe in eine andere zu verschieben / kopieren? (LVM2)
15
Ich ordne eine Reihe von Festplatten auf meinem Server zu Hause neu und bin in der Lage, eine Reihe von logischen LVM-Datenträgern in eine andere Datenträgergruppe zu verschieben. Gibt es eine einfache Möglichkeit, dies zu tun? Ich habe die Erwähnung eines cplvBefehls gesehen, aber dies scheint entweder alt oder etwas, das jemals für Linux verfügbar war, zu sein.
Wenn Sie dafür sorgen können, dass sich das logische Volume in einer vom Rest der Quell-Volume-Gruppe getrennten Teilmenge der physischen Volumes befindet (was lvconvert sourcevg/sourcelv /dev/pv1 ...möglicherweise hilfreich ist), können Sie vgsplitdas lv in eine neue vg aufteilen und vgmergedie neue vg in die zusammenführen Ziel vg.
Obwohl LVM über eine Spiegelungsfunktion verfügt, können Sie mit dieser Funktion keine Kopien zwischen Volume-Gruppen erstellen, da beide Beine des Spiegels in derselben VG gespeichert sein müssen und die Zuordnung nicht unterbrochen werden kann .
Sie können ein LVM-Volume auf die gleiche Weise auf ein anderes kopieren, wie Sie ein beliebiges Volume auf ein anderes kopieren möchten: Erstellen Sie ein Ziel-LV mit der entsprechenden Größe und kopieren Sie dann den Inhalt mit dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M . Wenn das Quellvolume aktiv ist, können Sie mithilfe von LVM eine konsistente Kopie erstellen: Erstellen Sie zuerst einen Snapshot des Quellvolumes mit lvcreate -sund kopieren Sie dann den Snapshot.
Brilliant Gilles .... vgsplit / vgmerge wird wahrscheinlich in Ordnung sein: Ich kann danach pvmove verwenden, um die physischen Extents auf die neue Festplatte zu verschieben und dann das alte Volume aus der VG zu entfernen.
JKP
Schade, das hat bei mir am Ende wegen der unterschiedlich großen Ausmaße nicht geklappt. Wenn dies jedoch kein Problem für Sie ist, empfehle ich, dass diese Methode am einfachsten ist.
JKP
Nach dem dd(wenn Sie sich beeilen , um nicht abwerfen alten Bände) vergessen zu UUID neuer Dateisysteme, ändern sich nicht: tune2fs -U random / dev / targetvg / targetlv
Ich wiederhole: Dies funktioniert nicht für zwei separate Volumengruppen
kissgyorgy
Zuerst vgextendvg1 mit einem neuen pv, dann pvmovedein lv zum neuen pv, vgsplitein temporäres vg das du vgmergein vg2 hast. Dann pvmovenochmal das lv auf vg2 original pv, um vgreducevg2 vom intermediären pv abzulesen. Um die Zwischenkopie zu vermeiden, können Sie einfach zuerst vg1 in vg2, pvmovelv1 und vgspliterneut vg1 aus vg2 zusammenführen. Dies sollte auf Einwände von @ MattBianco und @ kissgyorgy antworten und entspricht der Lösung von @Gilles, ersetzt jedoch den Schnappschuss und die niedrige Ebene dddurch apvmove
marcz
1
Wie in den LVM Debian Stretch (9,0), nämlich 2.02.168-2, dann ist es möglich , eine Kopie eines logischen Datenträger über Volumengruppen mit einer Kombination von zu tun vgmerge, lvconvertund vgsplit. Da ein Zug eine Kombination aus Kopieren und Löschen ist, funktioniert dies auch für einen Zug.
Alternativ können Sie auch pvmoveeinfach die Lautstärke verschieben.
Eine vollständige eigenständige Beispielsitzung mit Loop-Geräten und
lvconvertfolgenden Schritten.
Zusammenfassung: Wir erstellen eine Datenträgergruppe vg1mit logischem Datenträger lv1und vg2mit lv2und erstellen eine Kopie von lv1in vg2.
dd
(wenn Sie sich beeilen , um nicht abwerfen alten Bände) vergessen zu UUID neuer Dateisysteme, ändern sich nicht: tune2fs -U random / dev / targetvg / targetlvpvmove kann Daten zwischen physischen Volumes verschieben: LVM-Administratorhandbuch
quelle
vgextend
vg1 mit einem neuen pv, dannpvmove
dein lv zum neuen pv,vgsplit
ein temporäres vg das duvgmerge
in vg2 hast. Dannpvmove
nochmal das lv auf vg2 original pv, umvgreduce
vg2 vom intermediären pv abzulesen. Um die Zwischenkopie zu vermeiden, können Sie einfach zuerst vg1 in vg2,pvmove
lv1 undvgsplit
erneut vg1 aus vg2 zusammenführen. Dies sollte auf Einwände von @ MattBianco und @ kissgyorgy antworten und entspricht der Lösung von @Gilles, ersetzt jedoch den Schnappschuss und die niedrige Ebenedd
durch apvmove
Wie in den LVM Debian Stretch (9,0), nämlich 2.02.168-2, dann ist es möglich , eine Kopie eines logischen Datenträger über Volumengruppen mit einer Kombination von zu tun
vgmerge
,lvconvert
undvgsplit
. Da ein Zug eine Kombination aus Kopieren und Löschen ist, funktioniert dies auch für einen Zug.Alternativ können Sie auch
pvmove
einfach die Lautstärke verschieben.Eine vollständige eigenständige Beispielsitzung mit Loop-Geräten und
lvconvert
folgenden Schritten.Zusammenfassung: Wir erstellen eine Datenträgergruppe
vg1
mit logischem Datenträgerlv1
undvg2
mitlv2
und erstellen eine Kopie vonlv1
invg2
.Erstellen Sie Dateien.
Richten Sie Loop-Geräte für Dateien ein.
Erstellen Sie physische Volumes auf Loop-Geräten (initialisieren Sie Loop-Geräte für die Verwendung durch LVM).
Erstellen Volumengruppen
vg1
undvg2
auf/dev/loop1
und/dev/loop2
sind.Erstellen Sie logische Volumes
lv1
und jeweilslv2
einvg1
undvg2
.Erstellen Sie ext4-Dateisysteme auf
lv1
undlv2
.Schreiben
lv1
Sie optional etwas auf, damit Sie später überprüfen können, ob die Kopie korrekt erstellt wurde. Machenvg1
inaktiv.Führen Sie den Befehl merge im Testmodus aus. Dies geht
lv1
in ... überlv2
.Und dann echt.
Dann erstellen Sie ein RAID 1 - Spiegelpaar aus
lv1
mitlvconvert
. Die <> Argument teiltlvconvert
die gespiegelte Kopie machenlv1_copy
auf/dev/loop2
.Dann teilen Sie den Spiegel. Der neue LV ist jetzt
lv1_copy
.Machen
vg2
inaktiv.Dann (Testmodus)
Wirklich
Resultierende Ausgabe:
ANMERKUNGEN:
1) Die meisten dieser Befehle müssen als root ausgeführt werden.
2) Wenn die Namen der logischen Datenträger in den beiden Datenträgergruppen doppelt vorhanden sind,
vgmerge
wird der Vorgang abgelehnt.3) Beim Zusammenführen:
Und bei split:
quelle