Como tengo el virus de linux haciendo de las suyas, resulta que el vps que tenía contratado se me ha quedado pequeño y, aprovechando que ha cumplido el año de contrato, por unos pocos euros más he ampliado la RAM, el núcleo y el almacenamiento. Todo esto lo hace el proveedor, pero cuando entro en el servidor resulta que la unidad sigue teniendo los mismos gigas que antes, sólo que ahora el disco es más grande, así que hay que usar LVM para ampliarlo y poder usar todo el espacio nuevo disponible.
Sin meterme en explicaciones muy técnicas (ya hay documentación de sobra para quien quiera saber exactamente cómo funciona), en el vps usamos particiones lógicas en lugar de físicas, con lo que podemos montar una partición única de trabajo usando varias partes de un disco físico para que todo fluya como debe. ¿Y qué ganamos con esto? Pues por ejemplo, no tener que reinstalarlo todo para ampliar la capacidad del servidor. Cogemos el que ya tenemos y le pegamos un trozo nuevo que está sabe Dios dónde y lo seguimos usando como si nada.
Así que vamos al lío.
Lo primero hacer un backup del sistema, bien lo tengas contratado con el proveedor o lo hagas como yo, que tengo en el pc un disco preparado para eso, así con lo que lanzo mi script y yastá. Lo segundo crear un snapshot del sistema por si algo falla. Desde la web de mi proveedor apago el vps y creo el snapshot.
Ya tenemos las espaldas cubiertas por si algo falla, así que podemos empezar con la ampliación.
Primero comprobamos la estructura de nuestro disco con lsblk
, lo que nos muestra algo así:
1
2
3
4
5
6
7
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 487M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─vg00-lv00 254:0 0 1.9G 0 lvm [SWAP]
└─vg00-lv01 254:1 0 17.6G 0 lvm /
sr0 11:0 1 1024M 0 rom
Como podemos ver, tenemos el disco sda de 80 gigas con dos particiones: sda1 y sda2. En la partición sda1 está el boot y en la partición sda2 tenemos dos volúmenes lógicos que suman 19.5 gigas. Nos faltan 60 gigas que están sin formatear. En este caso lo que vamos a hacer en el espacio nuevo es crear una partición y otro grupo de volúmenes donde alojar un nuevo volumen lógico preparado para poder ampliarlo en un futuro.
- Creamos la nueva partición usando fdisk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
fdisk /dev/sda [pulsamos "n" para crear una nueva partición] [pulsamos "p" para que la partición sea primaria] [asignamos el nuevo número de partición] [pulsamos enter dos veces para que ocupe todo el espacio libre] [De vuelta en el prompt de fdisk, pulsamos "t" para cambiar el identificador de sistema de la partición] [elegimos la partición que hemos creado (en mi caso la 3)] [introducimos el código hexadecimal para Linux LVM (8e)] [imprimimos la tabla de particiones pulsando "p" para comprobar que todo esté bien y debería salir algo como esto: Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x1d120e0a Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 999424 41943039 40943616 19.5G 8e Linux LVM /dev/sda3 41943040 167772159 125829120 60G 8e Linux LVM ] [pulsamos "w" para guardar los cambios]
- Ahora vamos a crear el volumen físico de la partición.
1 2
pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created.
Si quisiéramos añadir más particiones haría que hacer lo mismo con estas.
- Creamos el grupo de volumen.
1 2
vgcreate vg01 /dev/sda3 Volume group "vg01" successfully created
Con el comando vgscan podemos consultar los grupos creados, con el comando pvscan los volúmenes físicos.
1 2 3 4 5 6 7
vgscan Found volume group "vg01" using metadata type lvm2 Found volume group "vg00" using metadata type lvm2 pvscan PV /dev/sda3 VG vg01 lvm2 [<60.00 GiB / <60.00 GiB free] PV /dev/sda2 VG vg00 lvm2 [<19.52 GiB / 0 free] Total: 2 [<79.52 GiB] / in use: 2 [<79.52 GiB] / in no VG: 0 [0 ]
- Creamos el volumen lógico donde montaremos el sistema de archivos usando todo el espacio disponible en el grupo de volúmenes.
1 2
lvcreate -l 100%VG -n lv02 vg01 Logical volume "lv02" created.
Comprobamos el estado de los volúmenes con lvscan.
1 2 3 4
lvscan ACTIVE '/dev/vg01/lv02' [<60.00 GiB] inherit ACTIVE '/dev/vg00/lv00' [<1.91 GiB] inherit ACTIVE '/dev/vg00/lv01' [17.61 GiB] inherit
- Formateamos y montamos el volumen como una partición normal.
1 2 3
mkfs.ext4 /dev/vg01/lv02 mkdir /media/newvol mount /dev/vg01/lv02 /media/newvol
- Modificamos el fichero
/etc/fstab
para añadir el nuevo volumen y que se monte al arrancar el sistema.1
/dev/mapper/vg01-lv02 /media/archivo ext4 defaults 0 0
- Reiniciamos y ya debería estar todo bien.