[gelöst] LVM Partition auf neue Platte übertragen

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
max123kl
Beiträge: 43
Registriert: 20.02.2006 22:33:39
Lizenz eigener Beiträge: MIT Lizenz

Re: LVM Partition auf neue Platte übertragen

Beitrag von max123kl » 02.05.2019 18:51:33

bluestar hat geschrieben: ↑ zum Beitrag ↑
02.05.2019 09:29:29
.... Was jedoch mit ziemlicher Sicherheit nicht funktionieren wird, das Image von EX-sda2 auf sda3 zu übernehmen, wenn sda3 kleiner ist als EX-sda2.
Das ist mir klar. Ich will ja auch gar nicht die komplette Ex-sda2 in die neue sda3 transferieren. S. unten
Mein Ansatz wäre folgender:
0) Sauber Live System neu booten
1) sda3 mit nullen überschreiben
2) Das Image der alten Partition als Loopback-Device (loopX) einhängen
3) /etc/lvm/lvm.conf => filter anpassen:

Code: Alles auswählen

filter = [ "a|loop|","a|sd|" "r|.*|" ]
verwenden
4) Mit vgscan und vgimport deine alte VG (Name unbekannt) von /dev/loopX an den Start bekommen.
5) Danach deine VG vergrößern: vgextend vg-unbekannt /dev/sda3
6) Mit pvmove alle Datenblöcke in der VG unbekannt von /dev/loopX nach /dev/sda3 verschieben: pvmove /dev/loopX
7) Deine Volume Gruppe um /dev/loopX verkleinern: vgreduce VG-unbekannt /dev/loopX
zu 1) Warum? Doch nur falls ich die ehemals vorhandene Installation komplett übernehmen wollte.
zu 3) Die neue Filteregel reichte nicht aus: vgscan -vvv (Zeile 4)

Code: Alles auswählen

 devices/global_filter not found in config: defaulting to global_filter = [ "a|.*/|" ] 
(http://zlocal.bplaced.net/uploads/vgscan_vvv.txt)

Erst als ich global_filter in: global_filter = [ "a|loop|","a|sd|" "r|.*|" ] geändert habe sind sowohl für loop1 als auch für sdd2 Einträge gelistet. (http://zlocal.bplaced.net/uploads/vgscan_vvv2.txt)
pvs erkennt jetzt auch die LVM-Partition auf sdd2 (auch mit der default lvm.conf). Ich habe deshalb das loop1-Device deaktiviert

Code: Alles auswählen

 # pvs
  WARNING: Device for PV CB7VSM-ogyq-lnCz-WqN4-usay-wPDR-eFlcJi not found or rejected by a filter.
  PV         VG           Fmt  Attr PSize   PFree
  /dev/sda3  host1_vg     lvm2 a--  930.82g <851.67g
  /dev/sdb1  host1_vg     lvm2 a--  232.88g  232.88g
  /dev/sdc1  host1_hdd_vg lvm2 a--   <5.46t   <4.03g
  /dev/sdd2  host1_vg     lvm2 a--  931.31g <280.09g
  [unknown]  host1_vg     lvm2 a-m  232.88g  232.88g
Ein Fehler ist mir dabei aufgefallen:
Es existieren doppelte Namen von PVs, VGs und LVs. Ich werde nun erst mal die derzeit existierenden so umbenennen, dass es mit den alten keine Namen-Kollisionen gibt.

Ich werde vorläufig mit sdd2 weiterarbeiten weil a) die Daten schon auf der Platte sind, sie b) inzwischen erkannt wird und c) um zu verhindern, dass Manipulationen im Loop-Device sich negativ auf das DD-Image auswirken.

zu 4-7) Da ich auf keinen Fall die alte Jessie-Installation einspielen und anschließend auf Buster upgraden will, werde ich mir einen angepassten Weg überlegen müssen. Ich möchte lediglich einige der KVM-VMs, die als LVM-LVs in der EX-sda2 liegen importieren.

Falls es Probleme gibt oder wenn ich Erfolg habe, werde ich mich wieder melden.

max123kl
Beiträge: 43
Registriert: 20.02.2006 22:33:39
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] LVM Partition auf neue Platte übertragen

Beitrag von max123kl » 03.05.2019 18:12:24

Hallo,
Nachdem "vgscan -vvv" den Hinweis geliefert hatte, dass "devices/global_filter not found in config" — habe ich in der lvm.conf die global_filter Zeile auskommentiert. Jetzt wurden sowohl im Loop-Device als auch auf der sdd2-Partition die fehlenden LVs gefunden, leider doppelt. Deshalb habe ich das Loop-Device mit "losetup -d /dev/loop1" ausgehängt — auch um das backup.img nicht weiter anfassen zu müssen.
Was jetzt noch zu Fehlermeldungen führte war die Namensgleichheit der VG im aktuellen System (sda3) und der VG des Backup-Images (in sdd2). Um gezielt die richtige VG umbenennen zu können muss sie über ihre UUID angesprochen werden, die mit vgdisplay ausgelesen werden konnte. In der Backup-VG war aber noch ein nicht mehr vorhandenes PV gelistet. Ich war mir sicher, dass dieses Laufwerk keine Daten enthielt und konnte es mit vgreduce entfernen. Jetzt liefen die Befehle pvs, vgs und lvs ohne Error-Meldungen durch. Ich babe dann die beiden VGs mit vgmerge zusammengeführt. Nun konnte ich die benötigten LVs mit pvmove von der sdd2-Partition auf die sda3 verschieben. Die nicht benötigten LVs wurden mit lvremove entfernt. Als das PV_backup (sdd2) leer war konnte ich die die Partition aus der VG_aktuell mit vgreduce entfernen
Im Einzelnen habe ich folgende Befehle benutzt:

Code: Alles auswählen

vgdisplay                                   # UUID auslesen
vgrename UUID VG_neuer_Name                 # vergibt an die VG_mit_UUID den neuen Namen
vgreduce --removemissing VG_backup          # löscht das fehlende Laufwerk aus der VG_backup
vgmerge VG_backup VG_aktuell                # beide VGs werden in der VG_aktuell zusammengeführt
pvmove LV01 /dev/sdd2 /dev/sda3             # verschiebt LV01 nach sda3
...
pvmove LV05 /dev/sdd2 /dev/sda3             # verschiebt LV05 nach sda3
lvremove VG_aktuell LVxx                    # löscht LVxx aus der VG_aktuell 
vgreduce VG_aktuell /dev/sdd2               # entfernt sdd2 aus der VG_aktuell
Damit war mein Ziel erreicht — ich konnte Teile aus einem Image von einer LVM-Partition auf eine neue Partiton transferieren.

Antworten