LVM es un gestor de volúmenes lógicos. Permite crear un volumen lógico a partir de una o varias particiones físicas. Una vez creado el volumen lógico, se pueden crear particiones lógicas sobre dicho volumen. Utilizar LVM frente al particionado tradicional presenta un gran número de ventajas: se pueden hacer particiones lógicas que se extiendan sobre varios discos, asignar un espacio inicial mayor al espacio físico disponible, añadir nuevos discos al volumen, reemplazar discos antiguos, stripping entre varios discos, redimensionar particiones lógicas, capturas del estado de la partición en un instante dado, etc. Básicamente permite cambiar una distribución inicial de particiones que puede haberse vuelto obsoleta con el tiempo y realizar copias de seguridad de una foto fija de un sistema en producción.
A continuación se muestra una configuración básica de LVM en Gentoo. Para obtener un conocimiento más detallado de los comandos y opciones que proporciona LVM se puede consultar por ejemplo A Beginner's Guide To LVM.
En primer lugar, aunque no es estrictamente necesario, ya que depende de si se van a utilizar aplicaciones que puedan utilizar LVM, conviene activar la variable USE lvm
.
A continuación se deben activar las siguientes opciones en el kernel para poder montar particiones lógicas (Device mapper support), hacer fotos fijas de la partición (Snapshot target), reservar más espacio del disponible actualmente (Thin provisioning target) y para mover el contenido de una partición física a otras (Mirror target):
Device Drivers --> [x] Multiple devices driver support (RAID and LVM) ---- <*> Device mapper support <*> Snapshot target <*> Thin provisioning target <*> Mirror target
Por último, se debe instalar el paquete lvm2
:
# emerge -av lvm2
Una vez instalado, hay que seguir los pasos indicados para añadir el demonio lvm
al sistema de arranque.
Para poder utilizar particiones lógicas, los pasos a seguir son:
Para crear una partición física LVM a partir de una partición física existente se debe utilizar el comando pvcreate
. Antes de utilizar dicho comando es conveniente haber hecho dicha partición del tipo Linux LVM (mediante una herramienta de particionado como fdisk
).
Por ejemplo, dado el siguiente particionado:
Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: D103C342-A5AD-4881-8D22-8AD5A972B546 Disposit. Start Final Size Tipo /dev/sda1 2048 10239 4M BIOS boot partition /dev/sda2 10240 417791 199M Linux filesystem /dev/sda3 417792 168189951 80G Linux filesystem /dev/sda4 168189952 5860532223 2,7T Linux LVM
En el que la única partición destinada a LVM es la partición /dev/sda4
, se puede crear la partición física LVM utilizando el siguiente comando:
# pvcreate /dev/sda4
Para comprobar que se ha creado dicha partición física se puede utilizar el comando pvscan
.
# pvscan PV /dev/sda4 lvm2 [2,65 TiB] Total: 1 [2,65 TiB] / in use: 0 [0 ] / in no VG: 1 [2,65 TiB]
Para obtener información más detallada sobre la partición física LVM se puede utilizar el comando pvdisplay
.
Un volumen lógico se crea por medio del comando vgcreate
. El primer parámetro de dicho comando es el nombre que le queramos dar al volumen lógico, los siguientes parámetros especifican cada una de las particiones físicas LVM que conformarán dicho volumen. Así, por ejemplo, para crear un volumen lógico llamado vg
a partir de la partición /dev/sda4
, se utilizaría el siguiente comando:
# vgcreate vg /dev/sda4 Volume group "vg" successfully created
Al igual que antes, para comprobar qué volúmenes lógicos LVM están disponibles, se puede utilizar el comando vgscan
:
# vgscan Reading all physical volumes. This may take a while... Found volume group "vg" using metadata type lvm2
Para obtener información más detallada sobre el volumen lógico LVM, se puede utilizar el comando vgdisplay
.
Para crear una partición lógica dentro de un volumen lógico se utiliza el comando lvcreate
. Dicho comando permite definir, entre otras cosas, el tamaño de la partición y su nombre. Así, para crear una partición lógica llamada 'swap' de 4GB dentro del volumen vg
, se utilizaría el comando:
# lvcreate --name swap --size 4G vg Logical volume "swap" created
Se puede comprobar que se ha creado con lvscan
:
# lvscan ACTIVE '/dev/vg/swap' [4,00 GiB] inherit
Una vez creada la partición ya puede utilizarse:
# mkswap /dev/vg/swap Setting up swapspace version 1, size = 4194300 KiB no label, UUID=97d64e88-4979-4ddb-b8eb-89bda3c82e5f # swapon /dev/vg/swap
Para que la partición se monte automáticamente en el siguiente arranque, se debe añadir la correspondiente línea al fichero /etc/fstab/
:
/dev/vg/swap none swap sw 0 0
Para crear una partición con el nombre home
de 2T dentro del volumen vg
y formatearla como ext4 se utilizarían los comandos:
# lvcreate --name home --size 2T vg Logical volume "home" created # lvscan ACTIVE '/dev/vg/swap' [4,00 GiB] inherit ACTIVE '/dev/vg/home' [2,00 TiB] inherit # mkfs.ext4 /dev/vg/home # mount /dev/vg/home /home
Al igual que antes, para que la partición se monte automáticamente en el siguiente arranque, se debe añadir la correspondiente línea al fichero /etc/fstab/
:
/dev/vg/home /home ext4 noatime 0 2