Gestión de volúmenes lógicos y Alta Disponibilidad

Es un tema que tenía pendiente… Esta información es el extracto casi al compoleto de un artículo de www.bulma.net

 

Aquí solo explica cómo hacer que unas particiones sean del tipo LVM y se puedan usar como tal. Muy útil sobre todo si la usamos en servidores ya quenos permite crear particiones hacer crecer o decrecer las particiones en caliente.

Instalación de LVM

Lo primero de todo es asegurarnos que nuestro kernel tiene soporte para LVM, sino es así hay que compilarlo con este soporte y después desde Debian ejecutar:

apt-get install lvm10

Eso nos instalará las herramientas necesarias para trabajar con LVM.

 

Qué vamos a crear

 

Antes de nada vamos a definir un poco e identificar que son los LVMs
y su tecnología. Tenemos los siguientes elementos:

    volume group: (grupo volumen) Es el punto de abstracción más alto en LVM.Este concepto define la unión de varios volúmenes físicos y lógicos en una unidad administrativa.
    physical group: (grupo físico) Habitualmente es un disco duro, pero puede ser algo que parezca un disco duro (RAIDS por software)
    logical volume: (volumen lógico) Es el equivalente a una partición en un sistema que no es LVM. El volumen lógico es visto como un dispositivo de bloque, ya que puede contener un sistema de ficheros.
    physical extent: (extensión física) Cada volumen físico está dividido en trozos de datos, eso es lo que se conoce como extensión física. Estas extensiones tienen el mismo tamaño que las extensiones lógicas para el grupo de volúmenes.
    logical extent: (extensión lógica) Cada volumen lógico está dividido en trozos de datos, eso es lo que se conoce como extensión lógica. El tamaño de las extensiones es igual para todos los volúmenes lógicos en el grupo volumen.

Veamos un ejemplo que nos ayudará a entender todo esto junto: Supongamos que tenemos un grupo volumen que se llama VG1, este VG tiene una extensión física de 4 MB. Dentro de este volumen introducimos dos particiones: /dev/hda1 /dev/hdb1.

 

Estas particiones se convertirán en los volúmenes físicos PV1 y PV2 (se les puede llamar como queramos). los PV’s se dividen en trozos de 4 MB, porque este es el tamaño de la extensión física del grupo volumen. Las particiones tienen distintos tamaños por lo que tenemos 99 extensiones en PV1 y 248 extensiones en PV2. Con todo esto podemos crear un volumen lógico que puede tener un tamaño entre 1 y 347 (254 + 99) extensiones.

 

Cuando un volumen lógico es creado se realiza un mapping entre las extensiones lógicas y las extensiones físicas; por ejemplo: supongamos que la extesión lógica 1 está mapeada a la extesión física 51, entonces los datos que se escriban en los 4 primeros MB de la extensión lógica se están escribiendo realmente en la extensión física 51.

 

Bien ahora ya hemos aprendido la lección, pasemos a la parte práctica :0)

 

Un ejemplo práctico

 

Tenemos un disco duro con tres particiones. Cada una de estas particiones va a ser posteriormente el punto de montaje para /var /usr que es donde van a tener los datos en su mayoría los servidores. Las particiones son /dev/sdb1 y /dev/sdb2 (cada cual tendrá sus particiones). Lo primero es crearlas o si ya las tenemos creadas darles el tipo 8e que es el tipo LVM. Para esta tarea he usado el cfdisk:

cfdisk /dev/sdb

Aquí creo y borro como yo quiera y elijo el tipo de partición, como ya he dicho 8e.

 

Ahora entramos en la parte de la preparación de las particiones para que LVM pueda trabajar correctamente. (Esta acción borra todos los datos que hubiese en esas particiones o discos). El comando que vamos a usar es pvcreate:

pvcreate /dev/sdb1
pvcreate /dev/sdb2

Os debería salir lo siguiente si todo ha ido bien:

pvcreate -- physical volume "/dev/sdbX" sucessfully created

Donde la X sería 1 o 2, o en vuestro caso el número de la partición.

 

Configuración de un grupo volumen

 

Vamos a crear un grupo volumen que se llame grupo_servidores:

vgcreate grupo_servidores /dev/sdb1 /dev/sdb2

Si todo ha ido bien obtendréis una respuesta así:

vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "grupo_servidores"
vgcreate -- volume group "grupo_servidores" successfully created and activated

