LVM

Volúmenes lógicos LVM
Información sobre la plantilla
Concepto:Un LVM (Logical Volume Manager) es una implementacion de un administrador de volúmenes lógicos para el kernel de Linux.


Volúmenes lógicos LVM, es una implementación de un administrador de volúmenes lógicos para el kernel Linux. Se escribió originalmente en 1998 por Heinz Mauelshagen, que se basó en el administrador de volúmenes de Veritas usado en sistemas HP-UX.

Entendiendo que es un LVM

Si se instala algún sistema operativo Linux (Fedora, Debian, Red Hat, Centos , Ubuntu, Mandriva, Slackware) y se ha definido incorrectamente el tamaño adecuado para cada partición, una de tus particiones se queda sin espacio libre. La implementacion de los LVM facilitan la administración de los sistemas de almacenamiento. Un LVM (Logical Volume Manager) es una implementacion de un administrador de volúmenes lógicos para el kernel de Linux que permite:

   *Re-dimensionado de grupos lógicos
   *Re-dimensionado de volúmenes lógicos
   *Respaldos de lectura y escritura (solo para LVM2)
   *RAID0 de volúmenes lógicos.

LVM permite añadir mas espacio a esa partición de forma que no sea necesario tener que reinstalar el sistema operativo en un disco duro de mayor capacidad. Sino que se asocia un nuevo disco a la partición /home. Por lo que cuando un nuevo disco se añade al sistema, no es necesario mover los datos de los usuarios, simplemente se añade el nuevo disco al grupo lógico correspondiente y se expanden los volúmenes lógicos a todo lo que se considere adecuado, o bien se migran los datos de discos antiguos a otros nuevos de forma totalmente transparente al usuario.

Niveles de un LVM

Un LVM se divide en 5 niveles, estos son:

  1. Volúmenes Físicos o Physical Volumes
  2. Volúmenes Lógicos o Logical Volumes
  3. Grupos de volúmenes o Volume Groups
  4. Extensión Lógica o Logical Extents
  5. Extensión Física o Physical Extents

Volúmenes Físicos (Physical Volumes)

Son los discos duros físicos o particiones de un disco duro

