gestión de discos SAN en caliente con lvm y ext2online
Posted on Thu 31 March 2011 in Hardware • 4 min read
El uso de grandes cabinas de discos SAN Storage Area Network o vulgarmente llamados discos por fibra, tienen el inconveniente de que si no se asigna correctamente el tamaño del disco, malgastamos mucho espacio al no poder reasignar el espacio no usado para otros usos.
En linux no disponemos de un gestor de volúmenes con un interfaz de usuario atractivo, pero disponemos del potente lvm ( logical volume manager ) que en su versión 2 esta totalmente integrado con el kernel.
En este tutorial no voy a mostrar como se configura la tarjeta de fibra, si no como configurar los discos que veremos en nuestra máquina al asignar una lo que se llama en palabras técnicas una LUN.
Un vez asignada la lun a la máquina, mediante la utilidad que nos haya facilitado el fabricante de la cabina de discos, tenemos que hacer un reescaneo de la fibra, con las EVA de HP se hace con hp_rescan o en EMC de IBM con powermt
Despues de hacer esto en el dmesg nos aparecera algo como esto:
SCSI device sdd: 8388608 512-byte hdwr sectors (4295 MB)
SCSI device sdd: drive cache: write through
sdd: unknown partition table
Esto nos indica que el nuevo disco lo tenemos en /dev/sdd y es de 4G. Para tener mas eficiencia a la hora de repartir el disco, lo mejor es partir el disco en trozos para luego repartirlo como mejor creamos.
Usaremos fdisk /dev/sdd para hacer 4 particiones de 1G lo cual nos dara lo siguiente:
_/dev/sdd1 , /dev/sdd2 , /dev/sdd3 y /dev/sdd4_
En LVM tenemos que tener claro los conceptos de volumen fisico (physical volume), grupo de volúmenes (volume group) y volumen lógico (logical volume). Lo siguiente sera hacer que lvm cataloge estas particiones para poder usarlas y lo hacemos diciendole donde estan los volúmenes fisicos en este caso /dev/sdd[1-4]
pvcreate /dev/sdd1 /dev/sdd2 /dev/sdd3 /dev/sdd
Ahora que lvm ya tiene los discos catalogados e inicializados, podemos comprobarlo y ver la informacion de los discos:
pvdisplay
Despues tenemos que crear uno varios grupos de volúmenes y asignar los discos a estos grupos. Posteriormente podremos mover los PV entre los diferentes VG
vgcreate grupo_bbdd /dev/sdd1 /dev/sdd2 /dev/sdd3 /dev/sdd4
o bien crear varios volúmenes
vgcreate grupo_bbdd /dev/sdd1 /dev/sdd2
vgcreate grupo_datos /dev/sdd3 /dev/sdd4
Con vgdisplay podemos ver la información de grupo:
[root@lnxserver ~]# vgdisplay
--- Volume group ---
VG Name grupo_bbdd
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 4.00 GB
PE Size 4.00 MB
Total PE 1023
Alloc PE / Size 999 / 3.90 GB
Free PE / Size 24 / 96.00 MB
VG UUID GsJO5U-DbX0-6H8d-JYUk-rH7I-m8VK-BEqTHx
Ahora ya podemos crear tantos volúmenes logicos como espacio tengamos en el grupo.
[root@lnxserver ~]# lvcreate --size 1500M --name disco1 grupo_bbdd
[root@lnxserver ~]# lvdisplay
--- Logical volume ---
LV Name /dev/grupo_bbdd/disco1
VG Name grupo_bbdd
LV UUID 4cJ2UN-wvh0-YWat-WUCl-iPtO-XWuP-QirzQm
LV Write Access read/write
LV Status available
# open 1
LV Size 1.500 MB
Current LE 999
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:2
El siguiente paso sera crear un sistema de archivos en este disco logico. Para poder tener la posibilidad de usar la ampliación del disco en caliente sin desmontarlo, lo mejor es usar ext3 o jfs. Nosotros lo haremos con ext3
```auto[root@lnxserver ~]# mkfs.ext3 /dev/grupo_bbdd/disco1 [root@lnxserver ~]# mount /dev/grupo_bbdd/disco1 /mnt/DISCO1 [root@lnxserver ~]#df -h | grep DISCO1 1.500M 36M 1.500M 1% /mnt/DISCO1
Ahora supongamos que se nos ha llenado el disco y queremos ampliarlo, pero tenemos que hacerlo en caliente sin desmontar el disco. Si todavia tenemos espacio libre en el VG, lo usaremos y si no tendremos que presentar otro disco e incluso ampliar el disco en la SAN y despues con hp\_rescan, pvscan vgscan veremos el nuevo tamaño. En esto caso vamos a añadir espacio que tenemos en el VG grupo\_bbdd.
[root@lnxserver ~]# lvresize --size +1G /dev/grupo_bbdd/disco1 [root@lnxserver ~]# lvdisplay --- Logical volume --- LV Name /dev/grupo_bbdd/disco1 VG Name grupo_bbdd LV UUID 4cJ2UN-wvh0-YWat-WUCl-iPtO-XWuP-QirzQm LV Write Access read/write LV Status available # open 1 LV Size 2.524 MB Current LE 999 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:2
Ahora ya vemos el nuevo tamaño del disco lógico, pero el disco montado sigue teniendo lo mismo, para ello usaremos ext2online
[root@lnxserver ~]# ext2online /dev/grupo_bbdd/disco1 ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b ext2online: new size is (1022976) ```
De esta manera podemos hacer lo mismo para quitar espacio a un disco mal dismensionado y que le sobra, por lo que lo podremos usar para otras cosas, sin tener que parar ni desmontar ningun disco.