Extender LVM de máquina virtual con nuevo disco

FIXME Esta página no está completamente traducida, aún. Por favor, contribuye a su traducción.
(Elimina este párrafo una vez la traducción esté completa)

>>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 montado sobre un LVM, que permite añadir más discos y extender directamente el espacio del sistema de archivos de /.

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 interfaz de Cloudstack, el sistema debería tener un disco nuevo disponible sin particionar. 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

Dependiendo del sistema, para que aparezca el nuevo disco puede ser necesario reiniciar la máquina virtual.

Los dm-0 y dm-1 los descartamos. El sda es el disco del sistema como ya vimos antes (además vemos que ya tiene particiones creadas). 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.

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

Es muy importante identificar bien cada disco, ya que dependiendo del sistema, puede ser que, por ejemplo, vda sea el disco del sistema y el nuevo disco que acabamos de añadir aparezca como vdb. Si seguimos las instrucciones sin estar seguros de lo que hacemos, es posible cargarse el sistema. El siguiente comando es potencialmente destructivo, así que ojo.
# pvcreate /dev/vda
  Physical volume "/dev/vda" successfully created

Entonces, se añade el volumen físico que acabamos de crear 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 del grupo de volúmenes 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 volumen lógico. 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 /:

# 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.