lunes, julio 07, 2008

Logical Volumes (LVM)

Debido a que he recibido muchas consultas sobre LVM he decidido hacer una apartado a este tema más que interesante.
Primero que nada, trataremos de dar una breve expliación de que es un logical volume.

LVM es una implementación de un administrador de volúmenes lógicos para el kernel Linux. Se escribió originalmente en 1998 por Heinz Mauelshagen, que se basó en el administrador de volúmenes 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

Features


* La gestión de volúmenes lógicos proporciona una vista de alto nivel sobre el almacenamiento en un ordenador, en vez de la tradicional vista de discos y particiones.
* Los volúmenes de almacenamiento bajo el control de LVM pueden ser redimensionados y movidos a voluntad, aunque esto quizá necesite actualizar las herramientas del sistema.
* LVM también permite la administración en grupos definidos por el usuario, permitiendo al administrador del sistema tratar con volúmenes llamados, por ejemplo, "ventas" o "desarrollo", en vez de nombres de dispositivos físicos, como "sda" o "sdb"
*

LVM es muy utilizados en sistemas unix como AIX, HP-UX o Solaris, posibilitando el redimensionamiento de volumenes, asignar espacio físicos a diferentes volumenes, independientemente del FileSystem, etc.
Aunque este tipo de implementaciones siempre se realizan en grandes sistemas que necesitan de una administración dedicada y que deban proporcionar servicios 24x7, es interesante poder realizar un esquema similar hogareño, teniendo en cuenta todos los beneficios comentados anteriormente

LVM consta de tres partes, la primera es el Volume Group el cual, su nombre, es asignado al azar (Compras, Ventas, IT, etc) y se encarga de ser el "Contenedor" de los demas componentes de la arquitectura.
El Physical Volume es el nombre de dispositivo asignado al dispositivo físico (/dev/hda1).
El Logical Volume (LV) es el "dispositivo" lógico que será constituido por partes de los physical volumes.
En el gráfico que sigue se puede observar como se constituye toda la arquitectura







VG (Volume Group)
PV (Physical Volume)
LV (Logical Volume)










Como se puede ver en el ejemplo del PV3 claramente independientemente del volumen físico, mediante esta tecnología, se puede asignar partes de un PV a cualquier LV, redimensionarlo y reasignarlo de acuerdo a las necesidades.

En el siguiente esquema se puede apreciar como se puede asignar diferentes tecnologias a los diferentes FileSystems.




/opt/media => XFs
/mnt/backup => Reiserfs
/home/share => Reiserfs






A continuación detallo como poder generar un volumen lógico. Cabe destacar que dichas instrucciones han sido testeadas en un RHEL 5.2 y Ubuntu 8.04; para otra distribución, verificar la documentación antes de comenzar con el proceso.

1) Inicialización del dispositivo

Tomamos como Volumen físico a /dev/sda1

# pvcreate /dev/sda1
Physical volume "/dev/sda1" successfully created

2) Creación del Volume Group

Asignaremos "Compras"como nombre del VG

# vgcreate Compras /dev/sda1
Volume group "Compras" successfully created


3) Creación del Logical Volume

# lvcreate -L1G -n lv1 Compras
lvcreate -- doing automatic backup of "Compras"
lvcreate -- logical volume "/dev/Compras/lv1" successfully created


(Donde -L1G es el tamaño asignado a ese LV, en este caso 1GB. Con la opción -n le asignamos el nombre al Logical volume. Por último le pasamos el nombre del Volume Group al cual asignaremos a ese LV).

4) Dando formato al Logical Volume

A este punto hemos creado el VG, PV y el LV, ahora debemos darle formato y asignarle un FileSystem

# mkfs.jfs /dev/compras/lv1


Si todo ha salido bien deberiamos poder montar el dispositivo como cualquier volumen y escribir sobre él.

# mount -t jfs  /dev/Compras/lv1  /mnt/Data


* Historia y breve introducción extraído de Wikipedia