Apéndice C: LVM¶
Presentaremos ahora una serie de herramientas que son muy útiles a la hora de desplegar entornos virtualizados, desde la gestión de discos hasta la construcción y manejo de instancias de máquinas virtuales.
LVM¶
LVM (Logical Volume Manager) [1] es un sistema del núcleo de Linux para virtualizar la gestión de los dispositivos de almacenamiento. Permite añadir y eliminar discos a un grupo, crear volúmenes lógicos dentro de un grupo y cambiar su tamaño dinámicamente sin interrumpir el funcionamiento.
[1] | http://sources.redhat.com/lvm/ |
La mayoría de las distribuciones incluyen el soporte para LVM en el núcleo por defecto así que, en todo caso, sería necesario tener el paquete lvm2 instalado para poder ser utilizado en nuestro sistema.
Para configurar LVM procederemos en primer lugar a formatear los discos con el tipo de partición específico de Linux LVM (8E). Sobre estas particiones (que pueden ocupar la totalidad del disco o no) crearemos uno o más grupos. Un grupo puede estar formado por varios discos (particiones) físicos. Dentro de cada grupo se pueden crear uno o varios volúmenes lógicos.
En este ejemplo tenemos un grupo vdisk sobre 3 discos físicos sda1, sdb1 y sdc1. Este grupo tiene dos volúmenes srv y var.
Utilizar LVM tiene sentido incluso cuando tenemos un único disco duro en el sistema, pues nos permitirá cambiar dinámicamente el tamaño de las particiones donde guardamos los datos. E incluso alargar el tamaño de nuestro sistema dinámicamente si añadimos nuevos discos físicos.
Una configuración típica de LVM es instalar el sistema en una partición pequeña (unos 4GB) ext3 al principio del disco y usar el resto para una partición con un volumen físico LVM en un grupo donde repartimos el espacio para puntos de montaje donde residen datos que esperamos que varíen a lo largo del tiempo como /var, /srv o /home.
Ejemplos prácticos¶
Ejemplo práctico A¶
Configuración de LVM:
user@host:~$ sudo aptitude update
user@host:~$ sudo aptitude install lvm2 xfsprogs
user@host:~$ sudo cfdisk /dev/sda
- Nos dirigimos a Free Space ‣ New ‣ Primary, (todo el espacio).
- Posteriormente vamos a Type, pulsamos enter y luego 8E.
- Más tarde, nos situamos en Write y pulsamos yes.
- Finalmente, salimos con Quit.
Reiniciamos el sistema para releer la tabla de particiones, aunque esto también podría hacerse con kpartx:
user@host:~$ sudo pvcreate /dev/sda4
user@host:~$ sudo pvdisplay
user@host:~$ sudo pvdisplay -C
user@host:~$ sudo vgcreate vdisk /dev/sda4
user@host:~$ sudo vgdisplay
user@host:~$ sudo vgdisplay -C
user@host:~$ sudo lvcreate vdisk --name home --size 3G
user@host:~$ sudo lvcreate vdisk --name srv --size 1.7G
user@host:~$ sudo lvdisplay
user@host:~$ sudo lvdisplay -C
user@host:~$ sudo lvremove vdisk/srv
user@host:~$ sudo lvdisplay -C
user@host:~$ sudo lvcreate vdisk --name srv --size 1G
user@host:~$ sudo mkfs.xfs /dev/vdisk/srv ; sudo mkfs.xfs /dev/vdisk/home
user@host:~$ sudo mount -t xfs /dev/vdisk/srv /srv
user@host:~$ df -h
user@host:~$ sudo lvextend /dev/vdisk/srv -L+0.7G
user@host:~$ sudo xfs_growfs /srv
user@host:~$ df -h
añadimos a /etc/fstab:
/dev/mapper/vdisk-srv /srv xfs noatime 0 2
/dev/mapper/vdisk-home /home xfs noatime 0 2
user@host:~$ sudo mount -a
Para más información sobre LVM puede ir a http://www.howtoforge.com/linux_lvm
Ejemplo práctico B¶
Creación de una máquina virtual con vmbuilder:
user@host:~$ sudo aptitude install ubuntu-vm-builder
user@host:~$ sudo vmbuilder kvm ubuntu --suite hardy --arch i386
user@host:~$ cd ubuntu-kvm ; \
qemu-img convert -f qcow2 disk0.qcow2 -O raw disk0.raw
user@host:~/ubuntu-kvm$ vboxmanage convertdd disk0.raw disk0.vdi