Mit LVM kann man einiges anstellen. Doch um ein Logical Volume auf eine andere Platte zu verschieben gibt es viele Möglichkeiten. Eine davon ist z.B. ein genauso großes Volume anzulegen und dann per DD zu klonen. Oder man lässt die Arbeit vom Logical Volume Manager erledigen. In meinem Fall möchte ich eine ganze VolumeGroup auf eine andere Platte ‚mitnehmen‘, die ich in mein Notebook eingebaut habe.
*Update 11.01.2018* Was bei „Insufficient free space: 1 extents needed, but only 0 available“ helfen kann.
Bei mir vorhanden ist eine VolumeGroup, die für die Virtualisierung über Livbirt verwaltet wird, daher auch der Name.
/dev/sdb8 wurde mittels vgextend bereits in die bestehende VolumeGroup eingebunden.
Mirrormethode:
Das logical Volume um einen Mirror auf der neuen Platte / dem neuen Physical Volume ergänzen:
lvconvert -m 1 /dev/libvirt_lvm/Ubuntu-NLP4WEB /dev/sdb8
Den Fortschritt kann man mit lvs betrachten:
# lvs -o+devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Centos7.2-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(12801) Centos72-Jira64 libvirt_lvm -wi-a----- 30,00g /dev/sda5(20481) Centos72-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(5121) Ubuntu-NLP4WEB libvirt_lvm rwi-a-r--- 20,00g 8,36 Ubuntu-NLP4WEB_rimage_0(0),Ubuntu-NLP4WEB_rimage_1(0)
Wenn 100 Prozent in Sync sind:
[dennis@Notebook dennis]# lvs -o+devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Centos7.2-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(12801) Centos72-Jira64 libvirt_lvm -wi-a----- 30,00g /dev/sda5(20481) Centos72-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(5121) Ubuntu-NLP4WEB libvirt_lvm rwi-a-r--- 20,00g 100,00 Ubuntu-NLP4WEB_rimage_0(0),Ubuntu-NLP4WEB_rimage_1(0)
können wir den Spiegel wieder auflösen, nur soll nun der Inhalt auf der alten Platte verschwinden und auf der neuen verbleiben.
[dennis@Notebook dennis]# lvconvert -m 0 /dev/libvirt_lvm/Ubuntu-NLP4WEB /dev/sda5 Logical volume libvirt_lvm/Ubuntu-NLP4WEB successfully converted. [dennis@Notebook dennis]# lvs -o+devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Centos7.2-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(12801) Centos72-Jira64 libvirt_lvm -wi-a----- 30,00g /dev/sda5(20481) Centos72-jira libvirt_lvm -wi-a----- 30,00g /dev/sda5(5121) Ubuntu-NLP4WEB libvirt_lvm -wi-a----- 20,00g /dev/sdb8(1)
Fertig.
Zusammengefasst:
1. vgextend deineVolumeGroup /dev/sdNEU
2. lvconvert -m 1 /dev/deineVolumeGroup/DeinLogicalVolume /dev/sdNEU
– warten bis 100% in Sync (lvs -o+devices)
3. lvconvert -m 0 /dev/deineVolumeGroup/DeinLogicalVolume /dev/sdALT
wenn alle LVs migriert sind, dann das alte PV aus der VolumeGroup nehmen.
Insufficient free space: 1 extents needed, but only 0 available
Wer mit obigem Kommando den Fehler „Insufficient free space: 1 extents needed, but only 0 available“ bekommt, steht vor einem kleinen Problem. LVM möchte, um den Spiegel aufzubauen, ein Logfile anlegen. Dieses Logfile soll dann sowohl auf dem alten, als auch auf dem neuen PhysicalVolume liegen. Meistens ist das alte LVM aber bis zum Rand befüllt. Daher rührt auch die Fehlermeldung, denn auf der alten Partition bzw. der alten Disk ist nicht mal ein einizger Phsyical Extend (PE) frei, den die VolumeGroup zum Logschreiben benötigen würde.
Wenn man das Problem umgehen will und auf das Log wie z.B. in meinem Fall temporär verzichten möchte, kann man mit:
lvconvert -m1 --type mirror dev/deineVolumeGroup/DeinLogicalVolume /dev/sdNEU
auf das Logging verzichten und den alten Mirrotyp wählen (nicht empfohlen, kann man aber *mal* machen). Auf dem neuen PV sollte man dann aber immer darauf achten, dass wenn man ein LVM drauf legt, immer ein PE frei bleibt, um eben jene Probleme zu umgehen und nicht auf die alte Implementierung zurückgreifen zu müssen.
PVmove:
Etwas einfacher PVmove:
[dennis@Notebook dennis]# pvmove -n /dev/libvirt_lvm/Centos7.2-jira /dev/sda5 /dev/sdb8 /dev/sdc4: Moved: 0,00% /dev/sdc4: Moved: 1,47% /dev/sdc4: Moved: 2,94% ... /dev/sdc4: Moved: 97,93% /dev/sdc4: Moved: 99,43% /dev/sdc4: Moved: 100,00%
Allerdings bin ich meist lieber safe than sorry, sodass ich lieber erst klone, teste und dann lösche.
History:
– 11.01.2018 – lvmirror enforcing hinzugefügt
– 02.01.2017 – Ursprungsartikel