Wenn Sie dafür sorgen können, dass sich der logische Datenträger auf einer separaten Teilmenge physischer Datenträger vom Rest der Quell-Datenträgergruppe befindet (lvconvert sourcevg/sourcelv /dev/pv1 ... kann helfen), können Sie vgsplit verwenden um das lv in ein neues vg und vgmerge abzuspalten um die neue vg mit der Ziel-vg zu verschmelzen.
Obwohl LVM eine Spiegelungsfunktion hat, können Sie sie nicht (vernünftigerweise) verwenden, um eine Kopie zwischen Datenträgergruppen zu erstellen, da beide Zweige des Spiegels auf derselben vg leben müssen und die Zuordnung nicht unterbrochen werden kann.
Sie können ein LVM-Volume auf ein anderes kopieren, wie Sie jedes andere Volume auf ein anderes kopieren würden:Erstellen Sie ein Ziel-LV 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 LVM nutzen, um eine konsistente Kopie zu erstellen:Erstellen Sie zuerst mit lvcreate -s einen Snapshot des Quell-Lv , kopieren Sie dann den Snapshot.
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmove kann Daten zwischen physischen Volumes verschieben:LVM Administrator's Guide
Ab LVM in Debian Stretch (9.0), nämlich 2.02.168-2, ist es möglich, eine Kopie eines logischen Volumes über Volume-Gruppen hinweg zu erstellen, indem eine Kombination aus vgmerge verwendet wird , lvconvert , und vgsplit . Da ein Verschieben eine Kombination aus Kopieren und Löschen ist, funktioniert dies auch für ein Verschieben.
Alternativ können Sie pvmove verwenden um einfach die Lautstärke zu verschieben.
Eine vollständige, in sich geschlossene Beispielsitzung mit Loop-Geräten und lvconvert folgt.
Zusammenfassung:Wir erstellen die Volumengruppe vg1 mit logischem Volume lv1 , und vg2 mit lv2 , und erstellen Sie eine Kopie von lv1 in vg2 .
Dateien erstellen.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Loop-Geräte für Dateien einrichten.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Erstellen Sie physische Volumes auf Loop-Geräten (initialisieren Sie Loop-Geräte zur Verwendung durch LVM).
pvcreate /dev/loop1 /dev/loop2
Erstellen Sie Volumengruppen vg1 und vg2 auf /dev/loop1 und /dev/loop2 bzw..
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Erstellen Sie logische Volumes lv1 und lv2 auf vg1 und vg2 bzw..
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Erstellen Sie ext4-Dateisysteme auf lv1 und lv2 .
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Optional schreiben Sie etwas auf lv1 damit Sie später überprüfen können, ob die Kopie korrekt erstellt wurde. Machen Sie vg1 inaktiv.
vgchange -a n vg1
Führen Sie den Merge-Befehl im Testmodus aus. Dadurch wird lv1 zusammengeführt in lv2 .
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
Und dann wirklich.
vgmerge -A y -l -v vg2 vg1
Erstellen Sie dann ein RAID 1-Spiegelpaar aus lv1 mit lvconvert . Das <> Argument teilt lvconvert mit um die Spiegelkopie anzufertigenlv1_copy auf /dev/loop2 .
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Dann den Spiegel teilen. Der neue LV ist jetzt lv1_copy .
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Machen Sie vg2 inaktiv.
vgchange -a n vg2
Dann (Testmodus)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Echt
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Ergebnisausgabe:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
HINWEISE:
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 sich weigern fortzufahren.
3) Beim Zusammenführen:
Logical volumes in `vg1` must be inactive
Und bei Split:
Logical volume `vg2/lv1` must be inactive.