GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine einfache Möglichkeit, ein logisches Volume von einer Volume-Gruppe in eine andere zu verschieben/kopieren? (LVM2)

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.

Linux
  1. So kopieren oder klonen Sie Berechtigungen von einer Datei in eine andere unter Linux

  2. Wie verschiebt man alle Dateien (einschließlich versteckter) von einem Verzeichnis in ein anderes?

  3. Wie kopiert man Einstellungen von einem Gerät auf ein anderes?

  4. Wie kopiert man die Top 10 der neuesten Dateien von einem Verzeichnis in ein anderes?

  5. Wie kopiere ich Commits von einem Git-Repo in ein anderes?

So kopieren Sie Elemente von einer DynamoDB-Tabelle in eine andere DynamoDB-Tabelle mit Python auf AWS

Reptyr – Verschieben Sie einen laufenden Prozess von einem Terminal zum anderen, ohne es zu schließen

Linux – Ein logisches Volume von einer Volume-Gruppe in eine andere verschieben?

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

So kopieren Sie eine Tabelle von einer MySQL-Datenbank in eine andere MySQL-Datenbank

Kopieren Sie die Ordnerstruktur (ohne Dateien) von einem Ort zum anderen