Gentoo Logo

Renuncia de responsabilidad: La versión original de este artículo fue publicada por IBM developerWorks y es propiedad de Westtech Information Services. Este documento es una versión actualizada del artículo original y contiene mejoras introducidas por el Equipo de Documentación de Gentoo.
Este documento carece de soporte activo.


Aprender LVM Linux, Parte 1

1.  Gestión de almacenamiento mágica con el Administrador de Volúmenes Lógicos

Introducción a LVM

En estas series, voy a mostrar cómo instalar y usar el nuevo Administrador de Volúmenes Lógicos integrado en el núcleo 2.4. Si nunca se ha usado ningún tipo de LVM anteriormente, he de decir que es una tecnología maravillosa. Antes de que tengamos LVM instalado y en funcionamiento, voy a explicar con exactitud lo que es y cómo funciona. Entonces estaremos listos para probar LVM y conseguir sacarle el máximo partido.

De ser como yo, nuestra experiencia con UNIX y Linux comenzó con una plataforma PC, en lugar de grandes servidores o estaciones de trabajo UNIX comerciales. En un PC básico, siempre hemos tenido que andar particionando nuestros discos duros. La gente acostumbrada a usar un PC normalmente conoce y sabe utilizar utilidades de tipo fdisk, que se usan para crear y borrar particiones primarias o extendidas en los discos duros. Crear particiones en los discos duros es molesto, pero se acepta como parte de poder poner un sistema operativo en funcionamiento.

Crear particiones en los discos duros puede ser molesto porque para hacerlo realmente bien se necesita estimar perfectamente el espacio necesitado para cada partición. Si la estimación que hicimos de las mismas no es adecuada, nuestro sistema Linux se ahogará sin espacio -- para resolver el problema, puede ser necesario realizar una copia de seguridad de todo el sistema, limpiar por completo el disco duro (incluidas las particiones) y restaurar la copia de seguridad con un nuevo (supongamos que mejor) esquema de particiones. ¡Esto es precisamente lo que todo administrador de sistemas trata de evitar en primer lugar!

Mientras que las particiones fueron una vez lugares estáticos de almacenamiento, afortunadamente, ahora tenemos muchas utilidades para reparticionar los discos duros (Partition Magic de PowerQuest es una de las más conocidas). Estas utilidades permiten reiniciar el sistema con un disco especial y cambiar el tamaño de nuestras particiones y sistemas de ficheros. En cuanto reiniciemos, tendremos nuevas particiones con un tamaño distinto, liberándonos del problema. Estas utilidades para cambiar el tamaño de las particiones son extraordinarias para resolver los problemas de almacenamiento. ¿Pero son perfectas? No exactamente.

Las herramientas como Partition Magic son muy buenas para estaciones de trabajo pero no son adecuadas del todo para servidores. En primer lugar, requieren reiniciar el sistema. Esto es algo que la mayoría de administradores de sistemas tratan de evitar a toda costa. ¿Qué ocurre si no podemos reiniciar el sistema cada vez que necesitamos cambiar la capacidad de almacenamiento del sistema de ficheros?, ¿qué ocurre si no podemos reiniciar el sistema cada vez que nuestras necesidades de almacenamiento cambian, como cuando cambian dramáticamente de una semana a otra?, ¿qué ocurre si necesitamos expandir un sistema de ficheros más allá de una sola unidad de disco? o ¿qué hacemos si necesitamos expandir o reducir dinámicamente la capacidad de un volumen permitiendo a Apache que continúe sirviendo páginas Web? En un entorno dinámico de alta disponibilidad, una herramienta básica para cambiar el tamaño de las particiones sencillamente no funcionará. Para estas y otras situaciones, el Administrador de Volúmenes Lógicos es una excelente (si no perfecta) solución.

Introducción a LVM

