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 |
 |
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 |
 |
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 |
 |
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
|