Extender LVM de máquina virtual con nuevo disco

Esta é unha revisión antiga do documento!


>>Página principal del Cloud

Extender LVM de máquina virtual con nuevo disco

Las máquinas virtuales creadas a partir de plantillas suelen venir con el sistema de archivos montados sobre un LVM, que permite añadir más discos y extender directamente el espacio de cualquier partición del sistema, como /.

Para comprobarlo, puedes lanzar este comando:

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

Verás que el dispositivo de / está dentro de /dev/mapper. En este caso /dev/mapper/Ubuntu14–vg-root es un volumen lógico LVM con el nombre root, en el grupo de volúmenes Ubuntu14-vg.

Para ver los dispositivos físicos que forman parte de un grupo de volúmenes, utiliza este comando:

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

Verás que en este caso es una partición del disco /dev/sda. Se pueden utilizar particiones como en este caso, o discos enteros.

En este caso, añadiremos un nuevo disco y lo utilizaremos completo, sin particionar, para extender el volumen lógico /dev/mapper/Ubuntu14–vg-root.

Tras añadir un disco de datos en la itnerfaz de Cloudstack, el sistema debería tener un disco nuevo. En nuestro caso:

# cat /proc/partitions 
major minor  #blocks  name

 253        0    5242880 vda
  11        0    1048575 sr0
   8        0   10485760 sda
   8        1     248832 sda1
   8        2          1 sda2
   8        5   10233856 sda5
 252        0    9183232 dm-0
 252        1    1048576 dm-1

Los dm-0 y dm-1 los descartamos. El sda es el disco del sistema. El sr0 es el CD-ROM virtual. Por lo tanto, el disco que acabamos de añadir (y que coincide en tamaño con lo que hemos solicitado al cloud, 5GB) es vda.

Es muy importante identificar bien cada disco, ya que dependiendo del sistema, puede ser que vda sea el disco del sistema y el nuevo disco aparezca como vdb. Si seguimos las instrucciones sin estar seguros de lo que hacemos, es posible cargarse el sistema.

Una vez identificado el nuevo disco, lo primero es crear el volumen físico de lvm:

# pvcreate /dev/vda
  Physical volume "/dev/vda" successfully created

Entonces, se añade al grupo de volúmenes, en nuestro caso Ubuntu14-vg:

# vgextend Ubuntu14-vg /dev/vda
  Volume group "Ubuntu14-vg" successfully extended

Y se añade todo el espacio libre al volumen lógico:

# lvextend -l +100%FREE /dev/mapper/Ubuntu14--vg-root 
  Extending logical volume root to 13,75 GiB
  Logical volume root successfully resized

Por último, hay que redimensionar el sistema de archivos contenido en el dispositivo. En nuestro caso, puede hacerse al vuelo al tratarse de ext4:

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

Ahora, el sistema tendrá ya el nuevo espacio disponible en /:d

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

Se puede repetir esta operación más veces con distintos volúmenes para ampliar aún más el espacio de la partición.