Volúmenes Lógicos (Logical Volumes

Es el equivalente a una partición de un disco duro, por lo que puede contener un sistema de archivos como por ejemplo /home.

Grupos de volúmenes (Volume Groups)

Es la parte que engloba los volúmenes lógicos (Logical Volumes) y nuestros volúmenes físicos (Physical Volumes), es decir, es una especie de contenedor donde se sitúan los volúmenes lógicos (Logical Volumes) y los volúmenes físicos (Physical Volumes).

Extensión Lógica (Logical Extents)

Cada volumen físico esta divido en pequeños trozo de datos llamados extensión lógica(logical extents).

Extensión Física (Physical Extents)

Cada volumen físico(LV) esta divido en pequeños trozos datos que se llaman extensión física(physical extents), que es del mismo tamaño que una extensión lógica(LE).

Instalación y Configuración de un LVM

Instalando el paquete lvm

A partir de este punto se descargan los paquetes necesarios para configurar un equipo o servidor con LVM. La forma en que se instalara este paquete sera tecleando en un BASH lo siguiente:

[BASH] # yum install -y lvm2

Esto para distribuciones Linux derivadas de la familia Red Hat -> Fedora, CentOS, WhiteBox, Mepis Para instalarlo en distribuciones Linux de la familia Debian -> Ubuntu,Linux Mint y derivados sera de la siguiente forma:

[BASH] # aptitude install -y lvm2

Preparando el escenario LVM con fdisk

Ya instalado el paquete de LVM se configura el disco duro, para ello se usa el comando fdisk el cual servirá para primero asignar un espacio en el disco duro para el LVM en el cual posteriormente se crearán los tres niveles básicos de un LVM:

  1. .El Volumen Físico
  2. .El Grupo de Volúmenes
  3. .El Volumen Lógico

Suponiendo que existe la siguiente distribución de espacio en el siguiente disco duro hipotético. Donde hda es un disco duro de 20 GB el cual alberga la siguiente distribución

  • Raíz 10 Giga-bytes asignados
  • Swap 256 Megaabytes asignados
  • Boot 256 Megaabytes asignados
  • Espacio Libre 9.5 Giga-bytes de espacio libre

NOTA:La partición /boot no puede ser asignada a un LVM, esto debido a que el sistema de boteo de Linux no reconoce las particiones de LVM y por lo tanto no puede ser iniciado el proceso de arranque, se recomienda que esta partición quede separada.

El lugar donde se implementará el LVM será en el espacio libre del disco duro, para ello se hace uso del comando fdisk, el cual servirá para preparar la instalación del LVM. Fdisk es una aplicación disponible para Linux el cual permite dividir en forma lógica un disco duro, siendo denominado este nuevo espacio como partición. La sintaxis para lanzar esta aplicación es la siguiente:

[BASH]# fdisk /dev/[h|s] d [a|b|c]

Donde :

* h  	La letra 'h' hace referencia a un disco duro PATA. Eje: hd	
* s  	La letra 's' hace referencia a un disco duro SATA. Eje: sd	
* a  	La letra 'a' hace referencia al primer disco duro del equipo	
* b  	La letra 'b' hace referencia al segundo disco duro del equipo	
* c  	La letra 'c' hace referencia al tercer disco duro del equipo	

En este caso, se cuenta con un solo disco duro PATA en el equipo, por lo que se ejecuta fdisk de la siguiente manera:

[BASH]# fdisk /dev/hda Una vez que la aplicación esta iniciada, se presenta el siguiente mensaje: Command (m for help):

Con la tecla 'm' se imprimirá el menú con las herramientas propias del comando fdisk. Estas herramientas son:

 a  Conmuta el indicador de iniciable	
 b  Modifica la etiqueta de disco bsd	
 c  Conmuta el indicador de compatibilidad con DOS	
 d  Suprime una partición	
 l  Lista los tipos de particiones conocidos	
 m  Imprime este menú	
 n  Añade una nueva partición	
 o  Crea una nueva tabla de particiones DOS vacía	
 p  Imprime la tabla de particiones	
 q  Sale sin guardar los cambios	
 s  Crea una nueva etiqueta de disco Sun	
 t  Cambia el identificador de sistema de una partición	
 u  Cambia las unidades de visualización/entrada	
 v  Verifica la tabla de particiones	
 w  Escribe la tabla en el disco y sale	
 x  Funciones adicionales (sólo para usuarios avanzados)	

Con la opción "m" se imprime nuevamente este menú. Se seleccione del menú, la opción “Imprimir tabla de particiones”, para ello se teclea la letra 'p' , esto nos mostrará la distribución actual de nuestras particiones en nuestro disco duro.

Según el ejemplo se observe que

   *En /dev/hda1 esta la partición de /boot
   *En /dev/hda2 esta la partición de /
   *Y por ultimo en /dev/hda3 la memoria de intercambio 

Lo primero que se hace es crear una partición extendida, posteriormente se crea sobre la partición extendida la partición lógica, dicha partición contendrá el LVM.

ATENCION: En un disco IDE o SATA se puede crear únicamente hasta 3 particiones primarias en el disco duro. Si se requieren más particiones se puede crear una extendida y ahí seguir particionando (hasta un total de 60 particiones lógicas). Si se requieren más, no queda otra que utilizar un segundo disco duro. En el caso de un disco SCSI, éste admite hasta 15 particiones primarias.

Para agregar las particiones al disco duro se teclea la letra 'n'

  • n -> Añade una nueva partición al disco duro

El menú emergente preguntara si se quiere añadir una partición extendida o primaria, obviamente daremos de alta primero una partición extendida, para ello teclee la letra 'e' lo cual le indica al sistema que hemos elegido generar una partición extendida. Si te das cuanta, el sistema nos pregunto el espacio libre del disco duro que queremos ocupar para generar la partición extendida. Por default, la aplicación “fdisk” nos sugiere utilizar los valores predeterminados, estos valores corresponden al espacio libre del disco duro, estos valores son 1372 y 2610 (cilindros) los cuales corresponden al inicio y final del espacio libre disponible del disco. También podemos asignar manualmente estos valores, ya sea en cilindros o en unidades de Mega-bytes o Giga-bytes. El siguiente paso sera generar la partición lógica, para ello teclearemos nuevamente la letra 'n', los cual nos propondrá utilizar nuevamente los valores predeterminados del espacio disponible del disco duro, los cuales aceptamos nuevamente. Si eres observador habrás notado que 'fdisk' ya no pregunta si deseamos añadir una partición primaria o extendida, esto es debido a que ya tenemos generada una partición extendida y por default las nuevas particiones que sean generadas serán tratadas como particiones lógicas. Al terminar, revisa nuevamente la tabla de particiones del disco duro y verifica los cambios

Como se muestra en la imagen, fueron generadas dos nuevas particiones: /dev/hda4 Partición Extendida /dev/hda5 Partición LVM

Solo nos resta cambiar el identificador a la partición hda5 ya que este tiene asignado como identificador a “Linux” el cual es incorrecto ya que esta partición sera de tipo “LVM”.

Para hacerlo teclee la letra 't' , opción que nos servirá para cambiar el identificador a la partición /hda5

Command (m for help):t

Fdisk, nos preguntara a que partición queremos cambiar el ID, como ya sabemos sera a la partición hda5 o sea la partición 5., Como no conocemos el código hexadecimal para las particiones LVM lanzamos la ayuda para poder visualizar todos los códigos hexadecimales disponibles, para ello teclee la letra 'L' y localiza el código hexadecimal para las particiones LVM

El código hexadecimal para las particiones LVM es el siguiente:

8e Linux LVM

Una vez localizado el código hexadecimal, solo restara teclearlo.

Con esto habremos concluido la generación de la particiones extendidas y lógicas para nuestro LVM, solo nos restara guardar los cambios al disco Para guardar los cambios al disco teclee la letra 'w'. Solo restara reiniciar el equipo para que los cambios hechos al disco duro sean visibles. Manejo practico de LVM# Creando y destruyendo Volúmenes Físicos (PV)#

Para los ejemplos de las siguientes secciones entenderemos que el disco duro sobre el que estaremos trabajando sera /dev/hda. Lo primero que haremos para comenzar a crear y administrar un LVM sera iniciar el sistema operativo en el nivel de ejecución 1, para hacerlo teclee en consola lo siguiente:

[BASH]# init 1

Una vez terminado, procederemos a revisar el estado de las particiones que recien añadimos en el capitulo anterior. Para hacerlo usaremos nuevamente el comando fdisk, esto para obtener la configuración de la nueva tabla de particiones, para ello teclee lo siguiente:

sh-3.2# fdisk /dev/hda

Para imprimir la tabla de particiones simplemente teclee la letra 'p' Como podemos observar , tenemos la partición /dev/hda5 con su respectivo identificador de LVM, sera sobre esta partición sobre la cual crearemos el Volumen Físico de nuestro LVM. Para crear el volumen físico sobre la partición /dev/hda5 , ejecutaremos:

sh-3.2# pvcreate /dev/hda5

Listando volúmenes físicos (PV)#

Para verificar que se creo de manera correcta nuestro Volumen Físico ejecute

sh-3.2# pvdisplay

Borrando volúmenes físicos (PV)#

Si quisiéramos borrar el Volumen Físico que recien hemos creado ejecute

sh-3.2# pvremove /dev/hda5

El siguiente paso sera crear el Grupo de Volúmenes (VG) al cual pertenecerá nuestro Volumen Físico Creando y destruyendo Grupos de Volúmenes (VG)#

Para crear un grupo de volúmenes físicos, es decir, un almacén de espacio libre para nuestro Volumen Físico /dev/hda5, ejecutaremos:

sh-3.2# vgcreate serverLVM /dev/hda5

La palabra serverLVM es el nombre que yo asigne a mi Grupo de Volúmenes, usted puede asignar el nombre que mas le convenga.

Listando volúmenes físicos (VG)#

Para verificar que se creo de manera correcta nuestro Grupo de Volúmenes ejecute

sh-3.2# vgdisplay

Borrando volúmenes físicos (VG)#

Para borrar un grupo de volúmenes (VG) primero se deberá haber borrado cualquier volumen lógico (LV), de otra forma no se lograra borrar el grupo de volúmenes. Si quisiéramos borrar el Grupo de Volúmenes que recien hemos creado ejecute

sh-3.2# vgremove serverLVM

Con esta acción lograremos que los Volúmenes Físicos (PV) queden huérfanos y con ello podrán ser borrados o asignados a otro grupo de volúmenes El siguiente paso sera crear el Volumen Lógico (LV)

Creando y destruyendo Volúmenes Lógicos (LV)#

Para crear y agregar un Volumen Lógico (VG) a un Grupo de Volúmenes (VG) debemos tener en cuenta el espacio disponible en nuestro Grupo de Volúmenes (VG), usted puede verificar este valor ejecutando el siguiente comando:

sh-3.2# vgdisplay

Tome en cuenta el valor ubicado dentro del rectángulo en blanco Como podemos apreciar, tenemos un espacio de 9.49 Giga-bytes para implementar nuestros Volúmenes Lógicos Para crear y agregar un Volumen Físico (VG) a nuestro Grupo de Volúmenes (VG) serverLVM teclee lo siguiente:

sh-3.2# lvcreate -n HOME-LVM -L6G serverLVM

-n HOME-LVM

El parámetro -n indica que asignaremos un nombre a ese Volumen Lógico, en este ejemplo asignamos el nombre de HOME-LVM -L6G El parámetro -L indica la cantidad de espacio que utilizaremos para nuestro Volumen Lógico, en este ejemplo asignamos 6 Giga-bytes de los 9.49 Giga-bytes disponibles serverLVM Este parámetro indica a que Grupo de Volúmenes estamos asignando nuestro Volumen Lógico , es este ejemplo se lo estamos asignando a serverLVM Listando volúmenes lógicos (LV)#

Para verificar que se creo de manera correcta nuestro Volumen Lógico ejecute

sh-3.2# lvdisplay

Esta acción mostrara el siguiente mensaje:

Borrando volúmenes lógicos (LV)#

Para destruir un volumen lógico, siempre que este desmontado, ejecutaremos:

sh-3.2# lvremove /dev/serverLVM/HOME-LVM

Note que hay que indicar el camino completo al volumen, no basta solo con el nombre ya que podría haber volúmenes lógicos con el mismo nombre pero pertenecientes a distintos grupos de volúmenes. El siguiente paso sera dar formato a los Volúmenes Lógicos recien creados. Solo restara reiniciar el equipo para que los cambios hechos al disco duro sean visibles.

Utilizando los LVM# Dando formato a los volúmenes lógicos#

El siguiente paso sera dar formato al Volumen Lógico (VG) que recien creamos, para hacerlo haremos uso del comando mkfs. mkfs (“Make Filesystem”) es una herramienta estándar de Unix para formatear una partición de un disco duro con un especifico sistema de ficheros, pudiendo ser ext2, ext3, ext4, msdos, vfat, ntfs, reiserfs y xfs. La sintaxis básica de este comando es la siguiente:

mkfs.[ext2|ext3|ext4|msdos|vfat|ntfs|reiserfs|xfs] partición

Una vez entendido el concepto de mkfs pasaremos a dar formato a nuestro Volumen Lógico, recordemos que nuestro Volumen Lógico esta alojado en la siguiente ruta:

/dev/serverLVM/HOME-LVM

Daremos formato al Volumen Lógico de la siguiente manera:

sh-3.2# mkfs.ext3 /de/serverLVM/HOME-LVM

Lo cual deberá arrojar el siguiente mensaje: Montando la partición de /home en el Volumen Lógico#

1.El primer paso sera crear la carpeta en la cual montaremos nuestra partición de /home. Naturalmente, el lugar donde crearemos esta carpeta sera en la partición de /mnt lo cual haremos de la siguiente forma

[BASH]# mkdir /mnt/HOME-LVM

2.El segundo paso sera montar el Volumen Lógico en la carpeta que recien creamos

[BASH]# mount -v /dev/serverLVM/HOME-LVM /mnt/HOME-LVM

3.El siguiente paso sera copiar el contenido de la partición /home a la carpeta donde tenemos montado el Volumen Lógico, para ello usaremos el siguiente comando:

[BASH]# cp -Ra/home/* /mnt/HOME-LVM

Opciones Descripción cp Copia el fichero o carpeta -R La opción -R indica que copiara recursivamente el contenido de una carpeta -a La opción -a indica que preservara los permisos y enlaces simbólicos de cada fichero

4.A continuación moveremos el contenido de la carpeta /home a otra carpeta, el nombre que yo asigne a esta carpeta sera “oldhome”

[BASH]# mkdir /oldhome

[BASH]# mv /home/ /oldhome/}}} El motivo de esta acción es porque nuestra nueva /home sera la ubicada en la partición de /mnt/LVM-HOME.

5.Solo nos restara indicar al sistema que nuestra nueva /home sera montada en /mnt/LVM-HOME para ello abra y agregue al fichero /etc/fstab la siguiente linea

[BASH]# vi /etc/fstab

Device Montaje F.type M.Options

DF 


PN 


LABEL=/1 / ext3 defaults 1 1 LABEL=/boot1 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/serverLVM/HOME-LVM /home ext3 defaults 0 2 LABEL=SWAP-hda3 swap swap defaults 0 0 Opciones Descripción Device Este campo especifica la partición del sistema de ficheros, por ejemplo /dev/hda1. Este campo no puede contener el dispositivo entero (/dev/sda) Montaje Aquí se introduce el directorio donde se quiere que el dispositivo sea montado. Por ejemplo si la partición /dev/hda1 tiene el sistema de ficheros root, donde está el sistema se montará en / Filesystem type En este campo se indica que tipo de partición se trata, ext2, ext3, ext4, reiserfs, swap, iso9660 Mount options Opciones de Escritura, Lectura y ejecución Dump Frecuency El programa dump consulta la entrada del /etc/fstab para ver cada cuanto tiempo debe hacer el backup. Normalmente tiene el valor 1 para filesystems basados en ext2y ext3 y 0 para los demás. Pass Number para el fsck Este campo es usado por la utilidad fsck cuando la opción -A se especifica, normalmente en tiempo de arranque. Tiene valores: 0 - No chequear el sistema 1 - Debe ponerse para el filesystem root (/) y ordena al fsck a chequearlo primero 2 - Hace el chequeo de la unidad, después del chequeo de los marcados con un 1 Expandiendo Volúmenes Lógicos#

Expandir un Volumen Lógico(LV) es sencillo, para ello primero tendremos que verificar el espacio disponible en el Grupo de Volúmenes (VG), para ello teclee lo siguiente:

Nota: Esto debe ejecutarse en el nivel de ejecución 1

[BASH]# vgdisplay

Esta acción desplegara información acerca del Grupo de Volúmenes, tendremos que poner atención a la siguiente linea ya que esta nos informara el espacio disponible en el disco duro

Free PE/ Size 893 / 3,49 GB

Como podemos observar tanto en el recuadro en negro como en el recuadro en gris observamos que tenemos 3.49 GB de espacio disponible, por lo que expandiremos nuestro Volumen Lógico (VG) a 3 GB, para ello solo debemos teclear el siguiente mandato.

[BASH]# lvresize -L 3G /dev/serverLVM/HOME-LVM

Con esta acción habremos añadido el tamaño al Volumen Lógico (VG), por lo que ahora tendremos que hacer coincidir el sistema de archivos, en este caso EXT3 con el nuevo tamaño del volumen lógico, por lo que tenemos que hacer lo siguiente

[BASH]# resize2fs /dev/serverLVM/HOME-LVM

Ahora para comprobar que todo ha ido bien, ejecutamos el siguiente comando:

[BASH]# lvdisplay

LV Size 9.00 GB (Y nos fijamos en este valor) }}}

