Para una persona recién iniciada en los sistemas UNIX y GNU/Linux, resulta dificil comprender como realizar un correcto particionado del disco para aprovechar sus recursos al máximo. Hablando de mi caso en particular, las primeras 2 o 3 veces que realicé en aquel entonces la instalación de mi "Ubuntu 6.06" no entendía la estructura de directorios, por lo cual las particiones me quedaban realmente horribles.
Es una situación así, usar LVM nos soluciona la vida dado que nos permite "malear" a gusto como está distribuido el espacio del cual hacen uso los volúmenes lógicos asignados. Hoy por hoy, distrubuciones como Fedora y Debian lo utilizan por defecto en su instalación. De entre sus muchas posibilidades, lo que hace más interesante a LVM es que podemos redimensionar según se requieran los volúmenes lógicos una vez creados sin necesidad de hacer uso de herramientas como "gparted" o "partition magic" (En mi experienca, herramientas que tienen el poder de "fallar" habiendome arruinado la vida mas que solucionarmela).
Otra de las grandes ventajas que tiene usar LVM es que podemos añadir discos duros a nuestros grupos de volúmenes, con lo cual, podemos ir agrandando nuestros volúmenes manteniendo nuestro sistema de ficheros como si sólo tuviéramos un disco duro en el equipo.
Para ir entendiendo bien como es este tipo de tecnología, veamos como se compone su estructura:
NIVEL 1: Physical Volumes (Discos duros de nuestro sistema o PVs)
hda
hdb
hdc
sda2
NIVEL 2: Volume Group (Grupo de Volúmenes o VGs)
vg01
NIVEL 3: Logical Volumes (Volúmenes Lógicos o LVs)
lvhome
lvusr
lvvar
lvroot
lvswap
NIVEL 4: Filesystems (Formato que puede contener cada LV)
ext3
reiserfs
xfs
NIVEL 5: Archivos y Directorios (Sistemas de Archivos, almacenan archivos y directorio)
/home
/usr
/var
/
A grandes razgos podemos apreciar que el espacio total de nuestro sistema sera la suma del tamaño de cada Disco Duro (PVs), luego todo ese gran disco virtual se convierte en un Volume Group (En el ejemplo anterior decidí utiluizar un sólo VG llamado “vg01”) y dentro de éste VG se crean los LVs conteniendo cada unos de ellos diferentes Sistemas de Archivos y dentro de ellos archivos y directorio.
Por ejemplo si tenemos un disco rígido de 120Gb con 3 particiones:
Root / =====> 15 GB (Prefiero que sobre, y no que me falte)
Swap =====> 2 GB
V. Group =====> 103GB (Volume Group)
- lvhome ==> 50Gb
- lvboot ==> 1Gb
- lvtmp ==> 5Gb
Dentro del VG decidí crear 3 LVs para /home, /boot y /tmp de 50Gb, 1Gb y 5Gb respectivamente (Podemos hacerlo para varios puntos de montaje, teniendo en cuenta que no es recomendable tener la raiz / en un volumen lógico dado que para desmontarla vamos a tener que superar terribles inconvenientes). Quedando entonces 52G de espacio disponible en el VG que pueden ser utilizados tanto para extender los LVs ya creados y crear nuevos LVs.
Vamos a un ejemplos real.
Creé una máquina virtual dispuesta de la siguiente forma:
Phisical Volume
============
PV Name /dev/sda1
VG Name vg-debian
PV Size 12.00 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 3071
Free PE 18
Allocated PE 3053
PV UUID TqBWiW-pxNn-9GHp-nKCg-chd7-V3gu-1Bu50W
Volume Group
===========
VG Name vg-debian
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 12.00 GiB
PE Size 4.00 MiB
Total PE 3071
Alloc PE / Size 3053 / 11.93 GiB
Free PE / Size 18 / 72.00 MiB
VG UUID QRSOcN-mbv4-KzML-c3b5-RCAM-Tl9Q-Zdc37p
Logical Volumes
=============
LV Name /dev/vg-debian/lv-root
VG Name vg-debian
LV UUID Xj6hhA-YR5k-31Tb-4aqQ-AN7q-lyd1-23ftFZ
LV Write Access read/write
LV Status available
# open 1
LV Size 4.30 GiB
Current LE 1101
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
LV Name /dev/vg-debian/lv-home
VG Name vg-debian
LV UUID 76egEE-Ktxv-Z08I-dgtB-qAEx-m7cV-F6U2il
LV Write Access read/write
LV Status available
# open 1
LV Size 6.67 GiB
Current LE 1708
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2
LV Name /dev/vg-debian/lv-swap
VG Name vg-debian
LV UUID whH232-wAT9-zOam-E28Y-dVzD-zi06-g6Ps3v
LV Write Access read/write
LV Status available
# open 1
LV Size 976.00 MiB
Current LE 244
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
En resumen:
=========
# ==> PV = 12Gb (Un disco rígido de 12.00Gb)
# ==> VG = 12Gb (Con bloques definidos de 4MB)
# ==> lv-root = 4.30 GiB (Montado en /)
# ==> lv-home = 6.67 GiB (Montado en /home)
# ==> lv-swap = 976.00 MiB (Área de intercambio)
Como podemos ver, el particionado esta armado con espacio justo para la partición raíz (Digo justo porque planeo instalarle GNOME como entorno gráfico, y me consume mas de 1,3Gb.) y mucho espacio de /home teniendo en cuenta que es una máquina virtual de prueba, y que no planeo meterle muchos archivos personales.
Supongamos que despues de instalar todo el sistema con sus correspondientes aplicaciones, me encuentro con la siguiente situación:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg--debian-lv--root 4.3G 4.2G 100M 99% /
/dev/mapper/vg--debian-lv--home 6.6G 222M 6.1G 4% /home
En un sistema de particiones regular, la unica opción que tendría sería la de lamentarme durante horas en diferentes idiomas dado que deberia reinstalar todo el sistema desde 0 y armar una mejor distribución del espacio libre.
Pero, como nosotros estamos haciendo uso de LVM, tenemos una solución mucho mas amigable.
Lo primero que debemos verificar es si tenemos espacio disponible en nuestro Volume Group:
root@squeeze:~# vgdisplay | grep -i free
Free PE / Size 18 / 72.00 MiB
En efecto, disponemos de 72MiB libres. Pero lamentablemente no es significativo para nosotros, por lo cual, vamos a requerir mas espacio.
¿Como podemos disponer de mas espacio, si utilizamos todo el disco?
Simple, reducimos el tamaño de /home 1GB menos siendo que le asignamos mas espacio del que vamos a utilizar.
root@squeeze:~# umount -f /home
root@squeeze:~# lvresize -L 5.6G /dev/vg-debian/lv-home
root@squeeze:~# resize2fs /dev/vg-debian/lv-home 5.6G
root@squeeze:~# mount /homeroot@squeeze:~# lvresize -L 5.6G /dev/vg-debian/lv-home
root@squeeze:~# resize2fs /dev/vg-debian/lv-home 5.6G
(Como aclaración, en GNU/Linux por lo menos, siempre específicar la unidad de medida que estamos utilizando, sea G para Gigabytes, M para Megabytes, s para Sectores de 512k.)
Listo. Con esto nuestro filesystem quedaría así.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg--debian-lv--root 4.3G 4.2G 100M 99% /
/dev/mapper/vg--debian-lv--home 5.6G 222M 5.1G 7% /home
Una vez que ya tengamos acomodado el espacio que necesitabamos, podemos pasar a extender nuestro /.
Como en este caso, mi / esta en un LVM, no voy a poder desmontarlo. Así que vamos a tener que recurrir a una extension "on-line".
root@squeeze:~#
lvresize -L 5.3G /dev/vg-debian/lv-rootroot@squeeze:~# resize2fs /dev/vg-debian/lv-root 5.3G
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg--debian-lv--root 5.3G 4.2G 1.1G 88% /
/dev/mapper/vg--debian-lv--home 5.6G 222M 5.1G 7% /home
Para mayor información sobre LVM, les recomiendo revisar el siguiente link:
http://tldp.org/HOWTO/LVM-HOWTO/commontask.html
Que sigan bien, cualquier duda o consulta no duden en hacermela llegar.
Saludos!!


