TEMA 1.
-
UBUNTU SERVER
CON LVM
Lvm (Logical volume manager)
Logical Volume Manager o LVM, es un gestor de volúmenes (discos) que nos va a dar
mucha flexibilidad a la hora de distribuir el espacio de los discos del servidor, por
ejemplo agrupando varios discos del sistema para conformar un espacio mayor sobre el
que se pueden crear sistemas de ficheros (filesystems) del tamaño que yo crea
conveniente o extender en caliente un sistema de ficheros que se nos ha quedado
corto de espacio.
A partir de este momento LVM debería ser la configuración por defecto que elijáis para
instalar un servidor Linux tanto en servidor o en cliente.
Lvm (Logical volume manager)
Imaginemos que tenemos un disco de 50GB y otro de 100 GB, con LVM podemos
agruparlos en un único espacio de 150GB. A esta estructura se la llama VG (Volume
Group -Grupo de Volúmenes). Una vez creado el grupo podríamos dividirlo en
volúmenes lógicos LVOLs del tamaño que necesitemos donde luego crearemos
sistemas de ficheros.
Por seguir con el ejemplo dentro del VG de 150 GB, puedo crear 5 LVOLS de 30 GB,
donde creara 5 sistemas de ficheros de 30 GB.
50
GB 100 LVM LVM LVOL 30
VG 150GB
GB LVOL 30
LVOL 30
LVOL 30
LVOL 30
LVM (Logical Volume Manager)
La mayor ventaja es que podemos extender nuestros sistemas de ficheros en caliente
siempre que el sistema de ficheros lo soporte, como es ext4.
Por ejemplo imaginemos que los sistemas de ficheros de 30 GB se nos han quedado
pequeños , podemos añadir un disco de 50 GB al grupo de volúmenes y luego extender
los LVOLS 10 GB cada uno en caliente a 40 GB sin parar el sistema.
VG LVOL 40
150
VG 200GB LVM LVOL 40
LVM
LVOL 40
50
LVOL 40
LVOL 40
LVM
La estructura básica de LVM consiste en los
siguientes conceptos:
Physical Volume(PV): Son los discos físicos donde
creo una estructura para usar con LVM.
Volume Group (VG): Grupo de volúmenes , varios
discos agrupados bajo un mismo volumen.
Logical volume (LV): Volúmen lógico , espacios
donde crearemos los filesystems
Instalación UBUNTU CON LVM
Podemos igualmente instalarlo con BIOS o UEFI.
El esquema es muy similar en ambos
El gestor de arranque se ubicará siempre en el primer disco y /boot/efi irá en una
“partición” aparte que el sistema reserva siempre en la instalación .
Se crea un VG principal o raíz que tiene el primer disco y se suele llamar Ubuntu-VG (por
defecto).
Dentro de este VG creamos un LV para / LVOL00
El sistema por defecto crea el swap en sistema de ficheros , pero es mejor un lvol definido
como swap con el tamaño de la memoria. LVOL01.
Ahora no hay problema con ubicar /home en el primer lvol con /, si / se llena, podemos
siempre extender el lvol “en caliente” a un segundo disco y con él el sistema de ficheros.
Si queremos añadir espacio adicional para datos es aconsejable crear un VG separado
del VG raíz.
LVM Comandos para crear
Todos los comandos hay que ejecutarlos con sudo.
1. Lo primero es dar estructura de LVM a los discos:
pvcreate –f disco Ejemplo: pvcreate –f /dev/sda
Este comando estructura el disco en Physical Extensions (PEs) que son divisiones de 4
MB.
Puedo crear varios physical volumes a la vez. Ejemplo: pvcreate /dev/sd[a-c] ó
pvcreate /dev/sda /dev/sdb /dev/sdc
/dev/sda /dev/sdb /dev/sdc
20GB 20GB 20GB
2. Ahora creo el VG (grupo de volúmenes) con los discos que quiero incluir
vgcreate Nombre_del_VG disco1 disco2 discoN
Ejemplo: vgcreate VG01 /dev/sda /dev/sdb /dev/sdc
VG01 60GB
LVM Comandos para crear
3. Ahora creo los LVOLS necesarios para los sistemas de ficheros
lvcreate –n nombre del LV –L tamaño VG
Ejemplo: lvcreate –n lvol01 –L 30G VG01
lvcreate –n lvol02 –L 30G VG01
/dev/VG01/lvol01 30GB /datos1
VG01 60GB
/dev/VG01/lvol02 30GB /datos2
4. Finalmente creamos un filesystem sobre él LVOL con mkfs y lo montamos en un directorio
Mkfs –t ext4 /dev/VG01/lvol01 ; Mkfs –t ext4 /dev/VG01/lvol02
Mount /datos1 /dev/VG01/lvol01 ; mount /datos2 /dev/VG01/lvol02
Acordarse de incluir en el /etc/fstab
/dev/VG01/lvol1 /datos1 ext4 defaults 0 2
/dev/VG01/lvol2 /datos2 ext4 defaults 02
Antes de rebotar comprueba que el fichero está correcto haciendo mount -a
LVM Comandos para visualizar
Para ver la información de un physical volume concreto: pvdisplay –v disco
Ejemplo: pvdisplay –v /dev/sda
Para ver la información de un logical volume concreto: lvdisplay -v nombre_ lvol
Ejemplo: lvdisplay –v /dev/VG01/lvol01
Para ver la información de un volumen concreto: vgdisplay –v VG
Ejemplo: vgdisplay –v VG01
Visualizar todos los:
Physical Volumes: pvs
Logical Volumes: lvs
Volume Groups: vgs ó vgdisplay –v
LVM Comandos para extender
Utilizar con sudo o con usuario root.
1º debemos crear un PV en el nuevo disco : pvcreate –f /dev/sdy
2º Debemos extender el VG al nuevo disco para ello : vgextend vgXX /dev/sdy
3º Para extender (o reducir) un lvol se utiliza: lvresize –L tamaño_final_GB nombre_lvol_a_extender
Ejemplo: Lvresize –L 15G /dev/VGXX/lvol01 aumenta o disminuye el lvol1 a 15 GB
Se puede ser más preciso indicando las physical extensions que ocupa:
lvresize -l tamaño_final_en_PEs nombre_lvol_a_extender
Ejemplo: lvresize –l 8000 /dev/VGXX/lvol01 aumenta o reduce el lvol01 a 2GB
4º Una vez ajustado el tamaño se puede ajustar el tamaño del filesystem que está montado en ese logical volumen
mediante el comando resize2fs
resize2fs /dev/VG01/lvol1. El filesystem debe ser siempre de tipo ext3 o ext4.
LVM Comandos para eliminar (usar
con sudo)
Utilizar con sudo o como root.
Para eliminar un disco de un Grupo de Volúmenes se emplea el comando vgreduce
vgreduce vgXX /dev/sdx
ATENCIÓN: Previamente tenemos que haber eliminado todos los volumenes lógicos que
ocupaban ese disco, si no nos dejará reducir el grupo de volumenes.
Para eliminar volúmenes lógicos se utiliza el comando lvremove.
lvremove /dev/VGxx/lvoly
ATENCIÓN: el lvol debe estar desmontado del sistema de ficheros para poder eliminarlo.
LVM Mirroring y RAID5
Mirror Raid5
lvol01 lvol02 ….
vgraid5 12GB
En Mirror perdemos un disco completo para /dev/ /dev/ /dev /dev
salvaguardar los datos. sdb sdc /sdd /sde
En RAID5 perdemos otro disco en total para la 4GB 4GB 4GB 4GB
paridad, pero se aprovecha mejor el espacio.
En LVM lo mínimo son 3 discos para crear un
RAID5.
Comandos Mirror
Para crear un mirror básico
1. Pvcreate –f /dev/sdx /dev/sdy /creamos dos PV en dos discos
2. Vgcreate VGXX /dev/sdx /dev/sdy /creamos un VG con los dos PVs creados
en el paso anterior
3. Lvcreate –m 1 –L 2G -n lvol01 VGXX /creamos un LV de 2GB con opción
m 1 (un mirror) el LV se /replica
automáticamente de un disco a otro
4. Lvcreate –m 1 -L 10G –n lvol02 VGXX /creamos más LVs
5. Lvdisplay –v ó lvs para ver los LVs creados
6. Mkfs –t ext4 /dev/VGXX/lvol01 /creamos el sistema de ficheros
7. Mount /datos /dev/VGXX/lvol01 / lo montamos
8. Acordarse de escribir la línea correspondiente en /etc/fstab para montaje
permanente.
Comandos para recuperar mirror
Puede haber varias causas de fallo de disco (no enciende, fallo hw del mecanismo, corrupción de datos, etc.)
lo cual nos puede llevar a varias situaciones en la recuperación del mismo.
Por ejemplo falla el disco /dev/sdy (no está disponible en el VG al hacer vgdisplay), esto provocará que los
volúmenes lógicos puedan estar sin montar (LVM por precaución impedirá que se escriba en el otro disco).
Conscientes de la situación:
1.- Retiramos el disco en fallo del VG:
Vgreduce vgXX /dev/sdy ó si esto no funciona: vgreduce --removemissing --force VGXX
2.-Intentaríamos ahora re-activar el VG para ver si tenemos acceso a los datos, el comando para activar a
mano un VG es vgchange –a y VGXX.
3.- Montaríamos los volúmenes lógicos y trataríamos hacer un backup por si acaso (tar cvf …)
Cambiamos el disco , o bien en caliente, si el hw lo permite, o apagando el servidor. Ahora
1. Pvcreate –f /dev/sdy /creamos el PV en el nuevo disco
2. Vgextend vgXX /dev/sdy /extendemos el volumen al nuevo disco
3. Lvconvert –m1 /dev/vgXX/lvol01 /dev/sdx /dev/sdy
4. (si esto no funciona lvconvert --repair /dev/vgXX/lvol01)
Comandos RAID5
Para crear un Raid5 con 4 discos (3 +1)
1. Pvcreate –f /dev/sd[b-e] /creamos 4 PVs en 4 discos (3 +1 paridad)
2. Vgcreate VGraid5 /dev/sd[b-e] /creamos un VG con los 4 PVs creados
lvol01 lvol02 ….
Ahora creamos un logical volumen donde indico el número de discos para datos VGraid5
con la opción “stripes”:
3. Lvcreate --type raid5 --stripes 3 (discos datos) –L 2,4G -n lvol01 VGraid5
ó mejor en PEs (4MB), ya que controlaremos mejor el espacio sobrante:
3. Lvcreate --type raid5 --stripes 3 (discos datos) –l 600 (*) -n lvol01 VGraid5
(*): El comando cogerá 200 PEs de cada disco para datos pero además cogerá
200 PEs más para paridad
4. Mkfs –t ext4 /dev/VGraid5/lvol01 /creamos sistemas de ficheros
5. Mount /datos /dev/VGXX/lvol01 /acordarse de meter en /etc/fstab para
montaje permanente.
/dev/ /dev/ /dev /dev
sdb sdc /sdd /sde
Comandos par restaurar un RAID5
En caso de fallo de un disco hay que usar el comando vgreduce para retirar el disco en
fallo y dejar el RAID5 funcional y luego tras añadir el disco realizar lconvert.
Ejemplo falla el disco /dev/sdy
1. Vgreduce vgXX /dev/sdy ó vgreduce –removemissing –force VGXX .
Una vez retirado con lvdisplay vemos si el RAID5 sigue funcionando reactivando el VG y
se puede acceder a los lvols , montándolos si hiciera falta.
Cambiado el disco
2. Pvcreate –f /dev/sdy /creamos el PV en el disco
3. Vgextend vgXX /dev/sdy /extendemos el volumen al nuevo disco
4. Lvconvert –repair /dev/vgXX/lvol01
Gracias
RICARDO MACÍAS SÁNCHEZ
PROFESOR TÉCNICO DE SISTEMAS Y APLICACIONES
INFORMÁTICAS
COMUNIDAD DE MADRID