Ahora, echemos un vistazo a cómo LVM soluciona estos problemas. Para crear un volumen lógico LVM, seguimos un proceso en tres pasos. Primero, necesitamos seleccionar los recursos de almacenamiento físico que van a ser usados con LVM. Normalmente son particiones estándar, pero pueden ser también volúmenes RAID que hayamos creado. En la terminología LVM, a estos recursos de almacenamiento se les denomina "volúmenes físicos". Nuestro primer paso al configurar LVM involucra la inicialización adecuada de dichas particiones para que puedan ser reconocidas por el sistema LVM. Esto conlleva indicar el tipo correcto de partición si estamos añadiendo una partición física y ejecutar el comando pvcreate.

Una vez que tenemos uno o más volúmenes físicos inicializados para ser usados con LVM, damos el segundo paso -- crear un grupo de volumen. Podemos pensar en un grupo de volumen como un conjunto de almacenamiento que consiste en uno o más volúmenes físicos. Mientras que LVM está funcionando, podemos añadir volúmenes físicos al grupo de volumen o bien quitarlos. De todas formas, no se puede montar o crear sistemas de ficheros en un grupo de volumen directamente. En su lugar, podemos indicarle a LVM que cree uno o más "volúmenes lógicos" usando nuestro conjunto de almacenamiento del grupo de volumen:


Ilustración 1.1: Creación de un grupo de volumen a partir de volúmenes físicos

Fig. 1

Crear un volumen lógico LVM es muy sencillo, y una vez que está creado podemos ir adelante y poner un sistema de ficheros en el mismo, montarlo, y empezar a usar el volumen para almacenar nuestros ficheros. Para crear un volumen lógico usamos el comando lvcreate, especificando el nombre de nuestro nuevo volumen, el tamaño que queremos que tenga el volumen, y el grupo de volumen del cual queremos que forme parte este nuevo volumen lógico. El sistema LVM localizará entonces el almacenamiento para el grupo de volumen que especifiquemos y creará nuestro nuevo volumen, que estará listo para poderse usar a partir de ahora. Una vez creado, podemos poner un sistema de ficheros ext2 o ReiserFS en el mismo, montarlo y usarlo como queramos.


Ilustración 1.2: Creación de dos volúmenes lógicos desde nuestro grupo de volumen existente

Fig. 2

Extents

En un segundo plano, el sitema LVM está localizando el almacenamiento en "fragmentos" del mismo tamaño, denominados extents. Podemos especificar el tamaño específico del extent a usar en el momento de crear el grupo de volumen. El tamaño por defecto de un extent es de 4Mb, que es perfecto para la gran mayoría de usos. Una de las maravillas de LVM es que la localización del almacenamiento físico de los extents usados por uno de nuestros volúmenes lógicos (en otras palabras, el disco en el que se almacenan) puede cambiarse dinámicamente mientras nuestro volumen lógico está montado y en uso. El sistema LVM se asegura de que nuestros volúmenes lógicos continúen funcionando perfectamente mientras permiten al administrador cambiar físicamente la localización de todo lo que se almacene.

Por supuesto, dado que todo se crea a partir de extents del mismo tamaño, es muy fácil localizar extents adicionales para un volumen lógico ya existente -- en otras palabras, hacer "crecer" dinámicamente el volumen:


Ilustración 1.3: Añadiendo extents adicionales desde nuestro grupo de volumen, para expandir el tamaño de nuestro volumen lógico

Fig. 3

Una vez que se ha expandido el volumen lógico, puede expandirse el sistema de ficheros ext2 o ReiserFS para que aprovechen el nuevo espacio. Si se usa un programa como resize_reiserfs, la expansión del sistema de ficheros puede llevarse a cabo mientras el volumen está montado y en uso. ¡Realmente apasionante! -- con LVM y utilidades de expansión del sistema de ficheros, deja de ser necesario reiniciar el sistema, o pasar al nivel de ejecución 1 para cambiar la configuración de nuestro almacenamiento.

La única vez que será necesario apagar el sistema es cuando necesitemos añadir nuevos discos duros. En cuanto los hayamos añadido, pueden añadirse estos nuevos volúmenes físicos a nuestro(s) grupo(s) de volumen para crear un nuevo suministro de extents.

Configuración de LVM

