8 de set. 2009

gestionar lvm

Venga, la continuación del post del miércoles pasado, un pequeño manualillo de como funcionan los lvm y de como administrarlos.

La ventaja del lvm es que puedes crear particiones de tamaño ilimitado, simplemente es necesario que tu maquina soporte los discos suficientes para definir el tamaño ilimitado.

Otra de las ventajas es que se le pueden poner el nombre deseado a las particiones, en lugar de las aburridas sda1, sda2, sdb1, etc. que nos ofrece el fdisk.

Sigamos como si las particiones lvm fuesen meros pedazos de plastilina.

Tenemos una caja (el ordenador) con varios paquetes de plastilina (cada uno de los discos duros), y tenemos la mesa donde trabajaremos (volume group (VG)).

Encima de la mesa podremos trabajar nuestra plastilina (physical volume (PV)) y agruparla para hacer las figuras (logical volume (LV)).

De "volume groups" solo podremos crear uno. De la misma forma que podemos separar la plastilina y agruparla crearemos los "physical volumes" y le daremos forma con los "logical volume".

Con esta representación para niños, quiero decir que hay los volume groups, que agrupan a los physical volumes y dentro los volume group.

Basta ya de explicaciones cutres y entramos en materia:

La mejor forma de entender como funciona lvm es con los comandos:

# pvscan
PV /dev/sdb1 VG vg1 lvm2 [465.66 GB / 455.66 GB free]
PV /dev/sda5 VG servidor1 lvm2 [67.51 GB / 0 free]
Total: 2 [533.17 GB] / in use: 2 [533.17 GB] / in no VG: 0 [0 ]

# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
Found volume group "servidor1" using metadata type lvm2

# lvscan
ACTIVE '/dev/vg1/lvol0' [10.00 GB] inherit
ACTIVE '/dev/servidor1/root' [64.71 GB] inherit
ACTIVE '/dev/servidor1/swap_1' [2.80 GB] inherit

Estos outputs son los reales de un servidor, y nuestra tarea es eliminar el volume group "vg1" y fusionarlo con el volume group "servidor1".

Así que empezamos la limpieza:
# lvremove /dev/vg1/lvol0
Do you really want to remove active logical volume "lvol0"? [y/n]: y
Logical volume "lvol0" successfully removed

listos, acabamos de eliminar el volumen lógico "lvol0" que se encuentra dentro del grupo de volumen "vg1".
# vgremove vg1
Volume group "vg1" successfully removed

si ejecutamos de nuevo el lvscan, podremos ver que el output ha variado y ya no tenemos al volumen "vg1".
# lvscan
ACTIVE '/dev/server1/root' [64.71 GB] inherit
ACTIVE '/dev/server1/swap_1' [2.80 GB] inherit

aprovechando que ahora tenemos la partición vacía haremos un formateado, para eliminar la posible basura que haya quedado de instalaciones anteriores y verificar el estado del disco (aprovecho para recordar la existencia de smartmontools):
# mkfs -t ext3 -c /dev/sdb1
mke2fs 1.40.8 (13-Mar-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
73138176 inodes, 292551674 blocks
14627583 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
8928 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
Checking for bad blocks (read-only test): done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Esta operación tardará varios minutos depende de la velocidad de los discos y el tamaño de los mismos, además de la potencia de la maquina.

Una vez finalizado vamos a poner la partición dentro el physical volume
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created


Y ahora la cosa queda así:
# pvscan
PV /dev/sda5 VG server1 lvm2 [67.51 GB / 0 free]
PV /dev/sdb1 lvm2 [1.09 TB]
Total: 2 [1.16 TB] / in use: 1 [67.51 GB] / in no VG: 1 [1.09 TB]

Ahora añadiremos /dev/sdb1 dentro del volume group "VG server1":
# vgextend server1 /dev/sdb1
Volume group "server1" successfully extended

Para ampliar por ejemplo la capacidad de la partición raíz (que se encuentra en un volumen lógico):
# lvextend -L+2G /dev/server1/root
Extending logical volume root to 65.71 GB
Logical volume root successfully resized

Por último con el ext2resize o con el resize2fs fijamos los cambios a la partición (si no está instalado lo instalamos)
# apt-get install ext2resize

# ext2online /dev/server1/root
ext2online v1.1.19 - 2001/03/18 for EXT2FS 0.5b

el comando ext2online sirve para redimensionar particiones ext2, si no estamos usando el journaling nos va a dar igual si usamos una u otra, pero por otra parte es recomendable usar este otro comando:
# resize2fs /dev/mapper/server1-root
resize2fs 1.40.8 (13-Mar-2008)
Filesystem at /dev/mapper/server1-root is mounted on /; on-line resizing required
old desc_blocks = 5, new_desc_blocks = 5
Performing an on-line resize of /dev/mapper/server1-root to 17750016 (4k) blocks.
The filesystem on /dev/mapper/server1-root is now 17750016 blocks long.


Para comprobar que se ha redimensionado:
# lvscan
ACTIVE '/dev/server1/root' [66.71 GB] inherit
ACTIVE '/dev/server1/swap_1' [2.80 GB] inherit

y si no nos fiamos aún del lvm:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
67G 33G 31G 53% /
varrun 4.0G 76K 4.0G 1% /var/run
varlock 4.0G 0 4.0G 0% /var/lock
udev 4.0G 80K 4.0G 1% /dev
devshm 4.0G 0 4.0G 0% /dev/shm
/dev/sda1 236M 26M 198M 12% /boot

1 comentaris:

Hosting Chile ha dit...

Muy bien explicada la guía.
Saludos

Publica un comentari a l'entrada