¿Cómo amplío una imagen de disco sin formato?

13

Las imágenes oficiales suministradas son imágenes de disco sin procesar, que podrían haberse creado usando dd.

¿Cómo agrando una imagen? No estoy interesado en volver a particionar dicha imagen, ya que ya se ha respondido en ¿Cómo puedo cambiar el tamaño de mi partición / (raíz)? .

Alex Chamberlain
fuente
No estoy exactamente seguro de lo que quieres decir con expandir. ¿Desea realizar el 'cambio de tamaño de la partición' en la imagen antes de dd'dirla al disco?
Joost
Ese es un objetivo, pero para hacerlo, uno debe expandir la imagen del disco.
Alex Chamberlain

Respuestas:

13

Como se explica en esta pregunta, hay dos métodos para expandir la imagen. A continuación hay dos ejemplos para expandir el archivo en 1 kilobyte.

DD crea un archivo no disperso

dd if=/dev/zero bs=1k count=1 >> myimage.img

Truncar crea un archivo disperso

truncate -s +1024 myimage

Probablemente quieras usar truncar. Un archivo disperso solo escribe los metadatos de los bloques que usa, en lugar de escribir realmente los bloques. Esto hace que la creación del archivo sea más rápida (ya que no tiene que escribir ceros reales en el disco) y ahorra espacio en su disco.

Tenga en cuenta que el sistema de archivos HFS + de Apple no admite archivos dispersos.

Joost
fuente
¿HFS + no se ajusta a POSIX? linux.die.net/man/2/truncate
Alex Chamberlain
Si admitir archivos dispersos es un requisito para POSIX, supongo que no. Aquí hay una buena demostración de las diferencias entre HFS + y algunos ext (supongo) stackoverflow.com/a/193015/689893 . Aparentemente, crea el archivo pero usa espacio en disco como si fuera un archivo normal en lugar de un archivo disperso.
Joost
¡No, creo que lo había entendido mal!
Alex Chamberlain
Si tiene ddun archivo escaso , ¿seguirá siendo correcto?
Alex Chamberlain
Un archivo disperso contiene datos, por lo que supongo que puede agregar ceros. Manejará esa parte como no dispersa.
Joost
10

Una manera increíblemente fácil de cambiar el tamaño de la imagen es usar una de las qemuherramientas llamadas qemu-img. Esto, por supuesto, depende del hecho de que lo haya qemuinstalado (lo que sé que ya tiene Alex).

El comando se ve así:

qemu-img resize filename [+|-]size[K|M|G|T]

¿Dónde filenameestá el archivo de imagen y el tamaño es el tamaño que desea ampliar (o reducir) la imagen.

Por ejemplo, si desea ampliar la imagen archarm.imgen 2 GB, debería ejecutar:

qemu-img resize archarm.img +2G
Jivings
fuente
Refiriéndose a la página de manual, antes de usar este comando para reducir una imagen de disco, DEBE usar el sistema de archivos y las herramientas de partición dentro de la VM para reducir los sistemas de archivos asignados y los tamaños de partición en consecuencia. De lo contrario, se perderán datos.
AntonioK