Tabla de Contenidos

Gestor de volúmenes lógicos (LVM)

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.

Instalar LVM en Gentoo

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.

Crear, formatear y montar particiones lógicas con LVM

Para poder utilizar particiones lógicas, los pasos a seguir son:

  1. Crear una o varias particiones físicas LVM.
  2. Crear un volumen lógico que englobe una o más particiones físicas LVM.
  3. Crear particiones lógicas dentro de un volumen lógico.

Crear una o varias particiones físicas LVM

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.

Crear un volumen lógico que englobe una o más particiones físicas LVM

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.

Crear particiones lógicas dentro de un volumen lógico

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