Digamos que eu tenha linux-vm-image.raw
um tamanho de 10 GB. Dentro, há uma etx4
partição primária ("clássica" do tipo MS-DOS usada, não GPT) (sem LVM usado), estendendo-se a todo o volume. E os dados reais alocados nessa partição são, por exemplo, 3 GB.
Esta imagem está preparada para uso em algum ambiente de virtualização (kvm + OpenStack no meu caso), e qualquer VM criada a partir desta imagem seria redimensionada para atingir o tamanho do disco virtual, dependendo da escolha do usuário. Portanto, não há motivos para manter espaço livre em disco dentro dessa imagem de disco.
Como posso reduzir o tamanho dessa imagem bruta de disco para o mínimo (de 10 GB para ~ 3 GB)?
Háalguns instruçõespara qcow2
imagens de disco, mas preciso usar raw
apenas imagens - nem qcow
, nem OVF
e nem outras.
Meu palpite é algo como
- monte esta imagem em algum lugar como um dispositivo de bloco
- faça alguma manutenção para que todos os arquivos dentro da partição ext4 sejam movidos para o "início" dela, outras palavras - faça uma desfragmentação de espaço livre
- desmontar imagem
- reduza o tamanho do sistema de arquivos em imagem (para corresponder ao tamanho dos dados dentro dele)
- reduzir o tamanho da imagem (para corresponder ao tamanho do sistema de arquivos dentro dela)
- atualize a tabela de partição na imagem para corresponder ao novo tamanho da partição
Mas não tento inventar uma bicicleta? Existe algum comando de uma linha ou software especial para fazer o que eu quero?
Responder1
As imagens brutas não são realmente fáceis de redimensionar. No entanto, você pode experimentar zerofree
o sistema de arquivos (desmontado) e compactar o arquivo de imagem resultante.
Além disso, verifique se o seu ambiente de destino suporta o formato de contêiner OVF, que permite imagens de disco compactadas. (zerofree ainda se aplica).
Responder2
Você está no caminho certo. Se você puder montá-lo como um dispositivo de bloco (montagem em loop), provavelmente poderá fazer com que o gparted trabalhe nele.
O gparted fará a maior parte do que você deseja:
1. mover os dados FS para a frente de sua partição (diminuir FS)
2. reduzir a partição e ajustar a tabela de partição
3. pode até fornecer o "disco" restante tamanho quando você imprimir a tabela de partição atualizada (por exemplo, último setor da última partição, etc.).
Essa é a parte difícil. Depois disso, desmonte-o. Você pode ter que calcular o tamanho exato do seu "disco" manualmente, mas depois disso, um simples truncar no arquivo deve ser suficiente.
ATUALIZAÇÃO: Se sua tabela de partição for do tipo MBR, tudo bem. Com GPT, possui uma cópia espelhada no final do disco. Portanto, tenha cuidado com isso, pois o gparted pode não ser inteligente o suficiente para isso (a menos que você possa fornecer a imagem bruta diretamente). Se você tiver problemas, considere o gdisk como uma etapa após o truncar. Trunque com alguns blocos extras e obtenha gdisk/equiv para reconstruir a cópia espelhada (provavelmente será necessário fazer a montagem em loop uma segunda vez).