lunes, 25 de octubre de 2010

Jugando con LVM2 en Debian

Este post va a tratar sobre como trabajar con el LVM2 en la consola de tal modo que puedas crear,formatear y redimensionar los volumenes lógicos existentes en tu instalación.

La situación era el siguiente:
-Disco 320 Gigas
-Particion /dev/sda2 319Gigas
  • Particiónado por defecto en lenny con LVM2 y cifrado en el grupo de volumenes. 
  • Volumen lógico  /dev/lenny/home de 280 Gigas.
  • Dentro del volumen de home tengo mas de 200 Gigas ocupados con datos.
  • Cuando arrancaba y habia sobrepasado el limite de montajes sin chequeo, tenia que esperar a que realizara el fsck para 280Gigas(como 8 minutos).
  • Necesidad/ganas de refrescar el trabajo con LVM. :)


Básicamente, mi idea era separar los datos brutos en un nuevo volumen y dejar otro únicamente para los datos de usuario(25 Gigas).


Pues bien una serie de puntos sencillos que has de saber antes de reducir un volumen lógico:

  • Primero se reduce el sistema de ficheros y despues el volumen lógico. En caso contrario se pierden los datos sobrantes del volumen lógico.
  • No se puede reducir menos del espacio libre en el volumen (suena lógico ...)
  • Si el volumen está cifrado no hace falta realizar ninguna operación especial, puesto que el propio modulo,al estar cargado y el sistema arrancado, se encarga de "activar el cifrado" al crearlos
  • Debe de estar desmontado lógicamente

El estado inicial era este (df -h /home):

 S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/lenny-home
                      283G  219G   51G  82% /home
Y el estado final ha sido este (df -h /home/liloman /home/datos /home):

S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/lenny-liloman
                       25G   11G   13G  47% /home/liloman
/dev/mapper/lenny-datos
                      254G  201G   41G  84% /home/datos
/dev/mapper/lenny-home
                      4,0G  137M  3,7G   4% /home

Quiere decir, el volumen home lo reducí hasta 254 (espacio final despues de reservar para los i-nodos) y cree un nuevo volumen de 25 gigas. 

Os pongo el resumen de comandos pues (como root en tty1 o modo single user):

(Reduzco el volumen home con cuidado)

umount /home
e2fsck -v -f /dev/lenny/home
resize2fs -p /dev/lenny/home 258G  (tarda bastante)
lvreduce -L 258G -v /dev/lenny/home
e2fsck -v -f /dev/lenny/home


(creo el nuevo volumen liloman en el grupo de volumenes lenny)

lvcreate -L25G --name liloman lenny
mk2fs -j -L liloman /dev/lenny/liloman

Con esto ya habia reducido y preparado minimanente los cambios. Me faltaba cambiarle nombre al antiguo "home" por "datos",crear el nuevo volumen "/home", ajustar el fstab y finalmente mover los datos entre ellos .

  1. lvrename /dev/lenny/home datos
  2. lvcreate -L4G --name home lenny 
  3. mk2fs -j -L home /dev/lenny/home
  4. vi /etc/fstab 
/dev/mapper/lenny-home /home ext3    defaults  0  2
/dev/mapper/lenny-liloman /home/liloman ext3 defaults 0  2
/dev/mapper/lenny-datos /home/datos   ext3   defaults 0  2
  5. mount /home ; mkdir /home/liloman /home/datos; mount /home/liloman /home/datos

  6. cd /home/liloman; mv -v !(Datos|Datos2|Informacion|Fotos) /home/datos; ln -s /home/datos/*
  

¡Y Voila!


Las ganancias obtenidas son las siguientes:
  1. Ganancia en velocidad de acceso, administración y organización.
  2. Ganancia en el fsck, debido a que se puede o bien programar un chequeo o bien anularlo y hacerlo manual sin tener que prescindir de iniciar tu sesion como usuario. Desmontando previamente el volumen claro está.
  3. Ganancia en proximas ampliaciones, puesto que para realizar un backup del volumen de datos solo tengo que crear un volumen snapshot en un disco externo o mejor todavia un volumen espejo ...
  4. Refresco en el manejo de LVM. :P

Futuras mejoras:
  1. Tunning del sistema de ficheros (ext3) para el volumen de datos para el tamaño medio de los archivos (algo se puede ganar con algo de magia).
  2. Cambio del sistema de ficheros (¿XFS?) y mirar sistema de ficheros "de batalla" (escritura y borrado facil)
  3. Sistema de "backup automático" con un disco externo por medio de LVM del volumen datos.
  4. Adaptar el tiempo de chequeo con tune2fs de todos los volumenes (lo tengo puesto a 15 dias juraria pero tengo que repasarlo)
  5. Backup online del volumen liloman o almenos los archivos de configuración esenciales de este.(GNUstep,bash*,Scripts/,...) :D 
  6. Reducir los 2Gigas de swap que me metio la instalación y repartirlo al volumen mas necesitado. :D
  
Todavia me queda 1Giga libre que ya le daré uso, posiblemente como volumen de benchmark de próximos sistemas de ficheros. :P 


Esto es todo amigos. :D
He intentado ponerlo lo mas sencillo e explicado posible, no entro en detalle sobre las virtudes del LVM, que este no es el proposito de este minitutorial.