Lo siento mucho por tanta demora al retomar este artículo, mi vida personal ha estado sumamente complicada y esto ha ayudado poco a mi rendimiento académico este primer semestre… pero bueno, a lo nuestro!
En la primera parte intenté además de explicar el concepto, permitirles evaluar si este método para particionar el disco responde a sus necesidades. En esta parte abordaremos dos temas, en primer lugar la anatomía del sistema y posterior a eso, veremos algunos de los comandos más básicos.
Anatomía
Nota: Esta parte puede ser más bien árida, si quieres puedes saltarte a la siguiente sección. Es probable que igual comprendas la lógica con los ejemplos.
La anatomía de LVM está compuesta de 3 partes principales, volumen lógico (LV), volumen físico (PV), y grupo de volúmenes (VG), más otras dos que pueden ser útiles para complementar a las primeras, los extents físicos y lógicos. La unidad base para poder tener un sistema LVM son los VG que están formados por un número a elección de PV, puede ser uno (en mi caso) o más de uno, y finalmente los LV que vendrían siendo lo más parecido a una partición propiamente tal. Para simplificar:
sda1 sdb (PV:s, ya sean particiones o discos completos) / / linuxvg (VG) / | / | ubuntu arch home (LV:s) | | | ext4 ext4 xfs (sistemas de archivos)
(gracias Erik Bågfors)
Por otro lado, los PE son los trozos en los que se divide un PV, estos a su vez establecen el de los lógicos (LE) que tienen relación a los trozos de datos en los que se divide un VG.
Si tomamos el esquema anterior, supongamos que creo un grupo de volúmenes llamado linuxvg
asignándolo una cantidad de 4 MB a cada extent, a este volumen le agregamos la segunda partición del primer disco (sda2) y el segundo disco completo (sdb), ahora cada uno tomará el nombre PV1
y PV2
(por supuesto que puede ser cualquier otro nombre). La segunda partición tiene 40 GB y el segundo disco 400 GB, de forma que PV1
tendrá (aprox) 10.000 extents y PV2
100.000 de forma que en total tendremos 110.000 extents en el VG linuxvg
. Como consecuencia lógica, obtenemos una especie de «fusión» entre ambos discos. Ya nos queda crear un volumen lógico (o varios) asignándole una cantidad de disco (en MB, GB, etc) o a través de extents
y por último, creamos un sistema de archivos para cada volumen lógico, que funciona para casi todo uso práctico como una partición.
Utilización básica
Nota: Los man de lvm son sumamente buenos, así que les sugiero encarecidamente que los miren.
Volumen físico (PV)
Si seguimos el ejemplo anterior, vemos que lo primero que debemos hacer es crear un PV, para ello utilizamos el intuitivo comando (siempre como root) de:
pvcreate /dev/particion o /dev/disco
Por ej:
pvcreate /dev/sda1 /dev/sdb2
# (Ahora podemos corroborar con:)
pvdisplay
pvs
Grupo de volúmenes (VG)
Continuando… tenía un disco de 40GiB y otro de 400GiB, resulta que tengo un PV de 440 GiB. Ya con nuestro volumen físico es hora de crear el (o los) grupos de volúmenes (VG), nuevamente con un intuitivo comando:
vgcreate GrupoDeVolumen /dev/sda1 /dev/sdb2
# (Corroboramos con:)
vgdisplay
vgs
Eso por supuesto, dejará un sólo gran volumen de 440GiB con un extent de 4MB que es lo que viene por defecto, en caso de querer cambiarlo sólo basta con agregar -s Tamaño[unidad]
(qué puede ser m [megabytes], g [gigabytes], y así. Si no se agrega un sufijo, se asume que son megabytes).
Un PE de 4 MB nos permite un máximo de 256GB por LV.
Dependiendo de la distribución de GNU/Linux que utilices, puede ser que los volúmenes no se activen de forma automática, en ese caso, debes ejecutar:
vgchange -ay
Volumen lógico (LV)
Finalmente llegamos a la parte interesante de este extenso y latero artículo. Este es el momento que tenemos la mayor flexibilidad, y nuevamente LVM nos deslumbra con un intuitivo comando:
lvcreate -L 10G GrupoDeVolumen -n VolumenLogico
# (Para corrobar o si queremos más información:)
lvs
lvdisplay
Extender el tamaño de un LV es bastante simple, no así reducirlo, por lo que sugiero que comiences con tamaños pequeños y los aumentes en la medida que lo necesites. Recuerda que aquí eso no es problema.
Como ejemplo, los comandos lvs
y lvdisplay
en mi equipo son:
#~ lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert arch linux -wi-ao 10,00g gentoo linux -wi-a- 10,00g home linux -wi-ao 93,13g swap linux -wi-ao 1,02g ubuntu linux -wi-ao 9,31g #~ lvdisplay --- Logical volume --- LV Name /dev/linux/home VG Name linux LV UUID iIUY2W-bKwv-xCwZ-mxzo-qS2E-kikx-KMaw2O LV Write Access read/write LV Status available # open 1 LV Size 93,13 GiB Current LE 23841 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/linux/ubuntu VG Name linux LV UUID iZ6VaO-wTxv-igaL-hOiS-I306-7yB1-kvCBRU LV Write Access read/write LV Status available # open 1 LV Size 9,31 GiB Current LE 2384 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/linux/swap VG Name linux LV UUID UEenCz-6ahZ-A930-Ahgy-eaz3-EA77-Dk5UPy LV Write Access read/write LV Status available # open 1 LV Size 1,02 GiB Current LE 262 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2 --- Logical volume --- LV Name /dev/linux/arch VG Name linux LV UUID M3l88T-h2qW-IyiK-A4Sn-KL8n-3eRi-FWhe0D LV Write Access read/write LV Status available # open 1 LV Size 10,00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:3 --- Logical volume --- LV Name /dev/linux/gentoo VG Name linux LV UUID TR0qZ1-hZ5F-I1HX-2zam-0hqF-v2Ev-qWQOdH LV Write Access read/write LV Status available # open 0 LV Size 10,00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:4
Como pueden ver con el primer comando, yo tengo 5 volúmenes lógicos (LV), arch
, gentoo
, home
, swap
y ubuntu
, todos pertenecientes al mismo grupo de volúmenes (VG) llamado linux
.
Si se fijaron en las primeras líneas de cada volúmen lógico:
--- Logical volume --- LV Name /dev/linux/arch VG Name linux
Se podrán dar cuenta de cuál es la nomenclatura que utiliza el sistema para encontrar estas «particiones». LVM utiliza dos formas:
/dev/GrupoDeVolumen/VolumenLógico
/dev/mapper/GrupoDeVolumen-VolumenLógico
Por ejemplo, si quisiera montar la partición de gentoo en /mnt
haría:
mount /dev/linux/arch /mnt
ó
mount /dev/mapper/linux-arch
Como decía, cualquiera de las dos es válida, yo me quedo con la primera porque me parece más amigable.
Otros comandos
Bueno, ya para terminar, les comento algunos comandos que podían serles útiles. El primero es lvextend
, que tal como su nombre lo indica, consiste en aumentar el tamaño del LV en caso de que no hubiésemos llenado el VG. La sintaxis es como sigue:
lvextend -L+[Tamaño][Sufijo de la unidad] GrupoDeVolumen/VolumenLógico
Al igual que en los casos anteriores, si no especificamos el tipo de unidad (K, para kilobytes, M para megabytes, G para gigabytes, etc) se asumirá el por defecto que corresponde a megabytes. Así por ejemplo si yo quisiera darle 10 gigas más al volumen de gentoo ejecutaría:
lvextend -L+10G linux/gentoo
Tengan en cuenta que esto sólo aumenta el tamaño del volumen lógico y no del sistema de archivos, por lo que acto seguido tendríamos que aumentar ese tamaño también.
Además de agregar y modificar, también podemos eliminar un volumen lógico, grupo de volumen o disco físico se realiza con, lvremove
, vgremove
, pvremove
más la unidad, por ejemplo:
lvremove /dev/linux/ubuntu
Palabras finales
Luego de todo esto deberías ser capaz de crear un sistema con LVM, crear, extender y borrar volúmenes. Tengo que hacerles notar un par de cosas importantes antes de incursionar en este método:
- La reducción de volúmenes es posible, pero es muy complejo y riesgoso.
- LVM sólo puede ser utilizado sólo por Linux, ni siquiera los sistemas BSD pueden (ni hablar de Windows).
- De lo anterior también se desprende de que es mala idea si quieres acceder a tus archivos desde otro SO, a menos que dejes una partición aparte que no sea lvm para compartir los datos.
Espero que les haya resultado interesante y que le encuentren algún uso. Cualquier comentario o feedback en los comentarios.
[…] This post was mentioned on Twitter by Angelo G. Bernardi O and others. Angelo G. Bernardi O said: Blog: LVM en GNU/Linux. Parte II: Anatomía y acciones básicas: Lo siento mucho por tanta demora al retomar est… http://bit.ly/cvVSdt #fb […]
Me gustaMe gusta
Información Bitacoras.com…
Valora en Bitacoras.com: No hay resumen disponible para esta anotación…
Me gustaMe gusta
Brutal… sencillamente brutal.
Muchas gracias por semejante artículo.
Un saludo!
Me gustaMe gusta
Excelente… pero me queda una pregunta aunque creo que lo dice.. igual me tocaría cambiar el tamaño del Sistema de Archivos? como lo haria? sorry pero esa si no la se…
Me gustaMe gusta