9
Linux Journal - LVM desmitificado He sido un administrador de sistemas durante bastante tiempo, y parte de ello es hacer más de lo que es humanamente posible. A veces eso significa escribir scripts geniales, a veces significa trabajar hasta tarde, y a veces significa aprender a decir no. Por desgracia, a veces también significa tomar atajos. Lo confieso, he sido “ese tipo” más de una vez. Un buen ejemplo es SELinux. En más de una ocasión (¡cientos!), simplemente he desactivado SELinux, ya que hacer las cosas bien es a menudo bastante frustrante y un desperdicio de tiempo. Lo mismo ocurre con LVM (Administrador de volúmenes lógicos). No lo entendí. Pensé que añadiría una capa de complejidad innecesaria. Pensé que significaba otro posible punto de falla. Pensé que era estúpido. Me equivoqué. LVM es un increíblemente flexible, irrisoriamente útil y no es terriblemente complicado de usar. Hace la vida más fácil. Hace simples las futuras migraciones y actualizaciones de almacenamiento. Sencillamente, me encanta. Así que en este artículo, cubro los conceptos y el uso de LVM. Para cuando termine, ¡ espero que os guste tanto como a mí !. Que es LVM La mejor analogía que puedo traer a colación para explicar LVM es un SAN. Si alguna vez has usado una SAN (Storage Area Network) en tu entorno de servidor, sabes abstraer la idea de unidades de disco duros individuales y permitirte tallar "pedazos" de espacio para utilizar como unidades. En lugar de preocuparte como de grandes pueden ser tus discos duros, un SAN te permite echar todos tus discos duros en un chasis grande y luego asignar espacio para clientes individuales sin preocuparte sobre cuantas unidades físicas se estan usando. LVM es más o menos así, pero para un sistema individual en lugar de toda una red. La figura 1 muestra mi deficiente tentativa de dibujar el concepto de un sistema LVM. A primera vista, podría parecer que usar LVM es una tontería. ¿Por qué combino un puñado de discos juntos, sólo para dividirlos en unidades virtuales?. Afortunadamente, ese simple concepto le da una increíble flexibilidad más adelante. ¿Necesitas una gran partición, pero tienes sólo un puñado de discos más pequeños?. Sin problemas. ¿Tienes sólo una por de discos ahora, pero quieres añadir más posteriormente sin formatear?. Sin problemas. ¿Necesitas

Linux Journal LVM Desmitificado

Embed Size (px)

DESCRIPTION

He sido un administrador de sistemas durante bastante tiempo, y parte de ello es hacer más de lo que es humanamente posible. A veces eso significa escribir scripts geniales, a veces significa trabajar hasta tarde, y a veces significa aprender a decir no. Por desgracia, a veces también significa tomar atajos. Lo confieso, he sido “ese tipo” más de una vez. Un buen ejemplo es SELinux. En más de una ocasión (¡cientos!), simplemente he desactivado SELinux, ya que hacer las cosas bien es a menudo bastante frustrante y un desperdicio de tiempo. Lo mismo ocurre con LVM (Administrador de volúmenes lógicos). No lo entendí. Pensé que añadiría una capa de complejidad innecesaria. Pensé que significaba otro posible punto de falla. Pensé que era estúpido.Me equivoqué.LVM es un increíblemente flexible, irrisoriamente útil y no es terriblemente complicado de usar. Hace la vida más fácil. Hace simples las futuras migraciones y actualizaciones de almacenamiento. Sencillamente, me encanta. Así que en este artículo, cubro los conceptos y el uso de LVM. Para cuando termine, ¡ espero que os guste tanto como a mí !.

Citation preview

Page 1: Linux Journal LVM Desmitificado

Linux Journal - LVM desmitificado

