martes, 25 de marzo de 2008

Lvm Centos HowTO



LVM es una implementación de un administrador de volumenes logicos para el kernel Linux. Se escribió originalmente en 1998 por Heinz Mauelshagen, que se basó en el administrador de volumenes de veritas usado en sistemas HP-UX .

LVM incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:

  • Redimensionado de grupos lógicos

  • Redimensionado de volúmenes lógicos

  • Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)

  • RAID0 de volúmenes lógicos

LVM no implementa RAID1 o RAID5 , por lo que se recomienda usar software específico de RAID para estas operaciones, teniendo las LV por encima del RAID

Ventajas de usar LVM en un sistema pequeño

  • Una de las decisiones que afronta un usuario instalando GNU/Linux es cómo particionar el disco duro. La necesidad de estimar cuanto espacio será necesario para el sistema, para los temporales o para los datos personales, puede convertirse en algo problemático, por lo que muchos usuarios optan por crear una partición que ocupe todo el disco y allí introducir los datos. Aún habiendo estimado correctamente cuanto espacio se necesita para /home, /usr, /tmp, o cualquier otro directorio importante, es bastante común que nos quedemos sin espacio en estas particiones, cuando tenemos espacio de sobra en alguna otra.

  • Con el uso de un administrador de volúmenes lógicos, el disco completo puede ser asignado a un único grupo lógico y definir distintos volúmenes lógicos para almacenar /home u otros directorios. En el caso que nos quedemos sin espacio, por ejemplo, en /home, y tenemos espacio en /opt, podríamos redimensionar /home y /opt y usar el espacio que le hemos quitado a /opt y añadírselo a /home. Hay que tener en cuenta, que para realizar esto, nuestro sistema de ficheros debe soportar el redimensionado por arriba y por abajo, como ReiserFS.

  • Otra alternativa sería dejar una cierta cantidad de espacio del disco sin asignar y cuando fuera necesario, expandir el volumen.

Ventajas de usar LVM en un sistema grande

  • Administrar un sistema con muchos discos es un trabajo que consume tiempo, y se hace particularmente complejo si el sistema contiene discos de distintos tamaños. Balancear los requerimientos de almacenamiento de distintos usuarios (a menudo conflictivos) puede ser una tarea muy laboriosa y compleja.

  • Los grupos de usuarios (llamémosles por ejemplo administración, desarrollo, etc...) pueden tener sus volúmenes lógicos y éstos pueden crecer lo que sea necesario, y el administrador puede realizar las operaciones oportunas sobre dichos volúmenes.

Cuando un nuevo disco se añade al sistema, no es necesario mover los datos de los usuarios. Simplemente se añade el nuevo disco al grupo lógico correspondiente y se expanden los volúmenes lógicos todo lo que se considere adecuado. También se pueden migrar los datos de discos antiguos a otros nuevos, de forma totalmente transparente al usuario.



