Extender un LVM on Linux
Re-ajustar el tamaño del Disco
Primero lo primero, es necesario expandir el disco en el hipervisor.
Luego de ajustar el tamaño del disco, puede re-escanear el disco para que Linux reconozca el nuevo espacio. El comando siguiente re-escanea todos los discos.
# Assuming VirtIO SCSI
$ for x in /sys/class/scsi_disk/*; do echo '1' > $x/device/rescan; done
Si el disco sigue teniendo el mismo tamaño, necesitarás reiniciar el servidor.
Re-ajustar la Partición
Dependiendo del layout de particiones, tendrás que re-ajustar 1 o 2 particiones, asumiendo que las particiones están al final del disco.
- En el layout 1, solamente hay una partición que es la del LVM.
- En el layout 2 habrá una partición extendida que contiene la partición de LVM.
El proceso de re-ajuste es el mismo, excepto que en el layout 2 tendrás que re-ajustar 2 particiones, con la extendida siendo la primera para poder contener la partición de LVM.
Utilice parted para re-ajustar las particiones. Primero abrimos parted sobre /dev/sda
$ parted /dev/sda
Normalmente se utiliza el byte como unidad y luego el comando print free para ver donde necesita rellenar el espacio libre.
(parted) unit b
(parted) print free
Number Start End Size Type File system Flags
32256B 1048575B 1016320B Free Space
1 1048576B 255852543B 254803968B primary ext2 boot
255852544B 256900095B 1047552B Free Space
2 256900096B 53687091200B 53430191104B primary lvm
53687091201B 75161927679B 5369757696B Free Space
Para agrandarla, simplemente utilizamos resizepart.
(parted) resizepart 2 75161927679B
En el caso de una partición extendida que contenga la partición LVM, el comando de arriba solo necesita correrse contra los 2 números de partición, estando primera la partición extendida y luego la partición del LVM. El byte al final de la partición del LVM tiene que ser uno menos que la de la partición extendida.
En este ejemplo, la partición 2 es la partición extendida, y la partición 5 es la partición del LVM.
(parted) resizepart 2 75161927679B
(parted) resizepart 5 75161927678B
Re-ajustar el Volúmen Físico
Luego de agrandar la partición es necesario re-ajustar el volumen físico. Es tan simple como hacer lo siguiente:
$ pvresize /dev/sda2
Reemplace /dev/sda2 con la partición que acaba de extender.
Re-ajustar el Volúmen Lógico
Lo siguiente es re-ajustar el volúmen lógico con lvresize [lv path].
Puede elegir agrandarlo para rellenar todo el espacio vacío, o seleccionar un tamaño específico. En este ejemplo utilizaré todo el espacio restante.
Reemplace /dev/VolGroup/lv_root con el path correspondiente al volúmen lógico que quiera re-ajustar.
$ lvresize -l +100%FREE /dev/VolGroup/lv_root
Debería ver la siguiente salida una vez que el volúmen fue re-ajustado.
Size of logical volume VolGroup/lv_root changed from 48.54 GiB (12426 extents) to 68.54 GiB (17546 extents).
Logical volume lv_root successfully resized
Re-ajustar el Filesystem
Lo último es re-ajustar el filesystem. Esto se puede hacer en caliente en ext4 con la herramienta resize2fs.
Reemplace /dev/mapper/VolGroup-lv_root con el path al filesystem que quiera ajustar.
Si no está seguro del filesystem, lvscan printea el path al filesystem.
$ resize2fs /dev/mapper/VolGroup-lv_root
Una vez el ajuste esté completo debería poder correr un df y ver nuevo espacio en disco. En mi caso el filesystem creció de 50GB a casi 70GB.
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
68G 44G 20G 69% /