He sido un administrador de sistemas durante bastante tiempo, y parte de ello es hacer más de lo que es humanamente posible. A veces eso significa escribir scripts geniales, a veces significa trabajar hasta tarde, y a veces significa aprender a decir no. Por desgracia, a veces también significa tomar atajos. Lo confieso, he sido “ese tipo” más de una vez. Un buen ejemplo es SELinux. En más de una ocasión (¡cientos!), simplemente he desactivado SELinux, ya que hacer las cosas bien es a menudo bastante frustrante y un desperdicio de tiempo. Lo mismo ocurre con LVM (Administrador de volúmenes lógicos). No lo entendí. Pensé que añadiría una capa de complejidad innecesaria. Pensé que significaba otro posible punto de falla. Pensé que era estúpido.

Me equivoqué.

LVM es un increíblemente flexible, irrisoriamente útil y no es terriblemente complicado de usar. Hace la vida más fácil. Hace simples las futuras migraciones y actualizaciones de almacenamiento. Sencillamente, me encanta. Así que en este artículo, cubro los conceptos y el uso de LVM. Para cuando termine, ¡ espero que os guste tanto como a mí !.

Que es LVM

La mejor analogía que puedo traer a colación para explicar LVM es un SAN. Si alguna vez has usado una SAN (Storage Area Network) en tu entorno de servidor, sabes abstraer la idea de unidades de disco duros individuales y permitirte tallar "pedazos" de espacio para utilizar como unidades. En lugar de preocuparte como de grandes pueden ser tus discos duros, un SAN te permite echar todos tus discos duros en un chasis grande y luego asignar espacio para clientes individuales sin preocuparte sobre cuantas unidades físicas se estan usando. LVM es más o menos así, pero para un sistema individual en lugar de toda una red.

La figura 1 muestra mi deficiente tentativa de dibujar el concepto de un sistema LVM. A primera vista, podría parecer que usar LVM es una tontería. ¿Por qué combino un puñado de discos juntos, sólo para dividirlos en unidades virtuales?. Afortunadamente, ese simple concepto le da una increíble flexibilidad más adelante. ¿Necesitas una gran partición, pero tienes sólo un puñado de discos más pequeños?. Sin problemas. ¿Tienes sólo una por de discos ahora, pero quieres añadir más posteriormente sin formatear?. Sin problemas. ¿Necesitas tomar instantáneas, como con los servidores virtuales, pero estás usando un hypervisor real (bare metal)?. Sin problemas. LVM trata con el almacenamiento mucho mejor que las particiones de disco o el uso de una simple configuración RAID (que, dicho sea de paso, me lleva al próximo tema).

Page 2: Linux Journal LVM Desmitificado

Figura 1

Que no es LVM

Con toda la flexibilidad y capacidad de ampliación que mencioné en el párrafo anterior, parece que LVM sería un reemplazo perfecto para RAID basado en hardware, o software. Después de todo, una de las grandes ventajas de RAID es que varias unidades de disco más pequeñas se pueden usar como una unidad más grande y única. Para esa característica en particular, LVM es realmente ideal. Desafortunadamente, sin embargo, LVM no proporciona opciones para redundancia o paridad. Eso significa que si tenemos una unidad de disco defectuosa con LVM, perdemos los datos. No existen cosas como LVM con bandas (striped LVM) o LVM con replicación (mirrored LVM); simplemente no se diseñó para eso.

LVM tampoco se diseño para aumentar la velocidad de las escrituras y lecturas mediante striping (bandas) a través de múltiples discos. Cuando los dispositivos de bloques en el grupo de volúmenes se llenan, dichas lecturas/escrituras simultáneas se pueden dar, pero no es por el diseño y, por supuesto, no es para ganar velocidad. Con suerte, esta claro: LVM es realmente genial, pero no es de ninguna manera un sustituto para RAID. Afortunadamente, no lo necesita ser.

(Nota: las versiones recientes de LVM de hecho proporcionan características de “mirroring” y striping. En algunos casos, puede ocupar el lugar de RAID absolutamente. Sigo pensando que entenderlos como conceptos separados es importante. Si quieres aprender más sobre LVM y utilizar las funciones RAID, dejaré eso como un ejercicio para vosotros.)

