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.

4 comentarios:

  1. Señooooooooooooooooorrrrrrrrr.

    Por cierto, se me olvidó comentar que existiría la posibilidad de ocultar ese volumen de datos en algun momento determinado, lease aduanas.
    Por lo que he visto del Truecrypt no me ha convencido por el momento, todo es hacer algo de I+D. :)

    ResponderEliminar
  2. Llevaba un tiempo necesitando reordenar el espacio porque /usr y / se me estaban petando, por lo que he decidido recortarle algo de espacio al volumen de datos(254GB con 214GB ocupados).

    umount /home/datos (muy importante)
    e2fsck -v -f /dev/lenny/datos
    resize2fs -p /dev/lenny/datos 245G (tarda bastante)
    lvreduce -L 245G -v /dev/lenny/datos
    e2fsck -v -f /dev/lenny/datos


    Y ahora tenia 15 gb libres segun vgdisplay.
    Los volumenes /usr y / estan en ext3 y este se puede ampliar online sin problema, en teoria porque lo que:
    init 1
    lvresize -L+8G /dev/lenny/usr
    resize2fs /dev/lenny/usr

    lvresize -L+5G /dev/lenny/root
    resize2fs /dev/lenny/root

    ¡Voila!
    Recalcar que todo esto es con LUKS activado, es decir la particion entera cifrada, pero al estar ya "montada" es transparente para el sistema y se opera igual que si no estuviera.

    Por ultimo un reboot por mera curiosidad. No apago nunca, suspendo a ram siempre excepto cuando compilo un nuevo kernel.

    ResponderEliminar
  3. Cómo pasa el tiempo, macho... Algún día dominaremos el mundo, eso sí, a base de GB

    ResponderEliminar