Logical Volume Management (LVM) en español «administrador de volúmenes lógicos» es una opción de gestión de discos que todas las principales distribuciones de GNU/Linux presentan. Ya sea que necesite para configurar grupos de almacenamiento, o simplemente se necesite para crear dinámicamente las particiones LVM.
¿Qué es LVM?
Logical Volume Manager permite una capa de abstracciónentre el sistema operativo y las particiones/discos que utiliza. En la administración de discos tradicionales de un sistema operativo se busca que los discos esten disponibles en (/dev/sda, /dev/sdb, etc) y luego mira que las particiones están disponibles en los discos (/dev/sda1, /dev/sda2, etc .).
Con LVM, los discos y particiones se puede abstraer de contener varios discos y particiones en un solo dispositivo. Los sistemas operativos no notará la diferencia, porque LVM sólo le mostrará al sistema operativo el grupo de volúmenes(discos) y los volúmenes lógicos (particiones) que han establecido.
Debido a que los grupos de volúmenes y volúmenes lógicosno están físicamente atados a una unidad de disco duro, que hace que sea fácil de cambiar dinámicamente el tamaño y crear nuevos discos y particiones. Además, LVM le puede dar las características que el sistema de archivos no es capaz de hacer. Por ejemplo, Ext3 no tiene soporte para snapshots en vivo, pero si usted está utilizando LVM que tienen la capacidad de tomar un snapshot de los volúmenes lógicos sin necesidad de desmontar el disco.
Cuándo hay que usar LVM?
La primera cosa que debe considerar antes de la creación de LVM es lo que se quiere lograr con sus discos y particiones. Algunas distribuciones, como Fedora, se instala LVM por defecto.
Si usted está utilizando otra distribución en una portátil con un solo disco duro interno y no necesita las características extendidas como snapshots en vivo, entonces puede que no necesite LVM. Si usted necesita una fácil expansión o desea combinar varios discos duros en un solo grupo de almacenamiento, LVM puede ser lo que usted ha estado buscando.
Cómo administrar y utilizar LVM
El administrador LVM es una capa de abstracción entre el sistema operativo y los discos duros físicos. Lo que esto significa es que los discos duros y particiones físicas ya no están atados a los discos duros y particiones que residen en dichos disco. Por el contrario, los discos duros y particiones que el sistema operativo ve puede ser cualquier número de discos duros separados o agrupados juntos o en un RAID por software.
Para gestionar LVM existen herramientas gráficas disponibles, pero para comprender realmente lo que está sucediendo con la configuración de LVM es mejor saber cuáles son las herramientas de línea de comandos. Esto será especialmente útil si estas manejando LVM en un servidor o alguna distribución que no ofrece herramientas gráficas.
La mayoría de los comandos de LVM son muy similares entre sí. Cada comando válido esta precedido por uno de las siguientes palabras:
- Volumen Físico = pv
- Grupo de volúmenes = vg
- Logical Volume = lv
Los comandos de volumen físico son para agregar o quitar discos duros en los grupos de volúmenes. El comando de grupo de volúmenes son para cambiar lo que abstrae el conjunto de particiones físicas se presentan a su funcionamiento en los volúmenes lógicos. Los comandos de volúmenes lógicos presentan los grupos de volúmenes como particiones para que su sistema operativo puede utilizar el espacio designado.
Todos los comandos tienen que ser ejecutado como root, ya que están cambiando la configuración de todo el sistema que afectarán a toda la máquina.
Cómo ver la información actual del LVM
Lo primero que deberá hacer es comprobar cómo está configurado LVM. Los comandos para mostrar el trabajo con volúmenes físicos (PV), los grupos de volúmenes (VG), y los volúmenes lógicos (LV) por lo que es un buen lugar para empezar cuando se trata de averiguar la configuración actual.
El comando de formato de pantalla será la información por lo que es más fácil de entender que el comando. Para cada comando podrás ver el nombre y la ruta del pv/vg y también debería dar información acerca del espacio disponible y utilizado.
root@maquina# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name GrMaq
PV Size 196,18 GiB / not usable 4,00 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 50221
Free PE 0
Allocated PE 50221
PV UUID 4XCC1q-YH1W-MalP-EGov-YRwG-z9M4-2UsY
La información mas importante será el nombre de PV y el nombre de VG. Con esta información podremos seguir trabajando en la configuración de LVM.
Crear un volumen lógico
Los volúmenes lógicos son las particiones que utiliza el sistema operativo. Para crear un volumen lógico, primero tenemos que tener un volumen físico y el grupo de volúmenes. Aquí están todos los pasos necesarios para crear un nuevo volumen lógico.
Crear volúmenes físicos
Vamos a empezar de cero con un nuevo disco duro sin particiones o que haya información sobre el mismo. Comenzamos por encontrar el disco que va a trabajar con LVM.(/dev/sda, sdb, etc)
Nota: Recuerde que todos los comandos deberán ejecutarse como root o añadiendo ‘sudo’ al principio del comando.
root@maquina# fdisk-l
Si su disco duro no ha sido formateado o particionado antes de que se muestre algo como esto en la salida de fdisk. Esto es completamente correcto, porque vamos a crear las particiones necesarias en los próximos pasos.
Disk /dev/sdb doesn't contain a valid partition table
Nuestro nuevo disco se encuentra en /dev/sdb por lo que permite usar fdisk para crear una nueva partición en el disco.
Hay una gran cantidad de herramientas que pueden crear una nueva partición con una interfaz gráfica de usuario como ser gparted, pero ya que tenemos el terminal abierto, vamos a utilizar fdisk para crear la partición que sea necesaria.
Desde una terminal se colocan los siguientes comandos:
root@maquina# fdisk /dev/sdb
Esto le pondrá en un fdisk en un modo especial.
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
Orden (m para obtener ayuda):
Introduzca los comandos en el orden dado para crear una nueva partición primaria que utiliza el 100% de la unidad de disco duro nuevo y está listo para el LVM. Si necesita cambiar el tamaño de la partición o quiere partiones múltiples sugiero usar GParted o leer acerca de fdisk por su cuenta.
Aviso: Los siguientes pasos para dar formato al disco duro. Asegúrese de que usted no tiene ninguna información en este disco duro antes de seguir estos pasos.
- n = crear nuevas particiones
- p = crea partición primaria
- 1 = realiza la primera partición en el disco
Pulse Enter dos veces para aceptar el valor predeterminado primer cilindro y del último cilindro.
Command (m for help): n
Command action
e etended
p primary partition (1-4)
p
Partition number (1-4): 1
First Cylinder (1-1044, default 1): Using default value 1
Last cylinder, +cylinders or + size{K,M,G} (1-1044, default 1044) Using default value 1044
Para preparar la partición que se utilizarán por LVM utilizar los siguientes dos comandos.
- t = cambio de tipo de partición
- 8e = cambios en el tipo de partición LVM
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Verificar y escribir la información en el disco duro.
- p = vista partición de configuración para que podamos revisar antes de escribir los cambios en el disco
- w= Escribir los cambios en el disco
Command (m for help): p
Disk /deb/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdf641837
Device Boot Start End Blocks Id System
/deb/sdb1 1 1044 8385898+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disk.
Después de estos comandos, el fdisk del sistema debe salir.
Introduzca pvcreate /dev/sdb1 para crear un volumen físico LVM en la partición que acabamos de crear.
Tal ves puedes preguntarte por qué no formatear la partición con un sistema de archivos pero no hay que preocuparse, ese paso es posterior.
root@maquina# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" succesfully created
Crear grupos de volúmenes
Ahora que tenemos una partición designada y el volumen físico creado tenemos que crear el grupo de volúmenes. Por suerte esto sólo toma un solo comando.
root@maquina# vgcreate vgpoolName /dev/sdb1
Volume group "vgpoolName" successfully created
VgpoolName es el nombre del nuevo grupo de volumen que hemos creado. Puedes colocar cualquier nombre pero se recomienda poner vg en la parte delantera de la etiqueta de modo que si se hace referencia más tarde se sabrá que es un grupo de volúmenes.
Crear volúmenes lógicos
Para crear el volumen lógico LVM que va a utilizar:
root@maquina# lvcreate-L-n 3G vgpool lvStuffName vgpoolName
Logical volume "lvStuffName" created
El comando -L designa el tamaño del volumen lógico, en este caso de 3 GB, y el -n nombre del volumen lógico. VgpoolName se hace referencia para que el comando lvcreate sepa qué volumen usara para obtener el espacio.
Formato y Monte el volumen lógico
Un último paso es formatear el nuevo volumen lógico con un sistema de archivos.
root@maquina# mkfs -t ext3 /dev/vgpoolName/lvstuffName
mke2fs 1.41.12 (17-Nov-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 bloks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Crear un punto de montaje y luego montar el volumen en alguna parte para que se puede usar.
root@maquina# mkdir /media/stuffName
root@maquina# mount -t ext3 /dev/vgpoolName/lvstuffName/ media/stuffName
Cambiar el tamaño de un volumen lógico
Uno de los beneficios de los volúmenes lógicos es que usted puede hacer sus acciones físicamente más grande o más pequeña sin tener que mover todo a un disco duro más grande. En su lugar, puede agregar un disco duro nuevo y ampliar su grupo de volúmenes sobre la marcha. O si usted tiene un disco duro que no se utiliza se puede eliminar del grupo de volumen para reducir su volumen lógico.
Existen tres herramientas básicas para la toma de volúmenes físicos, grupos de volúmenes y volúmenes lógicos más grandes o más pequeños.
Nota: Cada uno de estos comandos deben ser precedidos por pv, vg, o lv dependiendo de lo que se está trabajando.
- cambiar el tamaño – se puede reducir o ampliar los volúmenes físicos y los volúmenes lógicos, pero no los grupos de volúmenes
- ampliar – pueden hacer los grupos de volúmenes y volúmenes lógicos más grandes pero más pequeños no
- reducir – puede hacer que los grupos de volúmenes y volúmenes lógicos más pequeños pero más grande no
Vamos a probar a través de un ejemplo de cómo añadir un disco duro nuevo en el volumen lógico «lvstuffName» que acabamos de crear.
Instalación y formateado de nuevo disco duro
Para instalar un nuevo disco duro, siga los pasos anteriores para crear una nueva partición y añadir cambiar su tipo de partición para LVM (8e). A continuación, utilice pvcreate para crear un volumen físico LVM que puede reconocer.
Añadir nuevo disco duro a grupo de volúmenes
Para agregar el nuevo disco duro a un grupo de volúmenes sólo tienes que saber lo que la nueva partición es y donde esta, /dev/sdc1 en nuestro caso, y el nombre del grupo de volúmenes que desea añadir.
Esto agregará el volumen físico de nuevo en el grupo de volúmenes existentes.
root@maquina# vgextend vgpoolName /dev/sdc1
Volume group "vgpoolName" successfully extended
Ampliar el Volumen logico
Para cambiar el tamaño del volumen lógico que tenemos que decir lo mucho que queremos extender por tamaño en lugar de por el dispositivo. En nuestro ejemplo, acaba de agregar una unidad de 8 GB de disco duro a nuestro vgpoolName de 3 GB. Para hacer que el espacio útil podamos utilizar hay estos comandos lvextend lvresize.
root@maquina# lvextend -L8G /dev/vgpoolName/lvstuffName
Extending logical volume lvstuffName to 8.00 GiB
Logical volume lvstuffName successfully resized
Aunque este comando funciona, verá que realmente cambio el tamaño de nuestro volumen lógico a 8 GB en vez de añadir 8 GB para el volumen existente, como queríamos. Para agregar los últimos 3 gigabytes disponibles es necesario utilizar el siguiente comando.
root@maquina# lvextend -L+3G /dev/vgpoolName/lvstuffName
Extending logical volume lvstuffName to 11.00 GiB
Logical volume lvstuffName successfully resized
Ahora nuestro volumen lógico es de 11 GB de tamaño.
Amplíe el sistema de archivos
El volumen lógico es de 11 GB, pero el sistema de archivos en ese volumen es todavía sólo el 3 GB. Para que el sistema de archivos utilizar todo 11 GB de lo que tienes que utilizar es el comando resize2fs. resize2fs selecciona el volumen lógico y los 11 GB que hará la magia para usted.
root@maquina# resize2fs /dev/vgpoolName/lvstuffName
resize2fs 1.41.12 (17-Nov-2011)
Filesystem at /dev/vgpoolName/lvstuffName is mounted on /media/stuffName; on-line resized required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vgpoolName/lvstuffName to 2883584 (4k) blocks.
The filesystem on /dev/vgpoolName/lvstuffNameis now 2883584 blocks long.
Nota: Si utiliza algún sistema de archivo diferente, además de ext3/4 por favor, consulte los sistemas de archivos para cambiar el tamaño y las herramientas requeridas.
Reducir el tamaño de volúmenes lógicos
Si usted quiere quitar un disco duro de un grupo de volumen se necesita seguir los pasos anteriores en orden inverso y el uso de lvreduce y vgreduce.
- sistema de archivos redimensionar (asegúrese de mover archivos a una zona segura de la unidad de disco duro antes de cambiar el tamaño)
- reducir el volumen lógico (en lugar de + para extender también puede utilizar – para reducir el tamaño)
- quitar el disco duro del grupo de volúmenes con vgreduce
Copia de seguridad de un volumen lógico
Los snapshot es una característica que algunos sistemas de archivos más nuevos y avanzados vienen con ext3/4 pero carece de la capacidad de hacer snapshot sobre la marcha. Una de las mejores cosas acerca de las snapshots en LVM es su sistema de archivos no se toma en línea y usted puede tener tantos como desee sin ocupar espacio extra de disco duro.
Cuando se toma un snapshot de LVM, se toma como una fotografía de cómo exactamente el volumen lógico se ve y que la imagen se puede utilizar para hacer una copia en un disco duro diferente a futuro. Mientras que la copia se realiza, cualquier nueva información que hay que añadir al volumen lógico se escribe en el disco como normal, pero los cambios se realiza un seguimiento para que la imagen original nunca se destruye.
Para crear un snapshot lo que necesitamos es crear un nuevo volumen lógico con suficiente espacio libre para colocar cualquier nueva información que se escribe en el volumen lógico, mientras se hace una copia de seguridad. Si la unidad no está siendo escrito usted puede utilizar una cantidad muy pequeña de almacenamiento. Una vez que hayamos terminado con nuestra copia de seguridad se acabara de quitar el volumen temporal lógica y el volumen lógico original continuará con normalidad.
Crear Nuevo snapshot
Para crear un snapshot de lvstuffName utilizar el comando lvcreate como antes, pero el uso de la -s como bandera.
root@maquina# lvcreate -L512M -s -n lvstuffbackup /dev/vgpoolName/lvstuffName
Logical volume "lvstuffbackup" created
Aquí hemos creado un volumen lógico con sólo 512 MB porque la unidad no está siendo utilizado activamente. Los 512 MB almacenará toda nueva escritura mientras hacemos nuestra copia de seguridad.
Monte Nueva Snapshot
Al igual que antes tenemos que crear un punto de montaje y montar el nuevo snapshot para poder copiar los archivos de la misma.
root@maquina# mkdir /media/lvstuffbackup
root@maquina# mount /dev/vgpoolName/lvstuffbackup /media/lvstuffbackup
Copiar snapshot y eliminar el volumen lógico
Todo lo que se tiene que hacer es copiar todos los archivos de /media/lvstuffbackup/ a un disco duro externo o algún otro lugar.
Nota: tar -c para crear un archivo y -f va a decir el nombre de archivo y la ubicación del archivo. Para obtener ayuda con el uso de comando man tar en la terminal.
root@maquina# tar -cf /home/nombreUser/Backup/lvstuffName-ss /media/lvstuffbackup/
tar: Removing leading '/' from member names
Recuerde que, si bien la copia de seguridad se lleva a cabo todos los archivos que se escriben en lvstuffName se realiza un seguimiento del volumen temporal lógico que hemos creado antes. Asegúrese de que tiene suficiente espacio libre, mientras que la copia de seguridad que está sucediendo.
Una vez que finalice la copia de seguridad, el volumen se tiene que desmontar y retirar el snapshot temporal.
root@maquina# umount /media/lvstuffbackup
root@maquina# lvremove /dev/vgpoolName/lvstuffbackup/
Do you really want to remove active logical volume lvstuffbackup? [y/n]: y
Logical volume "lvstuffbackup" successfully removed
Eliminación de un volumen lógico
Para eliminar un volumen lógico lo que se necesita hacer primero es que el volumen se desmonta, a continuación, puede utilizar lvremove para eliminarlo. También puede quitar un grupo de volúmenes una vez que los volúmenes lógicos se han suprimido y un volumen físico después de que el grupo de volúmenes se elimina.
Aquí están todos los comandos con los volúmenes y los grupos que hemos creado.
root@maquina# umount /media/stuffName
root@maquina# lvremove /dev/vgpoolName/lvstuffName
Do you really want to remove active logical volume lvstuffName backup? [y/n]: y
Logical volume "lvstuffName" successfully removed
root@maquina# vgremove vgpoolName
Volume group "vgpoolName" successfully removed
root@maquina# pvremove /dev/sdb1 /dev/sdc1
Labels on physical volume "/dev/sdb1" successfully wiped
Labels on physical volume "/dev/sdc1" successfully wiped