LFCS: Cómo administrar y crear LVM usando los comandos vgcreate, lvcreate y lvextend - Parte 11


Debido a los cambios en los requisitos del examen LFCS a partir del 2 de febrero de 2016, estamos agregando los temas necesarios a la serie LFCS publicada aquí. Para prepararse para este examen, le recomendamos que utilice también la serie LFCE.

Una de las decisiones más importantes al instalar un sistema Linux es la cantidad de espacio de almacenamiento que se asignará a los archivos del sistema, los directorios personales y otros. Si comete un error en ese momento, hacer crecer una partición que se ha quedado sin espacio puede ser engorroso y algo arriesgado.

La administración de volúmenes lógicos (también conocida como LVM), que se ha convertido en un valor predeterminado para la instalación de la mayoría (si no todas) las distribuciones de Linux, tiene numerosas ventajas sobre la administración de particiones tradicional. Quizás la característica más distintiva de LVM es que permite cambiar el tamaño de las divisiones lógicas (reducirlas o aumentarlas) a voluntad sin muchos problemas.

La estructura del LVM consta de:

  1. One or more entire hard disks or partitions are configured as physical volumes (PVs).
  2. A volume group (VG) is created using one or more physical volumes. You can think of a volume group as a single storage unit.
  3. Multiple logical volumes can then be created in a volume group. Each logical volume is somewhat equivalent to a traditional partition – with the advantage that it can be resized at will as we mentioned earlier.

En este artículo usaremos tres discos de 8 GB cada uno (/ dev/sdb,/dev/sdc y/dev/sdd) para crear tres volúmenes físicos. Puede crear los PV directamente en la parte superior del dispositivo o particionarlo primero.

Aunque hemos optado por el primer método, si decide utilizar el segundo (como se explica en la Parte 4 - Crear particiones y sistemas de archivos en Linux de esta serie) asegúrese de configurar cada partición como tipo 8e .

Creación de volúmenes físicos, grupos de volúmenes y volúmenes lógicos

Para crear volúmenes físicos sobre/dev/sdb,/dev/sdc y/dev/sdd, haga lo siguiente:

# pvcreate /dev/sdb /dev/sdc /dev/sdd

Puede enumerar los PV recién creados con:

# pvs

y obtenga información detallada sobre cada PV con:

# pvdisplay /dev/sdX

(donde X es b, c o d)

Si omite /dev/sdX como parámetro, obtendrá información sobre todos los PV.

Para crear un grupo de volumen llamado vg00 usando /dev/sdb y /dev/sdc (guardaremos /dev/sdd para luego ilustrar la posibilidad de agregar otros dispositivos para expandir la capacidad de almacenamiento cuando sea necesario):

# vgcreate vg00 /dev/sdb /dev/sdc

Como sucedió con los volúmenes físicos, también puede ver información sobre este grupo de volúmenes emitiendo:

# vgdisplay vg00

Dado que vg00 está formado por dos discos de 8 GB, aparecerá como una única unidad de 16 GB:

Cuando se trata de crear volúmenes lógicos, la distribución del espacio debe tener en cuenta tanto las necesidades actuales como las futuras. Se considera una buena práctica nombrar cada volumen lógico de acuerdo con su uso previsto.

Por ejemplo, creemos dos LV llamados vol_projects (10 GB) y vol_backups (espacio restante), que podemos usar más tarde para almacenar la documentación del proyecto y las copias de seguridad del sistema, respectivamente.

La opción -n se usa para indicar un nombre para el LV, mientras que -L establece un tamaño fijo y -l (L minúscula) es se utiliza para indicar un porcentaje del espacio restante en el contenedor VG.

# lvcreate -n vol_projects -L 10G vg00
# lvcreate -n vol_backups -l 100%FREE vg00

Como antes, puede ver la lista de LV e información básica con:

# lvs

e información detallada con

# lvdisplay

Para ver información sobre un solo LV, use lvdisplay con VG y LV como parámetros, de la siguiente manera:

# lvdisplay vg00/vol_projects

