Se alguém se deparar com isso e tiver o mesmo problema, a solução que funcionou para mim é principalmente como descrito acima. No exemplo abaixo, minha unidade original tem duas partições, uma partição de inicialização e uma partição de dados com dois volumes lógicos, e a unidade de destino começa com uma partição de inicialização e uma partição de dados sem volumes lógicos.
- Configure uma VM com os dois discos conectados e inicialize-a usando um Live CD do Linux.
- Execute uma verificação do sistema de arquivos no disco de origem com
sudo e2fsck -f /dev/mapper/ubuntu--1704--base--vg-root
- o nome do volume pode ser encontrado na saída desudo fdisk -l
- Reduza o sistema de arquivos ao tamanho mínimo antes de redimensionar o volume lógico. Isso pode ser feito usando
sudo resize2fs -M /dev/mapper/ubuntu--1704--base--vg-root
- Redimensione o volume lógico para o tamanho desejado, nesse caso, 28,5 GiB:
sudo lvreduce --resizefs -L 28.5G /dev/mapper/ubuntu--1704--base--vg-root
- Renomeie o grupo de volumes na unidade existente, pois usaremos o mesmo nome na nova unidade:
sudo vgrename ubuntu-1704-base-vg ubuntu-1704-base-vg-2
- Crie um novo volume físico:
sudo pvcreate /dev/sda2
- Crie um novo grupo de volumes usando o nome do grupo de volumes original na unidade de origem:
sudo vgcreate ubuntu-1704-base-vg /dev/sda2
- Crie os volumes lógicos na nova unidade para coincidir com os da unidade antiga. No meu caso eu tinha um usado para troca e outro para dados. Tomei o tamanho das extensões lógicas alocadas para cada uma da propriedade 'Current LE' relatada por
sudo lvdisplay
e, em seguida, usei-as como entrada para o comando lvcreate, por exemplo:-
sudo lvcreate --extents 7296 --stripes 1 --name root ubuntu-1704-base-vg
-
sudo lvcreate --extents 255 --stripes 1 --name swap_1 ubuntu-1704-base-vg
-
- Copie os dados da unidade antiga para a nova unidade. Fiz isso copiando a partição de inicialização da unidade de origem pela partição de inicialização da nova unidade e copiei o volume lógico da unidade de dados para o novo volume lógico na unidade de destino. por exemplo.:
-
sudo dd if=/dev/sdb1 of=/dev/sda1 bs=64M status=progress
-
sudo dd if=/dev/mapper/ubuntu--1704--base--vg--2-root of=/dev/mapper/ubuntu--1704--base--vg-root bs=64M status=progress
-
Por fim, execute uma verificação do sistema de arquivos para verificar se as unidades estão bem. Pode haver erros que precisam ser reparados, embora depois de fazer isso eu pudesse inicializar com êxito a partir da unidade copiada e o conteúdo fosse o esperado.
sudo e2fsck -f /dev/mapper/ubuntu--1704--base--vg-root