Volumen lógico

Grupo de volúmenesVolúmenes físicos

5 GB30 GB

10 GB

10 GB

10 GB

Page 3: Linux Journal LVM Desmitificado

Dos guisantes en una vaina

Si observan en la primera "etapa" de mi dibujo (Figura 1), advertiran que no llamé "unidades" a los trozos de 10GB, los llamé volúmenes físicos. Eso es debido a que aunque es sin duda posible utilizar una unidad física como un volumen físico en LVM, no es un requisito. De hecho, no es incluso el escenario más común. En la mayoría de los entornos de producción, LVM se utiliza en combinación con RAID. Ya sea RAID basado en hardware o RAID basado en software, tener los volúmenes físicos subyacentes que existan como dispositivos RAID es ideal.

Como alguien que ha tenido problemas con matrices RAID basadas en hardware, soy propenso a inclinarme hacia el RAID basado en software en mis sistemas. Eso es con seguridad un asunto de preferencia personal, pero es bueno saber que, ya que RAID basado en software RAID y LVM funcionan a nivel del kernel, ambos son extremadamente eficientes. Hay que reconocer que RAID basado en software utiliza algo de CPU, especialmente al reconstruir las matrices, pero LVM usa muy poco. Si el rendimiento de Entrada/Salida es de suma importancia para nuestros fines, vale la pena hacer algunas investigaciones y probablemente pruebas antes de comprometerse con cualquier solución.

Primeros pasos

Aunque es realmente posible pasar a un sistema de LVM después de que Linux ya esté instalado, es mucho más preferible hacerlo durante la instalación inicial. La mayoría de las distribuciones permiten que la configuración de LVM tenga lugar durante el proceso de instalación, y en el caso de CentOS y RHEL, LVM se utiliza de forma predeterminada. Incluso si sólo instalamos sobre un simple disco duro sin RAID, la configuración de LVM nos permite la flexibilidad y oportunidad de expansión posterior. Al diablo, es posible añadir RAID a un servidor más adelante, luego simplemente migramos los datos desde su volumen físico original al volumen físico RAID. Eso es mucho más fácil que usar el comando “dd”, ¡ especialmente cuando nos gustaría mantener nuestro servidor en ejecución !.

Debido a que esto es una introducción, dejenme comenzar con una simple instalación. Digamos que tenemos dos discos duros, “/dev/sdb” y “/dev/sdc”. Con LVM, cualquier dispositivo de bloques se puede usar como un volumen físico (PV), lo cual significa que podemos utilizar tanto particiones como unidades de disco completas. Si necesitamos tener una partición "tradicional" (en algunos casos, la partición “/boot” puede necesitar estar en un dispositivo común sin LVM), nos asegúramos de particionar el disco antes de añadir los volúmenes físicos a su grupo de volúmenes. En este ejemplo, vamos a usar los mismos discos sin formatear.

Paso 1: Crear volúmenes físicos

Una vez que tenemos los dispositivos de bloque que deseamos agregar a nuestro grupo de volúmenes (de nuevo, nos referiremos a mi dibujo si los términos nos confunden), tenemos que establecerlos como volúmenes físicos LVM. Para ello, utilizamos el comando “pvcreate”:

pvcreate /dev/sdb

pvcreate /dev/sdc

Estos comandos configuran las unidades como candidatos potenciales para ser añadidos a un grupo de volúmenes. Si queremos asegurarnos de que funcione correctamente, podemos escribir “pvdisplay” o “pvscan” para mostrar el estado de cualquier volumen físico LVM existente:

Page 4: Linux Journal LVM Desmitificado

$ sudo pvdisplay--- Physical volume ---PV Name /dev/sdbVG NamePV Size 10.4 GiB / not usable 3.00 MiBAllocatable yesPE Size 4.00 MiBTotal PE 4994Free PE 4994Allocated PE 0PV UUID SRKAXh-EpYr-r2td-g0gA-31RA-fnfz-3qqGrO

