¿Cómo reduzco un disco VDI de crecimiento dinámico desde VirtualBox?


35

Mis discos virtuales (VDI) que crecen dinámicamente desde varias instalaciones de Ubuntu en Virtual Box en realidad están "creciendo" constantemente.

La eliminación de archivos en la máquina virtual no libera el espacio que tomó mi archivo VDI del espacio en el disco duro del host.

¿Cómo reduzco estos archivos para devolver el espacio del disco duro no utilizado al host?

Respuestas:


34

Un archivo de disco duro virtual Virtual Box en crecimiento dinámico es capaz de crecer a pedido de la máquina virtual hasta el tamaño máximo que definimos al configurar este archivo. Sin embargo, no libera el espacio de archivos que eliminamos en el sistema operativo invitado.

En caso de que el disco haya crecido demasiado, podemos compactarlo nuevamente, siempre que el espacio no utilizado esté lleno de ceros y la unidad esté en formato VDI.

Para un sistema de archivos ext2 a ext 4, esto se puede hacer desde el invitado Ubuntu con la utilidad de línea de comandos zerofree * .Instalar zerofree

zerofree /dev/sdxX

Esto necesita que la unidad no esté en uso y que no esté montada . Por lo tanto, es posible que tengamos que vincularlo temporalmente a otra VM que hayamos creado para este propósito, o necesitamos iniciar un entorno en vivo de Ubuntu en esta VM.

Reemplace /dev/sdxXcon la partición formateada ext2, ext3 o ext4 en cuestión.

En más de una partición, tenemos que repetir zerofreepara cada partición. Tenga en cuenta que al llenar con ceros el archivo virtual crecerá temporalmente hasta su tamaño máximo.

Una vez que todo el espacio de la unidad no utilizada se llena con ceros, reducimos la unidad con

VBoxManage modifyhd <name>.vdi --compact

Esto disminuirá considerablemente el tamaño del archivo de nuestro archivo VDI.

* En un invitado de Windows, podemos reemplazar el espacio no utilizado con la utilidad sdelete.


¿Funcionará esto también para un sistema de archivos encriptado dentro del invitado?
smichak

Seguro. Si está utilizando ecryptfs, los archivos cifrados se parecen a los archivos normales de las utilidades de disco, y esto funcionará. Si está utilizando el cifrado de disco completo, no será reconocido como una de todos modos ext con formato de partición :)
chronospoon

Estoy usando la partición ext4 en un dispositivo de bloque dm-crypt ... Probé el método y no veo el archivo .vdi como más pequeño después de la compactación. Creo que los bloques cero se guardan como bloques distintos de cero en el dispositivo de bloque debajo de la cripta dm.
smichak

2
@smichak: ese es el punto de cifrado. Encriptará toda su unidad para asegurarse también de que no podamos ver los límites del archivo.
Takkat

3
Si no desea conectar su VDI a otra máquina, puede iniciar en modo de recuperación y montar el disco solo lectura mount -n -o remount,ro -t ext4 /dev/sda1y luego zerofree -v /dev/sda1.
Hamid Nazari

1

Aquí hay algunas formas alternativas de poner a cero el espacio libre en disco (que puede ser la parte que consume más tiempo). Después, aún tendrá que ejecutar VBoxManage modifyhd <disk> --compactpara compactar el archivo de disco real.


Este comando puede poner a cero el disco mientras está desmontado:

apt-get install zerofree
zerofree -v /dev/sdxN


Aquí hay un ejemplo de cómo obtener dd para imprimir periódicamente la salida:

dd if=/dev/zero of=temp-file-on-disk bs=20M

# run this to get the process ID of the dd command
pgrep -l '^dd$'
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd$' | awk '{print $1}')


Aquí hay un ddprograma similar que imprimirá automáticamente la salida periódicamente:

apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M

1
Lo he visto zerofreeusado en un sistema de archivos montado, pero cuando se montó solo lectura. Incluso para root FS: sudo mount -o remount,ro /pero en una sesión de GUI, la raíz estará ocupada, por lo que fallará. Pero es posible en el nivel de ejecución 1 ( telinit 1), por lo que no necesitará arrancar desde un CD en vivo para hacerlo.
Tomasz Gandor
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.