Instalar Debian 8 con particionado LVM Parte 1
Instalar Debian 8 con particionado LVM...
Como
parte de está serie de tutoriales, para novatos vamos a ver el proceso
de instalado de Debian 8, pero utilizando LVM (Logical Volume Manager) Además nos servirá esta instalación para instalar posteriormente Xen y para-virtualizar máquinas.
He de aclarar como en todos mis articulos, el significado de un nuevo acrónimo, en este caso LVM,
Los bloques principales que conforman LVM son los volúmenes físicos o physical volumen (PV), los grupos de volúmenes o volume group (VG) y los volúmenes lógicos o logical volume (LV).
Para entender bien que es cada uno de estos bloques tendremos en cuenta a un volumen físico (PV) como si de un disco duro físico se tratase, ya que puede ser una sola parte de un disco, un disco completo o incluso mas de un disco. Están formados por extensiones físicas o physical extent (PE). Cuando ya tenemos definida una porción de disco, este completo o mas de un disco físico como un PV, deberemos de crear sobre este uno o varios grupos de volúmenes (VG) que los entenderemos como una unidad de disco sobre la que crearemos una o mas particiones, en este caso volúmenes lógicos (LV).
Veremos esto mejor ejemplarizado en la siguiente imagen en la que se muestra los dispositivos /dev/sda (130GB) con dos particiones (/dev/sda1 y /dev/sda2) y /dev/sdb (120GB) con tan solo una partición (/dev/sdb1). Si creáramos un volumen físico en cada una de las particiones de los discos y posteriormente asociáramos estos tres PV con un grupo de volúmenes sumaríamos un total de 250GB que serían tratados como una sola unidad física. Entonces, nos quedaría un VG “My Storage” sobre los tres PV y sobre el “My Storage” tres particiones; una para root (la raíz del sistema) con nombre rootvol, otra para los home de los usuarios (homevol) y por último una para almacenamiento (medialvol).
Nota: evidentemente tanto los nombres de los volúmenes lógicos como del grupo de volúmenes y volumen físicos son personalizados.

