Como tornar as imagens de disco da VM fáceis de redimensionar?

0

Imagens de disco de máquinas virtuais geralmente contêm uma tabela de partição que contém um ou mais sistemas de arquivos. Redimensionar isso é um pouco doloroso, já que você precisa reescrever cuidadosamente a tabela de partições antes de redimensionar a tabela. Dentro de uma VM Linux, a tabela de partições alterada não pode ser lida rapidamente, então você precisa de mais uma reinicialização da VM.

Adoraria que a imagem do disco contivesse o sistema de arquivos diretamente, sem nenhuma partição. Isso permitiria redimensionar facilmente de dentro para fora da VM. No entanto, em tal instalação, o gerenciador de inicialização Grub não é mais confiável, porque precisa apontar para o stage2 por meio da posição de bloqueio codificada, o que torna a VM não inicializável a cada poucos meses quando o sistema de arquivos movimenta as coisas. (Com uma tabela de partições do DOS, ele usa o espaço não-alocável entre o MBR e a primeira partição para colocar seu stage2. Com outras tabelas de partição, você cria uma partição de bootloader separada para isso.)

Existe alguma maneira de contornar isso?

Como devo organizar uma imagem de disco da VM para que seja o mais simples possível redimensionar?

Primeiras ideias são:

  • Usando duas imagens de disco por VM, um disco de tamanho fixo apenas para o carregador de inicialização (MBR + estágio2) e um segundo disco contendo diretamente o sistema de arquivos.

  • Usando um gerenciador de inicialização diferente. Mas não tem o LILO e o Syslinux o mesmo problema? Os primeiros 512 bytes de um disco são simplesmente pequenos demais para conter um driver de sistema de arquivos.

Existe alguma outra maneira, talvez mais simples, de conseguir isso?

    
por vog 10.01.2018 / 23:35

1 resposta

-1

Primeiro, perceba que é uma segregação entre hardware e software. Eles não se combinam dinamicamente porque são coisas radicalmente diferentes.

I'd love to have the disk image contain the file system directly, without any partitions.

A tabela de partições é como o SO sabe qual hardware tem uso oficial em termos de armazenamento de dados. Um sistema operacional típico NÃO descobre o tamanho de um disco dinamicamente. Isso requer que, se você alterar o tamanho do disco subjacente para "menor", será necessário alterar a tabela de partição para corresponder; mesmo se você usar as extensões da unidade para a partição.

Além disso, o hypersvisor não reconhece os detalhes do sistema operacional e suas partições, pois as partições são inerentemente software e o hypervisor simula somente o hardware.

Isso significa que você precisa de uma solução integrada de software / hardware em que cada um esteja ciente e no controle do outro. Eu não tenho conhecimento de nada disso.

This would allow for easy resizing from within as well as outside the VM.

Pense em uma VM em termos de hardware, essencialmente, o que você está pedindo é mudar o tamanho de um disco rígido real e ter o sistema operacional ajustado dinamicamente. Não é assim que as coisas são configuradas. Alterar um tamanho de disco virtual versus um tamanho de disco de hardware real não é diferente do sistema operacional. Só porque é virtual não significa que eles "integram" de alguma forma.

How should I organize a VM disk image so it is as simple as possible to resize?

Você pode segregar seu sistema operacional de todos os outros arquivos; isso é ter um VD (disco virtual) separado para o seu sistema operacional com espaço suficiente para alterações e atualizações. Em seguida, instale as "outras coisas" em outro VD. Isso deixa você modificar uma partição da unidade não-raiz que é inerentemente mais fácil do que modificar a partição de uma unidade raiz. A maioria das minhas VMs tem pelo menos dois discos virtuais para esse fim.

LVM também é outra coisa que é suposto ajudar com isso, mas não estou familiarizado com todas as opções existentes.

    
por 11.01.2018 / 02:57