Con lo que podemos observar que ahora tenemos 9 GB asignados a nuestro directorio /home, y ya no tendremos problemas de espacio en dicho directorio. Reduciendo Volúmenes Lógicos#

Como es natural con el paso del tiempo puede darse el caso que tengamos un Volumen Lógico (VG) que no necesite parte del espacio que habíamos reservado en un principio, y por lo tanto queramos quitar un trozo de ese Volumen Lógico (VG) para tenerlo disponible para asignarlo a otro de nuestros discos. Supongamos que tenemos que nuestra partición /home tiene demasiado espacio y queremos reducir el tamaño de dicho directorio la cual actualmente posee 9 GB de disco y queremos quitar 3 GB, con lo que nos quedaremos con 6 GB Lo primero que tenemos que hacer es verificar la información disponible en el Grupo de Volúmenes (VG), por lo tanto ejecutaremos el siguiente comando para comprobar cuanto espacio tenemos:

   Nota: Esto debe ejecutarse en el nivel de ejecución 1

[BASH]# lvdisplay /dev/serverLVM/HOME-LVM

LV Size 9.00 GB (Y nos fijamos en este valor)}}} Ahora que conocemos el tamaño exacto vamos a reducir el volumen lógico, para eso tenemos que hacer:

[BASH]# resize2fs /dev/serverLVM/HOME-LVM 6GB

[BASH]# lvreduce -L -3G /dev/serverLVM/HOME-LVM (Reducimos el volumen lógico)}}}

Con lo que ya tendremos nuestro volumen lógico reducido, ahora para comprobar que el proceso a funcionado correctamente volvemos a ejecutar el mismo comando de antes y observamos que el nuevo tamaño es 30 GB:

[BASH]# lvdisplay /dev/serverLVM/HOME-LVM

[BASH]# LV Size 6.00 GB (Y nos fijamos en este valor)}}}


Fuentes