É possível redimensionar uma imagem de disco QEMU?

12

Como o título diz: É possível redimensionar uma imagem de disco QEMU no Linux? E se sim, o que acontece com as partições dentro dele? Eles também são redimensionados automaticamente (duvidosos) ou existe apenas um novo bloco de espaço não utilizado após eles?

Richie Marquez
fonte

Respostas:

12

A partir daqui :

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

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 em formato bruto que você deseja redimensionar e N é o novo tamanho em que você deseja que a imagem seja, em megabytes. Para alterar as unidades de N, altere obs para algo como 1 GB para unidades em gigabytes (1000x1000x1000).

Se você deseja redimensionar uma imagem bruta, mas não quer que ela se torne escassa (na verdade, você deseja zeros no arquivo), faça "dd se = / dev / zero de = busca de imagem = contagem de S = 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 é suportado.

este email mostra algumas experiências com o 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 é suportado da melhor forma possível.

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

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

Em seguida, você deve emitir o comando abaixo - orig.img é sua imagem em formato bruto existente que deseja aumentar, 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 as partições e sistemas de arquivos existentes na nova imagem. Um método para fazer isso é inicializar o gparted no QEMU com o gparted livecd iso e a nova imagem de disco.


Outros links que você pode querer conferir 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

fretje
fonte
17

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 ele se torne 50G; nesse caso, digito:

qemu-img resize arch.qcow2 50G

então qemu me diz:

image resized

é isso, eu fiz isso hoje. O redhat realmente tem alguns documentos legais no qemu:

user1026169
fonte
3
No entanto, o espaço aumentado será desalocado. Você precisará redimensionar seu disco virtual usando alguma ferramenta de partição.
Yamaneko
Excelente, solução!
RckLN
A versão 1.0 do qemu-img me dizqemu-img: This image format does not support resize
HDave
3

Resposta curta para 2017: Para adicionar, por exemplo, 30 GB a uma imagem bruta existente, usei este comando:

qemu-img resize nameofimg.img +30G

Isso adiciona 30 GB ao seu arquivo de imagem existente (não é necessário criar um novo arquivo). Então, na sua VM convidada, 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

firepol
fonte
1

Sim você pode. E não, isso não mudará as partições ou a tabela. A tabela de partições pode precisar ser atualizada para ter o tamanho total do disco e haverá espaço vazio não utilizado no final, se você a aumentar, e você cortará uma partição e a perderá ou a última parte de seus dados, se a reduzir. .

Se você estiver no monitor qemu (ou provavelmente usar o QMP ) e a interface o suportar (como virtio-scsi-pci com rbd que testei aqui), 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, puf, a imagem é redimensionada para o tamanho que você especificou no MiB, e a VM mostrará o novo tamanho.

Eu testei o seguinte no qemu 2.7.0:

  • RBD da Ceph - trabalha, rápido, cresce ou encolhe
  • arquivo de disco qcow2 - funciona, mais devagar, cresce apenas
  • arquivo de disco bruto - funciona, rápido, cresce ou diminui
  • disco LVM bruto - no monitor parece normal, mas não tem efeito
Pedro
fonte
Aprecie a tabela na parte inferior. Isso foi super útil.
cloaked1