Pokud můžete zařídit, aby byl logický svazek na samostatné podmnožině fyzických svazků od zbytku skupiny zdrojových svazků (lvconvert sourcevg/sourcelv /dev/pv1 ...
může pomoci), můžete použít vgsplit
k rozdělení lv na nový vg a vgmerge
pro sloučení nového vg do cílového vg.
Přestože má LVM funkci zrcadlení, nemůžete ji (rozumně) použít k vytvoření kopie mezi skupinami svazků, protože obě nohy zrcadlení musí žít na stejném vg a asociaci nelze přerušit.
Svazek LVM můžete zkopírovat do jiného stejným způsobem, jakým byste kopírovali jakýkoli svazek do jiného:vytvořte cílový lv příslušné velikosti a poté zkopírujte obsah pomocí dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M
. Pokud je zdrojový svazek aktivní, můžete využít LVM k vytvoření konzistentní kopie:nejprve pořiďte snímek zdrojového svazku s lvcreate -s
a poté zkopírujte snímek.
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmove umí přesouvat data mezi fyzickými svazky:LVM Administrator's Guide
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
respektive.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Vytvořte logické svazky lv1
a lv2
na vg1
a vg2
respektive.
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
takže můžete později zkontrolovat, zda byla kopie správně vytvořena. Udělejte vg1
neaktivní.
vgchange -a n vg1
Spusťte příkaz sloučení v testovacím režimu. Toto sloučí lv1
do lv2
.
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
. Argument <> říká lvconvert
aby se zrcadlení zkopírovalolv1_copy
na /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
Vytvořte vg2
neaktivní.
vgchange -a n vg2
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í:
Logical volumes in `vg1` must be inactive
A na rozdělení:
Logical volume `vg2/lv1` must be inactive.