É possível redimensionar uma imagem de disco do QEMU?

8

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

    
por Richie Marquez 18.08.2009 / 20:43

4 respostas

12

De aqui :

!!! Back up your disk image before trying the below !!!

If you are using a sparse raw image, then do

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

where hdd.img is the raw format image that you want to resize and N is the new size that you want the image to be, in megabytes. To change the units of N, change obs to something else such as 1GB for units in gigabytes (1000x1000x1000).

If you want to resize a raw image but you do not want it to become sparse (you actually want those zeros in the file) then do "dd if=/dev/zero of=image seek=S count=N-S obs=1" instead, where N is the new size and S is the old size (in bytes).

If you want to resize a qcow2 image, this is not yet supported.

this email shows some experimenting with resizing qcow images with a hex editor.

Resizing or growing images in other formats (VMware, Bochs, cow, or cloop) is not supported to the best of my knowledge.

On a Windows host it is possible to resize a raw format disk image using the 'copy' command. You can use qemu-img to convert your existing image to raw format if need be. We will use a temporary raw format disk image that will be appended on to the end of your existing raw format disk image. The size of this temporary image is the size the existing image will be expanded by:

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

You should then issue the below command - orig.img is your existing raw format image that you want to make larger, temp.img is the temporary image file created earlier, and new.img is the resized resultant image:

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

You will then need to repartition and resize the existing partition(s) and filesystem(s) on the new image. One method of doing this is to boot gparted in QEMU with the gparted livecd iso and the new disk image.

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

    
por 18.08.2009 / 21:09
12

Uma imagem qcow2 pode ser redimensionada para crescer com uma versão nova / atual do qemu. Por exemplo, eu tenho um arch.qcow2 thats 2G e eu quero que ele 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. redhat na verdade tem alguns documentos legais no qemu:

por 07.01.2012 / 20:29
2

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 é necessário criar um novo arquivo). Em seguida, em sua VM convidada, você pode ampliar 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

    
por 02.02.2017 / 21:48
0

Sim, você pode. E não, isso não vai mudar as partições ou a mesa. 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ê aumentá-lo, e você vai cortar uma partição e perdê-lo ou a última parte de seus dados, se você reduzi-lo .

Se você está no monitor do qemu (ou usa QMP provavelmente), e a interface o suporta (como o virtio-scsi -pci com rbd que eu testei aqui), então sem reiniciar a VM, você pode fazer isso:

(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 poof, a imagem é redimensionada para o tamanho especificado em MiB e a VM mostrará o novo tamanho.

Eu testei o seguinte no qemu 2.7.0:

  • RBD do Ceph - funciona rapidamente, aumenta ou diminui
  • arquivo de disco qcow2 - funciona, mais lento, cresce somente
  • arquivo de disco bruto - funciona, rápido, aumenta ou diminui
  • disco LVM bruto - no monitor parece normal, mas não tem efeito
por 30.09.2016 / 16:24