Bien, vamos a instalar LVM. LVM consiste en dos partes: una parte relacionada con el núcleo y otra que es el conjunto de herramientas para el usuario. Para empezar, consultemos la página principal de LVM (ver Recursos más adelante en este artículo) y descargar el tarball de la versión más reciente de LVM (actualmente lvm_0.9.1_beta3.tar.gz) que podamos encontrar. El tarball de LVM contiene todas las herramientas para el usuario, así como un montón de parches para el núcleo. Aquí es donde las cosas empiezan a ser muy interesantes.

Si se tiene aún un núcleo de la serie 2.4 instalado, puede tenerse ya el soporte de LVM disponible en nuestro sistema, y si no, es un sencillo asunto de recompilar el núcleo para habilitar el soporte LVM. De todos modos, puede no quererse usar el soporte LVM incluido con un núcleo genérico (o proporcionado con una distribución) de la serie 2.4. Si quiere usarse la última versión de LVM, tendremos que aplicar los parches del tarball LVM al árbol del código fuente del núcleo 2.4. He aquí cómo hacerlo.

Para empezar, entramos en el directorio del código fuente del núcleo (/usr/src/linux) y creamos un directorio llamado extras. Entonces, cambiamos a este directorio y extraemos el tarball de LVM:

Listado de Código 1.1: Extracción de parches

# cd /usr/src/linux
# mkdir extras
# cd extras
# tar xzvf /ruta/a/la/localización/de/lvm_0.9.1_beta3.tar.gz

En cuanto hagamos esto, notaremos que se ha creado un nuevo directorio en extras que se llama LVM y contiene otro directorio que tendrá la versión de LVM que hemos descomprimido. Entramos en esos dos directorios para encontrar el código fuente de LVM:

Listado de Código 1.2: Obtener el código fuente de LVM

# cd LVM/0.9.1_beta3
# ls
ABSTRACT      COPYING      INSTALL     Makefile     README    autoconf      config.status  kernel         make.tmpl.in
CHANGELOG     COPYING.LIB  KNOWN_BUGS  Makefile.in  TODO      config.cache  configure      lvm_input_msg  scripts
CONTRIBUTORS  FAQ          LVM-HOWTO   PATCHES      WHATSNEW  config.log    configure.in   make.tmpl      tools

Veremos varios archivos de texto, macros y los directorios del código fuente. Encontraremos las instrucciones de instalación en el archivo INSTALL; trataré de guiar en dicho proceso. Primero, debemos ejecutar la macro configure, como sigue:

Listado de Código 1.3: Configurar el código fuente de LVM

# ./configure --prefix=/ --mandir=/usr/man

Parcheado

Después de ejecutar dicho comando, los archivos Makefile se crearán y se configurarán para instalar todas las herramientas LVM en /sbin y las páginas de manual en /usr/man. Si las páginas del manual se encuentran en /usr/share/man (de acuerdo con FHS 2.1), entonces debemos configurar la ruta anterior conforme a esa ruta. Por supuesto, si la ruta hacia el código fuente del núcleo no se encuentra en /usr/src/linux, entonces tendremos que añadir la opción --with-kernel_dir=/ruta/a/usr/src/linux al comando también. En cuanto la macro configure concluya, estaremos listos para instalar las herramientas y generar un parche para el núcleo actual. Vamos a parchear el núcleo primero. Entremos en el directorio PATCHES:

Listado de Código 1.4: Cambiar al directorio adecuado

# cd PATCHES

Ahora, vamos a teclear make. El archivo Makefile generará un parche específico para nuestra versión en concreto del código fuente del núcleo de la serie 2.4:

Listado de Código 1.5: Creación del parche

# make

El parche se llamará lvm-[versiónlvm]-[versiónnúcleo].patch. Por ejemplo, dado que estoy usando la versión 0.9.1_beta3 de LVM y 2.4.0-ac11 del núcleo, mi parche se llamará lvm-0.9.1_beta3-2.4.0-ac11.patch. Lo encontraremos en el directorio actual. Ahora es el momento de aplicar el parche. Para hacerlo, necesitaremos cambiar al directorio donde se encuentra el código fuente del núcleo y usar el comando patch como se muestra:

Listado de Código 1.6: Comando patch