Ahora que hemos generado el grupo volumen vamos a verificarlo
con el comando vgdisplay:

vgdisplay

La salida del comando si todo ha ido bien es:

--- Volume group ---
VG Name               grupo_servidores
VG Access             read/write
VG Status             available/resizable
VG #                  0
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           255.99 GB
Max PV                256
Cur PV                2
Act PV                2
VG Size               8.46 GB
PE Size               4 MB
Total PE              2166
Alloc PE / Size       0 / 0
Free  PE / Size       2166 / 8.46 GB
VG UUID               qFePyg-SvH1-Q10s-i885-1ZF2-hurF-VsPCnW

Lo más importante que hay que observar son los tres primeros elementos. También es importante que el VG Size sea aproximadame igual al tamaño de los discos o particiones sumados. En mi caso deberían ser 9 GB, pero se quedan en 8.46 GB. Imagino que es por información que usa en cada una de las particiones para uso interno del LVM.

 

Creación del Volumen Lógico

 

Si hasta ahora no hemos tenido ningún problema podemos pasar a a la creación de un
volumen lógico. Podemos hacer el volumen lógico del tamaño que queramos. (Es muy
parecido a una partición que no pertenezca a un sistema LVM.) Voy a crear dos volumenes
lógicos de tamaños 8.40 / 2, es decir 4.20 GB cada uno. El comando es lvcreate. Con -L le
decimos el tamaño del volumen, y con -n le damos un nombre al volumen lógico, tenemos
que indicar por último el grupo volumen en el que queremos crearlo:

lvcreate -L4.20G -n usr grupo_servidores
lvcreate -L4.20G -n var grupo_servidores

Si estos comando van bien obtendremos algo parecido a esto:

lvcreate -- rounding size up to physical extent boundary
lvcreate -- doing automatic backup of "grupo_servidores"
lvcreate -- logical volume "/dev/grupo_servidores/usr" successfully created

Creación del Sistema de Ficheros

 

Ahora solo nos queda crear un sistema de ficheros en los volúmenes lógicos. Es muy sencillo. Aquí depende del sistema de ficheros que vamos a montar, yo en mi caso voy a usar ReiserFS, por lo que sólo hay que hacer lo siguiente:

mkfs.reiserfs /dev/grupo_servidores/usr
mkfs.reiserfs /dev/grupo_servidores/var

Nota: si no tenéis el comando mkfs.reiserfs es que os falta instalar el paquete siguiente:

apt-get install reiserfsprogs

Con esto ya tendríamos lo que queríamos.

 

Puntos finales

 

Bien ahora solo queda hacer que cada una de las particiones sea realmente /usr y /var para ello vamos a montar primero /dev/grupo_servidores/usr y var en /mnt para copiar en el sistema montado lo que tenemos en /usr. Veamos como hacerlo:

mount /dev/grupo_servidores/usr /mnt
cp -R /usr/* /mnt
umount /mnt
mount /dev/grupo_servidores/var /mnt
cp -R /var/* /mnt
umount /mnt

Nota: Me han comentado que mejor que usar cp es utilizar el siguiente comando para “copiar TODO”:

mount /dev/grupo_servidores/usr /mnt
cd /usr && find . -depth -print0 | afio -px -0a /mnt
umount /mnt
mount /dev/grupo_servidores/var /mnt
cd /var && find . -depth -print0 | afio -px -0a /mnt
umount /mnt

Ahora hay que añadir las entradas al fstab para que cuando se inicie el sistema se consigan montar las particiones y así funcionar sobre LVM. El archivo fstab quedaría
así:

/dev/grupo_servidores/usr /usr  reiserfs        defaults        0       0
/dev/grupo_servidores/var /var  reiserfs        defaults        0       0

Finalmente hay que añadir al Init del sistema que active el grupo volumen para que así
pueda montar el kernel el sistema de ficheros de manera correcta. Entonces en /etc/rcS.d/
añadimos lo siguiente:

ln -s /etc/init.d/lvm S25lvm

Esto lo tenéis que hacer sólo si no tenéis hecho ya el enlace, en Debian ya debería de estar.

 

Nada más, ahora solo que reiniciar el sistema. Una cosa deberíais de tener una manera por
ahí para poder arrancar en caso de que esto “casque”, un cd de knoppix o el rescue de Debian
ALGO.

 

Enlaces

 

Howto en Inglés de LVM
FUENTE: www.bulma.net

Escribe un comentario