Anatomía de un LVM

  • Un LVM se descompone en tres partes:

    • Volúmenes físicos (PV): son los discos duros, particiones o cualquier otra "cosa" que parezca un disco duro (raid's)

    • Volúmenes lógicos (LV): es el equivalente a una partición en un sistema tradicional. El LV es visible como un dispositivo estándar de bloques, por lo que puede contener un sistema de achivos (por ejemplo /home)

    • Grupos de volúmenes (VG): es la parte superior de la LVM. Es la "caja" en la que tenemos nuestros volúmenes lógicos (LV) y nuestros volúmenes físicos (PV). Se puede ver como una unidad administrativa en la que se engloban nuestros recursos. Hay que hacer notar que mientras un PV no se añada al VG, no podemos comenzar a usarlo.

  • A su vez, un PV se divide en chunks de datos, que se conocen como PE (physical extents), que son del mismo tamaño que los PE del VG. Además, un LV se divide también en LE (logical extents), cuyo tamaño es el mismo para todos los LV del VG.
    Por ejemplo, teniendo como referencia la imagen del comienzo del artículo, supongamos que tenemos un VG llamado CASA, con 4MB de PE, al que queremos añadir un LV para /tmp/. Añadimos dos particiones de disco, /dev/sda4 y /dev/sdb3, que se llamarán PV1 y PV2 (se las puede renombrar a discreción del usuario). Los PV's pueden ser de distinto tamaño y por lo tanto, tendrán un número distinto de PE, por lo que supongamos que tenemos para PV1 99 PE's y para PV2 248 PE's. Ahora, podemos crear el LV que necesitamos, que puede ser de cualquier tamaño entre 1 y 347 (99+248) PE. De esta forma se crea una tabla que relaciona PE's y LE's y si, por ejemplo, escribimos 4 MB en el LE número 1 del LV, se corresponderán con el PE 51 de la PV1.

  • La tabla que relaciona PE's y LE's, se llama tabla de mapeo, y la correspondencia puede ser de dos tipos:

    • Directo: se asigna un rango de PE's a otro rango de LE's en orden. Por ejemplo, las LE's del número 1 al 99 se mapean sobre las PE's del 100 al 347 de PV2.

    • Entrelazado: las LE's se entrelazan sobre las PE's de los volúmenes físicos, por ejemplo:

Destino

Origen

Primer chunk de la LE1

Primer chunk de la PV1

Segundo chunk de la LE1

Primer chunk de la PV2

Tercer chunk de la LE1

Segundo chunk de la PV1

...

...

Instantáneas (snapshots)

  • Las instantáneas (snapshots) permiten al administrador crear un nuevo dispositivo que será una copia exacta del LV, congelada en algún punto del tiempo. Normalmente esto se realiza de forma automática, para no alterar el funcionamiento normal del sistema. Cuando la instantánea ha terminado, el administrador puede quitar el dispositivo sin mayor complicación. Además, no es necesario que los datos en el LV se encuentren en un estado consistente, ya que muchos sistemas de ficheros en el kernel 2.6 lo realizan de forma automática.
    Una diferencia importante entre la versión 1 de LVM (LVM1 a partir de ahora) y la versión 2 (LVM2) es que en la primera, los snapshots eran de sólo lectura, mientras que en LVM2 son de lectura y escritura. ¿Cuál es la diferencia? En LVM1, se crea lo que se llama una tabla de excepciones, que se usa para mantener una lista de qué bloques en disco han cambiado. Si un bloque va a ser modificado en el origen, primero se copia en la instantánea, se marca como copiado en la tabla de excepciones y luego los nuevos datos se copian al volumen original. En LVM2, las instantáneas funcionan como en LVM1, pero con la característica de que si los datos se escriben en el snapshot (una vez montado), ese bloque se marca como usado en la tabla de excepciones y no se copia al volumen original. Esta característica es muy útil debido a que podemos crear nuestra instantánea, montarla y probar un programa o un nuevo navegador de ficheros. Si ocurre algo desastroso, la desmontamos, la borramos y volvemos a colocar el volumen original.











Juntándolo todo

Un ejemplo concreto ayudará:

Supongamos que tenemos un grupo de volumen llamado VG1, este grupo de volumen tiene una extensión física de 4MB. Dentro de este grupo de volumen metemos 2 particiones, /dev/hda1 y /dev/hdb1. Estas particiones se convertirán en los volúmenes físicos PV1 y PV2 (se les puede dar nombres más significativos dependiendo del administrador). Los PV's son divididos en trozos de 4MB, y este será el tamaño de extensión del grupo de volumen. Los discos son de distintos tamaños y tendremos 99 extensiones en PV1 y 248 en PV2. Ahora podemos crear un volumen lógico, que puede tener el tamaño que queramos entre 1 y 347 (248 + 99) extensiones. Cuando creamos el volumen lógico se define un mapeado entre extensiones lógicas y físicas, ej. extensión lógica 1 podría mapearse en la extensión física 51 de PV1, los datos escritos en los primeros 4 MB del volumen lógico se escribirán en la extensión 51 de PV1.



Tareas Comunes

Inicializar un disco o particion para uso con lvm

pvcreate /dev/sda

pvcreate /dev/sda1

pvcreate /dev/sda5



Volumen de grupo

Como ya sabemos los volumenes de grupos abarcan particiones o discos, por lo tanto, si queremos crear un grupo de volumen llamado fundacion y agregar varias particiones hacemos lo siguiente:

vgcreate fundacion /dev/sda1 /dev/sda2 /dev/sdb1

Luego necesitamos activar el volume de grupo

vgchange -a y fundacion

para desactivarlo seria:

vgchange -a n fundacion

Para borrar el grupo fundacion escribimos:

vgremove fundacion



Nota: Esto borrara el volumen de grupo y todos su volumenes logicos.



Si queremos extender nuestro volumen de grupo, es decir, necesitamos agregar otra particion u otro disco, entonces digitamos

vgextend fundacion /dev/hdc1

Esto agrega la particion /dev/hdc1 a nuestro grupo de volumen fundacion.

Para ver los cambios escribimos:

vgdisplay fundacion

Y para ver las particiones activas y asociadas a un volumen de grupo:

pvdisplay



Borrando volumenes fisicos de un volumen de grupo

Si queremos sacar /dev/sdc1 de nuestro volumen de grupo fundacion, entonces :

vgreduce fundacion /dev/sdc1



Volumenes Logicos

Para crear un volumen logico de 1GB a partir de nuestro volumen de grupo fundacion hacemos:

lvcreate -L+1G -n lv1 fundacion

donde, lv1 es nuestro volumen logico a crear

Si quieres que el volumen logico este ubicado en una particion especifica del volumen de grupo fundacion entonces se hace de la siguiente manera:



lvcreate -L+1G -n lv1 fundacion /dev/sdb1


Luego de esto deberia crearse un volumen logico ubicado en /dev/fundacion/lv1 al cual le dariamos formato y luego montamos en nuestro filesystem:

mkfs.ext3 /dev/fundacion/lv1

Luego esta listo para ser montado donde deseemos

mount /dev/fundacion/lv1 /mnt





Extendiendo un volumen logico

Si necesitamos mas espacio en nuestro volumen logico lvm1 entonces lo extendemos a nuestra manera teniendo siempre en cuenta el espacio del volumen de grupo al que pertenecemos, Es decir, no podemos exceder el tamano de nuestro volumen logico mas alla del espacio libre que tiene nuestro volumen de grupo. Seria :



Primero desmontamos la particion, si esta montada:

umount /mnt/

lvextend -L+1G /dev/fundacion/lv1

Esto incrementa en 1Gb el volumen logico lv1. Adicional a esto, tenemos que decirle al sistema operativo que se cambio ese volumen:

e2fsck -f /dev/fundacion/lv1

para revisar el filesystem. Luego:

resize2fs /dev/fundacion/lv1.

Luego de esto ya podemos montar nuevamente la particion lv1 con los cambios realizados.



Reduciendo un volumen logico:

Nota: Puede ser muy peligroso realizar esta tarea.

Si nuestro volumen logico lv1 tiene 2Gb de espacio y deseamo reducirlo en 1gb, realizamos lo siguiente:

Desmontamos el volumen si esta montado.

umount /mnt

e2fsck -f /dev/fundacion/lv1

Luego le hacemos el resize a nivel del sistema operativo

resize2fs /dev/fundacion/lv1 1G

Esto lo que hace es decirle al SO que el volumen logico lv1 sera ahora de 1Gb

Desactivamos el volumen logico:

lvchange -a n /dev/fundacion/lv1

Finalmente lo reducimos:

lvreduce -L-1G /dev



Para confirmar que se ha hecho efectivo verificamos el size del volumen:

lvdisplay /dev/fundacion/lv1

Y confirmarlo en el sistema operativo

fdisk -s /dev/fundacion/lv1



Finalmente montamos nuevamente el volumen logico con el nuevo size:

mount /dev/fundacion/lv1 /mnt









































Bibliografia:

http://es.wikipedia.org/wiki/LVM

http://www.tldp.org/HOWTO/LVM-HOWTO.html








7 comentarios:

_ dijo...

Muy buen documento sobre LVM. Gracias por publicarlo Christian
(Gustavo de Argentina)

Anónimo dijo...

[url=http://dcxvssh.com]sBQJemCLgkyOx[/url] - dhJxCOCmxHIndBC , http://yuxeflk.com

Anónimo dijo...

Quality articles is the main to аttrаct the visіtors to go tо see the sitе,
that's what this site is providing.

Also visit my site keyword

Anónimo dijo...

Hi, i think that i saw you νіsited my blog thus i came to “return thе favor”.
I am attempting to find things to еnhance my ωеbsite!

I suppoѕe its ok to use а few of youг ideas!
!

Alsο νisіt my ρage :: payday

Anónimo dijo...

Many slot machines for sales can bring you pictures of some of their
previous work. When you go to relax and enjoy one's life.

my web page: Website

Anónimo dijo...

You ought to be a pаrt оf a contest for one of thе best sites on
the web. I'm going to highly recommend this web site!

Also visit my page: Lloyd Irvin

caimandepamer dijo...

Se parece mucho a: https://es.wikipedia.org/wiki/Logical_Volume_Manager

Gran aporte....