IES DOCTOR BALMIS
SOR - 2020/2021
LVM
LVM es un método de gestión del espacio disco duro utilizando unos nuevos elementos llamados volúmenes
lógicos. Estos, pueden ser fácilmente redimensionados, contrariamente al sistema clásico de particiones.
Los volúmenes físicos (discos) son combinados en grupos de volúmenes lógicos, a excepción de la partición /boot.
L a partición /boot no puede estar en un grupo de volúmenes lógicos porque el gestor de arranque no puede
leerlo al estar LVM gestionado por software.
Elementos que encontramos en LVM:
Volumen físico/Physical Volume (PV). Un volumen físico (PV en adelante) es un dispositivo de almacenamiento, o
más correctamente expresado, un dispositivo de bloque. Es una fuente de almacenamiento. Dicha fuente puede ser
ser:
• un disco duro, una partición,
• una tarjeta SD,
• un dispositivo RAID,
• un dispositivo loop (que convierte un fichero a un dispositivo de bloque, usado en máquinas virtuales)
Un PV no hay que formatearlo, simplemente se le entregará tal cual al LVM y a partir de ahí será el LVM quien lo
gestionará.
Grupo de volúmenes/Volume Group (VG). Para usar el almacenamiento de un PV, éste debe pertenecer a un
Grupo de volúmenes (en adelante VG). El VG será el centro del universo LVM. Podemos decir que un VG es una
especie de disco duro virtual. Un VG es un «disco» compuesto de UNO o más PVs y que podremos hacerle más
grande simplemente añadiendo más PVs.
Volumen Lógico/Logical Volume (LV). Un volumen lógico (en adelante LV) será el elemento de almacénfinal del
LVM. Por seguir con la analogía del disco duro virtual que es el VG, los LVs serían las particiones. A diferencia de
las particiones tradicionales, los LVs pueden crecer (mientras haya espacio en el VG) independientemente de la
posición en la que estén, incluso expandiéndose por diferentes PVs. El único requisito es que todo los PVs
pertenezcan al mismo VG.
Otra ventaja del LVM es que los nombres de los componentes los elegimos nosotros, lo que facilita su
comprensión. Al crear un VG o un LV, somos nosotros los que decidimos sus nombres. Por tanto ya no será
referenciar nombres como sda1, sdb3, etc. y pasamos a una nomenclatura que nos ayuda a comprender que hay en
cada LV.
Con estos términos claros podemos explicar mejor la flexibilidad del LVM con unos ejemplos:
• Un LV puede crecer siempre que haya espacio libre en el VG al que pertenece.
• Podemos cambiar el espacio asignado de un PV a un LV a otro PV (que tenga espacio suficiente libre). Me
explico, yo puedo crear un LV de 10G en un PV que sea un disco. Si posteriormente meto en el VG un PV que
sea un RAID, podría mover los 10G que estaba usando del disco al RAID, en caliente y de forma transparente
al sistema de ficheros y las aplicaciones que lo usan. De forma que si con el tiempo puedo mejorar el
hardware de la máquina, no tengo porque volver a crear un sistema de ficheros, copiar los datos y cambiar
el montaje. Con LVM simplemente digo: los 10G del LV que están en un PV los quiero mover a un PV
diferente. Este proceso ser hará sin interrumpir el funcionamiento del sistema, es decir, los usuarios NO
“notarán” absolutamente nada.
• Para poder disfrutar al máximo de la flexibilidad del LVM es importante tener la mayor cantidad de espacio
libre en el VG. Con LVM es tan sencillo como darle otro PV al VG. Añadimos un disco (PV) a la máquina y lo
asignamos al VG, que pasa a tener todo ese espacio nuevo disponible para cualquiera de los LVs que
contenga. O para crear LVs nuevos.
Chequeo del sistema de ficheros
Periódicamente será necesario chequear/verificar los sistemas de ficheros. El comando básico para chequeo
y reparación es fsck al igual que mkfs, fsck es un front-end a comandos específicos para cada filesystem:
Herramientas Sistema de archivos
e2fsck, fsck.ext2, fsck.ext3, fsck.ext4 ext2/ext3/ext4
[Link], [Link], [Link] JFS, ReiserFS y XFS
[Link], [Link] MS-DOS
Algunas de las opciones de fsck son:
-t filesystem tipo de filesystem a chequear
-A chequea los filesystems listados en /etc/fstab
-N no ejecuta; simplemente indica lo que haría
-R usado con -A no chequea el filesystem raíz
Posibles errores:
0 – No errors
1 – Filesystem errors corrected
2 – System should be rebooted
4 – Filesystem errors left uncorrected
8 – Operational error
16 – Usage or syntax error
32 – Fsck canceled by user request
128 – Shared-library error
Utilidades
du : Muestra el espacio de disco usado por los ficheros y subdirectorios de un directorio
Sintaxis
du [opciones ] [directorio ]
Algunas opciones:
-a // muestra valores para ficheros y directorios (por defecto, solo muestra directorios)
-b, -k // tamaños en bytes/KBytes
-h //salida más legible
-s // muestra sólo la ocupación total
du -s /home
df: Muestra el espacio de disco usado y disponible de los sistemas de ficheros montados
Sintaxis
df [opciones ]
Algunas opciones:
-a // muestra todos los filesystems (incluso los de tamaño 0)
-h // salida más legible –formato humano-
-i // información sobre los inodos
-l // sólo muestra sistemas de archivos locales
-T // muestra el tipo de sistema de ficheros
Comandos de volúmenes
lsblk -f : ver el árbol de volúmenes
vgs : ver grupos de volúmenes
lvs: ver volúmenes lógicos y su tamaño
Comandos de volúmenes físicos
pvchange | Cambia los atributos de un volumen físico
pvcreate | Crea un volumen físico
pvdata | Muestra información de depuración sobre un volumen físico
pvdisplay | Muestra información sobre un volumen físico
pvmove | Mueve extensiones físicas de un volumen físico a otro.
pvscan | Localiza y enumera todos los volúmenes físicos
Comandos de grupos volumen
vgcfgbackup |Hace una copia del área del descriptor de grupo volumen
vgcfgrestore |Recupera el área del descriptor de grupo volumen al disco
vgchange |Cambia los atributos de un grupo volumen
vgck |Comprueba la consistencia del área del descriptor de grupo volumen
vgcreate |Crea un grupo volumen a partir de volúmenes físicos
vgdisplay |Muestra los atributos de un grupo volumen
vgexport |Exporta un grupo volumen del sistema
vgextend |Añade volúmenes físicos a un grupo volumen
vgimport |Importa un grupo volumen al sistema
vgmerge |Combina dos grupos volumen
vgmknodes |Combina un directorio y los archivos especiales de un grupo volumen
vgreduce |Elimina volúmenes físicos de un grupo volumen
vgremove |Elimina un grupo volumen
vgrename |Renombra un grupo volumen
vgscan |Localiza y enumera todos los grupos volumen del sistema
vgsplit |Divide un grupo volumen
Comandos de volúmenes lógicos
lvchange |Cambia los atributos de un volumen lógico
lvcreate |Crea un volumen lógico
lvdisplay |Muestra los atributos de un volumen lógico
lvextend |Incrementa el tamaño de un volumen lógico
lvreduce |Reduce el tamaño de un volumen lógico
lvremove |Elimina un volumen lógico
lvrename |Renombra un volumen lógico
lvscan |Localiza y enumera todos los volúmenes lógicos, creando /etc/lvmtab y /etc/lvmtab.d/*
Comandos del Administrador de Volúmenes
Lógicos (LVM)
lvmchange |Cambia los atributos del sistema LVM
lvmdiskscan |Localiza y enumera todos los discos disponibles, los dispositivos múltiples y las particiones
lvmsadc |Recoge información sobre la actividad de LVM
lvmsar |Muestra información sobre la actividad de LVM
Ejemplos de aplicación
1. Ampliación de una partición sobre LVM
En primer lugar necesitamos obtener el nombre del volumen lógico de la partición a ampliar
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/GV1-root 3.8G 2.9G 770M 80% /
/dev/mapper/GV1-home 1.5G 1.4G 1.9M 100% /home
/dev/mapper/GV1-tmp 485M 11M 449M 3% /tmp
/dev/mapper/GV1-var 1.9G 1.1G 753M 60% /var
/dev/sda1 99M 25M 70M 27% /boot
tmpfs 1002M 0 1002M 0% /dev/shm
Ahora necesitamos conocer el nombre del grupo de volumen donde esta creado nuestra partición.
# lvdisplay /dev/mapper/GV0_VLHOME
--- Logical volume ---
LV Name /dev/GV1/home
VG Name GV1
LV UUID pzBSAL-dvH9-2hv5-sfnM-YGES-3pWC-JGk9mq
LV Write Access read/write
LV Status available
# open 1
LV Size 2.49 GB
Current LE 637
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
Ahora hemos de comprobar que hay espacio disponible para la ampliación. Si no fuera así deberíamos dar más
espacio a esto volume group.
# vgdisplay GV1
--- Volume group ---
VG Name GV1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 3
Act PV 3
VG Size 19.39 GB
PE Size 4.00 MB
Total PE 4964
Alloc PE / Size 2262 / 8.84 GB
Free PE / Size 2702 / 10.55 GB
VG UUID zqOdUf-3Y0b-78Gv-RUzO-8Ji3-ujpa-I0DaXw
Si no tuviéramos espacio disponible, deberemos agregar un disco extra a la máquina y tras reiniciar podremos
extender nuestro grupo de volumen con el nuevo disco.
vgextend vg0 /dev/sdc
En el caso ejemplo, como tenemos espacio libre podremos ampliar el volumen lógico donde se aloja el directorio
home. Lo hacemos con el comando lvresize (en el ejemplo la ampliamos en 1 GB):
# lvresize -L +500MB /dev/mapper/GV1-home
Extending logical volume home to 2.49 GB
Logical volume home successfully resized
El tamaño que se le da al volumen lógico es un valor igual o menor al tamaño total disponible en
el grupo volumen (o sea la sumatoria de bytes de los VF que están asignados a GV). Se pueden
utilizar
Ahora tenemos que extender el sistema de ficheros. Lo hacemos con el comando resize2fs:
# resize2fs -p /dev/mapper/GV1-home
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/mapper/GV1-home is mounted on /home; on-line resizing required
Performing an on-line resize of /dev/mapper/GV1-home to 2609152 (1k) blocks.
The filesystem on /dev/mapper/GV1-home is now 2609152 blocks long.
Los dos comandos anteriores los podríamos ejecutar con uno solo si añadimos el flag -r al comando lvresize. El
comando se quedaría como sigue:
# lvresize -r -L +1GB /dev/mapper/GV1-home
El resultado lo comprobamos ejecutando:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/GV1-root 3.8G 2.9G 770M 80% /
/dev/mapper/GV1-home 2.5G 1.4G 943M 60% /home
/dev/mapper/GV1-tmp 485M 11M 449M 3% /tmp
/dev/mapper/GV1-var 1.9G 1.1G 753M 60% /var
/dev/sda1 99M 25M 70M 27% /boot
tmpfs 1002M 0 1002M 0% /dev/shm
Si en lugar de querer ampliar la partición en una cantidad determinada, lo que quisiéramos es aprovechar todo el
espacio disponible en el volumen podríamos usar el siguiente comando:
# lvresize -r -l +100%FREE /dev/mapper/GV1-home
Anexo 1: Info de LVM
[Link]
%C3%B3n_de_un_grupo_de_vol%C3%BAmenes
Anexo 2: Crear archivo de un tamaño dado:
dd if=/dev/zero of=[Link] bs=1024 count=2097152 ( 2GB)
Fuente:
[Link]
[Link]
[Link]