--- Physical volume ---PV Name /dev/sdcVG NamePV Size 10.4 GiB / not usable 3.00 MiBAllocatable yes PE Size 4.00 MiBTotal PE 4994Free PE 4994Allocated PE 0PV UUID t2cKru-IwMy-I8re-ADp2-vzFF-Tvh5-O4zMhI

Y, el más simple “pvscan”:

$ sudo pvscanPV /dev/sdb lvm2 [10.4 GiB]PV /dev/sdc lvm2 [10.4 GiB]Total: 2 [20.8 GiB] / in use: 0 [0 ] / in no VG: 2 [20.8 GiB]

Una vez creados el grupo de volúmenes y volúmenes lógicos, seguimos adelante y ejecutams estos comandos otra vez para ver cómo cambia la información. Las diferencias deben ser obvias y deben tener sentido.

Paso 2: el grupo de volúmenes

Actualmente no tenemos ningún grupo de volumen, de manera que crearemos uno utilizando los dos volúmenes físicos que acabamos de crear:

vgcreate my_volume_group /dev/sdb /dev/sdc

Esperemos que el comando esté claro. Hemos creado un grupo de volúmenes denominado “my_volume_group” utilizando los volúmenes físicos “/dev/sdb” y “/dev/sdc”. Como en el caso de los volúmenes físicos, si queremos comprobar el estado actual de los grupos de volúmenes LVM en nuestro sistema, escribimos “vgdisplay” para obtener un listado:

$ sudo vgdisplay

--- Volume group ---

VG Name my_volume_group

System ID

Page 5: Linux Journal LVM Desmitificado

Format lvm2

Metadata Areas 2

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 2

Act PV 2

VG Size 20.8 GiB

PE Size 4.00 MiB

Total PE 9988

Alloc PE / Size 0 / 0 GiB

Free PE / Size 9988 / 20.8 GiB

VG UUID oVYiY6-bQp9-4CVO-QgrN-LGgB-1umR-ebJQo4

Como podemos ver en la salida, hemos combinado el espacio disponible de los dos volúmenes físicos (10,4 GB cada uno) en un conjunto total de 20.8 GB. Podriamos añadir más unidades de disco al grupo de volúmenes o mezclar y combinar discos enteros con particiones de otras unidades. LVM es muy flexible. El conjunto o grupo de los datos disponibles no nos servirá, sin embargo, hasta que creemos los volúmenes lógicos que actuen como discos utilizables.

Paso 3: Volúmenes lógicos

Cuando agregamos un disco duro a nuestro sistema, realmente no podemos elegir su nombre. Obtenemos “/dev/sda”, “/dev/sdb” y así sucesivamente. Cuando creamos volúmenes lógicos, sin embargo, decidimos como queremos que se llamen los dispositivos. También podemos decidir el tamaño de cada “unidad” cuando la extraemos del grupo de volumen más grande. Hay que señalar que si hacemos nuestros volúmenes lógicos demasiado pequeños, será muy fácil ampliarlos posteriormente, por lo que no nos preocuparemos demasiado sobre una planificación de necesidades potenciales a largo plazo. Si necesitamos más espacio más adelante, solo podemos añadirlo. Para crear volúmenes lógicos, tecleamos:

$ sudo lvcreate -L 5G -n 5gig my_volume_group

Logical volume "5gig" created

Para ver lo que pasó detrás de la escena, escribimos:

$ sudo lvdisplay

--- Logical volume ---

Page 6: Linux Journal LVM Desmitificado

LV Path /dev/my_volume_group/5gig

LV Name 5gig

VG Name my_volume_group

LV UUID 3MxOB0-ce5o-yvBD-YORT-52qV-j8HJ-oDru2G

LV Write Access read/write

LV Status available

# open 0

LV Size 5.0 GiB

