A partir do LVM no trecho Debian (9.0), a saber, 2.02.168-2, é
possível fazer uma cópia de um volume lógico em grupos de volumes usando um
combinação de vgmerge
, lvconvert
e vgsplit
. Desde que um movimento é
uma combinação de uma cópia e uma exclusão, isso também funcionará para um movimento.
Como alternativa, você pode usar pvmove
apenas para mover o volume.
Uma sessão de exemplo completa e independente, usando dispositivos de loop e
lvconvert
segue.
Resumo: criamos o grupo de volume vg1
com volume lógico lv1
e vg2
com lv2
e fazemos uma cópia de lv1
em vg2
.
Crie arquivos.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Configure dispositivos de loop em arquivos.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Crie volumes físicos em dispositivos de loop (inicialize dispositivos de loop para
uso pelo LVM).
pvcreate /dev/loop1 /dev/loop2
Crie grupos de volumes vg1 e vg2 em / dev / loop1 e / dev / loop2
respectivamente.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Crie volumes lógicos lv1 e lv2 em vg1 e vg2, respectivamente.
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Crie sistemas de arquivos ext4 em lv1 e lv2.
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Opcionalmente, escreva algo em lv1 para depois verificar se a cópia foi
corretamente criado. Torne vg1 inativa.
vgchange -a n vg1
Execute o comando de mesclagem no modo de teste. Isso mescla vg1 na vg2.
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
E então, de verdade.
vgmerge -A y -l -v vg2 vg1
Em seguida, crie um par de espelhos RAID 1 a partir de lv1
usando lvconvert
. o
dest-pv
argument diz lvconvert
para fazer a cópia espelhada
em /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Em seguida, divida o espelho. O novo LV agora é lv1_copy
.
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Tornar vg2/lv1
inativo.
lvchange -a n /dev/vg2/lv1
Então (modo de teste)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Para real
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Resultado resultante:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
NOTAS:
1) A maioria desses comandos precisará ser executada como root.
2) Se houver alguma duplicação dos nomes dos volumes lógicos em
os dois grupos de volume, vgmerge
se recusarão a prosseguir.
3) Na mesclagem, os volumes lógicos em vg1
devem estar inativos. E na divisão, os volumes lógicos em vg2
pertencentes a vg1
devem estar inativos. No nosso caso, isso é lv1
.