Grundsätzlich möchte ich mehrere logische Volumes (lv) in eine neue Volume-Gruppe (vg) verschieben / kopieren . Die neue Datenträgergruppe befindet sich auf einem neuen Satz physischer Datenträger. Weiß jemand, wie man das sicher macht, ohne die Daten in diesen logischen Volumes zu beschädigen?
partitioning
hard-drive
lvm
niemand
quelle
quelle
Antworten:
Mit vgmerge können Sie zwei VGs zusammenführen. Sie können auch pvmove verwenden , um Daten innerhalb einer VG zu verschieben, und vgsplit, wenn Sie zu mehreren VGs zurückkehren möchten.
quelle
Es gibt keinen Grund, es zuerst in eine .img-Datei zu kopieren. Führen Sie zuerst lvcreate aus und kopieren Sie es dann direkt über:
quelle
Okay, ich konnte die Situation auf meine eigene Weise bewältigen. Hier sind die Schritte, die ich unternommen habe:
1) Machen Sie einen Schnappschuss des logischen Zieldatenträgers.
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
2) Erstellen Sie mit eine Image-Kopie des Schnappschuss-Inhalts
dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Erstellen Sie ein neues logisches Volume mit ausreichender Größe in der (neuen) Targeting-Volume-Gruppe.
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Schreiben Sie die Daten aus der Imagesicherung mit auf das neue logische Volume
dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) Löschen Sie den Schnappschuss und die Imagesicherung mit
lvremove
undrm
.Das ist alles Leute ... Hoffe, das hilft jemandem :)
quelle
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 die Datenträgergruppe vg1 mit dem logischen Datenträger lv1 und vg2 mit lv2 und erstellen eine Kopie von lv1 in vg2.
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 Sie die Volume-Gruppen vg1 und vg2 in / dev / loop1 bzw. / dev / loop2.
Erstellen Sie logische Volumes lv1 und lv2 auf vg1 bzw. vg2.
Erstellen Sie ext4-Dateisysteme auf lv1 und 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.
Führen Sie den Befehl merge im Testmodus aus. Dies verschmilzt lv1 mit lv2.
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. Die neue LV ist jetzt lv1_copy.
Schalten Sie 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
Die 4 Antworten fehlen bisher alle, so dass die genaue Größe des Volumens oft nicht bekannt ist.
lvdisplay
Zeigt nur Werte an, die auf 2 Dezimalstellen gerundet sind, und zeigtman lvdisplay
nur auf andere Befehle für verfügbare Optionen. Im Folgenden wird MiB ausgewählt, was mit der Standard-LVM-Blockgröße von 4 MiB ausreichend genau ist:lvdisplay --units m
MiB ist auch die Standardeinheit für
--size
vonlvcreate
. Überprüfen Sie im Zweifelsfall die korrekte Größe mit,lvdisplay
nachdem Sie das Zieldatenträger erstellt haben. Fahren Sie dann wie in den anderen Antworten fort, um eine Kopie zu erstellen. Weiterhin würde ich empfehlen, die Kopie beispielsweise mit zu überprüfencmp
.Hier, warum ein Schnappschuss verwendet wird und was er schützt und was nicht:
Der Snapshot wird so erstellt, dass alle Daten so kopiert werden, wie sie zum Zeitpunkt der Snapshot-Erstellung waren. Aktivitäten auf dem Quellvolume während des Kopiervorgangs werden in der Kopie nicht berücksichtigt.
Der Snapshot schützt das Quellvolume auch vor menschlichen Fehlern in der
dd
Befehlszeile. Wenn Sie versehentlich in den Schnappschuss schreiben, werden nur die Daten des Schnappschusses beschädigt. Sie können den Schnappschuss einfach entfernen und von vorne beginnen.Das Zieldatenträger ist während des Kopiervorgangs nicht geschützt. Wenn ein anderer Administrator (oder ein automatischer Prozess wie der os-prober von
dracut
) das unvollständige Volume mounten, kann dies zu Problemen führen. (Sogar ein schreibgeschützter Mount schreibt möglicherweise noch Journaleinträge auf das Volume.)quelle
Ich werde mein eigenes anbieten:
Wenn alles in Ordnung ist, entfernen Sie die Quelle
quelle
Wenn Sie ein logisches Volume von VG A auf ein anderes VG B kopieren müssen, habe ich eine interessante Variante mit gefunden
partclone
. Der Schnappschuss, der dann mit dd kopiert wird, ist eine gute Methode, kann aber langsam sein, wenn Ihre Dateisysteme nicht voll sind. Diese Lösung ist sehr schnell, da nur die verwendeten Blöcke kopiert werden.das
--size
hier ist , wie viel Schreib auftreten kann , bevor die Snapshot deaktiviert wirdnew_lv_size
muss mindestens der Größe des Quell-LV entsprechenfs_type
sein kannext4
,fat32
,btrfs
,xfs
, ... irgendwelche FS unterstützt von partclonequelle