Como mover / copiar o volume lógico (lv) para outro grupo de volume (vg)?

16

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 ??

    
por nobody 28.12.2011 / 06:23

6 respostas

10

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.

    
por Gabriel 07.01.2014 / 19:53
9

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
    
por anon 06.01.2014 / 13:27
7

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

% bl0ck_qu0te%

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:)

    
por nobody 29.12.2011 / 06:22
1

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
    
por conan 15.05.2018 / 04:18
0

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.
    
por Faheem Mitha 01.07.2017 / 21:15
0

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.)

por Joachim Wagner 13.09.2017 / 10:08