# cd /usr/src/linux
# patch -l -p1 < /usr/src/linux/extras/LVM/0.9.1_beta3/PATCHES/lvm-0.9.1_beta3-2.4.0-ac11.patch

Mientras que la documentación en el INSTALL de LVM no lo menciona, siempre le paso la opción -l al parche. Esta opción permite al programa patch compensar todos los cambios en los espacios en blanco (tales como cambios menores en la indentación) que podrían causar a ciertas partes del parche que fallasen. Si el comando anterior culmina sin ningún mensaje "FAILED", entonces estaremos listos para instalar las herramientas de usuario. Si no, necesitamos buscar en la ruta /usr/src/linux para encontrar archivos .rej e insertar las porciones rechazadas del parche a mano, usando un editor de texto -- aunque de todas formas, en la mayoría de casos, el parche se aplicará limpiamente y estaremos listos para ponerlo en funcionamiento.

Configurar, compilar e instalar

Bien, ahora tenemos un núcleo que ha sido parcheado por lo que tenemos la versión más actual de LVM disponible. Ahora querremos configurar el núcleo para que se habilite el soporte LVM. Recomiendo que se habilite el soporte LVM integrado en el núcleo en lugar de como módulo. Ejecutamos nuestro método de configuración del núcleo preferido:

Listado de Código 1.7: Configuración del núcleo

# cd /usr/src/linux
# make menuconfig

Encontraremos las opciones LVM bajo "Multi-device support (RAID and LVM)". Una vez que habilitamos la primera opción:

Listado de Código 1.8: Soporte RAID y LVM

[*] Multiple devices driver support (RAID and LVM)

. . . veremos la siguiente opción, que también debemos habilitar:

Listado de Código 1.9: Enable LVM support

<*>   Logical volume manager (LVM) support

Dependiendo de la versión de LVM, puede haber otras opciones relacionadas con LVM que podemos querer habilitar también. En cuanto hayamos terminado, guardamos la configuración del núcleo, seguimos nuestro proceso rutinario de compilación del mismo y reiniciamos. Enhorabuena -- tenemos el soporte LVM habilitado en nuestro núcleo. Ahora, necesitamos compilar e instalar las herramientas de usuario. Este paso es muy sencillo:

Listado de Código 1.10: Creación de las herramientas de usuario

# cd /usr/src/linux/extras/LVM/0.9.1_beta3
# make
# make install

Queda un único paso más y es opcional. Si se va a hacer algo más que comprobar LVM, se querrán añadir las siguientes líneas a las macros rc de inicio:

Listado de Código 1.11: Editar la macro rc de inicio

/sbin/vgscan
/sbin/vgchange -a y

Estas líneas buscarán todos los grupos de volumen disponibles y los activarán. Entonces tendremos que añadir la siguiente línea a la macro de apagado del sistema, y asegurarnos de que se ejecuta después de que todos los sistemas de ficheros se hayan desmontado:

Listado de Código 1.12: Editar la macro rc de apagado

/sbin/vgchange -a n

Si únicamente se está probando LVM, estos pasos pueden evitarse. Únicamente hay que recordar ejecutar como root, después de cada reinicio, vgscan y vgchange -a y antes de que nuestros volúmenes lógicos estén disponibles.

Eso es todo por este artículo. En el siguiente, mostraré cómo crear nuestros propios volúmenes lógicos y desarrollar todo el poder de LVM.

Recursos



Imprimir

Página actualizada 22 de enero, 2006

Sumario: En este artículo, Daniel nos introduce en los conceptos de LVM (Administrador de Volúmenes Lógicos) bajo Linux y nos muestra cómo obtener los últimos parches del núcleo y herramientas para instalarlos en nuestro sistema. LVM nos permite crear volúmenes lógicos a partir del almacenamiento físico en nuestra máquina. Aunque, al contrario de los volúmenes físicos, los volúmenes lógicos pueden expandirse y disminuir mientras el sistema sigue en funcionamiento, proporcionando a los administradores de sistemas Linux la flexibilidad de almacenamiento con la que hasta ahora solo habían podido soñar.

Daniel Robbins
Autor

Fernando M. Bueno
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.