En la imagen de arriba podemos ver que los LV se crearon como dispositivos de almacenamiento (consulte la línea LV Path). Antes de que se pueda usar cada volumen lógico, necesitamos crear un sistema de archivos encima.

Usaremos ext4 como ejemplo aquí, ya que nos permite aumentar y reducir el tamaño de cada LV (a diferencia de xfs que solo permite aumentar el tamaño):

# mkfs.ext4 /dev/vg00/vol_projects
# mkfs.ext4 /dev/vg00/vol_backups

En la siguiente sección explicaremos cómo cambiar el tamaño de los volúmenes lógicos y agregar espacio de almacenamiento físico adicional cuando surja la necesidad de hacerlo.

Cambiar el tamaño de los volúmenes lógicos y ampliar los grupos de volúmenes

Ahora imagine el siguiente escenario. Está empezando a quedarse sin espacio en vol_backups , mientras que tiene mucho espacio disponible en vol_projects . Debido a la naturaleza de LVM, podemos reducir fácilmente el tamaño de este último (digamos 2,5 GB) y asignarlo al primero, mientras redimensionamos cada sistema de archivos al mismo tiempo.

Afortunadamente, esto es tan fácil como hacer:

# lvreduce -L -2.5G -r /dev/vg00/vol_projects
# lvextend -l +100%FREE -r /dev/vg00/vol_backups

Es importante incluir los signos menos (-) o más (+) al cambiar el tamaño de un volumen lógico. De lo contrario, está configurando un tamaño fijo para el LV en lugar de cambiar su tamaño.

Puede suceder que llegue a un punto en el que cambiar el tamaño de los volúmenes lógicos ya no pueda resolver sus necesidades de almacenamiento y necesite comprar un dispositivo de almacenamiento adicional. Manteniéndolo simple, necesitará otro disco. Vamos a simular esta situación agregando el PV restante de nuestra configuración inicial (/dev/sdd ).

Para agregar /dev/sdd a vg00 , haga

# vgextend vg00 /dev/sdd

Si ejecuta vgdisplay vg00 antes y después del comando anterior, verá el aumento en el tamaño del VG:

# vgdisplay vg00

Ahora puede usar el espacio recién agregado para cambiar el tamaño de los LV existentes según sus necesidades, o para crear otros adicionales según sea necesario.

Montaje de volúmenes lógicos en el arranque y bajo demanda

¡Por supuesto que no tendría sentido crear volúmenes lógicos si no los vamos a usar realmente! Para identificar mejor un volumen lógico, necesitaremos averiguar cuál es su UUID (un atributo que no cambia y que identifica de forma única un dispositivo de almacenamiento formateado).

Para hacer eso, use blkid seguido de la ruta a cada dispositivo:

# blkid /dev/vg00/vol_projects
# blkid /dev/vg00/vol_backups

Crea puntos de montaje para cada LV:

# mkdir /home/projects
# mkdir /home/backups

e inserte las entradas correspondientes en /etc/fstab (asegúrese de usar los UUID obtenidos antes):

UUID=b85df913-580f-461c-844f-546d8cde4646 /home/projects	ext4 defaults 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4	defaults 0 0

Luego guarde los cambios y monte los LV:

# mount -a
# mount | grep home

Cuando se trata de usar LV, necesitará asignar los permisos adecuados de ugo + rwx como se explica en la Parte 8 - Administrar usuarios y grupos en Linux de esta serie.

Resumen

En este artículo presentamos Logical Volume Management, una herramienta versátil para administrar dispositivos de almacenamiento que proporciona escalabilidad. Cuando se combina con RAID (que explicamos en la Parte 6 - Crear y administrar RAID en Linux de esta serie), puede disfrutar no solo de la escalabilidad (proporcionada por LVM) sino también de la redundancia (ofrecida por RAID).

En este tipo de configuración, normalmente encontrará LVM encima de RAID, es decir, configure RAID primero y luego configure LVM encima.

Si tiene preguntas sobre este artículo o sugerencias para mejorarlo, no dude en comunicarse con nosotros mediante el formulario de comentarios a continuación.