Logical Volume Manager (LVM)
En el esquema de particionamiento tradicional de discos el administrador del sistema planifica con antelación el uso que se le dará cada partición. Por ejemplo, para una laptop con disco duro de 120 GB y RAM de 1 GB se puede tener el siguiente esquema de particiones:
- 1 GB para swap (/dev/sda1),
- 12 GB para la raíz (/dev/sda2),
- 107 GB para /home (/dev/sda3), es decir, el resto del disco.
Hasta aquí todo bien, pero qué pasa si el día de mañana el tamaño de la RAM aumenta a 2 GB? Para invernar habrá que aumentar la swap, y como ya se particionó todo el disco y no se dejó espacio lo que queda es reparticionar el disco, bien sea redimensionando con utilidades que lo permitan, siempre y cuando el sistema de archivo también lo permita (por ejemplo, los sistemas ext2/ext3/ext4 permite redimensionamiento).
¿No existe algo más flexible? Si, se llama LVM (Logical Volume Manager) , y en esencia permite redimensionar en caliente las particiones, para por ejemplo, quitar 1GB de /home (/dev/sda3) y dárselo a la swap (/dev/sda1).
LVM (Logical Volume Manager)
Para poder usar LVM primero se debe asignar volúmenes físicos, luego asignar volúmenes de grupo y por último volúmenes lógicos. Todo esto parece confuso a la primera, pero vamos a explicar cada uno de estos términos y cómo se relacionan:
- Volúmenes físicos: Es el soporte final donde se guardaran los datos, y pueden ser varios discos o incluso particiones de un disco. No guarda relación directa con los puntos de montajes. Ejemplos de volúmenes físicos: /dev/sda , /dev/sdb1, etc.
- Volúmenes de grupo: Es la agrupación de los volúmenes físicos en un volumen que permite ver todos los discos y particiones como uno solo dispositivo. Ejemplo de volumen de grupo: /dev/vg00
- Volúmenes lógicos: Son los volúmenes donde irán nuestros sistemas de archivos (ext2, ext3,xfs,vfat, por ejemplo) y por ende los puntos de montaje (/, /home, swap, /usr, /var, etc). En este nivel es donde se hace el formateo del sistema de archivos a usar, y es donde los datos se distribuirán a nivel lógico, similar a las particiones que acostumbramos a usar. Ejemplo de volúmenes lógicos: /dev/vg00/lv_rootfs, /dev/vg00/lv_swap, /dev/vg00/lv_home.
Instalación de LVM
En Debian puede usarse LVM instalando el siguiente paquete:
aptitude install lvm2
En otras distribuciones como Fedora, Red Hat o el mismo Ubuntu deben buscar el nombre adecuado del paquete para su instalación.
Órdenes de LVM
Para crear un LVM con sus volúmenes físicos, de grupo y lógicos veamos algunas de las instrucciones que tenemos disponible:
Volúmenes físicos
Orden | Descripción |
pvcreate | Crea volúmenes físicos para ser usado por LVM |
pvs | Muestra información acerca los volúmenes lógicos |
pvdisplay | Muestra varios atributos de los volúmenes físicos |
pvresize | Redimensiona volúmenes físicos |
pvmove | Mueve datos de un volumen físico a otro. |
Volúmenes de grupo
Orden | Descripción |
vgcreate | Crea volúmnes de grupo para ser usado por LVM |
vgs | Muestra información acerca de los volúmenes de grupo |
vgdisplay | Muestra varios atributos de los volúmenes de grupo |
vgextend | Agrega volúmenes físicos a un volumen de grupo |
vfreduce | Quita volúmenes físicos del volumen de grupo |
vgremove | Elimina volúmenes de grupo |
Volúmenes lógicos
Orden | Descripción |
lvcreate | Crea volúmnes lógicos para ser usado por LVM |
lvs | Muestra información acerca de los volúmenes lógicos |
lvdisplay | Muestra varios atributos de los volúmenes lógicos |
lvresize | lvreduce | lvextend | Redimensiona volúmenes lógicos |
lvmove | Elimina volúmenes lógicos del sistema |
Ejemplo de creación de un LVM
Supongamos que se tiene el disco /dev/sdb libre con 8 GB, con dos particiones de 4GB cada una (/dev/sdb1 y /dev/sdb2), y sobre estas particiones se quiere crear un LVM que alojará los puntos de montajes: La raíz (/) de 1 GB, la swap de 1 GB (swap) y el resto de los 6 GB al directorio de los usuarios (/home). Para hacer el LVM podemos escribir las siguientes órdenes:
root@buckbeak:~# pvcreate /dev/sdb1
root@buckbeak:~#pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
root@buckbeak:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a- 4.00g 4.00g
/dev/sdb2 lvm2 a- 3.99g 3.99g
root@buckbeak:~# vgcreate vg_group01 /dev/sdb1 /dev/sdb2
Volume group "vg_group01" successfully created
root@buckbeak:~# vgs
VG #PV #LV #SN Attr VSize VFree
vg_group01 2 0 0 wz--n- 7.99g 7.99g
root@buckbeak:~# lvcreate -n lv_rootfs vg_group01 -L 1G
Logical volume "lv_rootfs" created
root@buckbeak:~# lvcreate -n lv_swap vg_group01 -L 1G
Logical volume "lv_swap" created
root@buckbeak:~# lvcreate -n lv_home vg_group01 -L 6G
Volume group "vg_group01" has insufficient free space (1534 extents): 1536 required
root@buckbeak:~# lvcreate -n lv_home vg_group01 -l 1534
Logical volume "lv_home" created
root@buckbeak:~# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_home vg_group01 -wi-a- 5.99g
lv_rootfs vg_group01 -wi-a- 1.00g
lv_swap vg_group01 -wi-a- 1.00g
Ahora se puede dar el sistema de archivo para cada uno de los volúmenes lógicos:
root@buckbeak:~# mkfs
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@buckbeak:~# mkfs.ext4 /dev/vg_group01/lv_home
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
393216 inodes, 1570816 blocks
78540 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1610612736
48 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
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@buckbeak:~# mkswap /dev/vg_group01/lv_swap
mkswap: /dev/vg_group01/lv_swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=e743b4f3-1c80-4503-be88-6934d575cd55
root@buckbeak:~# swapon /dev/vg_group01/lv_swap
root@buckbeak:~# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2064376 8 -1
/dev/dm-5 partition 1048568 0 -2
Si se quieren usar estos volúmenes lógicos, bien puenden montarse con la orden mount o especificarlos en el archivo /etc/fstab para que sea montados al iniciar el sistema.
Leave a Comment