vgmerge permite que você mescle dois VGs. Você também pode usar pvmove para mover dados dentro de um VG, e vgsplit se você quiser voltar para vários VGs.
Basicamente, eu quero mover / copiar vários volumes lógicos (lv) para um novo grupo de volume (vg). O novo grupo de volumes reside em um novo conjunto de volumes físicos. Alguém sabe como fazer isso com segurança sem danificar os dados dentro desses volumes lógicos ??
vgmerge permite que você mescle dois VGs. Você também pode usar pvmove para mover dados dentro de um VG, e vgsplit se você quiser voltar para vários VGs.
Não há motivo para copiá-lo para um arquivo .img primeiro, apenas faça primeiro o lvcreate e, em seguida, copie-o diretamente:
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
dd if=/dev/volume-group/snapshot-name of=/dev/new-volume-group/new-logical-volume
Ok, eu consegui lidar com a situação do meu jeito. Aqui estão os passos que eu dei:
1) Tire um instantâneo do volume lógico de segmentação.
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
2) Crie uma cópia da imagem do conteúdo do instantâneo usando dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Crie um novo volume lógico de tamanho suficiente no grupo de volumes de segmentação (novo).
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Grave dados no novo volume lógico a partir do backup da imagem usando dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) exclua o backup de instantâneos e imagens usando lvremove
e rm
, respectivamente.
Isso é tudo pessoal ... Espero que isso ajude alguém:)
Eu vou oferecer o meu próprio:
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/
se tudo estiver bem, remova a fonte
lvremove vgsource/lv0
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 volumes vg1 com o volume lógico lv1 e vg2 com lv2, e faça 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 lv1 em lv2.
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
< > argumento diz lvconvert
para fazer a cópia espelhada
lv1_copy
on /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
Torne vg2 inativa.
vgchange -a n vg2
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:
Logical volumes in 'vg1' must be inactive
E na divisão:
Logical volume 'vg2/lv1' must be inactive.
Até agora, todas as 4 respostas faltam que o tamanho exato do volume muitas vezes não é conhecido. lvdisplay
mostra apenas valores arredondados para 2 casas decimais e man lvdisplay
apenas aponta para outros comandos para as opções disponíveis. O seguinte seleciona MiB, que é suficientemente preciso com o tamanho de bloco LVM padrão de 4 MiB:
lvdisplay --units m
MiB também é a unidade padrão para --size
de lvcreate
. Em caso de dúvida, verifique novamente o tamanho correto com lvdisplay
após criar o volume de destino. Então vá em frente como nas outras respostas para fazer uma cópia. Além disso, recomendo verificar a cópia , por exemplo, com cmp
.
Aqui, por que um instantâneo é usado e o que ele protege e não protege:
O instantâneo é feito para que todos os dados sejam copiados como estavam no momento em que o instantâneo foi criado. As atividades no volume de origem durante o processo de cópia não serão refletidas na cópia.
O instantâneo também protege o volume de origem de erros humanos na linha de comando dd
. Se você acidentalmente gravar no snapshot, apenas os dados do snapshot serão danificados e você pode simplesmente remover o snapshot e começar de novo.
O volume de destino não é protegido durante os processos de cópia. Se outro administrador (ou um processo automático como o os-prober de dracut
) monta o volume incompleto, a montagem pode estragar as coisas. (Até mesmo uma montagem somente leitura ainda pode gravar entradas de diário no volume.)
Tags partitioning hard-drive lvm