¿Es posible cambiar el tamaño de una imagen de disco QEMU?


12

Como dice el título: ¿Es posible cambiar el tamaño de una imagen de disco QEMU en Linux? Y si es así, ¿qué pasa con las particiones dentro de él? ¿Se redimensionan automáticamente también (dudoso) o solo hay un nuevo bloque de espacio no utilizado que los sigue?

Respuestas:


12

A partir de aquí :

!!! Haga una copia de seguridad de su imagen de disco antes de intentar lo siguiente.

Si está utilizando una imagen en bruto dispersa, entonces haga

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

donde hdd.img es la imagen de formato sin formato que desea cambiar de tamaño y N es el nuevo tamaño que desea que tenga la imagen, en megabytes. Para cambiar las unidades de N, cambie obs a otra cosa como 1GB para unidades en gigabytes (1000x1000x1000).

Si desea cambiar el tamaño de una imagen en bruto pero no desea que se vuelva escasa (en realidad quiere esos ceros en el archivo), entonces haga "dd if = / dev / zero of = image seek = S count = NS obs = 1" en cambio, donde N es el nuevo tamaño y S es el tamaño anterior (en bytes).

Si desea cambiar el tamaño de una imagen qcow2, esto aún no es compatible.

este correo electrónico muestra algunos experimentos para cambiar el tamaño de las imágenes qcow con un editor hexadecimal.

Cambiar el tamaño o aumentar las imágenes en otros formatos (VMware, Bochs, cow o cloop) no es compatible con lo mejor de mi conocimiento.

En un host de Windows, es posible cambiar el tamaño de una imagen de disco de formato sin formato con el comando 'copiar'. Puede usar qemu-img para convertir su imagen existente a formato sin formato si es necesario. Utilizaremos una imagen de disco de formato sin formato temporal que se agregará al final de la imagen de disco de formato sin formato existente. El tamaño de esta imagen temporal es el tamaño en que se expandirá la imagen existente:

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

A continuación, debe emitir el siguiente comando: orig.img es su imagen de formato sin formato existente que desea ampliar, temp.img es el archivo de imagen temporal creado anteriormente y new.img es la imagen resultante redimensionada:

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

Luego deberá volver a particionar y cambiar el tamaño de las particiones y sistemas de archivos existentes en la nueva imagen. Un método para hacerlo es arrancar gparted en QEMU con la iso livecd de gparted y la nueva imagen de disco.


Otros enlaces que puede consultar si lo anterior no funciona:

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 / archivos / 174


17

Se puede cambiar el tamaño de una imagen qcow2 para que crezca con una versión nueva / actual de qemu. Por ejemplo, tengo un arch.qcow2 que es 2G y quiero que se convierta en 50G, en ese caso escribo:

qemu-img resize arch.qcow2 50G

entonces qemu me dice:

image resized

eso es todo, acabo de hacer esto hoy. redhat en realidad tiene algunos buenos documentos sobre qemu:


3
Sin embargo, el espacio aumentado no será asignado. Deberá cambiar el tamaño de su disco virtual con alguna herramienta de partición.
Yamaneko

Excelente solución!
RckLN

qemu-img versión 1.0 me diceqemu-img: This image format does not support resize
HDave

3

Respuesta corta para 2017: para agregar, por ejemplo, 30 GB a una imagen en bruto existente, acabo de usar este comando:

qemu-img resize nameofimg.img +30G

Esto agrega 30 GB a su archivo de imagen existente (no es necesario crear un nuevo archivo). Luego, en su máquina virtual invitada, puede ampliar sus particiones existentes, en Windows 10, por ejemplo, con "Administración de discos", fácil.

Más información y opciones:

man qemu-img

Ver también: qemu wiki> qemu-img


1

Sí tu puedes. Y no, no cambiará las particiones o la tabla. Es posible que sea necesario actualizar la tabla de particiones para que tenga el tamaño completo del disco, y habrá un espacio vacío sin usar al final si la crece, y cortará una partición y la perderá o la última parte de sus datos si la reduce. .

Si está en el monitor qemu (o usa QMP probablemente), y la interfaz lo admite (como virtio-scsi-pci con rbd que probé aquí), entonces sin reiniciar la VM, puede hacer esto:

(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

Y poof, la imagen cambia de tamaño al tamaño que especificó en MiB, y la VM mostrará el nuevo tamaño.

Probé lo siguiente en qemu 2.7.0:

  • RBD de Ceph - funciona, rápido, crece o se encoge
  • Archivo de disco qcow2: funciona, más lento, solo crece
  • archivo de disco sin procesar: funciona, rápido, crece o se reduce
  • disco LVM sin procesar: el monitor parece normal pero no tiene efecto

Aprecio la mesa en la parte inferior. Eso fue súper útil.
encubierto1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.