Cómo reducir un disco en VirtualBox


Shrink disk on VirtualBox - Big disk

Antes que nada debo decir que el título del artículo es algo engañoso, realmente debería decir algo como “Copiando el contenido de un disco grande en uno más pequeño en VirtualBox usando rsync”, pero dado que mi problema surgió de esa necesidad me pareció conveniente dejarlo como está.

El problema

Necesitaba una imagen con Clonezilla de una máquina virtual con un disco de 600 GB, como se muestra en la imagen de arriba, pero el disco de destino era de 200 GB. Clonezilla no es capaz de modificar la información física del disco, y en VirtualBox no encontré forma de reducir el disco físicamente aunque de los 600 GB solo se usara alrededor de 15 GB. Si bien se puede crear la imagen con Clonezilla a partir de las particiones, al restaurar de igual forma se reconocía que el sistema origen tenía un disco de 600 GB y el de destino era de 200 GB. Por otro lado, el sistema operativo (CentOS 6.0) tenía LVM, por lo que hacer la restauración a partir de particiones no resolvía el problema.

La Solución

Como la imagen generada con Clonezilla fue hecha a partir de un disco de 600 GB, se me ocurrió hacer un disco más pequeño de 200 GB e instalar el sistema operativo allí para luego copiar los archivos necesarios desde el disco original de 600 GB a este nuevo disco. Entonces, en la máquina virtual procedía a crear un disco de 200 GB dinámico:

Shrink disk on VirtualBox - Adding small disk

Luego procedí a quitar el disco de 600 GB (en el ejemplo, Cento OS Server.dvi), dejando el disco de 200 GB (SmallDisk.dvi). Después instalé CentOS como se haría habitualmente. Es bueno revisar la instalación, es decir, que la máquina virtual en el disco de 200 GB inicia normalmente.

Una vez verificado el sistema operativo en el disco de 200 GB, se debe apagar la máquina virtual y agregar el disco de 600 GB nuevamente, pero como un disco primario (colocar SATA Port 0 en vez de SATA Port 1). El disco pequeño debe se debe configurar como secundario seleccionando SATA Port 1, como se muestra en la figura de arriba. Luego se inicia la máquina virtual, y como root se monta el disco de 200 GB:

mount /dev/mapper/VolGroup-lv_root /mnt/lvm2/root/

Y ahora se procede  a copiar el contenido del disco grande en el disco pequeño:

rsync -arpz --progress --numeric-ids --exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/home --exclude=/etc/fstab  --exclude=/mnt --exclude=/sys / /mnt/lvm2/root/

Es importante excluir los directorio /dev, /proc, /sys, /tmp, /boot, /home, /mnt y el archivo /etc/fstab, ya que no queremos que esa información se replique en el disco pequeño (por ejemplo, no queremos copiar el gestor de arranque del disco grande en el disco pequeño).

Una vez copiados los archivos, puede apagarse la máquina virtual y quitar el disco grande, dejando el disco pequeño en SATA Port 0.

Por último, si bien es cierto que usé  CentOS, también es válido para otras distribuciones como Debian y derivados.


Los Comentarios están cerrados