it-swarm-pt.tech

É possível redimensionar uma imagem de disco QEMU?

Como o título diz: É possível redimensionar uma imagem de disco QEMU no Linux? E em caso afirmativo, o que acontece com as partições dentro dele? Eles também são redimensionados automaticamente (duvidoso) ou há apenas um novo bloco de espaço não utilizado seguindo-os?

12
Richie Marquez

De aqui :

!!! Faça backup de sua imagem de disco antes de tentar o seguinte !!!

Se você estiver usando uma imagem bruta esparsa, faça

dd if=/dev/zero of=hdd.img seek=N obs=1MB count=0"

onde hdd.img é a imagem de formato bruto que você deseja redimensionar e N é o novo tamanho que você deseja que a imagem tenha, em megabytes. Para alterar as unidades de N, altere obs para algo diferente, como 1 GB para unidades em gigabytes (1000x1000x1000).

Se você deseja redimensionar uma imagem bruta, mas não quer que ela se torne esparsa (você realmente quer esses zeros no arquivo), faça "dd if =/dev/zero of = image search = S count = NS obs = 1" em vez disso, onde N é o novo tamanho e S é o tamanho antigo (em bytes).

Se você deseja redimensionar uma imagem qcow2, isso ainda não é compatível.

este e-mail mostra alguns experimentos com redimensionamento de imagens qcow com um editor hexadecimal.

O redimensionamento ou o crescimento de imagens em outros formatos (VMware, Bochs, cow ou cloop) não são suportados, pelo que sei.

Em um Host Windows, é possível redimensionar uma imagem de disco em formato raw usando o comando 'copiar'. Você pode usar qemu-img para converter sua imagem existente para o formato bruto, se necessário. Usaremos uma imagem de disco de formato bruto temporária que será anexada ao final da imagem de disco de formato bruto existente. O tamanho desta imagem temporária é o tamanho da imagem existente será expandida por:

qemu-img create -f raw temp.img 300M

Você deve então emitir o comando abaixo - orig.img é sua imagem de formato bruto existente que você deseja tornar maior, temp.img é o arquivo de imagem temporário criado anteriormente e new.img é a imagem resultante redimensionada:

copy /b orig.img+temp.img new.img

Você precisará reparticionar e redimensionar a (s) partição (ões) e sistema (s) de arquivos existentes na nova imagem. Um método de fazer isso é inicializar o gparted no QEMU com o gparted livecd iso e a nova imagem de disco.


Outros links que você pode querer verificar se o acima não funcionar:

http://qemu-forum.ipi.fi/viewtopic.php?p=12362
http://kev.coolcavemen.com/2007/04/how-to-grow-any-qemu-system-image/
http://bryan-murdock.blogspot.com/2007/12/resize-qemukvm-windows-disk-image.html
http://www.larsen-b.com/Article/329.html
http://www.brabbel.net/wp/archives/174

12
fretje

Uma imagem qcow2 pode ser redimensionada para crescer com uma versão nova/atual do qemu. Por exemplo, eu tenho um Arch.qcow2 que é 2G e quero que se torne 50G, nesse caso eu digito:

qemu-img resize Arch.qcow2 50G

então qemu me diz:

image resized

é isso, eu só fiz isso hoje. O redhat tem alguns bons documentos no qemu:

17
user1026169

Resposta curta para 2017: Para adicionar, por exemplo 30 GB para uma imagem bruta existente Acabei de usar este comando:

qemu-img resize nameofimg.img +30G

Isso adiciona 30 GB ao arquivo de imagem existente (não há necessidade de criar um novo arquivo). Então, em seu convidado VM você pode estender suas partições existentes, no Windows 10, por exemplo, com "Gerenciamento de disco", fácil.

Mais informações e opções:

man qemu-img

Veja também: qemu wiki> qemu-img

3
firepol

Sim você pode. E não, não vai mudar as partições ou a tabela. A tabela de partição pode precisar ser atualizada para ter o tamanho total do disco, e haverá espaço vazio não utilizado no final se você aumentá-la, e você irá cortar uma partição e perdê-la ou a última parte de seus dados se diminuí-la .

Se você estiver no monitor qemu (ou usar QMP provavelmente), e a interface suportar (como virtio-scsi-pci com rbd que testei aqui ), então, sem reiniciar a VM, você pode fazer o seguinte:

(qemu) info block -v disk1
disk1 (#block165): rbd:rbd/manjaro (raw)
    Cache mode:       writeback

Images:
image: rbd:rbd/manjaro
file format: raw
virtual size: 4.0G (4294967296 bytes)
[...]

(qemu) block_resize disk1 5120

E pronto, a imagem é redimensionada para o tamanho que você especificou em MiB, e o VM mostrará o novo tamanho.

Testei o seguinte no qemu 2.7.0:

  • RBD do Ceph - funciona, rápido, aumenta ou encolhe
  • arquivo de disco qcow2 - funciona, mais lento, cresce apenas
  • arquivo de disco bruto - funciona, rápido, aumenta ou encolhe
  • disco LVM bruto - no monitor parece normal, mas não tem efeito
1
Peter