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
und vgsplit
. 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äger lv1
und vg2
mit lv2
und erstellen eine Kopie von lv1
in vg2
.
Erstellen Sie Dateien.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Richten Sie Loop-Geräte für Dateien ein.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Erstellen Sie physische Volumes auf Loop-Geräten (initialisieren Sie Loop-Geräte für die Verwendung durch LVM).
pvcreate /dev/loop1 /dev/loop2
Erstellen Sie die Volume-Gruppen vg1 und vg2 in / dev / loop1 bzw. / dev / loop2.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Erstellen Sie logische Volumes lv1 und lv2 auf vg1 bzw. vg2.
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
Schreiben Sie optional etwas in lv1, damit Sie später überprüfen können, ob die Kopie korrekt erstellt wurde. Schalten Sie vg1 inaktiv.
vgchange -a n vg1
Führen Sie den Befehl merge im Testmodus aus. Dies führt vg1 zu vg2 zusammen.
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
Und dann echt.
vgmerge -A y -l -v vg2 vg1
Dann erstellen Sie ein RAID 1 - Spiegelpaar aus lv1
mit lvconvert
. Das
dest-pv
Argument besagt lvconvert
, dass die Spiegelkopie erstellt werden soll /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Dann teilen Sie den Spiegel. 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 vg2/lv1
inaktiv.
lvchange -a n /dev/vg2/lv1
Dann (Testmodus)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Wirklich
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Resultierende Ausgabe:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
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 müssen die logischen Volumes vg1
inaktiv sein. Bei der Aufteilung müssen die logischen Datenträger vg2
, zu vg1
denen gehört, inaktiv sein. In unserem Fall ist dies lv1
.