7 minute read
4.6.- Gestión de Volúmenes Lógicos Dinámicos: LVM
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
4.6.- Gestión de Volúmenes Lógicos Dinámicos: LVM
Advertisement
Una característica muy interesante que presentan las actuales distribuciones de GNU/Linux, es que al igual que Windows, se nos permite crear, gestionar y administrar volúmenes lógicos dinámicos mediante LVM (Logical Volume Manager). En concreto, actualmente cuando instalamos una distribución GNU/Linux (p.e. Ubuntu Server o Debian) se nos da la opción de instalar el sistema sobre un volumen lógico dinámico LVM (todas las particiones /, /home, …, swap, a excepción de la /boot). Esta es una característica muy interesante, ya que a diferencia de los clásicos particionados de disco presenta varias ventajas, entre las cuales podrían destacarse las siguientes:
(1) Permite crear volúmenes del tamaño deseado a partir de discos o particiones variopintas de diferentes tamaños. (2) Cuando se requiere más espacio en uno de los volúmenes creados, podemos añadir un nuevo disco o partición a la gestión LVM, y a posteriori extender o aumentar el tamaño del volumen sin que eso afecte a los datos que ya hay guardados en el volumen, y siendo totalmente transparente para el usuario final. (3) Según lo anterior, nos permite redimensionar el volumen en caliente, sin necesidad de desmontarlo en el caso de que sea para aumentar el tamaño , permitiendo que los usuarios puedan estar trabajando con los datos que alberga el volumen lógico que se esta redimensionando, siendo esta operación totalmente transparente para ellos. Este aspecto es de los más importantes, si tenemos en cuenta los problemas que nos surgían cuando trabajábamos con las clásicas particiones. En el caso de que lo que queramos sea reducir el tamaño del volumen lógico, si que será necesario desmontar el volumen lógico para evitar la perdida de datos. (4) Nos permite "particionar" o crear volúmenes lógicos a partir de un volumen RAID de una forma muy sencilla, versátil y eficiente. Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 181
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
(5) Nos permite asignar nombres más amigables e identificables a los dispositivos o volúmenes de almacenamiento. En lugar de /dev/sda1 o /dev/md126, podemos usar vol_facturas o vol_informes, o simplemente facturas e informes.
En relación a los inconvenientes que presenta la gestión LVM, destacar la fragmentación de los datos que provoca la implementación de un volumen formado por particiones no contiguas, discos o volúmenes RAID independientes.
En realidad se trata de una capa de abstracción por encima de los discos y particiones que tengamos, haciendo creer al usuario final que la estructura de sus sistemas de almacenamiento es completamente diferente y mucho más versátil. Por ejemplo, tal como se puede observar en la anterior figura, podríamos encontrarnos con un equipo que dispusiera de varios discos variopintos, particionados o no, de igual o diferente tamaño, y gracias a la gestión LVM, al final de cara al usuario tan sólo advertiría que de seis unidades o volúmenes lógicos de almacenamiento (LVs)
Además, para una correcta comprensión de como gestiona LVM el espacio disponible, sería conveniente antes entender el significado de los siguientes términos:
- PVs: Los Volúmenes Físicos (Physical Volumes) se corresponden con discos, particiones o volúmenes RAID que han sido preparados mediante la herramienta software pvcreate para ser gestionados mediante LVM. Para saber que discos, particiones o volúmenes RAID son aptos para ser transformados en PVs puede ejecutarse el comando lvmscandisk. Todas las operaciones que pueden realizarse sobre los PVs pueden consultarse listando los comandos disponibles en el sistema que comienzan por "pv*". - VGs: Los PVs deben agruparse antes de pasar a formar Volúmenes Lógicos. El resultante de la agrupación da lugar a un Grupo de Volúmenes (VG). El tamaño resultante disponible en el Grupo de Volúmenes para la formación de Volúmenes Lógicos (LV), obviamente, es la suma de los espacios proporcionados por cada uno de los PVs que lo forman. Para la creación de un VG debe
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 182
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
hacerse uso del comando vgcreate. Cualquier otro tipo de operación a realizar sobre un VG puede consultarse a través del conjunto de comandos del sistema que comienzan por "vg*". - LVs: Son los dispositivos (devices) o unidades de almacenamiento que el usuario puede formatear y montar como si se tratasen de una partición más. Estos Volúmenes Lógicos (LVs) deben crearse a partir del espacio disponible en un VG mediante el uso del comando del sistema lvcreate. Cualquier otro tipo de operación a realizar sobre un LV puede consultarse a través del conjunto de comandos del sistema que comienzan por "lv*". 4.6.1.- Comandos LVM para la gestión de volúmenes lógicos
Para poder comprobar las bondades de la gestión LVM será necesario tener instalado el software correspondiente lvm2: [root@mv1]# apt-get install lvm2
Una forma de visualizar en pantalla todos los comandos existentes en el sistema para la gestión LVM junto con una breve descripción de su utilidad es ejecutar "lvm" y a continuación escribir "help": [root@mv1]# lvm lvm> help Available lvm commands: Use 'lvm help <command>' for more information dumpconfig Dump active configuration formats List available metadata formats help Display help for commands lvchange Change the attributes of logical volume(s) lvconvert Change logical volume layout lvcreate Create a logical volume lvdisplay Display information about a logical volume … lvm> quit Exiting.
Tras observar la gran lista de comandos existentes, a continuación se detallarán los que se consideran más importantes en la gestión LVM:
Comando Ejemplo / Descripción
lvmdiskscan
[root@mv1]# lvmdiskscan Lista todos los dispositivos físicos, particiones y discos, de nuestro equipo que podrían ser usados en la gestión LVM. Para que puedan formar parte de un volumen lógico, previamente han de convertirse en volúmenes físicos, PV. pvcreate [root@mv1]# pvcreate /dev/sdc /dev/sdd1 /dev/md/mv1:raid51 Prepara un disco, partición o volumen RAID de nuestro sistema para ser
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 183
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
pvscan pvs pvdisplay
pvremove gestionado mediante LVM, convirtiéndolos en un nuevo PV (Volumen Físico). [root@mv1]# pvscan | pvs | pvdisplay Cualquiera de estos tres comandos nos listan, con mayor o menor detalle, los volúmenes físicos disponibles en nuestra máquina mediante los cuales podremos crear grupos de volúmenes lógicos, VG, y a partir de estos los volúmenes lógicos necesarios, LV. [root@mv1]# pvremove /dev/sdd1 Deshace la creación de un volumen físico, PV.
vgcreate [root@mv1]# vgcreate nombre_grupo /dev/sdc /dev/md/mv1:raid51 Crea un grupo de volúmenes, VG, a partir de uno o varios volúmenes físicos, PV. El tamaño disponible dentro del VG para la creación de nuevos volúmenes lógicos, LV, será la suma de los espacios de los distintos volúmenes físicos, PV, que lo forman.
vgextend
vgscan vgs vgdisplay
vgreduce vgremove [root@mv1]# vgextend nombre_grupo /dev/sdd1 /dev/sde Extiende o incrementa el número de volúmenes físicos, PV, que forman parte del grupo lógico indicado. Esto se traduce en un aumento del tamaño disponible en el grupo, lo que nos permitirá a posteriori asignar más espacio físico a los volúmenes lógicos, LV, que se han formado a partir de ese grupo lógico, VG. [root@mv1]# vgscan | vgs | vgdisplay Cualquiera de estos tres comandos nos listan, con mayor o menor detalle, los grupos de volúmenes lógicos, VG, que ya han sido creados. [root@mv1]# vgreduce nombre_grupo /dev/sde [root@mv1]# vgextend nombre_grupo Nos permiten reducir y eliminar un grupo de volúmenes lógicos.
lvcreate [root@mv1]# lvcreate nombre_grupo -n nombre_volumen --size tamaño [root@mv1]# lvcreate grupo1 -n informes --size 10G [root@mv1]# lvcreate grupo1 -n informes --extents 50%VG [root@mv1]# lvcreate grupo1 -n informes -l 50%VG [root@mv1]# lvcreate grupo1 -n informes --extents 70%FREE [root@mv1]# lvcreate grupo1 -n informes -l 70%FREE Crea un nuevo volumen lógico dentro del grupo de volúmenes indicado, del tamaño que especifiquemos, --size. Además, tal como se muestra en los ejemplos, podemos indicar en lugar de un tamaño concreto, un porcentaje del tamaño total del grupo de volúmenes, o un porcentaje respecto a la cantidad de espacio libre que queda en el grupo de volúmenes (opción --extents o -l).
lvscan lvs lvdisplay
[root@mv1]# lvscan | lvs | lvdisplay Cualquiera de estos tres comandos nos listan, con mayor o menor detalle, los grupos de volúmenes lógicos, VG, que ya han sido creados. lvextend [root@mv1]# lvextend /dev/nombre_grupo/nombre_volumen --size tamaño [root@mv1]# lvextend /dev/nombre_grupo/nombre_volumen --size 20G
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 184
Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo
lvreduce lvremove [root@mv1]# lvextend /dev/nombre_grupo/nombre_volumen --extents 8%FREE Nos permite agrandar el tamaño de un volumen lógico sin necesidad de su desmontaje previo. Antes de agrandarlo deberemos comprobar que disponemos de suficiente espacio libre dentro del grupo de volúmenes al que pertenece. Tras el redimensionamiento será necesario reformatearlo mediante resize2fs, es decir, extenderemos el sistema de archivos sobre la parte del volumen extendida. [root@mv1]# lvextend /dev/nombre_grupo/nombre_volumen --size 20G [root@mv1]# resize2fs /dev/nombre_grupo/nombre_volumen [root@mv1]# lvreduce /dev/nombre_grupo/nombre_volumen --size tamaño [root@mv1]# lvremove -f /dev/nombre_grupo/nombre_volumen Nos permiten reducir y eliminar un volumen lógico. En el caso de querer reducir el tamaño de un volumen lógico es conveniente desmontarlo antes mediante umount, chequear el sistema de archivos mediante e2fsck y ajustar el sistema de archivos al nuevo tamaño del volumen mediante "resize2fs nombre_volumen nuevo_tamaño". [root@mv1]# umount /dev/nombre_grupo/nombre_volumen [root@mv1]# e2fsck -f /dev/nombre_grupo/nombre_volumen [root@mv1]# resize2fs /dev/nombre_grupo/nombre_volumen nuevo_tamaño
Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 185