LVM aporta numerosas ventajas y no tantas desventajas. Un inconveniente importante de LVM es no respetar el principio KISS (Keep it simple stupid) lo que significa que quizás nos estemos complicando la vida sin motivo, ya que podríamos recurrir a un particionamiento estándar del disco con sus correspondientes particiones primarias, extendidas, etc…. Otra limitación es si estamos usando GRUB Legacy, que nos veremos obligados a crear una partición independiente a LVM (/boot) donde instalaremos el gestor de arranque, no así para aquellos que utilicen GRUB.
Si no es nuestro caso, puesto que vamos a necesitar una gran independencia con respecto al tamaño de los discos y particiones (probablemente necesitemos aumentar el tamaño de las particiones considerablemente con el paso del tiempo teniendo incluso que añadir nuevos discos al sistema) nos beneficiaremos de las siguientes ventajas:
- Poder tratar varios discos físicos como uno solo
- Tener una partición de tamaño superior al tamaño de un disco físico
- Modificar el tamaño de las particiones (volúmenes lógicos)
- No depender de la posición de la partición (volumen lógico, LV) en el disco para redimensionarla
- Modificar la estructura de almacenamiento: añadir o redimensionar los PV, crear/eliminar nuevos VG y LV, etc…
- Crear snapshot del sistema de archivos
Administrar LVM
A continuación vamos a partir desde cero suponiendo que tenemos un dispositivo físico de 160GB (/dev/sdb) sobre el que vamos a crear una partición primaria que ocupe todo el disco (/dev/sdb1) y se la asignaremos a un PV, por lo que ya tendremos un volumen físico PV de 160GB. Posteriormente crearemos un grupo de volúmenes llamado myvolgrup al que le asignaremos este volumen físico.Con un VG al que le hemos asignado nuestro PV de 160GB procederemos a crear nuevos LV sobre este. En nuestro caso vamos a crear tres volúmenes lógicos o LV; lvroot, lvhome y lvopt.
Una vez creado los tres LV les daremos formato y entonces tendremos ya todo listo para trabajar sobre el disco.
Nota: Si en un futuro se nos queda corto los 160GB, podremos insertar otro dispositivo en el sistema (por ejemplo /dev/sdc), crea una partición sobre este y asignársela a otro PV. Luego extenderemos el VG sobre este nuevo PV obteniendo así el nuevo espacio sobre el que podremos crear nuevos LV o redimensionar algunos ya existentes.
Crear un PV
Lo primero que haremos será insertar el dispositivo (en nuestro caso es externo), ver de que unidad se trata, particionarlo con fdisk y asignarle su correspondiente tipo: 8e si usamos MBR o 8e00 si estamos utilizando GPT (para lo que deberíamos utilizar el comando parted si queremos particionar el disco).Nota: Para particionar el dispositivo y asignarle su tipo correspondiente podéis visitar la siguiente entrada donde aprendimos a particionar un disco.
Una vez tenemos el dispositivo con su correspondiente partición y tipo asignado, crearemos el volumen físico o PV.
Aviso: Para trabajar con LVM deberemos de tener el paquete lvm2 instalado:
$ sudo yum install lvm2 ## RPM
$ sudo apt-get install lvm2 ## DebianAhora utilizaremos el siguiente comando para ver que dispositivos están disponible para ser usados por LVM, pero antes nos vamos a pasar al usuario root para trabajar desde ahora en adelante como usuario administrador:
nebul4ck@LiMinCinn ~ $ sudo su -
root@LiMinCinn ~ # lvmdiskscan ... /dev/sdb1 [ 149,05 GiB] ... 0 disks 21 partitions 0 LVM physical volume whole disks 0 LVM physical volumesAhora sobre nuestra partición /dev/sdb1 vamos a crear nuestro PV:
LiMinCinn ~ # pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully createdPodemos ver como ha quedado nuestro PV con el siguiente comando:
LiMinCinn ~ # pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name myvolgrp PV Size 149,05 GiB / not usable 2,84 MiB Allocatable yes PE Size 4,00 MiB Total PE 38156 Free PE 38156 Allocated PE 0 PV UUID FwqIph-G94B-fMHa-uZ4M-nCou-NSR8-iDe9sl
Crear el grupo de volúmenes
Bien, ahora vamos a crear un grupo de volúmenes (VG) al que le asignaremos nuestro PV y sobre el que crearemos los tres volúmenes lógicos (LV)LiMinCinn ~ # vgcreate myvolgrp /dev/sdb1 Volume group "myvolgrp" successfully createdNota: Algo común es quedarse sin espacio y tener que redimensionar el grupo de volúmenes. Para ello insertaremos un nuevo dispositivo particionado, crearemos un PV sobre el y extenderemos el grupo de volúmenes a ese nuevo PV:
LiMinCinn ~ # vgextend myvolgrp /dev/sdc1Ventaja: Si de entrada ya contamos con dos o tres dispositivos físicos con sus correspondientes PV ya creados, podremos crear un grupo de volúmenes que abarque los tres PV tal que así:
LiMinCinn ~ # vgcreate myvolgrp /dev/sda2 /dev/sdb1 /dev/sdcPodremos ver como ha quedado nuestro VG con el siguiente comando:
LiMinCinn ~ # vgdisplay --- Volume group --- VG Name myvolgrp System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 149,05 GiB PE Size 4,00 MiB Total PE 38156 Alloc PE / Size 0 / 0 Free PE / Size 38156 / 149,05 GiB VG UUID JL0lSd-RBJK-Aj1E-vh2u-m3cy-mKjh-weMLZu
Crear volúmenes lógicos
Bueno ya estamos a pocos pasos de terminar de crear nuestra nueva estructura de almacenamiento LVM, por lo que lo siguiente que haremos será crear los tres volúmenes lógicos o LV en nuestro grupo de volúmenes myvolgrp:LiMinCinn ~ # lvcreate -L 15G myvolgrp -n lvroot Logical volume "lvroot" created LiMinCinn ~ # lvcreate -L 100G myvolgrp -n lvhome Logical volume "lvhome" createdLa sintaxis es sencilla, basta con indicar el tamaño (-L) con su correspondiente unidad de medida (en este caso el Giga, G), el grupo de volúmenes y por último el nombre (-n) que le vamos a dar a nuestro LV.
Podríamos además indicar un PV específico sobre el que queremos crear el LV, por ejemplo si en nuestro caso /dev/sdb1 fuese un disco SSD sobre el que nos conviene instalar el sistema operativo por tema de rendimiento (partición root, lvroot) podríamos especificarlo tal que así:
LiMinCinn ~ # lvcreate -L 15G myvolgrp -n lvroot /dev/sdb2 Logical volume "lvroot" createdTal vez no queramos esto, si no que deseemos que un LV ocupe el tamaño completo disponible del grupo de volúmenes. Para tal caso haremos lo siguiente:
LiMinCinn ~ # lvcreate -l +100%FREE myvolgrp -n lvopt Logical volume "lvopt" createdPues listo ya tenemos nuestros tres volúmenes lógicos ocupando el total de nuestro actual grupo de volúmenes myvolgrp. Podremos visualizar los LV tal que así:
LiMinCinn ~ # lvdisplay --- Logical volume --- LV Path /dev/myvolgrp/lvroot LV Name lvroot VG Name myvolgrp LV UUID sahMOr-enBj-vqDj-GMr2-qr5r-4WCJ-u6HOMN LV Write Access read/write LV Creation host, time LiMinCinn, 2015-09-18 20:04:07 +0200 LV Status available # open 0 LV Size 15,00 GiB Current LE 3840 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/myvolgrp/lvhome LV Name lvhome VG Name myvolgrp LV UUID tVcwbq-g72Q-p9GP-ztWm-pU7z-3bPk-Z0Ddi3 LV Write Access read/write LV Creation host, time LiMinCinn, 2015-09-18 20:11:22 +0200 LV Status available # open 0 LV Size 100,00 GiB Current LE 25600 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 --- Logical volume --- LV Path /dev/myvolgrp/lvopt LV Name lvopt VG Name myvolgrp LV UUID XGWHj1-hrea-WI4a-ofU6-hIa5-oK6d-WxbqUP LV Write Access read/write LV Creation host, time LiMinCinn, 2015-09-18 20:12:21 +0200 LV Status available # open 0 LV Size 34,05 GiB Current LE 8716 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:2Nota: Es posible que deba cargar el módulo del kernel device-mapper para que las órdenes anteriores tengan éxito.
# modprobe dm-modRecomendación : Es conveniente crear volúmenes lógicos de pequeño tamaño (si solo contamos con un disco), de manera que nos quede espacio libre en el grupo de volúmenes por si en un futuro fuese necesario crear nuevos volúmenes lógicos o redimensionar según demanda uno u otro ya existente.
Crear los sistema de archivos
Ahora ya tenemos nuestras tres particiones, para hacer uso de ellas deberemos de formatearlas y posteriormente montarlas en el sistema.Para formatear una partición lógicamente deberemos de saber cual y donde se encuentra. Por defecto LVM crea las particiones bajo /dev/mapper/<nombre_grupo_volumen>-<nombre_volumen_logico> y /dev/<nombre_grupo_volumen>.
Podemos obtener esta información de distintas formas por ejemplo tal que así:
LiMinCinn ~ # ls /dev/myvolgrp/ lvhome lvopt lvrootPor lo que ya sabremos que se trata de /dev/myvolgrp/lvroot, /dev/myvolgrp/lvhome y /dev/myvolgrp/lvopt.
O bien si queremos una información mas detallada podremos usar fdisk:
LiMinCinn ~ # fdisk -lIMPORTANTE: Si no nos aparece los dispositivos quizás necesitemos cargar el módulo dm-mod y activarlos:
LiMinCinn ~ # modprobe dm-mod ## Cargamos el módulo LiMinCinn ~ # vgscan ## Buscamos los grupos de volúmenes Reading all physical volumes. This may take a while... Found volume group "myvolgrp" using metadata type lvm2 LiMinCinn ~ # vgchange -ay ## Activamos los grupos de volúmenes 3 logical volume(s) in volume group "myvolgrp" now activeBien ahora que ya conocemos los dispositivos, vamos a darles formato. lvroot lo vamos a formatear con EXT4 mientras que lvhome y lvopt serán formateados con XFS:
LiMinCinn ~ # mkfs.ext4 /dev/mapper/myvolgrp-lvroot
LiMinCinn ~ # mkfs.xfs /dev/mapper/myvolgrp-lvhome
LiMinCinn ~ # mkfs.xfs /dev/mapper/myvolgrp-lvopt
Montar los LV
Ahora montaremos los volúmenes lógicos en los directorios correspondientes:LiMinCinn ~ # mount /dev/mapper/myvolgrp-lvroot /
LiMinCinn ~ # mount /dev/mapper/myvolgrp-lvhome /home
LiMinCinn ~ # mount /dev/mapper/myvolgrp-lvopt /opt
Terminando
Bueno quizás en nuestro caso no necesitemos montar nada, puede que hayamos creado esta estructura para posteriormente instalar un sistema operativo sobre ella.En caso de correr un sistema sobe esta estructura deberemos de tener en cuenta alguna cuestiones, como por ejemplo los parámetros del kernel para el arranque, donde deberemos de indicar que root= corresponde a nuestra partición /dev/mapper/myvolgrp-lvroot o incluso crear los hook lvm2 en mkinitcpio.conf y nuestro initramfs. Podemos aprender mas sobre la instalación de mkinitcpio (siguiente generación a initramfs) en este link.
Nota: Lo segundo seguramente no sea necesario cuando instalemos un sistema sobre nuestro LVM
Para no alargar mas esta entrada, en una siguiente veremos como realizar operaciones avanzadas sobre esta estrcutura LVM ya creada, como por ejemplo: añadir nuevos dispositivos o dimensionar particiones para extender o crear nuevos PV, extender nuestro grupo de volúmenes sobre estos, crear, redimensionar y borrar volúmenes lógicos, etc…
Comentarios