Esta traducción es más antigua que la página original y podría estar obsoleta. Ver lo que ha cambiado.

Extender root de máquina virtual con espacio libre del disco

Extender root de máquina virtual con espacio libre del disco

Desde la actualización de agosto de 2017 es posible elegir un tamaño personalizado para el disco root o redimensionar un disco existente, pero para que ese espacio se pueda utilizar hay que asignar ese espacio manualmente en el sistema operativo.

Las plantillas de Ubuntu 14.04 y 16.04 tiene el root montado sobre LVM, usando una partición lógica del sistema de particionado tradicional DOS. Esta guía está escrita para estas plantillas, aunque recomendamos no saltarse en ningún caso el apartado de Comprobar la configuración por si acaso.

Comprobar la configuración

Antes de continuar debes confirmar que el sistema sobre el que apliques estas instrucciones tiene esta misma configuración, ya que puedes destruir el sistema si las aplicas mal.

Primero, comprueba que se está utilizando LVM:

# df -h /
S.ficheros                    Tamaño Usados  Disp Uso% Montado en
/dev/mapper/Ubuntu14--vg-root   8,5G   6,3G  1,8G  79% /

El comando df -h muestra el montaje de / en /dev/mapper/Ubuntu–vg-root, lo que nos confirma que el sistema sí está montado sobre LVM.

Ahora comprueba el nombre del volumen lógico utilizando para el root.

# lvs
  LV    VG        Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  root  Ubuntu-vg -wi-ao---   6.03g                                           
  swap1 Ubuntu-vg -wi-ao--- 748.00m

También comprueba el nombre del grupo de volúmenes asociado y su volumen físico.

# pvs
  PV         VG          Fmt  Attr PSize PFree
  /dev/sda5  Ubuntu14-vg lvm2 a--  9,76g    0 

Con esos comandos vemos que el root está en un volumen lógico llamado root dentro de un grupo de volúmenes llamado Ubuntu-vg que utiliza como volumen físico /dev/sda5.

Ten en cuenta además que en el sistema de particionado utilizado, /dev/sda5 es una partición lógica que forma parte de la partición extendida /dev/sda2.

Redimensionado

El redimensionado se puede resumir en los siguientes 5 pasos:

  1. Extender la partición extendida /dev/sda2 para que ocupe el espacio libre en el disco.
  2. Extender la partición lógica /dev/sda5 para que ocupe el espacio libre en la partición extendida.
  3. Extender el volumen físico del grupo de volúmenes Ubuntu-vg.
  4. Extender el volumen lógico root para que ocupe el espacio libre del grupo de volúmenes.
  5. Extender el sistema de archivos para que ocupe el espacio libre del volumen lógico.

Arrancamos parted. Con el comando print free vemos que el disco tiene un total de 21.5GB y un espacio libre al final del disco de 14GB.

# parted /dev/vda
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
        32.3kB  1049kB  1016kB            Free Space
 1      1049kB  256MB   255MB   primary   ext2         boot
        256MB   257MB   1048kB            Free Space
 2      257MB   7515MB  7258MB  extended
 5      257MB   7515MB  7258MB  logical                lvm
        7515MB  21.5GB  14.0GB            Free Space

Primero hay que extender las particiones extendidas y lógica (por ese orden) para que acaben en el final del disco, que en este caso es 21.5GB (pasos 1 y 2).

(parted) resizepart 2 21.5GB                                              
(parted) resizepart 5 21.5GB
(parted) quit

Una vez hecho, ya fuera de parted, extendemos el volumen físico del grupo de volúmenes (paso 3).

# pvresize /dev/vda5
  Physical volume "/dev/vda5" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Ahora extendemos el volumen lógico (paso 4).

# lvextend -l+100%FREE /dev/mapper/Ubuntu--vg-root 
  Extending logical volume root to 19.03 GiB
  Logical volume root successfully resized

Por último, extendemos el sistema de archivos (paso 5).

# resize2fs /dev/mapper/Ubuntu--vg-root 
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/Ubuntu--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/Ubuntu--vg-root is now 4987904 blocks long.

Una vez hecho esto, todo el espacio libre debería estar ya asignado al root del sistema.