Logical Volume Manager o LVM en GNU/Linux
By: Date: diciembre 21, 2011 Categories: Consultoria y Manuales

LVM en GNU/Linux o simplemente volúmenes son una opción interesante a la hora de administrar servidores de almacenamiento, sin embargo también pueden ser mal usados especialmente por novatos en el sistema operativo que no ponen en balanza el propósito del servidor y no entienden el costo beneficio de su uso.

Lo primero que hay que sabe es que un LVM se comporta como un arreglo de discos RAID-0 y por lo tanto aunque puede hacerse un arreglo de discos no soportan un efectivo método de tolerancia a fallos, si uno de los discos que conforman el grupo de volúmenes falla, entonces falla todo, por lo que los volúmenes deben ser usados sobre controladoras físicas de arreglos, como RAID 1 o RAID 5

Los volúmenes son sistemas lógicos, no físicos son una capa de abstracción de los discos duros y como toda capa de abstracción esta siempre será mas lenta que la capa mas baja y es aquí donde inicia la decisión de usar un LVM o una partición.

PROS de los LVM

Son de almacenamiento dinámico, si no sabes como particionar en espacios correctos tu servidor te salvaran el cuello pues , puedes “reparticionar” o lo que seria igual a cambiar los tamaños de partición dinámicamente y en caliente, una partición por otro lado de forma nativa no puede crecer o hacermese mas pequeña requieres de programas como el Partition Magic en Windows para hacerlo.

Contras de los LVM

Los LVM son una capa sobre los discos duros, son más lentos que una partición y si es un servidor pequeño con un solo disco duro no tiene sentido usarlo, ya que mermaras el rendimiento para lee o escribir en el disco, la fragmentación de las particiones, ya es malo que un archivo se fragmente, pero todo un sistema de archivo fragmentado eso es terrible.

Un administrador de servidores o un usuario experto en Linux no usara LVM en servidores pequeños, mas si ya conoce el propósito de este y sabe que tamaños de particiones usara y sabe que serán suficientes, por otro lado los novatos que no saben cómo tomar esas decisiones usaran LVM aunque solo sea un disco duro con tal de poder reparticionar en vivo aunque le cueste rendimiento de acceso a la información, peor tal vez ni sepa para que sirve un volumen o lo use como opción default al instalar y mucho menos sepa que eso le mermara la velocidad de acceso a su disco duro.

Ahora no digo con eso que nunca hay que usar LVM, pero al menos en servidores pequeños no tiene sentido, cuando los costos son mas que los beneficios simplemente no debe implementarse, pero hay casos en los que los beneficios superan al costo como clústeres de almacenamiento, la cosa cambia radicalmente, los volúmenes o LVM pueden hacer magia en casos asi, pero son casos muy especializados fuera de eso un LVM tiene que pensarse antes de ser implementado.

Una explicación rápida de que es un LVM

Un LVM toma un disco (no tiene sentido en un solo disco) o discos y todos ellos los unifica como si fuera un arreglo RAID-0. Sobre todos los discos se crea un sistema de archivos del LVM que se llama grupo de volumenes, el cual se comporta como una partición extendida estándar, la cual contendrá los volúmenes lógicos o lo que equivale a particiones lógicas dentro de la partición extendida y hasta ahí termina la similitud, por que las particiones lógicas finalmente son rígidas, no cambian sus tamaños si no es con software adicional y es algo para lo que no fueron diseñadas.
Los volúmenes lógicos se mueven dentro de grupo de volúmenes lógicos como si fueran archivos, por eso pueden crecer o encogerse incluso fragmentarse, nunca sabes en que disco duro estará un pedazo del volumen ni en cuantos fragmentos puede estar, los volúmenes lógicos son los que contienen los sistemas de archivos, dentro de un volumen lógico puede existir un EXT2, EXT3, EXT4 , NTFS, JFS en fin cualquier sistema de archivo, el cual no sabe que está en un volumen lógico por lo que para el sistema operativo esto es transparente y solo si el sistema de archivo nativamente tiene la capacidad de crecer o empequeñecer podrá sacarle jugo al volumen que puede crecer o empequeñecer a voluntad.

El uso que un novato le daría seria calcular mal el espacio de SWAP , el espacio de /usr o /tmp, las particiones al ser rígidas no le permitirían arreglar su error sin reparticionar o agregar un disco duro adicional para parchar el mal calculo, un LVM por otro lado podria hacer mas pequeño al /tmp y el espacio ganado de /tmp se le puede asignar a /usr

