Basicamente, quero mover / copiar vários volumes lógicos (lv) para um novo grupo de volumes (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?
partitioning
hard-drive
lvm
ninguém
fonte
fonte
Respostas:
O vgmerge permite mesclar dois VGs. Você também pode usar o pvmove para mover dados dentro de um VG e o vgsplit se desejar voltar para vários VGs.
fonte
Não há razão para copiá-lo para um arquivo .img primeiro, basta fazer o lvcreate primeiro e depois copiá-lo diretamente:
fonte
Ok, eu era capaz de lidar com a situação do meu jeito. Aqui estão os passos que eu tomei:
1) Tire uma captura instantânea do volume lógico de destino.
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 da captura instantânea 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 destino (novo).
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Grave dados no novo volume lógico do backup da imagem usando
dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) exclua o instantâneo e o backup de imagem usando
lvremove
erm
respectivamente.Isso é tudo pessoal ... Espero que isso ajude alguém :)
fonte
A partir do LVM em estiramento Debian (9.0), ou seja 2.02.168-2, é possível fazer uma cópia de um volume lógico entre os grupos de volume utilizando uma combinação de
vgmerge
,lvconvert
evgsplit
. Como uma movimentação é uma combinação de uma cópia e uma exclusão, isso também funcionará para uma movimentação.Como alternativa, você pode usar
pvmove
apenas para mover o volume.Uma sessão de exemplo independente e completa usando dispositivos de loop e a
lvconvert
seguir.Resumo: criamos o grupo de volumes vg1 com o volume lógico lv1 e vg2 com o lv2 e fazemos uma cópia do lv1 no vg2.
Crie arquivos.
Configure dispositivos de loop em arquivos.
Crie volumes físicos em dispositivos de loop (inicialize dispositivos de loop para uso pelo LVM).
Crie os grupos de volumes vg1 e vg2 em / dev / loop1 e / dev / loop2, respectivamente.
Crie os volumes lógicos lv1 e lv2 nas vg1 e vg2, respectivamente.
Crie sistemas de arquivos ext4 em lv1 e lv2.
Opcionalmente, escreva algo no lv1 para verificar posteriormente se a cópia foi criada corretamente. Torne a vg1 inativa.
Execute o comando mesclar no modo de teste. Isso mescla lv1 em lv2.
E então de verdade.
Em seguida, crie um par de espelhos RAID 1
lv1
usandolvconvert
. A <> argumento dizlvconvert
para fazer a cópia do espelholv1_copy
no/dev/loop2
.Depois divida o espelho. O novo LV agora é lv1_copy.
Tornar vg2 inativo.
Então (modo de teste)
Sério
Resultado resultante:
NOTAS:
1) A maioria desses comandos precisará ser executada como root.
2) Se houver alguma duplicação dos nomes dos volumes lógicos nos dois grupos de volumes,
vgmerge
ele se recusará a continuar.3) Na mesclagem:
E na divisão:
fonte
Até agora, as quatro respostas perdem que o tamanho exato do volume geralmente não é conhecido.
lvdisplay
mostra apenas valores arredondados para 2 casas decimais eman lvdisplay
apenas aponta para outros comandos para as opções disponíveis. A seguir, selecione 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
delvcreate
. Em caso de dúvida, verifique novamente o tamanho corretolvdisplay
depois de criar o volume de destino. Em seguida, vá em frente, como nas outras respostas, para fazer uma cópia. Além disso, eu recomendaria verificar a cópia , por exemplo, comcmp
.Aqui, por que um instantâneo é usado e o que ele protege e não protege:
A captura instantânea é feita para que todos os dados sejam copiados como no momento em que a captura instantânea foi criada. As atividades no volume de origem durante o processo de cópia não serão refletidas na cópia.
A captura instantânea também protege o volume de origem de erros humanos na
dd
linha de comando. Se você gravar acidentalmente no instantâneo, apenas os dados do instantâneo serão danificados e você poderá simplesmente remover o instantâneo 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 tudo. (Mesmo uma montagem somente leitura ainda pode gravar entradas de diário no volume.)fonte
Vou oferecer o meu:
se tudo estiver bom, remova a fonte
fonte
Se você precisar copiar um volume lógico do VG A para outro VG B, encontrei uma variante interessante usando
partclone
. O instantâneo copiado com dd é um bom método, mas pode ser lento se o sistema de arquivos não estiver cheio. Esta solução é muito rápida porque copia apenas os blocos usados.o
--size
aqui é o quanto a escrita, pode ocorrer antes do snapshot será desativadonew_lv_size
deve ter pelo menos o tamanho da fonte LVfs_type
pode serext4
,fat32
,btrfs
,xfs
, ... nenhum FS apoiado por partclonefonte