Guía del usuario de Linux para la gestión de volúmenes lógicos
La gestión del espacio en disco siempre ha sido una tarea importante para los administradores de sistemas. Quedarse sin espacio en el disco solía ser el comienzo de una larga y compleja serie de tareas para aumentar el espacio disponible en una partición del disco. También era necesario desconectar el sistema. Esto normalmente implicaba instalar un nuevo disco duro, arrancar en modo de recuperación o de usuario único, crear una partición y un sistema de archivos en el nuevo disco duro, utilizar puntos de montaje temporales para mover los datos del sistema de archivos demasiado pequeño al nuevo, más grande, cambiar el contenido del archivo /etc/fstab para reflejar el nombre correcto del dispositivo para la nueva partición, y reiniciar para volver a montar el nuevo sistema de archivos en el punto de montaje correcto.
Tengo que decir que, cuando LVM (Logical Volume Manager) hizo su primera aparición en Fedora Linux, me resistí bastante a ello. Mi reacción inicial fue que no necesitaba esta capa adicional de abstracción entre los discos duros y yo. Resulta que estaba equivocado, y que la gestión de volúmenes lógicos es muy útil.
LVM permite una gestión muy flexible del espacio en disco. Ofrece características como la posibilidad de añadir espacio en disco a un volumen lógico y a su sistema de archivos mientras ese sistema de archivos está montado y activo, y permite reunir varios discos duros físicos y particiones en un único grupo de volúmenes que luego puede dividirse en volúmenes lógicos.
El gestor de volúmenes también permite reducir la cantidad de espacio en disco asignada a un volumen lógico, pero hay un par de requisitos. En primer lugar, el volumen debe estar desmontado. En segundo lugar, el propio sistema de archivos debe reducirse en tamaño antes de poder reducir el volumen en el que reside.
Es importante tener en cuenta que el propio sistema de archivos debe permitir el cambio de tamaño para que esta característica funcione. Los sistemas de archivos EXT2, 3 y 4 permiten tanto el redimensionamiento offline (desmontado) como online (montado) cuando se aumenta el tamaño de un sistema de archivos, y el redimensionamiento offline cuando se reduce el tamaño. Deberías comprobar los detalles de los sistemas de archivos que pretendes utilizar para verificar si pueden ser redimensionados en absoluto y, especialmente, si pueden ser redimensionados mientras están online.
Ampliando un sistema de archivos sobre la marcha
Siempre me gusta ejecutar nuevas distribuciones en una máquina virtual VirtualBox durante unos días o semanas para asegurarme de que no me encontraré con ningún problema devastador cuando empiece a instalarlo en mis máquinas de producción. Una mañana, hace un par de años, empecé a instalar una versión recién lanzada de Fedora en una máquina virtual en mi estación de trabajo principal. Pensé que tenía suficiente espacio en disco asignado al sistema de archivos del host en el que se estaba instalando la máquina virtual. No es así. Alrededor de un tercio de la instalación me quedé sin espacio en ese sistema de archivos. Afortunadamente, VirtualBox detectó la condición de falta de espacio y pausó la máquina virtual, e incluso mostró un mensaje de error indicando la causa exacta del problema.
Nótese que este problema no se debía a que el disco virtual fuera demasiado pequeño, sino que era el volumen lógico del ordenador anfitrión el que se estaba quedando sin espacio, de modo que el disco virtual perteneciente a la máquina virtual no tenía espacio suficiente para expandirse en el volumen lógico del anfitrión.
Dado que la mayoría de las distribuciones modernas utilizan la gestión de volúmenes lógicos por defecto, y que yo tenía algo de espacio libre disponible en el grupo de volúmenes, pude asignar espacio de disco adicional al volumen lógico apropiado y luego expandir el sistema de archivos del host sobre la marcha. Esto significa que no tuve que reformatear todo el disco duro y reinstalar el sistema operativo o incluso reiniciar. Simplemente asigné parte del espacio disponible al volumen lógico apropiado y redimensioné el sistema de archivos, todo ello mientras el sistema de archivos estaba en línea y el programa en ejecución, la máquina virtual, seguía utilizando el sistema de archivos del host. Después de redimensionar el volumen lógico y el sistema de archivos reanudé la ejecución de la máquina virtual y la instalación continuó como si no hubiera ocurrido ningún problema.
Aunque es posible que nunca le haya ocurrido este tipo de problema, quedarse sin espacio en el disco mientras se ejecuta un programa crítico le ha ocurrido a mucha gente. Y aunque muchos programas, especialmente los de Windows, no están tan bien escritos ni son tan resistentes como VirtualBox, la Gestión de Volúmenes Lógicos de Linux hizo posible la recuperación sin perder ningún dato y sin tener que reiniciar la instalación que tanto tiempo había costado.
Estructura de LVM
La estructura de un entorno de disco de la Gestión de Volúmenes Lógicos se ilustra en la Figura 1, a continuación. Logical Volume Management permite combinar varios discos duros individuales y/o particiones de disco en un único grupo de volúmenes (VG). Ese grupo de volúmenes puede entonces subdividirse en volúmenes lógicos (LV) o utilizarse como un único gran volumen. A continuación, se pueden crear sistemas de archivos regulares, como EXT3 o EXT4, en un volumen lógico.
En la Figura 1, se han combinado dos discos duros físicos completos y una partición de un tercer disco duro en un único grupo de volúmenes. Se han creado dos volúmenes lógicos a partir del espacio del grupo de volúmenes, y se ha creado un sistema de archivos, como un sistema de archivos EXT3 o EXT4, en cada uno de los dos volúmenes lógicos.
Figura 1: LVM permite combinar particiones y discos duros enteros en Grupos de Volumen.
Añadir espacio en disco a un host es bastante sencillo pero, según mi experiencia, se hace con relativa poca frecuencia. Los pasos básicos necesarios se enumeran a continuación. Puede crear un grupo de volúmenes completamente nuevo o puede añadir el nuevo espacio a un grupo de volúmenes existente y ampliar un volumen lógico existente o crear uno nuevo.
Añadir un nuevo volumen lógico
Hay ocasiones en las que es necesario añadir un nuevo volumen lógico a un host. Por ejemplo, tras comprobar que el directorio que contenía los discos virtuales de mis máquinas virtuales de VirtualBox estaba llenando el sistema de archivos /home, decidí crear un nuevo volumen lógico en el que almacenar los datos de las máquinas virtuales, incluidos los discos virtuales. Esto liberaría una gran cantidad de espacio en mi sistema de archivos /home y también me permitiría gestionar el espacio de disco para las máquinas virtuales de forma independiente.
Los pasos básicos para añadir un nuevo volumen lógico son los siguientes.
- Si es necesario, instale un nuevo disco duro.
- Opcional: Cree una partición en el disco duro.
- Cree un volumen físico (PV) del disco duro completo o una partición en el disco duro.
- Asigne el nuevo volumen físico a un grupo de volumen (VG) existente o cree un nuevo grupo de volumen.
- Crear un nuevo volumen lógico (LV) a partir del espacio del grupo de volúmenes.
- Crear un sistema de archivos en el nuevo volumen lógico.
- Añadir las entradas adecuadas en /etc/fstab para montar el sistema de archivos.
- Montar el sistema de archivos.
- Si es necesario, instale un nuevo disco duro.
- Opcional: Cree una partición en el disco duro.
- Cree un volumen físico (PV) del disco duro completo o una partición en el disco duro.
- Asigne el nuevo volumen físico a un grupo de volumen (VG) existente o cree un nuevo grupo de volumen.
- Cree uno o más volúmenes lógicos (LV) a partir del espacio del grupo de volúmenes, o amplíe un volumen lógico existente con parte o todo el espacio nuevo del grupo de volúmenes.
- Si ha creado un nuevo volumen lógico, cree un sistema de archivos en él. Si añade espacio a un volumen lógico existente, utilice el comando resize2fs para ampliar el sistema de archivos y llenar el espacio del volumen lógico.
- Añada las entradas apropiadas a /etc/fstab para montar el sistema de archivos.
- Monte el sistema de archivos.
- Ejemplo
Este ejemplo describe cómo cambiar el tamaño de un volumen lógico existente en un entorno LVM utilizando la CLI. Añade unos 50 GB de espacio al sistema de archivos /Stuff. Este procedimiento se puede utilizar en un sistema de archivos montado y activo sólo con el Kernel Linux 2.6 (y superior) y los sistemas de archivos EXT3 y EXT4. No recomiendo hacerlo en ningún sistema crítico, pero se puede hacer y yo lo he hecho muchas veces; incluso en el sistema de archivos raíz (/). Use su juicio.
AVISO: Sólo los sistemas de archivos EXT3 y EXT4 pueden ser redimensionados sobre la marcha en un sistema de archivos montado y en funcionamiento. Muchos otros sistemas de archivos, incluyendo BTRFS y ZFS, no pueden ser redimensionados.
Instalar el disco duro
Si no hay suficiente espacio en el(los) disco(s) duro(s) existente(s) en el sistema para añadir la cantidad de espacio deseada, puede ser necesario añadir un nuevo disco duro y crear el espacio para añadirlo al Volumen Lógico. Primero, instale el disco duro físico y luego realice los siguientes pasos.
Crear un Volumen Físico desde el disco duro
Primero es necesario crear un nuevo Volumen Físico (PV). Utilice el siguiente comando, que asume que el nuevo disco duro está asignado como /dev/hdd.
pvcreate /dev/hdd
No es necesario crear una partición de ningún tipo en el nuevo disco duro. Esta creación del Volumen Físico que será reconocido por el Gestor de Volúmenes Lógicos se puede realizar en un disco raw recién instalado o en una partición Linux de tipo 83. Si se va a utilizar todo el disco duro, la creación de una partición primero no ofrece ninguna ventaja particular y utiliza el espacio del disco para los metadatos que de otra manera podrían ser utilizados como parte del PV.
Agregar PV a un Grupo de Volumen existente
Para este ejemplo, utilizaremos el nuevo PV para extender un Grupo de Volumen existente. Después de crear el Volumen Físico, extiende el Grupo de Volumen (VG) existente para incluir el espacio en el nuevo PV. En este ejemplo, el Grupo de Volumen existente se llama MyVG01.
vgextend /dev/MyVG01 /dev/hdd
Extender el Volumen Lógico
Extender el Volumen Lógico (LV) desde el espacio libre existente dentro del Grupo de Volumen. El comando que se muestra a continuación amplía el VL en 50 GB. El nombre del Grupo de Volumen es MyVG01 y el Nombre del Volumen Lógico es Stuff.
lvextend -L +50G /dev/MyVG01/Stuff
Expandir el sistema de archivos
Extender el Volumen Lógico también expandirá el sistema de archivos si utilizas la opción -r. Si no utilizas la opción -r, esa tarea debe realizarse por separado. El comando que se muestra a continuación redimensiona el sistema de archivos para que encaje en el nuevo Volumen Lógico redimensionado.
resize2fs /dev/MyVG01/Stuff
Deberías comprobar que el redimensionamiento se ha realizado correctamente. Puede utilizar los comandos df, lvs y vgs para hacerlo.
Consejos
A lo largo de los años he aprendido algunas cosas que pueden hacer que la gestión de volúmenes lógicos sea aún más fácil de lo que ya es. Espero que estos consejos puedan ser de algún valor para usted.
- Utilice los sistemas de archivos extendidos a menos que tenga una razón clara para utilizar otro sistema de archivos. No todos los sistemas de archivos soportan el redimensionamiento, pero EXT2, 3 y 4 lo hacen. Los sistemas de archivos EXT también son muy rápidos y eficientes. En cualquier caso, pueden ser ajustados por un administrador de sistemas con conocimientos para satisfacer las necesidades de la mayoría de los entornos si los parámetros de ajuste predeterminados no lo hacen.
- Utilice nombres significativos de volúmenes y grupos de volúmenes.
- Utilice etiquetas de sistemas de archivos EXT.
Sé que, como yo, muchos administradores de sistemas se han resistido al cambio a la gestión de volúmenes lógicos. Espero que este artículo les anime a probar al menos LVM. Yo me alegro mucho de haberlo hecho; mis tareas de gestión de discos son mucho más fáciles desde que hice el cambio.
Ahora los detalles. La siguiente secuencia está tomada de un ejemplo que utilicé como proyecto de laboratorio cuando enseñaba sobre los sistemas de archivos de Linux.
Ejemplo
Este ejemplo muestra cómo utilizar la CLI para ampliar un grupo de volúmenes existente para añadirle más espacio, crear un nuevo volumen lógico en ese espacio y crear un sistema de archivos en el volumen lógico. Este procedimiento se puede realizar en un sistema de archivos montado y en ejecución.
Atención: sólo los sistemas de archivos EXT3 y EXT4 pueden redimensionarse sobre la marcha en un sistema de archivos montado y en ejecución. Muchos otros sistemas de archivos, incluyendo BTRFS y ZFS, no pueden ser redimensionados.
Instalar disco duro
Si no hay suficiente espacio en el grupo de volúmenes en el(los) disco(s) duro(s) existente(s) en el sistema para añadir la cantidad de espacio deseada, puede ser necesario añadir un nuevo disco duro y crear el espacio para añadirlo al Volumen Lógico. En primer lugar, instale el disco duro físico y, a continuación, realice los siguientes pasos.
Crear volumen físico desde el disco duro
En primer lugar, es necesario crear un nuevo volumen físico (PV). Utiliza el siguiente comando, que supone que el nuevo disco duro está asignado como /dev/hdd.
pvcreate /dev/hdd
No es necesario crear ningún tipo de partición en el nuevo disco duro. Esta creación del Volumen Físico que será reconocido por el Gestor de Volúmenes Lógicos se puede realizar en un disco raw recién instalado o en una partición Linux de tipo 83. Si vas a utilizar todo el disco duro, crear una partición primero no ofrece ninguna ventaja particular y utiliza espacio de disco para metadatos que de otra manera podrían ser utilizados como parte del PV.
Ampliar el Grupo de Volumen existente
En este ejemplo vamos a ampliar un grupo de volumen existente en lugar de crear uno nuevo; puedes elegir hacerlo de cualquier manera. Después de crear el Volumen Físico, extiende el Grupo de Volumen (VG) existente para incluir el espacio en el nuevo PV. En este ejemplo, el Grupo de Volumen existente se llama MyVG01.
vgextend /dev/MyVG01 /dev/hdd
Crear el Volumen Lógico
Primero crea el Volumen Lógico (LV) a partir del espacio libre existente dentro del Grupo de Volumen. El siguiente comando crea un LV con un tamaño de 50GB. El nombre del Grupo de Volumen es MyVG01 y el Nombre del Volumen Lógico es Stuff.
lvcreate -L +50G --name Stuff MyVG01
Crear el sistema de archivos
Crear el Volumen Lógico no crea el sistema de archivos. Esa tarea debe realizarse por separado. El siguiente comando crea un sistema de archivos EXT4 que se ajusta al Volumen Lógico recién creado.
mkfs -t ext4 /dev/MyVG01/Stuff
Añadir una etiqueta de sistema de archivos
Añadir una etiqueta de sistema de archivos facilita la identificación del sistema de archivos más adelante en caso de un fallo u otros problemas relacionados con el disco.
e2label /dev/MyVG01/Stuff Stuff
Montar el sistema de archivos
En este punto puede crear un punto de montaje, añadir una entrada apropiada al archivo /etc/fstab y montar el sistema de archivos.
También debe comprobar que el volumen se ha creado correctamente. Puede utilizar los comandos df, lvs y vgs para hacerlo.
Redimensionar un volumen lógico en un sistema de archivos LVM
La necesidad de redimensionar un sistema de archivos ha existido desde el principio de las primeras versiones de Unix y no ha desaparecido con Linux. Sin embargo, se ha vuelto más fácil con la gestión de volúmenes lógicos.