Todos estos volúmenes son controlados por software por lo que al escribir en ellos, al ser abstraídos del disco duro físico y que el volumen puede estar fragmentado en muchos pedazos en diferentes discos duros, cuando escribes un archivo, los volúmenes deben encontrar a su tiempo donde escribir la información físicamente en los discos y lo mismo al recuperarla.

Como ya imaginas, si uno de los discos falla y ese disco contenía un fragmento de tu volumen entonces ya estás en un grave problema, por lo que además los volúmenes siempre deben usarse sobre soluciones de tolerancia a fallos como RAID – 1 o RAID – 5 lo ideal es que sea arreglos físicos con controladoras en el servidor, aunque GNU/Linux puede por software crear arreglos de discos RAID 1 y 5, ya estamos agregando otra capa de abstracción mas, así que el acceso a la información puede volverse realmente lenta si se hace todo por software cuando el sistema operativo tiene demasiadas operaciones de lectura y escritura como tener maquinas virtuales, archivos compartidos en red, cache de proxy como el squid, simplemente es mala idea tener un volumen sobre un raid por software, no lo hagas.

Ahora si realmente justificas usar un volumen que es lo que debes hacer.

Debes usar el disco duro completo para crear los volúmenes, los mas novatos crean los volúmenes por las partciones , lo cual merma aun mas la velocidad de acceso a la información si una partición del disco es estándar y otra pertenece a un volumen la estandart se convierte un verdadero lastre para el volumen, debes usar el total del disco duro sin particionar para los volúmenes, la mayoría no lo hace por que no sabe como limpiar en el disco la tabla de registro maestro o MBR que esta en los primeros 512 bytes del disco duro y para eliminarla es suficiente con usar el comando

dd if=/dev/zero of=/dev/discoduro count=1 bs=512

como crear sistema de volumenes basico con comandos.

Para realizar esto tenemos 2 discos duros

/dev/sdb y /dev/sdc

Paso 1 borrar la información del MBR y con eso se destruyen todo los rastros de particiones previas.
dd if=/dev/zero of=/dev/sdb count=1 bs=512
dd if=/dev/zero of=/dev/sdc count=1 bs=512

Paso 2 se inicializan los discos duros, el comando puede ser individual para cada disco o con el mismo inicializar todos los discos disponibles

pvcreate /dev/sdb /dev/sdc

paso 3 creando el sistema de archivo para los volúmenes y extendiéndolo sobre el disco o los discos duros que lo soportaran, a este paso se le llama crear grupo de volúmenes. Cuando el sistema de archivos de volumen o grupo de volúmenes se crea sobre más de un disco duro se comporta como un RAID – 0, el sistema de archivos tendrá la suma total de los espacios de los discos duros que se agrupen para el grupo de volúmenes y como todos sabemos un RAID – 0 no tiene tolerancia a fallos, si un disco del grupo falla, falla todo.

vgcreate /dev/sdb /dev/sdc grupodevolumenacrear

en el ejemplo usare grupodediscos

vgcreate /dev/sdb /dev/sdc grupodediscos

Paso 3 crear los volúmenes que contendrán los sistemas de archive para el sistema operativo

lvcreate –L #GB –n nombredelvolumen grupodelvolumenaasignar

en el ejemplo el volumen se llamara vol1 y # es la cantidad de Gigabytes que se le asignaran al volumen como espacio inicial aunque este puede cambiar en el futuro

lvcreate –L 3GB –n vol1 grupodediscos

paso 4 ya con el volumen “vol1” se le dara formato a “vol1” para este ejemplo usare ext3, los volúmenes se crean dentro de /dev/ seguido del nombre de grupo de volúmenes y seguido finalmente por el nombre del volumen creado en este caso la ruta quedaría /dev/grupodediscos/vol1
mkfs.ext3 /dev/grupodediscos/vol1

Paso 5 usar el volumen, ya se puede montar, desmontar como si el volumen fuera una partición del sistema operativo

inicialmente creamos un volumen de 3GB, si después creamos un volumen de 2GB este se crea junto al volumen inicial, si le incrementamos el espacio de almacenamiento a vol1, no tendrá espacio consecutivo para crecer, así que tendrá que rodear al siguiente volumen para crecer, con esto causamos una fragmentación de volumen, al ser una capa de abstracción no le importa al sistema operativo, pero cuando esto llega a términos de acceso a nivel físico obviamente sabemos que al fragmentarse tardara mas en escribir o recuperar información.

En el siguiente video se deja el ejemplo demostrativo de cómo crear un volumen básico y se hacen movimientos de incremento y decremento de los volúmenes

One thought on “Logical Volume Manager o LVM en GNU/Linux

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *