Skupina svazků se skládá z celých fyzických svazků. Fyzický svazek se skládá z mnoha oblastí (rozsah je obvykle 4 MB); každý rozsah může patřit do jiného logického svazku. Chcete-li přenést logický svazek do jiné skupiny, nemůžete jednoduše přenést rozsahy, protože by to mohlo rozdělit fyzický svazek mezi zdrojový VG a cílový VG.
Co můžete udělat, je přenést jedno nebo více PV ze zdrojového VG do cílového VG pomocí vgsplit
příkaz. Můžete určit, které PV chcete převést, nebo které LV (ale pouze po jednom). Pokud zadáte LV, musí být tento a ostatní LV ve zdrojovém VG na samostatných PV. Cílový VG bude vytvořen, pokud neexistuje VG se zadaným názvem.
vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99
Možná budete muset použít pvmove
nejprve zařiďte, aby logické svazky, které chcete přesunout, byly na samostatných PV.
Pokud jste chtěli zachovat fyzické hranice VG a přesunout data, neexistuje žádný vestavěný nástroj, ale můžete vytvořit zrcadlo a poté odstranit originál.
Od LVM v Debian stretch (9.0), konkrétně 2.02.168-2, je možné vytvořit kopii logického svazku napříč skupinami svazků pomocí kombinace vgmerge
, lvconvert
a vgsplit
. Protože přesun je kombinací kopírování a mazání, bude to fungovat i pro přesun.
Případně můžete použít pvmove
stačí přesunout hlasitost.
Kompletní samostatná ukázková relace využívající smyčková zařízení alvconvert
následuje.
Shrnutí:vytvoříme skupinu svazků vg1
s logickým svazkem lv1
a vg2
s lv2
a vytvořte kopii lv1
v vg2
.
Vytvořte soubory.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Nastavit smyčková zařízení u souborů.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Vytvořte fyzické svazky na smyčkových zařízeních (inicializujte smyčková zařízení pro použití LVM).
pvcreate /dev/loop1 /dev/loop2
Vytvořte skupiny svazků vg1 a vg2 na /dev/loop1 a /dev/loop2.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Vytvořte logické svazky lv1 a lv2 na vg1 a vg2.
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Vytvořte souborové systémy ext4 na lv1 a lv2.
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Volitelně napište něco na lv1, abyste mohli později zkontrolovat, zda byla kopie správně vytvořena. Deaktivujte vg1.
vgchange -a n vg1
Spusťte příkaz sloučení v testovacím režimu. Tím se vg1 sloučí do vg2.
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
A pak doopravdy.
vgmerge -A y -l -v vg2 vg1
Poté vytvořte zrcadlový pár RAID 1 z lv1
pomocí lvconvert
. dest-pv
argument říká lvconvert
vytvořit zrcadlovou kopii /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Pak rozdělte zrcadlo. Nový LV je nyní lv1_copy
.
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Udělejte vg2/lv1
neaktivní.
lvchange -a n /dev/vg2/lv1
Potom (režim testování)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Skutečně
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Výsledný výstup:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
POZNÁMKY:
1) Většinu těchto příkazů bude nutné spouštět jako root.
2) Pokud dojde k duplicitě názvů logických svazků ve dvou skupinách svazků, vgmerge
odmítne pokračovat.
3) Při sloučení logické svazky v vg1
musí být neaktivní. A na rozdělených logických svazcích v vg2
patřící pod vg1
musí být neaktivní. V našem případě je to lv1
.
Nabídnu své vlastní:
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/
pokud je vše v pořádku, odstraňte zdroj
lvremove vgsource/lv0