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