Current LE 5753

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 252:0

Observar qué agradable y limpio es el sistema de denominación de dispositivos con LVM. Es importante ejecutar el comando “lvdisplay”, sin embargo, para asegurarnos de que conocemos el nombre del dispositivo mapeado. Muchos sistemas usan enlaces simbólicos con el objeto de hacer más fácil de encontrar las ubicaciones virtuales de los dispositivos, pero pienso que agrega una capa de confusión para gente que trata de comprender lo que está pasando.

Mira, un nuevo disco duro (Virtual) !

Una vez que hemos creado con éxito nuestros volúmenes lógicos, es sólo cuestión de usarlos como dispositivos de bloque. Si necesitamos un sistema de archivos para montar como nuestro directorio “/home” directorio, solo hacemos esto:

$ sudo mkfs.ext4 /dev/my_volume_group/5gig$ sudo mount -t ext4 /dev/my_volume_group/5gig /home

Y, nuestro directorio “/home” será de un tamaño enorme de 5GB, pero totalmente ampliable, gracias a LVM. (Obviamente, si queremos montar nuestro volumen lógico como nuestro directorio de inicio, debemos agregar una entrada a “/etc/fstab” para que se monte en el arranque.) Desde el punto de vista de nuestro sistema Linux, sin embargo, “/dev/my_volume/5gig” es un dispositivo de bloque similar a cualquier unidad de disco duro que podamos conectar. Podemos utilizarlo como “swap”, formatearlo como lo hicimos anteriormente, o incluso cifrarlo y montarlo en algún punto como una partición encriptada.

Eso fue mucho trabajo, ¿por qué otra vez?

Lo sé, en este pequeño ejemplo, no hemos hecho nada más que crear un sistema de tipo JBOD (Just a Bunch Of Disks), que fallará totalmente si perdemos una sola unidad de disco. La potencia de LVM no se materializara completamente hasta que más adelante cuando queramos ampliar nuestros volúmenes lógicos sin necesidad de migrar datos. O, cuando queramos tomar una instantánea LVM de nuestro disco de forma que podamos retroceder a una copia de seguridad instantánea cuando falle una actualización. O, cuando reemplazemos

Page 7: Linux Journal LVM Desmitificado

una pequeña unidad de disco con una veloz matriz RAID y queramos migrar los datos tranquilamente a nuestro nuevo PV.

El administrador de volúmenes lógicos es un sistema que nos abstrae de los dispositivos de almacenamiento (capa de abstracción). Añade una capa de complejidad a nuestro sistema, no voy a mentir, pero la desventaja es significativa. Podemos complicar un poco más nuestro sistema, pero también simplifica bastante nuestro trabajo cuando tengamos que lidiar con el almacenamiento en el futuro.

Seguimos hablando sobre el futuro...

A estas alturas espero que veais que LVM no es una completa pérdida de tiempo. Cuando llegue el momento, ¿qué tipo de ventajas proporcionará LVM?. Aquí presento una lista rápida destacada propia que tal vez querais examinar:

● Mover los volúmenes lógicos desde PVs viejos y lentos a PVs nuevos y rápidos, sobre la marcha.

● Cambiar el tamaño de los volúmenes lógicos, cubriendo más espacio en el grupo de volúmenes.

● Distribuir datos en bandas (striped) a través de PVs en un VG para aumentar el rendimiento.

● Cambiar el tamaño de los grupos de volúmenes agregando o sustrayendo los volúmenes físicos.

● Tomar una instantánea de cualquier volumen lógico, que se pueda restaurar posteriormente.

Uno de mis usos favoritos de LVM en producción es tomar una instantánea LVM antes de una actualización. Si algo sale mal, sólo debo volver a la instantánea. Una vez que empezemos a pensar sobre todas las posibilidades que ofrece LVM, nos extrañaremos por qué esperamos tanto tiempo !.

FUENTES

Page 8: Linux Journal LVM Desmitificado

LVM, Demystified