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

Verschieben Sie ein logisches Volume von einer Volume-Gruppe in eine andere

Eine Datenträgergruppe besteht aus ganzen physischen Datenträgern. Ein physisches Volume besteht aus vielen Extents (ein Extent ist normalerweise 4 MB groß); jeder Extent kann zu einem anderen logischen Volumen gehören. Um ein logisches Volume in eine andere Gruppe zu übertragen, können Sie nicht einfach Extents übertragen, da dies das physische Volume zwischen der Quell-VG und der Ziel-VG aufteilen könnte.

Was Sie tun können, ist, mit dem vgsplit ein oder mehrere PVs von der Quell-VG auf die Ziel-VG zu übertragen Befehl. Sie können angeben, welche PVs Sie übertragen möchten oder welche LV (jedoch immer nur einzeln). Wenn Sie einen LV angeben, müssen sich dieser und die anderen LVs in der Quell-VG auf separaten PVs befinden. Die Ziel-VG wird erstellt, wenn keine VG mit dem angegebenen Namen existiert.

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

Möglicherweise müssen Sie pvmove verwenden Ordnen Sie zuerst die logischen Volumes, die Sie verschieben möchten, auf separaten PVs an.

Wenn Sie die physischen Grenzen der VG beibehalten und die Daten verschieben wollten, gibt es kein integriertes Tool, aber Sie könnten eine Spiegelung erstellen und dann das Original entfernen.


Ab LVM in Debian Stretch (9.0), nämlich 2.02.168-2, ist es möglich, eine Kopie eines logischen Volumens über Volumengruppen 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 Volume-Gruppen vg1 und vg2 auf /dev/loop1 bzw. /dev/loop2.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Erstellen Sie die logischen 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 auf lv1, damit Sie später überprüfen können, ob die Kopie korrekt erstellt wurde. vg1 deaktivieren.

vgchange -a n vg1

Führen Sie den Merge-Befehl im Testmodus aus. Dies verschmilzt vg1 mit vg2.

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 . Diedest-pv Argument sagt lvconvert um die Spiegelkopie auf /dev/loop2 zu machen .

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/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

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 logische Volumes in vg1 muss inaktiv sein. Und auf geteilten logischen Volumes in vg2 gehört zu vg1 muss inaktiv sein. In unserem Fall ist dies lv1 .


Ich werde mein eigenes anbieten:

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

Wenn alles in Ordnung ist, entfernen Sie die Quelle

lvremove vgsource/lv0

Linux
  1. CentOS / RHEL :Verschieben Sie ein physisches Volume von einer vorhandenen Volume-Gruppe in eine andere Volume-Gruppe

  2. CentOS / RHEL :So verschieben Sie eine Volumengruppe von einem System auf ein anderes

  3. So verschieben Sie Swap von der Festplattenpartition auf das LVM-Volume in Linux

  4. Wie verschiebt (und überschreibt) man alle Dateien von einem Verzeichnis in ein anderes?

  5. Wie finde ich Wörter aus einer Datei in einer anderen Datei?

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

Verwaltung logischer Volumes

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

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

Verschieben Sie ein E-Mail-Konto von einem cPanel-Server auf einen anderen

Wie verschiebt man Konten von einem cPanel-Server auf einen anderen cPanel-Server?