LVM CÓMO

AJ Lewis


          
        

Traducción: Antonio García Padilla a.k.a "Freud"


          
        

Esta es la traducción del LVM-HOWTO.

Este documento describe como compilar, instalar, y configurar LVM para Linux. También se incluye una descripción básica de LVM. Esta versión del Cómo es para LVM 2 con "device-mapper", así como de LVM 1.0.8.

Se concede el permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre de GNU, versión 1.2 publicada por la Fundación para el Software Libre; sin cambiar secciones, sin texto de portada ni contraportada. Una copia de esta licencia está incluída en la sección titulada "Licencia de Documentación Libre de GNU".

Este documento se distribuye con el anhelo de que será útil, pero SIN NINGUNA GARANTÍA, tanto explícita o implícita. Mientras que todos los esfuerzos que se han tomado para asegurar la exactitud de la información aquí documentada, el/los autor(es)/editor(es)/mantenedor(es)/contribuyente(s) NO ASUMEN NINGUNA RESPONSABILIDAD por ningún error, o por ningún daño, directo o por consecuencia, del resultado del uso de la información aquí documentada.


Table of Contents
Introducción
1. La versión más actualizada
2. Renuncia de responsabilidad
3. Colaboradores
1. Qué es LVM?
2. Qué es LVM?
2.1. Por qué debería necesitarlo?
2.2. Beneficios de LVM en sistemas pequeños.
2.3. Beneficios de LVM en Sistemas Grandes
3. Anatomía de LVM
3.1. Grupo de Volumen (VG)
3.2. Volumen físico (PV)
3.3. Volumen lógico (LV)
3.4. Extensión física (PE)
3.5. Extensión lógica (LE)
3.6. Juntándolo todo
3.7. Modos de mapeado (lineal/troceado)
3.8. Instantáneas (Snapshots)
4. Preguntas Más Frecuentes (FAQ)
4.1. LVM 2 FAQ
4.2. LVM 1 FAQ
5. Adquiriendo LVM
5.1. Descarga el código fuente
5.2. Descarga el código fuente de desarrollo vía CVS
5.3. Antes de empezar
5.4. Configuración inicial
5.5. Descarga del Código Fuente
5.6. Actualizaciones del código
5.7. Comenzando un Proyecto
5.8. Hackeando el código
5.9. Conflictos
6. Compilando los módulos del kernel
6.1. Compilando el módulo del mapeador de dispositivos
6.2. Compilando el módulo de LVM 1 para el kernel
6.2.1. Compilando un parche para el kernel
6.2.2. Compilando el módulo de LVM para Linux 2.2.17+
6.2.3. Compilando los módulos de LVM para Linux 2.4
6.2.4. Comprobando el systema de archivos proc
7. Scripts de arranque para LVM 1
7.1. Caldera
7.2. Debian
7.3. Mandrake
7.4. Redhat
7.5. Slackware
7.6. SuSE
8. Scripts de arranque para LVM 2
9. Compilando LVM desde el Código fuente
9.1. Compilando las bibliotecas y utilidades de LVM
9.2. Instalando las bibliotecas y utilidades de LVM
9.3. Borrando las bibliotecas y utilidades de LVM
10. Transición desde la versión anterior de LVM a LVM 1.0.8
10.1. Actualizando a LVM 1.0.8 con una partición raiz no-LVM
10.2. Actualizando a LVM 1.0.8 con una partición raiz LVM y initrd
11. Tareas Comunes
11.1. Inicializando discos o particiones
11.2. Creando un grupo de volumen
11.3. Activando un grupo de volumen
11.4. Borrando un grupo de volumen
11.5. Añadiendo volúmenes físicos a un grupo de volumen
11.6. Borrando volúmenes físicos de un grupo de volumen
11.7. Creando un volumen lógico
11.8. Borrando un volumen lógico
11.9. Extendiendo un volumen lógico
11.10. Reduciendo un volumen lógico
11.11. Migrando datos de un volumen físico
12. Particionando un disco
12.1. Múltiples particiones en el mismo disco
12.2. Etiquetas de disco de Sun
13. Recetas
13.1. Configurando LVM en tres discos SCSI
13.1.1. Preparando los discos
13.1.2. Configurar un Grupo de Volumen
13.1.3. Creando el Volumen Lógico
13.1.4. Crear un Sistema de Archivos
13.1.5. Comprobando el Sistema de Archivos
13.2. Configurando LVM en tres discos SCSI con sistema rayado (striping)
13.2.1. Preparando las particiones de los discos
13.2.2. Configurar un Grupo de Volumen
13.2.3. Creando un Volumen Lógico
13.2.4. Crear el Sistema de Archivos
13.2.5. Probar el Sistema de Archivos
13.3. Añadir un nuevo disco en un sistema multi-disco SCSI
13.3.1. Situación actual
13.3.2. Preparar las particiones del disco
13.3.3. Añadir los nuevos discos al grupo de volumen
13.3.4. Extender el sistema de archivos
13.3.5. Remontar los volúmenes extendidos
13.4. Haciendo una Copia de Seguridad usando instantáneas (snapshots)
13.4.1. Crear un volumen de instantánea
13.4.2. Montar el volumen de instantánea
13.4.3. Hacer la copia de seguridad
13.4.4. Borrar la instantánea
13.5. Quitando un Disco Antiguo
13.5.1. Distribuyendo Extensiones Antiguas a Discos Existentes en el Grupo de Volumen
13.5.2. Distribuyendo Antiguas Extensiones en un Nuevo Disco de Reemplazo
13.6. Moviendo un grupo de volumen a otro sistema
13.6.1. Desmontar el sistema de archivos
13.6.2. Marca el grupo de volumen como inactivo
13.6.3. Exporta el grupo de volumen
13.6.4. Importar el grupo de volumen
13.6.5. Activar el grupo de volumen
13.6.6. Montar el sistema de archivos
13.7. Dividiendo un grupo de volumen
13.7.1. Determinar el espacio libre
13.7.2. Mover los datos a los discos que serán usados
13.7.3. Crear un nuevo grupo de volumen
13.7.4. Eliminar el volumen restante
13.7.5. Crear un nuevo volumen lógico
13.7.6. Hacer un sistema de archivos en el volumen
13.7.7. Montar el nuevo volumen
13.8. Convirtiendo un sistema de archivos raiz a LVM 1
13.8.1. Arranca el sistema en modo "single user"
13.8.2. Ejecutar Parted
13.8.3. Reinicia
13.8.4. Verifica las opciones de configuración del kernel
13.8.5. Ajustar el tipo de partición
13.8.6. Configurar LVM 1 para el nuevo esquema
13.8.7. Creación del sistema de archivos
13.8.8. Actualizar /etc/fstab
13.8.9. Creación de un disco RAM de inicio de LVM 1
13.8.10. Actualiza /etc/lilo.conf
13.8.11. Ejecuta LILO para escribir el nuevo sector de arranque
13.8.12. Reinicia para arrancar con lvm
13.8.13. Añade el reto del disco
A. Operaciones peligrosas
A.1. Recuperando los UUIDs de VG usando uuid_fixer
A.2. Compartiendo volúmenes LVM
B. Informando sobre Errores y Fallos
C. Contacto y enlaces
C.1. Listas de correo
C.2. Enlaces
D. GNU Free Documentation License
D.1. PREÁMBULO
D.2. APLICABILIDAD Y DEFINICIONES
D.3. COPIA LITERAL
D.4. COPIADO EN CANTIDAD
D.5. MODIFICACIONES
D.6. COMBINACIÓN DE DOCUMENTOS
D.7. COLECCIONES DE DOCUMENTOS
D.8. AGREGACIÓN CON TRABAJOS INDEPENDIENTES
D.9. TRADUCCIÓN
D.10. TERMINACIÓN
D.11. REVISIONES FUTURAS DE ESTA LICENCIA
D.12. ADENDA: Cómo usar esta Licencia en sus documentos
E. GNU Free Documentation License
E.1. PREAMBLE
E.2. APPLICABILITY AND DEFINITIONS
E.3. VERBATIM COPYING
E.4. COPYING IN QUANTITY
E.5. MODIFICATIONS
E.6. COMBINING DOCUMENTS
E.7. COLLECTIONS OF DOCUMENTS
E.8. AGGREGATION WITH INDEPENDENT WORKS
E.9. TRANSLATION
E.10. TERMINATION
E.11. FUTURE REVISIONS OF THIS LICENSE
E.12. ADDENDUM: How to use this License for your documents

Introducción

Este es un intento de recopilar todo lo necesario para saber cómo tener LVM instalado y funcionando. Abarcará el proceso íntegro de obtener, compilar, instalar y configurar LVM. También se incluirán las sugerencias de configuraciones de LVM que han sido probadas. Esta versión del Cómo es para LVM 2 con "device-mapper" y LVM 1.0.8.

Todas las versiones anteriores de LVM se consideran obsoletas y se mantienen sólo por razones de histórico. Este documento no intenta explicar o describir cómo funcionan o el uso de esas versiones.


1. La versión más actualizada

Mantendremos la última versión de este Cómo (en inglés) en el CVS con los otros Cómos de la LDP. Puedes obtenerlo yendo a ``LDP/howto/docbook/LVM-HOWTO.xml'' desde el servidor de CVS tLDP. Deberías poder obtener una versión legible por los humanos de este Cómo desde http://www.tldp.org/HOWTO/LVM-HOWTO.html


2. Renuncia de responsabilidad

Este documento es distribuído con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, tanto explícita o implícita. Aunque los esfuerzos se han realizado por mantener la veracidad de la información aquí documentada, el(los) autor(es)/editor(es)/mantenedor(es)/contribuyente(s) NO asumen NINGUNA RESPONSABILIDAD por ningún error, o por ningún daño, directo o a consecuencia del uso de la información aquí documentada.


3. Colaboradores

Listado de todo aquel que ha puesto palabras en este archivo.

Por favor, notifica al mantenedor de este Cómo si piensa que debería estar en la lista anterior.


Chapter 1. Qué es LVM?

LVM es un gestor de volúmenes lógicos para el sistema operativo Linux. Existen dos versiones de LVM para Linux:


Chapter 2. Qué es LVM?

LVM ofrece un punto de vista de más alto nivel del almacenamiento en disco en el sistema de un ordenador que el punto de vista de discos y particiones. Ofrece al administrador del sistema mucha más flexibilidad y capacidad de almacenamiento para aplicaciones y usuarios.

Los volúmenes de almacenamiento creados bajo el control de LVM pueden ser redimensionados y movidos casi como quiera, aunque ésto implique alguna actualización en las herramientas del sistema de archivos.

LVM permite además la gestión de gestionar la capacidad de almacenamiento en grupos definidos por el usuario, permitiendo al administrador llegar a un acuerdo en cuanto a los nombres de los grupos de volúmenes, como "desarrollo" y "ventas" preferibles a los nombres físicos de los discos como "sda" y "sdb".


2.1. Por qué debería necesitarlo?

LVM está asociado tradicionalmente a instalaciones que tienen muchos discos pero es igual de apropiado para sistemas pequeños para uno o dos discos.


2.2. Beneficios de LVM en sistemas pequeños.

Una de las difíciles decisiones de cara a un nuevo usuario instalando Linux la primera vez es cómo particionar el disco. La necesidad de estimar cuánto espacio será necesario para el sistema y para el usuario hace la instalación más compleja de lo necesario y muchos usuarios optan por poner todos los datos en una partición grande intentando evitar el tema.

Una vez que el usuario ha adivinado cuanto espacio necesitará para /home /usr / (o ha dejado al programa de instalación hacerlo) entonces es muy común que alguna de estas particiones se llene antes de que lo haga otra y se quede sin espacio.

Con LVM, el disco entero será destinado para un único grupo de volúmen y un volúmen lógico creado para mantener el sistema de archivos de / /usr y /home. Si, por ejemplo el volumen lógico de /home se llenara pero todavía hubiese espacio disponible en /usr entonces sería posible encoger /usr unos cuantos megabytes y realojar el espacio en /home.

Otra alternativa sería alojar el mínimo espacio para cada volúmen lógico y dejar algo de disco sin alojar. Entonces, cuando las particiones empiecen a llenarse, podrían ser expandidas tanto como fuesen necesarias.

Un ejemplo: Juan compra un PC con un disco de 8.4 Gigabytes de capacidad e instala Linux particionando el sistema de esta forma:


/boot    /dev/hda1     10 Megabytes
swap     /dev/hda2    256 Megabytes
/        /dev/hda3      2 Gigabytes
/home    /dev/hda4      6 Gigabytes
        
Así, él piensa, maximizará el espacio disponible para todos sus archivos MP3.

Un tiempo después Juan decide que quiere instalar la última "suite" ofimática y el último escritorio disponible pero se da cuenta de que la partición principal no tiene suficiente capacidad, pero que si guarda todos sus archivos MP3 en su nueva grabadora de DVD tendrá mucho espacio en /home.

Sus opciones no son buenas:

  1. Reformatear el disco, cambiar el esquema de particionada y reinstalar.

  2. Comprar un nuevo disco e imaginarse otro esquema de particionado que requiera el mínimo movimiento de datos.

  3. Crear un enlace simbólico en / apuntando a /home e instalar el nuevo software en /home

Con LVM ésto resulta mucho más fácil:

Juana compra un PC similar pero usa LVM para dividiar el disco de una manera similar:


/boot     /dev/hda1        10 Megabytes
swap      /dev/vg00/swap   256 Megabytes
/         /dev/vg00/root     2 Gigabytes
/home     /dev/vg00/home     6 Gigabytes

         

Note

el arranque no se incluye en el LV porque los gestores de arranque no entienden volúmenes LVM todavía. Es posible que el arranque en LVM funciones, pero corre el riesgo de tener un sistema que no arranque.

Warningla raiz en LV debería ser usado por sólo por usuarios avanzados
 

la raiz en LVM requiere una imagen "initrd" que active la raiz LV. Si un kernel es actualizado sin compilar la imagen "initrd" necesaria, entonces el kernel será imposible de arrancar. Las nuevas distribuciones soportan lvm en sus scripts "mkinitrd" así como tienen imágenes "initrd" empaquetadas, por lo que no resulta difícil.

Para resuelver el problema similar ella puede reducir el tamaño de /home en unos cuantos Gigabytes y añadírselos a la partición raiz.

Supongamos que Juan y Juana deciden llenar la partición /home y deciden añadir un nuevo disco de 20 Gigabytes a sus sistemas.

Juan formatea el disco entero como una partición (/dev/hdb1) y mueve los datos de /home dentro de ella y usa el nuevo disco como /home. Pero él tiene 6 gigabytes sin usar o tiene que usar enlaces simbólicos para hacer que el disco aparezca como una extensión de /home, como /home/joe/oldm-mp3s.

Juana simplemente añade el nuevo disco a su existente grupo de volumen y extiende su volumen lógico /home para incluir el nuevo disco. O, de hecho, ella puede mover los datos desde /home en el disco antiguo hacia el nuevo y entonces extender la raiz para cubrir todo el disco antiguo.


2.3. Beneficios de LVM en Sistemas Grandes

Los beneficios de LVM son más obvios en sistemas grandes con muchos discos.

Gestionando un conjunto de discos grandes es un trabajo arduo, particularmente complejo si el sistema contiene muchos discos de distintos tamaños. Balanceando (a veces comflictivo) la necesidad de capacidad de almacenamiento de varios usuarios puede ser una pesadilla.

Los grupos de usuarios pueden ser alojados en grupos de volúmenes y volúmenes lógicos y estos pueden ir creciendo según se necesite. Es posible para el administrador del sistema "ocultar" la capacidad de disco hasta que sea necesaria. Puede ser añadida al volumen del grupo de usuarios que lo necesite.

Cuando se añaden nuevas unidades al sistema, no es necesario mover los archivos de los usuarios para usar del mejor modo posible la capacidad de disco; simplemente se añade el nuevo disco al grupo de volumen existente o grupos y extender el volumen lógico como sea necesario.

También es fácil mantener fuera de servicio las viejas unidades moviendo los datos que estén en ellas dentro de las nuevas - ésto puede hacerse "online", sin interrumpir el servicio al usuario.


Chapter 3. Anatomía de LVM

Este diagrama nos da una visión general de los principales elementos en un sistema LVM:


+-- Volume Group --------------------------------+
|                                                |
|    +----------------------------------------+	 |
| PV | PE |  PE | PE | PE | PE | PE | PE | PE |	 |
|    +----------------------------------------+	 |
|      .       	  .    	     . 	      .	       	 |
|      .          .    	     .        .	         |
|    +----------------------------------------+	 |
| LV | LE |  LE | LE | LE | LE | LE | LE | LE |	 |
|    +----------------------------------------+	 |
|            .          .        .     	   .     |
|            . 	        .        .     	   .     |
|    +----------------------------------------+	 |
| PV | PE |  PE | PE | PE | PE | PE | PE | PE |	 |
|    +----------------------------------------+	 |
|                                                |
+------------------------------------------------+

         

Otra manera de verlo es esta (cortesía de Erik Bågfors procedente de la lista de correo de linux-lvm):


    hda1   hdc1      (PV:s en particiones o los propios discos)
       \   /                                                                    
        \ /                                                                     
       diskvg        (VG)                                                       
       /  |  \                                                                  
      /   |   \                                                                 
  usrlv rootlv varlv (LV:s)
    |      |     |                                                              
 ext2  reiserfs  xfs (sistemas de archivos)                                        

         


3.1. Grupo de Volumen (VG)

El Grupo de Volumen es el más alto nivel de abstración usado en LVM. Se refiere a la colección de Volúmenes Lógicos y Volúmenes Físicos dentro de una unidad administrativa.


3.2. Volumen físico (PV)

Un volumen físico es tipicamente un disco duro, además podría ser también un dispositivo que 'parece' un disco duro (ej. un raid por software).


3.3. Volumen lógico (LV)

El equivalente a una partición de disco en un sistema no-LVM. El LV es visible como un dispositivo de bloques estándar; el LV puede contener un sistema de archivos (ej. /home).


3.4. Extensión física (PE)

Cada volumen físico está dividido por trozos de datos, conocidos como extensiones físicas, estas extensiones tienen el mismo tamaño que las extensiones lógicas en un grupo de volumen.


3.5. Extensión lógica (LE)

Cada volumen lógico está dividido en trozos de datos, conocidos como extensiones lógicas. El tamaño de la extensión es el mismo para todo el volumen lógico dentro del grupo de volumen.


3.6. Juntándolo todo

Un ejemplo concreto ayudará:

Supongamos que tenemos un grupo de volumen llamado VG1, este grupo de volumen tiene una extensión física de 4MB. Dentro de este grupo de volumen metemos 2 particiones, /dev/hda1 y /dev/hdb1. Estas particiones se convertirán en los volúmenes físicos PV1 y PV2 (se les puede dar nombres más significativos dependiendo del administrador). Los PV's son divididos en trozos de 4MB, y este será el tamaño de extensión del grupo de volumen. Los discos son de distintos tamaños y tendremos 99 extensiones en PV1 y 248 en PV2. Ahora podemos crear un volumen lógico, que puede tener el tamaño que queramos entre 1 y 347 (248 + 99) extensiones. Cuando creamos el volumen lógico se define un mapeado entre extensiones lógicas y físicas, ej. extensión lógica 1 podría mapearse en la extensión física 51 de PV1, los datos escritos en los primeros 4 MB del volumen lógico se escribirán en la extensión 51 de PV1.


3.7. Modos de mapeado (lineal/troceado)

El administrador puede elegir entre varias estrategias de mapeado para las extensiones lógicas dentro de las extensiones físicas:

  1. Mapeado linealasignará un rango de PE's en orden en un área de un LV ej., LE 1 - 99 se mapea en PV1 y LE 100 - 347 se mapea en PV2.

  2. Mapeado rayado intercalará las rayas de extensiones lógicas por un número de volúmenes físicos eg.,

    
1ª raya de LE[1] -> PV1[1],
    
    2ª raya de  LE[1] -> PV2[1],
    
    3ª raya de LE[1] -> PV3[1],
    
    4ª raya de  LE[1] -> PV1[2],
                
    y así. En ciertas situaciones esta estrategia puede perjudicar el rendimiento del volumen lógico.

    WarningLVM 1 Caveat
     

    Los LV creados usando el modo troceado no pueden ser extendidos después de los PV de los que originalmente fueron creatos en el LVM 1.

    En LVM 2, los LVs troceados pueden ser extendidos por concatenación de otros tantos dispositivos al final de estos. Por eso puede estar en la situación en la que su LV sea un conjunto de 2 rayas con un conjunto lineal concatenado con otro conjunto de 4 rayas. ¿Todavía no está confuso?


3.8. Instantáneas (Snapshots)

Una maravillosa utilidad provista por LVM son las 'instantáneas'. Esto permite a los administradores crear un nuevo dispositivo de bloque que tiene una copia exacta de un volumen lógico, congelado en algún punto del tiempo. Normalmente podría ser usado cuando se va a lanzar un proceso batch o una copia de seguridad, por ejemplo, y necesita realizarse en un volumen lógico, pero no quiere parar un sistema vivo en el que se están cambiando datos. Cuando se ha terminado con el dispositivo de la instantánea simplemente se puede borrar. Esta herramienta requiere que la instantánea se cree cuando los datos contenidos en el volumen lógico sean consistentes - el parche de bloqueo de VFS para LVM1 se asegura que algunos sistemas de archivos hagan ésto automaticamente cuando una instantánea es creada, y muchos de los sistemas de archivos en el kernel 2.6 hacen esto automaticamente cuando se crea una instantánea sin parche.

LVM1 tiene instantáneas de sólo-lectura. Las instantáneas de sólo lectura funcionan creando una tabla de excepción, que es usada para mantener una pista de los bloques que han sido modificados. Si un bloque a de ser cambiado, primero se copia a la instantánea, marcada como que se ha copiado en la tabla de excepción, y entonces los nuevos datos son escritos en el volumen original.

En LVM2, las instantáneas son de lectura/escritura por defecto. Las instantáneas de lectura/escritura funcionan como las de sólo lectura, con la característica adicional de que si los datos son escritos en la copia instantánea, ese bloque es marcado en la tabla de excepción como usado, y nunca se vuelve a copiar del volumen original. Ésto nos abre nuevas posibilidades que no nos brindan las instantáneas de sólo lectura de LVM1. Un ejemplo es crear una instantánea de un volumen, montar la instantánea, y experimentar con programas que cambian archivos en ese volumen. Si no le gusta lo que ha hecho, puede desmontar la instantánea, borrarla, y montar el sistema original en su lugar. Es muy útil para crear volúmenes para usar con Xen. Puede crear una imagen de disco, entonces crear una instantánea y modificar la instantánea para una instancia particular de domU. Puede crear entonces otra instantánea del volumen original, y modificarlo para otra instancia diferente de domU. Desde que la única capacidad usada por la instantánea son los bloques que han cambiado en el original o en la instantánea, la mayoría del volumen es compartido por el domU.

WarningInformación para actualizar LVM 1 -> LVM 2
 

Asegúrese de eliminar las instantáneas de LVs antes de actualizar de LVM 1 a LVM 2. (Lea Section 4.1)


Chapter 4. Preguntas Más Frecuentes (FAQ)

4.1. LVM 2 FAQ

4.1.1. Tengo LVM 1 instalado y funcionando en mi sistema. ¿Cómo empiezo a usar LVM 2?
4.1.2. Necesito un módulo especial de lvm2 para el kernel?
4.1.3. Obtengo errores sobre /dev/mapper/control cuando intento usar las utilidades de LVM 2. ¿Qué ocurre?
4.1.4. Qué comandos y tipos de volúmenes lógicos son actualmente soportados por LVM 2?
4.1.5. Utiliza LVM 2 un formato diferente al de LVM 1 para la representación en disco de los Grupos de Volúmenes y Volúmenes Lógicos?
4.1.6. Soporta LVM 2 los VGs y LVs creados con LVM 1?
4.1.7. Puedo actualizar mi LVM 1 basado en LGs y LVs al formato nativo de LVM 2?
4.1.8. He actualizado a LVM 2, pero las utilidades siguen fallando con errores de memoria. ¿Por qué?
4.1.9. Tengo mi partición raiz en un LV en LVM 1. ¿Cómo lo actualizo a LVM 2? ¿Y qué pasa con lvmcreate_initrd?
4.1.10. ¿Cómo de resistente es LVM en cuanto a enumeraciones repentinas de reenumeraciones de discos duros físicos?
4.1.11. Estoy intentando llenar mi vg, y vgdisplay/vgs dice que tengo 1.87 MB libres, pero cuando hago un lvcreate vg -L1.87G dice "ampliaciones libres insuficientes". ¿Qué pasa?
4.1.12. ¿Cómo de diferentes son las instantáneas en LVM2 con respecto a LVM1?

4.1.1. Tengo LVM 1 instalado y funcionando en mi sistema. ¿Cómo empiezo a usar LVM 2?

Aquí van unas instrucciones para empezar :)

  1. Comienza por eliminar las instantáneas de LVs del sistema. No son manejadas por LVM 2 y evitará que sean activadas cuando LVM 2 se arranque.

  2. Asegúrate de que tienes otro sistema de arranque del sistema que no sea el típico de la partición de arranque. Necesitas las utilidades de LVM 1, las utilidades estándares del sistema (mount) y un kernel compatible con LVM 1 en caso de que necesites echar para atrás y arreglar alguna cosa.

  3. Instala las fuentes y compila las herramientas de LVM 2 y el mapeador de dispositivos. Necesitas instalar la biblioteca del mapeador de dispositivos tecleando " make install " antes de compilar las herramientas de LVM 2. También copia el script dm/scripts/devmap_mknod.sh dentro de /sbin. Recomiendo que sólo se instale el binario 'lvm' de momento por si necesitas acceso a las herramientas de LVM 1. Si tienes acceso a paquetes de LVM 2 y del "device-mapper", puedes instalarlos, pero cuidado con eliminar el conjunto de utilidades de LVM 1.

  4. Obtén un mapeador de dispositivos compatible con el kernel, o compílalo dentro del kernel o como módulo.

  5. Recuerda dónde se activa LVM 1 en el arranque. Asegúrate de que el mapeador de dispositivos es cargado en ese punto (si estás usando el mapeador de dispositivos como módulo) y añade '/sbin/devmap_mknod.sh; lvm vgscan; lvm vgchange -ay' seguidamente.

  6. Instala el kernel con soporte para el mapeador de dispositivos. Rearranca. Si todo va bien, deberías poder funcionar con lvm2. lvm2.

4.1.2. Necesito un módulo especial de lvm2 para el kernel?

No. Necesitas el mapeador de dispositivos. Las utilidades de lvm2 usan el mapeador de dispositivos para comunicarse con el kernel y hacer todo el mapeo de dispositivos (de ahí el nombre de mapeador de dispositivos). Mientras tengas el mapeador de dispositivos, podrás usar LVM2.

4.1.3. Obtengo errores sobre /dev/mapper/control cuando intento usar las utilidades de LVM 2. ¿Qué ocurre?

La principal causa es que no hayas ejecutado "dmsetup mknodes" después de arrancar dentro de un kernel con capacidad para dm. Este script genera el nodo de control para el mapeador de dispositivos.

Si no tienes el "dmsetup mknodes", no desesperes! (Aunque deberías actualizar a la última versión del mapeador de dispositivos.) Es muy fácil de crear el archivo /dev/mapper/control manualmente:

  1. Asegúrate de que tienes el módulo del mapeador de dispositivos cargado (si no lo agregaste dentro del kernel).

  2. Ejecuta

    # cat /proc/misc | grep device-mapper | awk '{print $1}'
    y apunta el número en pantalla. (Si no obtienes ninguna saluda, vuelve al paso 1.)

  3. Ejecuta

    # mkdir /dev/mapper
    - si obtienes un error sobre que ya existe /dev/mapper, asegúrate de que es un directorio y sigue adelante.

  4. Ejecuta

    # mknod /dev/mapper/control c 10 $number
    donde $number es el número que conseguimos en el paso 2.

Deberías tenerlo todo listo!

4.1.4. Qué comandos y tipos de volúmenes lógicos son actualmente soportados por LVM 2?

Si estás usando la versión estable y parcheada del mapeador de dispositivos del tarball lvm2, todas las funcionalidades que tenías usango lvm1 están soportadas por las utilidades de lvm2 (necesitarías eliminar las instantáneas antes de actualizar de lvm1 a lvm2)

Si estás usando la versión del mapeador de dispositivos del kernel 2.6 de la serie de kernel.org los siguientes comandos y tipos de LV no están soportados:

  • pvmove

  • snapshots

Se está comenzando a tener soporte para estos comandos en parches inestables del mapeador de dispositivos mantenidos por Joe Thornber.

4.1.5. Utiliza LVM 2 un formato diferente al de LVM 1 para la representación en disco de los Grupos de Volúmenes y Volúmenes Lógicos?

Sí. LVM 2 usa el formato metadata de lvm 2. Este formato es mucho más flexible que el formato metadata de LVM 1, eliminando y reduciendo muchas de las limitaciones que tiene LVM 1.

4.1.6. Soporta LVM 2 los VGs y LVs creados con LVM 1?

Sí. LVM 2 activará y trabajará con los VG y LVs creados con LVM 1. La excepción a ésto son las instantáneas creadas con LVM 1 - éstas deberían ser eliminadas antes de la actualización. Las instantáneas que se mantengas deberán ser borradas antes de que sus originales sean activados por LVM 2.

4.1.7. Puedo actualizar mi LVM 1 basado en LGs y LVs al formato nativo de LVM 2?

Sí. Usa vgconvert para convertir tus VG y todos los LVs contenidos en él al nuevo formato metadata lvm 2. Cuidado porque no siempre es posible volver a convertirlo en el formato metadata de lvm 1.

4.1.8. He actualizado a LVM 2, pero las utilidades siguen fallando con errores de memoria. ¿Por qué?

Una posible causa de estos es que alguna versión de LVM 1 (El usuario que informó de este error originalmente estaba usando Mandrake 9.2, pero no necesariamente ocurre sólo en esta distribución) no puso un UUID dentro de la estrucura de PV y VG. Las actuales versiones de las utilidades de LVM 2 automaticamente rellenan los UUIDs en las estructuras si ven que no están, por lo que deberías utilizar la versión más actual y tu problema se solucionará. Si no, envía un mensaje a la linux-lvm mailing list

4.1.9. Tengo mi partición raiz en un LV en LVM 1. ¿Cómo lo actualizo a LVM 2? ¿Y qué pasa con lvmcreate_initrd?

Actualizando a LVM 2 es un poco más complicado con particiones raiz en LVM, pero no es imposible. Necesitas tener un kernel con soporte para el mapeador de dispositivos e instalar las utilidades de lvm2 (deberías hacer un backup de las utilidades de lvm 2, o buscar un disco de rescate con las utilidades, en caso de que las necesites antes de que termines de hacerlo). Después busca un script mkinitrd que tenga soporte para tu distribución y lvm 2.

Actualmente, esta es la lista de scripts mkinitrd que conozco con soporte de lvm2, ordenadas por distribución:

scripts mkinitrd con soporte lvm 2

fedora

El último fedora core 2mkinitrd maneja lvm2, pero depende de un binario de lvm compilado desde el último tarball de lvm 2.

Usuarios de Redhat 9 deberían poder usarlo sin más

Debian

Hay una versión no oficialhere

Genérico

Hay una versión en el árbol fuente de lvm2 bajo el nombre scripts/lvm2_createinitrd/. Observa la documentación en ese directorio para más detalles.

4.1.10. ¿Cómo de resistente es LVM en cuanto a enumeraciones repentinas de reenumeraciones de discos duros físicos?

Está bien - LVM identifica PVs por UUID, no por nombre de dispositivo.

Cada disco (PV) está etiquetado con un UUID, que es identificador único en el sistema. 'vgscan' lo identifica después de que un nuevo disco es añadido y cambie la reenumeración. La mayoría de las distribuciones ejecutan vgsan en el arranque de lvm para poder arreglárselas después de añadir un nuevo dispositivo. Si estás agregándolo en caliente, deberás ejecutarlo a mano. Por otro lado, si tu VG está activado y está siendo usado, la reenumeración no afectará para nada. Es sólo en la activación cuando es necesaria la identificación, y el peor de los casos es cuando la activación falla sin que vgscan de un error de un PV perdido.

Note

Si quitas una unidad que LVM está utilidando causará problemas en ese momento y en futuras activaciones del VG que lo esté usando.

4.1.11. Estoy intentando llenar mi vg, y vgdisplay/vgs dice que tengo 1.87 MB libres, pero cuando hago un lvcreate vg -L1.87G dice "ampliaciones libres insuficientes". ¿Qué pasa?

El número de 1.87 GB está redondeado a 2 decimales, por lo que es probable que sea 1.8666 GB o algo así. Ésta es una salida entendible por el ser humano para darnos una idea general de cuan grandes es el VG. Si quieres especificar el tamaño exacto, deberías usar extensiones en vez de múltiplos de bytes.

En el caso de vgdisplay, usa el número de PE libres en vez de la capacidad entendible por el ser humano.


              PE libres / Size          478 / 1.87 GB
                                        ^^^
              
Entonces, deberías ejecutar

# lvcreate vg -l478 
Fíjate que en vez de en mayúsculas 'L', usaremos la minúscula 'l' para indicarle a lvm que use extensiones en vez de bytes.

En el caso de vgs, necesitas indicarle una instrucción para que te diga las extensiones disponibles:


# vgs -o +vg_free_count,vg_extent_count
              
Ésto a vgs que añada las extensiones libres y el número total de extensiones al final del listado de vgs. Usa el número de extensiones libres de la misma manera que lo harías en el caso de vgdisplay.

4.1.12. ¿Cómo de diferentes son las instantáneas en LVM2 con respecto a LVM1?

En LVM2 las instantáneas son de lectura/escritura por defecto, mientras que en LVM1, las instantáneas eran sólo de lectura. Mira Section 3.8 para más detalles.


4.2. LVM 1 FAQ

4.2.1. ¿Cuándo habrá información aquí?

4.2.1. ¿Cuándo habrá información aquí?

Cuando la gente empiece a mandar cosas ;)


Chapter 5. Adquiriendo LVM

La primera cosa que necesitas hacer es obtener una copia de LVM.


5.1. Descarga el código fuente

Note

El parche de LVM 1 para el kernel debe ser generado usando el código fuente de LVM 1. Más información respecto a esto puede ser encontrada en Section 6.2


5.2. Descarga el código fuente de desarrollo vía CVS

Atento: el estado del código en el repositorio CVS fluctúa peligrosamente. Tendrán fallos. Posiblemente alguno que rompa el LVM o el kernel. Algunas veces no compilará. Considera el código con calidad-alfa. Podrías perder datos. Has sido avisado.


5.3. Antes de empezar

Para seguir el progreso de desarrollo de LVM, subscríbete a las listas de correo de LVM, linux-lvm y listas apropiadas. (ve a Section C.1).

Para compilar LVM desde las fuentes del CVS, tú necesitas tener varias utilidades GNU:

  • la version de cliente CVS 1.9 o superior

  • GCC 2.95.2

  • GNU make 3.79

  • autoconf, versión 2.13 o mejor


5.4. Configuración inicial

Para hacer la vida más fácil en el futuro actualizando el árbol del CVS crea el archivo $HOME/.cvsrc e inserta las siguientes líneas. Son configuraciones por defecto muy útiles para los 3 comandos más comunes. Hazlo ahora antes de seguir.


diff -u -b -B
checkout -P
update -d -P

         

Además, si estás conectado a una línea lenta (como una conexión telefónica), querrás añadir una linea que ponga cvs -z5 en ese archivo. Esto activa un nivel de compresión útil para todos los comandos de CVS.


5.5. Descarga del Código Fuente

  • Biblioteca del Mapeador de Dispositivos y utilidades

    La biblioteca del mapeador de dispositivos es necesaria para compilar LVM 2.

    La primera vez que descargas desde el cvs, debes autentificarte

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs
    
                

    La clave es `cvs'. El comando no responderá nada si ha ido bien un mensaje de error si ha fallado. Sólo es necesario una autenfificación inicial. Todos los siguientes comandos de CVS leerán la clave almacenada en el archivo $HOME/.cvspass para autentificarse.

    Utiliza lo siguiente para descargar una copia del código

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper    
    
              

    Esto creará un nuevo directorio device-mapper en tu directorio actual que contendrá el último código del mapeador de dispositivos actualizado al minuto.

  • LVM 2

    La primera vez que descargas desde el cvs, debes autentificarte

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 login cvs
    
                

    La clave es `cvs'. El comando no responderá nada si ha ido bien y un mensaje de error si ha fallado. Sólo es necesario una autenficación inicial. Todos los siguientes comandos de CVS leerán la clave almacenada en el archivo $HOME/.cvspass para autentificarse.

    Utiliza lo siguiente para descargar una copia del código

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2    
    
              

    Esto creará un nuevo directorio LVM 2 en tu directorio actual que contendrá el último código de LVM 2 actualizado al minuto.

  • LVM 1

    La primera vez que descargas desde el cvs, debes autentificarte

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm login cvs
    
                

    La clave es `cvs'. El comando no responderá nada si ha ido bien un mensaje de error si ha fallado. Sólo es necesario una autenfificación inicial. Todos los siguientes comandos de CVS leerán la clave almacenada en el archivo $HOME/.cvspass para autentificarse.

    Utiliza lo siguiente para descargar una copia del código

    
 # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout LVM  
    
              

    Esto creará un nuevo directorio LVM 1 en tu directorio actual que contendrá el último código de LVM 1 actualizado al minuto.

Los comandos de CVS funcionan desde cualquier sitio dentro del árbol del código fuente, y es recursivo. Por eso si sucede que quieres actualizar desde dentro del directorio `tools' funcionará bien, pero sólo actualizará el directorio de utilidades y sus subdirectorios. En los siguientes ejemplos de comandos se asume que estás arriba del todo en el árbol del código fuente.


5.6. Actualizaciones del código

Los cambios en el código son muy frecuentes en el respositorio CVS. Esos cambios se anuncian automaticamente en la lista lvm-commit.

Puedes actualizar tu copia del código fuente para que coincida con el repositorio principal con un comando de actualización. No es necesario descargarte una nueva copia. El uso de actualizaciones es más rápido y más simple, como si sólo te bajaras parches en vez de los archivos enteros y actualiza sólo aquellos archivos que han sido cambiados desde la última actualización. Automaticamente se realizará cualquier cambio desde el CVS con los que hayas hecho en local. Sólo entra en el directorio que quieras actualizar y luego escribe lo siguiente.


 # cvs update 
         

Si no especificas nada cuando te descargas el código fuente, actualizará el código con la última versión de la rama principal. Si especificas una rama, se actualizará a la última versión de esa rama. Si especificas una versión, no hará nada.


5.7. Comenzando un Proyecto

Discute tus ideas en las listas de desarrolladores antes de comenzar. Alguno puede estar trabajando en lo mismo que lo que tú tienes en mente o puede darte algunas ideas sobre cómo abordarlo.


5.8. Hackeando el código

Entonces, ¿has encontrado un fallo que quieres arreglar? ¿Quieres implementar una característica en la lista TODO? ¿Conseguiste una nueva característica para implementar? Hackear el código no podría ser más fácil. Sólo edita tu copia del código fuente. No necesitas copiar los archivos a .orig ni nada. el CVS hace copias del original.

Cuando tienes el código en un estado de trabajo y lo has probado lo mejor que puedes con el hardware que tienes, genera un parche sobre el actual código fuente en el repositorio CVS.


 # cvs update
 # cvs diff > patchfile
         

Envía por correo el parche a la lista linux-lvm o dm-devel (Section C.1) con una descripción sobre los cambios o lo que has implementado.


5.9. Conflictos

Si alguno ha estado trabajando con los mismos archivos que tú, puedes encontrar con que hay modificaciones en conflicto. Puedes comprobarlo cuando intentes actualizar el código fuente.


 # cvs update 

 RCS file: LVM/tools/pvcreate.c,v
 retrieving revision 1.5
 retrieving revision 1.6
 Merging differences between 1.5 and 1.6 into pvcreate.c
 rcsmerge: warning: conflicts during merge
 cvs server: conflicts found in tools/pvcreate.c
 C tools/pvcreate.c

         

¡Que no cunda el pánico! Tu archivo de trabajo, como ya existía antes de la actualización, se grabará bajo el nombre .#pvcreate.c.1.5. Puedes recuperarlo. El archivo llamado `pvcreate.c' ahora contiene ambas la antigua (i.e. la tuya) versión y la nueva version de las línes que entran en confilcto. Simplemente edita el archivo y resuelve cada conflicto borrando la versión que no quieras de las líneas involucradas.


 <<<<<<< pvcreate.c
    j++;
 =======
    j--;
 >>>>>>> 1.6

         

No olvides borrar las líneas con los símbolos ``<'', ``='', y ``>''.


Chapter 6. Compilando los módulos del kernel

6.1. Compilando el módulo del mapeador de dispositivos

El mapeador de dispositivo está en la versión 2.6.9 o superior, por lo que necesitas asegurarte de que está activado como módulo o incluído en el kernel. Observa en /sys/class/misc/device-mapper o en /proc/devices y comprueba que hay una entrada para el mapeador de dispositivos para comprobar si está activado. Si no está, prueba con modprobe dm_mod, y comprueba otra vez. Para las versiones anteriores a la 2.6.9, tú o tu distribución debería parchear el kernel para poder soportarlo. Comprueba la página del mapeador de dispositivos para más información.


6.2. Compilando el módulo de LVM 1 para el kernel

Para usar LVM 1 necesitas compilar el módulo del kernel (recomendado), o si prefieres recompilar el kernel con el código estaticamente compilado dentro de él.

Tu sistema Linux estará probablemente basado en uno de las distribuciones populares (ej., Red Hat, SuSE, Debian) en cuyo caso es posible que ya tengas el módulo de LVM 1. Comprueba la versión de las utilidades que tienes en tu sistema. Puedes hacer esto ejecutando cualquiera de los comandos de LVM con el modificador '-h'. Usa pvscan -h si no conoces ningún comando. Si la versión que aparece al principio de la ayuda es LVM 1.0.8, usa tu actual configuración y olvida el resto de esta sección.


6.2.1. Compilando un parche para el kernel

Para poder parchear el kernel de linux para soportar LVM 1.0.8, debes hacer lo siguiente:

  1. Descomprime LVM 1.0.8

    
 # tar zxf lvm_1.0.8.tar.gz 
                      
  2. Indica el directorio principal de esa versión.

    
 # cd LVM/1.0.8 
                      
  3. Ejecuta configure

    
 # ./configure 
                      

    Necesitarás indicarle la opción --with-kernel_dir para configurarlo si el código fuente de no está en /usr/src/linux. (Ejecuta ./configure --help para ver todas las opciones disponibles)

  4. Entra en el directorio PATCHES

    
 # cd PATCHES 
                      
  5. Ejecuta 'make'

    
# make 
                      

    Deberías tener ahora un parche llamado lvm-1.0.8-$KERNELVERSION.patchen el directorio de parches. Este es el parche del kernel referenciado en la última sección de el cómo.

  6. Parchea el kernel

    
 # cd /usr/src/linux ; patch -pX < /directory/lvm-1.0.8-$KERNELVERSION.patch 
                      


6.2.2. Compilando el módulo de LVM para Linux 2.2.17+

La serie 2.2 del kernel necesita ser parcheada antes de que empieces a compilar, comprueba en otro lugar sobre cómo parchear el kernel.

Parches:

  1. parche rawio

    El parche raw_io de Stephen Tweedie puede ser encontrado en http://www.kernel.org/pub/linux/kernel/people/sct/raw-io

  2. parche lvm

    El parche para LVM 1 debería ser compilado fuera de el subdirectorio PATCHES de la distribución de LVM. Puedes encontrar más información en Section 6.2.1, Compilando un parche para tu kernel.

Una vez que los parches han sido correctamente aplicados, necesitas asegurarte de que el módulo está compilado, de que LVM 1 está bajo la sección de dispositivos de bloque de la configuración del kernel, y deberías comprobar que la información de LVM en /proc está compilada también.

Compila los módulos del kernel como habitualmente.


6.2.3. Compilando los módulos de LVM para Linux 2.4

Los kernel 2.4 vienen con LVM 1 incluído aunque deberías comprobar en la web de Sistina por actualizaciones, (eg. en el kernel v2.4.9 y anteriores deben tener el último parche de LVM 1 aplicado). Cuando configures tu kernel busca LVM 1 bajo el soporte de dispositivos-múltiples (RAID and LVM) . LVM 1 puede ser compilado dentro del kernel o como módulo. Compila tu kernel y módulos e instálalos como se hace habitualmente. Si eliges compilar LVM coom módulo se llamará lvm-mod.o

Si quieres usar instantáneas con ReiserFS, asegúrate de aplicar el parche linux-2.4.x-VFS-lock (hay copias de él en el directorio LVM/1.0.8/PATCHES).


6.2.4. Comprobando el systema de archivos proc

Si tu kernel ha sido compilado con el sistema de archivos /proc (la mayoría) puedes comprobar que LVM está buscando el directorio /proc/lvm. Si no existe entonces tienes que cargar el módulo con el comando


 # modprobe lvm-mod 
         

Si /proc/lvm todavía no existe entonces comprueba la configuración del kernel minuciosamente.

Cuando LVM está activado verás las entradas en /proc/lvm para todos los volúmenes físicos, grupos de volúmenes y volúmenes lógicos. Además hay un "archivo" llamado /proc/lvm/global que contiene un resumen del estado de LVM y nos muestra qué versión de LVM estás usando.


Chapter 7. Scripts de arranque para LVM 1

Los scripts de arranque no vienen incluídos en la distribución de LVM, sin embargo son muy sencillos de hacer por uno mismo.

El arranque de LVM requiere sólo los siguientes dos comandos:


 # vgscan
# vgchange -ay 
      

Y para pararlo sólo uno:


 # vgchange -an
      

Sigue las instrucciones abajo dependiendo de la distribución de Linux que uses.


7.1. Caldera

Es necesario editar el archivo /etc/rc.d/rc.boot. Busca la línea que dice "Mounting local filesystems" e inserta los comandos vgscan y vgchange justo antes.

También necesitaras ediar el archivo /etc/rc.d/init.d/halt para desactivar los grupos de volúmenes al apagar. Inserta el comando


 vgchange -an 
            
cerca del final del archivo justo antes de que los sistemas de archivos sean desmontados o montados como sólo-lectura, antes del comentario que dice "Now halt or reboot".


7.2. Debian

Si descargas el paquete de utilidades de lvm para Debian, un script de arranque debería ser instalado automaticamente.

Si estás instalando LVM desde el código, necesitarás crear tu propio script de arranque:

Crea un script de arranque en /etc/init.d/lvm que contenga lo siguiente:


#!/bin/sh

case "$1" in
  start)
	/sbin/vgscan
	/sbin/vgchange -ay
        ;;
  stop)
	/sbin/vgchange -an
        ;;
  restart|force-reload)
	;;
esac

exit 0
            

Ejecuta los comandos



 # chmod 0755 /etc/init.d/lvm
 # update-rc.d lvm start 26 S . stop 82 1 .

            
Ojo con los puntos al final del comando.


7.3. Mandrake

No son necesarias modificaciones en los script de inicio en las actuales versiones de Mandrake.


7.4. Redhat

Para Redhat 7.0 y superiores, deberías necesitar modificar cualquier script de inicio que active LVM en tiempo de arranque si LVM está compilado dentro del kernel. Si LVM está compilado como un módulo, debería ser necesario modificar /etc/rc.d/rc.sysinit para cargar el módulo de LVM añadiendo "modprobe lvm-mod" antes de la sección que pone:

# LVM initialization, take 2 (it could be on top of RAID)
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
        action $"Setting up Logical Volume Management:" /sbin/vgscan &&
        /sbin/vgchange -a y
        fi

Note

Este fragmento de script de inicio es de Red Hat 7.3 - para otras versiones de Redhat podría ser ligeramente distinto.

Para versiones de Redhat anteriores a la 7.0, es necesrio editar el archivo /etc/rc.d/rc.sysinit. Busca la línea que dice "Mount all other filesystems" e inserta los comandos vgscan y vgchange justo antes. Deberías asegurarte de que el sistema de archivos raiz está montado de lectura/escritura antes de que ejecutes los comandos de LVM.

Además puede que necesites editar el archivo /etc/rc.d/init.d/halt para desactivar el grupo de volúmenes al apagar. Inserta el comando


vgchange -an
            
cerca del final del archivo justo después de que los sistemas de archivos sean montados como sólo lectura, antes del comentario que dice "Now halt or reboot".


7.5. Slackware

Slackware 8.1 no necesita actualizar ningún script de inicio para tener funcionando LVM.

Para anteriores versiones a Slackware 8.1, deberías aplicar el siguiente parche al archivo /etc/rc.d/rc.S


cd /etc/rc.d
cp -a rc.S rc.S.old
patch -p0 < rc.S.diff
            
(la parte de cp es para hacer una copia).


----- snip snip file: rc.S.diff---------------
--- rc.S.or	Tue Jul 17 18:11:20 2001
+++ rc.S	Tue Jul 17 17:57:36 2001
@@ -4,6 +4,7 @@
 #
 # Mostly written by:  Patrick J. Volkerding, <volkerdi@slackware.com>
 #
+# Added LVM support <tgs@iafrica.com>

 PATH=/sbin:/usr/sbin:/bin:/usr/bin

@@ -28,19 +29,21 @@
   READWRITE=yes
 fi

+
 # Check the integrity of all filesystems
 if [ ! READWRITE = yes ]; then
-  /sbin/fsck -A -a
+  /sbin/fsck -a /
+  # Check only the root fs first, but no others
   # If there was a failure, drop into single-user mode.
   if [ ? -gt 1 ] ; then
     echo
     echo
-    echo "*******************************************************"
-    echo "*** An error occurred during the file system check. ***"
-    echo "*** You will now be given a chance to log into the  ***"
-    echo "*** system in single-user mode to fix the problem.  ***"
-    echo "*** Running 'e2fsck -v -y <partition>' might help.  ***"
-    echo "*******************************************************"
+    echo "************************************************************"
+    echo "*** An error occurred during the root file system check. ***"
+    echo "*** You will now be given a chance to log into the       ***"
+    echo "*** system in single-user mode to fix the problem.       ***"
+    echo "*** Running 'e2fsck -v -y <partition>' might help.       ***"
+    echo "************************************************************"
     echo
     echo "Once you exit the single-user shell, the system will reboot."
     echo
@@ -82,6 +85,44 @@
     echo -n "get into your machine and start looking for the problem. "
     read junk;
   fi
+  # okay / fs is clean, and mounted as rw
+  # This was an addition, limits vgscan to /proc thus
+  # speeding up the scan immensely.
+  /sbin/mount /proc
+
+  # Initialize Logical Volume Manager
+  /sbin/vgscan
+  /sbin/vgchange -ay
+
+  /sbin/fsck -A -a -R
+  #Check all the other filesystem, including the LVM's, excluding /
+
+  # If there was a failure, drop into single-user mode.
+  if [ ? -gt 1 ] ; then
+    echo
+    echo
+    echo "*******************************************************"
+    echo "*** An error occurred during the file system check. ***"
+    echo "*** You will now be given a chance to log into the  ***"
+    echo "*** system in single-user mode to fix the problem.  ***"
+    echo "*** Running 'e2fsck -v -y <partition>' might help.  ***"
+    echo "*** The root filesystem is ok and mounted readwrite ***"
+    echo "*******************************************************"
+    echo
+    echo "Once you exit the single-user shell, the system will reboot."
+    echo
+
+    PS1="(Repair filesystem) #"; export PS1
+    sulogin
+
+    echo "Unmounting file systems."
+    umount -a -r
+    mount -n -o remount,ro /
+    echo "Rebooting system."
+    sleep 2
+    reboot
+  fi
+
 else
   echo "Testing filesystem status: read-write filesystem"
   if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ;
then
@@ -111,14 +152,16 @@
     echo -n "Press ENTER to continue. "
     read junk;
   fi
+
 fi

+
 # remove /etc/mtab* so that mount will create it with a root entry
 /bin/rm -f /etc/mtab* /etc/nologin /etc/shutdownpid

 # mount file systems in fstab (and create an entry for /)
 # but not NFS or SMB because TCP/IP is not yet configured
-/sbin/mount -a -v -t nonfs,nosmbfs
+/sbin/mount -a -v -t nonfs,nosmbfs,proc

 # Clean up temporary files on the /var volume:
 /bin/rm -f /var/run/utmp /var/run/*.pid /var/log/setup/tmp/*
--snip snip snip end of file---------------

         

7.6. SuSE

Ningún cambio debería ser necesario desde la versión 6.4 ya que LVM está incluído


Chapter 8. Scripts de arranque para LVM 2

Nada todavía


Chapter 9. Compilando LVM desde el Código fuente

9.1. Compilando las bibliotecas y utilidades de LVM

Cambia al directorio de LVM y ejecuta ./configure seguido de make. Ésto compilará todas las bibliotecas y programas.

Si es necesario puedes cambiar algunas opciones con el script de configuración. Ejecuta ./configure --help para determinar qué opciones están disponibles. La mayoría de las veces ésto no será necesario.

No debería habr ningún error en el proceso de compilado. Si lo hubiese, ve a Informando de errores y fallos para ver cómo informar de ello.

Eres bienvenido de arreglarlos y enviarnos los parches. Los parches son generalmente enviados a la lista linux-lvm.


9.2. Instalando las bibliotecas y utilidades de LVM

Después de que el código de LVM se haya compilado adecuadamente, simplemente ejecuta make installpara instalar las bibliotecas y utilidades de LVM en tu sistema.


9.3. Borrando las bibliotecas y utilidades de LVM

Para borrar las librerías y utilidades que has instalado, ejecuta make remove. Debes tener el código fuente que usaste para instalar LVM para poder hacerlo.


Chapter 10. Transición desde la versión anterior de LVM a LVM 1.0.8

La transición desde la versión anterior de LVM a LVM 1.0.8 debería realizarse sin dificultad. Hemos encontrado un método para leer en la versión del metadata de los PV 1 (LVM 0.9.1 Beta7 y anteriores) tan bien como en el metadata de los PV versión 2 (LVM 0.9.1 Beta8 y LVM 1.0).

Atención:Los nuevos PVs inicializados con LVM 1.0.8 son creados con la estructura en-disco de la versión 1 de PV. Ésto significa que LVM 0.9.1 Beta8 y LVM 1.0 no puede leer o usar PVs creados con 1.0.8.


10.1. Actualizando a LVM 1.0.8 con una partición raiz no-LVM

Hay unos pasos simples para configurarlo, pero es recomendado que hagas una copia de seguridad antes de intentarlo. Estás avisado.

  1. Compilar el LVM del kernel y módulos

    Sigue los pasos indicados en Chapter 5 - Section 6.2 para las instrucciones sobre cómo obtener y compilar los componentes de LVM del kernel.

  2. Compilar las utilidades de usuario de LVM

    Sigue los pasos en Chapter 9 para compilar e instalar las utilidades de usuario de LVM.

  3. Configurar los scripts de inicio

    Asegúrate de tener la configuración de scripts de inicio necesaria Chapter 7.

  4. Arrancar con el nuevo kernel

    Asegúrate de que el cargador de arranque está configurado para cargar el nuevo kernel con LVM y, si estás usuando módulos, poner un insmod lvm-mod dentro del script de arranque O añade /etc/modules.conf (antiguamente /etc/conf.modules) añadiendo

    
     alias block-major-58      lvm-mod
         alias char-major-109      lvm-mod
                      
    para permitir a modprobe cargar el módulo LVM (no olvides activar kmod).

    Reinicia y disfruta.


10.2. Actualizando a LVM 1.0.8 con una partición raiz LVM y initrd

Es relativamente fácil si sigues los pasos cuidadosamente. Es recomendado tener una buena copia de seguridad y un disco de rescate apropiado a mano por si acaso.

La manera "normal" de ejecutar LVM en el sistema de archivos raiz es tener una partición simple no-LVM llamada /boot que contiene los kernel y discos de inicio RAM necesarios para arrancar el sistema. El sistema que yo actualicé era así:


 # df

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/rootvg/root        253871     93384    147380  39% /
/dev/hda1                17534     12944      3685  78% /boot
/dev/rootvg/home       4128448      4568   3914168   0% /home
/dev/rootvg/usr        1032088    332716    646944  34% /usr
/dev/rootvg/var         253871     31760    209004  13% /var

            
/boot contiene el antiguo kernel y un disco RAM de inicio así como los archivos de arranque de LILO y lo siguiente en /etc/lilo.conf

 # ls /boot

System.map                 lost+found              vmlinux-2.2.16lvm
map                        module-info	           boot.0300  
boot.b                     os2_d.b                 chain.b
initrd.gz                  

 # tail /etc/lilo.conf

image=/boot/vmlinux-2.2.16lvm
        label=lvm08
        read-only
        root=/dev/rootvg/root
        initrd=/boot/initrd.gz
        append="ramdisk_size=8192"

            

  1. Compilar el kernel LVM y módulos

    Sigue los pasos especificados en Chapter 5 - Section 6.2 para instrucciones sobre obtener y compilar los componentes necesarios de LVM en el kernel.

  2. Compila las utilidades de usuario de LVM

    Sigue los pasos en Section 6.2para compilar e instalar las utilidades de usuario de LVM.

    Instala las nuevas utilidades. Una vez que has hecho ésto no podrás hacer ninguna manipulación de LVM ya que no son compatibles con el kernel que estás actualmente ejecutando.

  3. Renombra el existente initrd.gz

    Esto es para que no sea sobreescrito por el nuevo

    
# mv /boot/initrd.gz /boot/initrd08.gz
                         

  4. Edit /etc/lilo.conf

    Crea una entrada para el arranque con el archivo que acabas de renombrar. Necesitarás reiniciar usando éste si algo va mal en el siguiente reinicio. La entrada cambiada se verá algo así como esto:

    
image=/boot/vmlinux-2.2.16lvm
            label=lvm08
            read-only
            root=/dev/rootvg/root
            initrd=/boot/initrd08.gz
            append="ramdisk_size=8192"
                         

  5. Ejecuta lvmcreate_initrd para crear un nuevo disco RAM de inicio

    
# lvmcreate_initrd 2.4.9
                         
    No olvides poner la nueva versión de kernel ahí para que pueda coger los módulos correctos.

  6. Añade una nueva entrada dentro de /etc/lilo.conf

    Esta entrada es para arrancar el nuevo kernel con su nuevo initrd.

    
image=/boot/vmlinux-2.4.9lvm
            label=lvm10
            read-only
            root=/dev/rootvg/root
            initrd=/boot/initrd.gz
            append="ramdisk_size=8192"
                         

  7. Re-ejecuta lilo

    Esto instalará el nuevo bloque de arranque.

    
# /sbin/lilo
                         

  8. Reinicia

    Cuando obtienes el prompt del LILO selecciona la nueva entrada (en el ejemplo lvm10) y tu sistema debería arrancar dentro de Linux usando la nueva versión de LVM.

    Si el nuevo kernel no arranca, entonces simplemente arranca el antiguo e intenta arreglar el problema. Puede ser que el nuevo kernel no tiene todos los controladores de dispositivos compilados dentro de él, o que no están disponibles en el initrd. Recuerda que todos los controladores de dispositivos (aparte de LVM) necesarios para acceder al dispositivo raiz deberían ser compilados dentro del kernel y no como módulos.

    Si necesitas hacer alguna manipulación LVM cuando reiniciaste a la versión anterior, entonces simplemente recompila las antiguas utilidades e instálalas.

    
# make install
                         
    Si haces esto, no olvides instalar las nuevas utilidades cuando reinicies con la nueva versión de LVM.

Cuando estés contento con el nuevo sistema recuerda cambiar la entrada ``default='' del archivo lilo.conf para que sea el kernel por defecto.


Chapter 11. Tareas Comunes

Las siguientes secciones resumen algunas tareas administrativas comunes para el sistema LVM. Ésto no es un sustituto para leer las páginas del manual.


11.1. Inicializando discos o particiones

Antes de que puedas usar un disco o una partición como un volúmen físico tienes que inicializarlo:

Para discos enteros:

  • Ejecuta pvcreate sobre el disco:

    
# pvcreate /dev/hdb
                         
    Esto crea un descriptor de grupo de volumen al comienzo del disco.

  • Si da un error de que LVM no puede inicializar un disco con una tabla de particiones, primero asegúrate de que el disco que estás utilizando es el correcto. Si estás seguro de esto, ejecuta lo siguiente:

    WarningPELIGROSO
     

    Los siguientes comandos destruirán la tabla de partición en el disco que se indique. Asegúrate de que es el disco correcto.

    
# dd if=/dev/zero of=/dev/diskname bs=1k count=1
    # blockdev --rereadpt /dev/diskname
    

Para particiones:

  • Cuando usemos LVM 1 en PCs con particiones DOS, indica el tipo de partición a 0x8e usando fdisk o algún otro programa similar. Este paso es innecesario en sistemas PPC o cuando usemos LVM 2.

  • Ejecuta pvcreate sobre la partición:

    
# pvcreate /dev/hdb1
                  
    Esto creará un descriptor de grupo de volumen al principio de la partición /dev/hdb1.


11.2. Creando un grupo de volumen

Usa el programa 'vgcreate':


# vgcreate my_volume_group /dev/hda1 /dev/hdb1 
        
NOTA: Si estás utilizando LVM 1 con devfs es esencial que uses el nombre completo de devfs del dispositivo en vez del nombre del enlace simbólico en /dev. Debería ser así:

# vgcreate my_volume_group /dev/ide/host0/bus0/target0/lun0/part1 \
                           /dev/ide/host0/bus0/target1/lun0/part1
        
LVM 2 no tiene esta restricción.

También puedes especificar el tamaño de extensión con este comando si el tamaño por defecto de 32MB no te es aceptable con el modificador '-s'. Además puedes poner algunos límites en el número de volúmenes físicos o lógicos que puede tener.


11.3. Activando un grupo de volumen

Después de arrancar el sistema o ejecutando vgchange -an, no podrás acceder a tus VGs y LVs. Para reactivar el grupo de volumen, ejecuta:


# vgchange -a y my_volume_group
        


11.4. Borrando un grupo de volumen

Asegúrate de que no hay volúmenes lógicos en el grupo de volumen, comprueba al final de la sección cómo hacer ésto.

Desactiva el grupo de volumen:


# vgchange -a n my_volume_group
        

Ahora borra el grupo de volumen:


# vgremove my_volume_group
        


11.5. Añadiendo volúmenes físicos a un grupo de volumen

Usa 'vgextend' para añadir un volumen físico inicializado a un grupo de volumen existente.


# vgextend my_volume_group /dev/hdc1
                                    ^^^^^^^^^ nuevo volumen físico
        


11.6. Borrando volúmenes físicos de un grupo de volumen

Asegúrate de que el volumen físico no está siendo usado por ningún volumen lógico usando el comando 'pvdisplay':


# pvdisplay /dev/hda1

--- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
PV Size               1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV#                   1
PV Status             available
Allocatable           yes (but full)
Cur LV                1
PE Size (KByte)       4096
Total PE              499
Free PE               0
Allocated PE          499
PV UUID               Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7

        

Si el volumen físico está todavía en uso tendrás que migrar los datos a otro volumen físico usando pvmove.

Entonces usa 'vgreduce' para borrar el volumen físico:


# vgreduce my_volume_group /dev/hda1
        


11.7. Creando un volumen lógico

Para crear una LV lineal de 1500MB llamada 'testlv' y su dispositivo de bloque especial '/dev/testvg/testlv':


# lvcreate -L1500 -ntestlv testvg
        

Para crar un volumen lógico de tamaño 100 LE con 2 rayas y un tamaño de raya de 4 KB.


# lvcreate -i2 -I4 -l100 -nanothertestlv testvg
        

Si quieres crear un LV que use el VG entero, usa vgdisplay para buscar el tamaño "Total de PE", entonces úsalo cuando ejecutes lvcreate.


# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n mylv
        
Esto creará un LV llamado mylv llenando el VG testvg.

Si quieres que el volumen lógico esté alocado desde un volumen físico específico en el grupo de volumen, especifica los PV o PVs al final de el comando lvcreate.


# lvcreate -L 1500 -ntestlv testvg /dev/sdg
        


11.8. Borrando un volumen lógico

Un volumen lógico debe ser cerrado antes de que pueda ser borrado:


# umount /dev/myvg/homevol
# lvremove /dev/myvg/homevol
lvremove -- do you really want to remove "/dev/myvg/homevol"? [y/n]: y
lvremove -- doing automatic backup of volume group "myvg"
lvremove -- logical volume "/dev/myvg/homevol" successfully removed
        


11.9. Extendiendo un volumen lógico

Para extender un volumen lógico simplemente dile al comando lvextend cuánto quieres incrementar el tamaño. Puedes especificar cómo crecer el volumen, o cómo expandirlo


# lvextend -L12G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
        
extenderá /dev/myvg/homevol a 12 Gigabytes.


# lvextend -L+1G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
        
añadirá otro gigabyte a /dev/myvg/homevol.

Después de que hayas extendido el volumen lógico es necesario incrementar el tamaño del sistema de archivos para que coincida. Cómo hacerlo dependerá del tipo de sistema de archivos que estés usando.

Por defecto, la mayoría de las utilidades de redimensionado de sistemas de archivos incrementan el tamaño del sistema de archivos para ser el tamaño del volumen lógico subyacente por lo que no necesitas preocuparte por especificarle el mismo tamaño para cada uno de los dos comandos.

  1. ext2/ext3

    A no ser que hayas parcheado tu kernel con el parche de ext2online es necesario desmontar el sistema de archivos antes de redimensionarlo. (Parece que el parche de redimensionado online es todavía peligroso, por lo que úsalo bajo tu propio riesgo)

    
   # umount /dev/myvg/homevol/dev/myvg/homevol
       # resize2fs /dev/myvg/homevol
       # mount /dev/myvg/homevol /home
                

    Si no tienes e2fsprogs 1.19 o posterior, puedes descargar el comando ext2resize de ext2resize.sourceforge.net y usarlo:

    
   # umount /dev/myvg/homevol/dev/myvg/homevol
       # ext2resize /dev/myvg/homevol
       # mount /dev/myvg/homevol /home
                

    Para ext2 hay una manera fácil. LVM 1 viene con una utilidad llamada e2fsadm que hace el lvextend y resize2fs por ti (además hace el recortado del sistema de archivo, velo en la sección siguiente).

    WarningLVM 2 Caveat
     

    Actualmente no hay un equivalente a e2fsadm para LVM 2 y el e2fsadm que viene con LVM 1 no funciona con LVM 2.

    entonces el comando
    
   # e2fsadm -L+1G /dev/myvg/homevol
                
    es equivalente a los dos comandos:
    
   # lvextend -L+1G /dev/myvg/homevol
       # resize2fs /dev/myvg/homevol
                

    NoteNote
     

    Necesitas desmontar el sistema de archivos antes de ejecutar e2fsadm.

  2. reiserfs

    El sistema de archivos Reiserfs puede ser redimensionado cuando está montado o desmontado, como tú prefieras:

    • Conectado:

      
   # resize_reiserfs -f /dev/myvg/homevol
                        

    • Desconectado:

      
   # umount /dev/myvg/homevol
         # resize_reiserfs /dev/myvg/homevol
         # mount -treiserfs /dev/myvg/homevol /home
                        

  3. xfs

    El sistema de archivos XFS debe ser montado para ser redimensionado y el punto de montaje es especificado en vez del nombre del dispositivo.

    
   # xfs_growfs /home
                

  4. jfs

    Como el XFS, el sistema de archivos JFS debe ser montado para ser redimensionado y el punto de montaje es especificado en vez de el nombre del dispositivo. Necesitas por lo menos la versión 1.0.21 de jfs-utils para hacerlo.

    
# mount -o remount,resize /home
                

    WarningFallos conocidos del Kernel
     

    Algunas versiones del kernel tienen problemas con esta sintaxis (se sabe que 2.6.0 tiene este problema). En este caso tienes que especificar exactamente el nuevo tamaño del sistema de archivos en bloques. Es extremadamente una equivocación que tú debas saber el tamaño de bloque de tu sistema de archivo y calcular el nuevo tamaño basado en esas unidades.

    Ejemplo: Si tuvieses que redimensionar un sistema de archivos JFS a 4 gigabytes que tienen bloques de 4k, deberías poner:

    
# mount -o remount,resize=1048576 /home
                  


11.10. Reduciendo un volumen lógico

El tamaño de un volumen logico puede ser reducido igual que incrementado. De todas formas, es very importante acordarse de reducir el tamaño del sistema de archivos o todo aquello que resida en el volumen antes de encoger el volumen, de lo contrario puedes perder datos.

  1. ext2

    Si estás usando LVM 1 con ext2 como sistema de archivos entonces puedes usar el comando e2fsadm mencionado antes para redimensionar tanto el volumen como el sistema de archivos del siguiente modo:

    
# umount /home
    # e2fsadm -L-1G /dev/myvg/homevol
    # mount /home
                

    WarningLVM 2 Caveat
     

    Actualmente no hay un equivalente para LVM 2 y el e2fsadm que viene con LVM 1 no funciona con LVM 2.

    Si prefieres hacer esto manualmente debes saber el nuevo tamaño del volumen en bloques y usar los siguientes comandos:

    
# umount /home
    # resize2fs /dev/myvg/homevol 524288
    # lvreduce -L-1G /dev/myvg/homevol
    # mount /home
                

  2. reiserfs

    Reiserfs parece que prefiere ser desmontado cuando lo encogemos

    
# umount /home
    # resize_reiserfs -s-1G /dev/myvg/homevol
    # lvreduce -L-1G /dev/myvg/homevol
    # mount -treiserfs /dev/myvg/homevol /home
                

  3. xfs

    No hay manera de enconger los sistemas de archivos XFS.

  4. jfs

    No hay manera de enconger los sistemas de archivos JFS.


11.11. Migrando datos de un volumen físico

Para dejar un disco fuera de servicio debemos primero dejar todas sus extensiones físicas desplazadas a uno o más discos en el grupo de volumen. Debe haber suficientes extensiones físicas en los restantes PVs para mantener las extensiones que serán copiadas del disco antiguo. Para más detalles ve a Section 13.5.


Chapter 12. Particionando un disco

12.1. Múltiples particiones en el mismo disco

LVM permite crear PVs (volúmenes físicos) fuera de cualquier dispositivo de bloques, por ejemplo, los siguientes son comandos válidos y funcionarán perfectamente en un entorno LVM:


# pvcreate /dev/sda1
# pvcreate /dev/sdf
# pvcreate /dev/hda8
# pvcreate /dev/hda6
# pvcreate /dev/md1
        

En un sistema de producción "normal" es recomendado que sólo exista un PV en un disco real, por las siguientes razones:

  • Comodidad administrativa

    Es más fácil conservar el hardware en un sistema si cada disco realmente aparenta uno. Esto es especialmente verdad particularmente si un disco falla.

  • Para evitar problemas de ejecución en sistemas rayados (striped)

    LVM no puede decir que dos PVs están en el mismo disco físico, por lo que si creas un LV rayado entonces las rayas deberían estar diferentes particiones del mismo disco resultando en un detrimento del rendimiento en vez de incrementarlo.

Sin embargo puede ser deseable hacerlo por varios motivos:

  • Migración de sistemas existentes a LVM

    En un sistema con pocos discos debería ser necesario mover todos los datos de las particiones para hacer la conversión (ver Section 13.8)

  • Partiendo un disco grande en Grupos de Volúmenes

    Si tienes un disco muy grande y quieres tener más de un grupo de volumen por propósitos administrativos, entonces es necesario particionar la unidad en más de un área.

Si tienes un disco con más de una partición y esas particiones están en el mismo grupo de volumen, ten cuidado al especificar qué particiones tienen que ser incluídas en el volumen lógico cuando crees volúmenes rayados.

El método recomendado para particionar un disco es crear una partición única que cubra el disco entero. Ésto evita cualquier accidente con los nodos del dispositivo y previene los avisos del kernel sobre particiones desconocidas en tiempo de arranque.


12.2. Etiquetas de disco de Sun

Debes tener cuidado con systemas SPARC donde los discos tienen etiquetas de disco Sun.

El diseño normal para una etiqueta de disco Sun es que la primera partición empieza en el bloque cero del disco, de esta manera la primera partición también cubre el área que contiene la etiqueta de disco. Esto trabaja bien en sistemas de archivo ext2 (y es esencial para arrancar usando SILO) pero esas particiones no deberían ser usadas por LVM. Esto es porque LVM empieza a escribir al comienzo del dispositivo y sobreescribirá la etiqueta de disco.

Si quieres usar un disco con etiqueta de disco Sun con LVM, asegúrate que la partición que estás usando comience en el cilindro 1 o mayor.


Chapter 13. Recetas

Esta sección detalla varias "recetas" para configurar lvm. La esperanza es que el lector adapte estas recetas a su propio sistema y necesidades.


13.1. Configurando LVM en tres discos SCSI

Para esta receta, la configuración tiene tres discos SCSI que serán puestos en un volumen lógico usando LVM. Los discos están en /dev/sda, /dev/sdb, y /dev/sdc.


13.1.1. Preparando los discos

Antes de que puedas usar un disco en un grupo de volumen debes prepararlo:

WarningAtención!
 

Lo siguiente destruirá cualquier dato en /dev/sda, /dev/sdb, y /dev/sdc.

Ejecua pvcreate en los discos


# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
          
Esto crea un área de descriptor de grupo de volumen (VGDA) al principio de los discos.


13.1.2. Configurar un Grupo de Volumen

  1. Crear un grupo de volumen

    
# vgcreate my_volume_group /dev/sda /dev/sdb /dev/sdc/
                  

  2. Ejecuta vgdisplay para comprobar el grupo de volumen

    
# vgdisplay
    # vgdisplay
    --- Volume Group ---
    VG Name	              my_volume_group
    VG Access             read/write
    VG Status             available/resizable
    VG #                  1
    MAX LV                256
    Cur LV                0
    Open LV               0
    MAX LV Size           255.99 GB
    Max PV                256
    Cur PV                3
    Act PV                3
    VG Size               1.45 GB
    PE Size               4 MB
    Total PE              372
    Alloc PE / Size       0 / 0
    Free  PE / Size       372/ 1.45 GB
    VG UUID               nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
                  
    Las cosas más importantes a comprobar son que los tres primeros puntos sean correctos y que el punto del Tamaño de VG sea el tamaño apropiado para la suma del espacio en todos los discos.


13.1.3. Creando el Volumen Lógico

Si el grupo de volumen parece correcto, es hora de crear un grupo de volumen en lo alto del grupo de volumen.

Puedes el volumen lógico con el tamaño que quieras. (Es similar a una partición en una configuración no LVM.) Para este ejemplo crearemos un sólo volumen lógico de tamaño 1 GB en el grupo de volumen. No usaremos sistema rayado (striping) porque actualmente no es posible añadir un disco a un conjunto rayado después de que el volumen lógico es creado.


# lvcreate -L1G -nmy_logical_volume my_volume_group
lvcreate -- doing automatic backup of "my_volume_group"
lvcreate -- logical volume "/dev/my_volume_group/my_logical_volume" successfully created
          


13.1.4. Crear un Sistema de Archivos

Crear un sistema de archivos ext2 en el volumen lógico


# mke2fs /dev/my_volume_group/my_logical_volume
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
9 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
               


13.1.5. Comprobando el Sistema de Archivos

Monta el volumen lógico y prueba que todo parezca correcto


# mount /dev/my_volume_group/my_logical_volume /mnt
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              1311552    628824    616104  51% /
/dev/my_volume_group/my_logical_volume
                       1040132        20    987276   0% /mnt
          

Si todo funcionó correctamente, deberías tener un volumen lógico con un sistema de archivos ext2 montado en /mnt.


13.2. Configurando LVM en tres discos SCSI con sistema rayado (striping)

Para esta receta, tendremos tres discos SCSI que pondremos en un volumen lógico usando LVM. Los discos son /dev/sda, /dev/sdb, y /dev/sdc.

NoteNota
 

Actualmente no es posible añadir un disco a un volumen lógico en un sistema rayado en LVM 1. Usa LVM 2 con el formato de metadato lvm 2 si quieres ser capaz de poder hacerlo.


13.2.1. Preparando las particiones de los discos

Antes de que puedas usar un disco en un grupo de volumen debes prepararlo:

WarningAtención!
 

Lo siguiente destruirá cualquier dato en /dev/sda, /dev/sdb, y /dev/sdc

Ejecuta pvcreate en los discos:


# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
          
Esto crea un área de descriptor de grupo de volumen (VGDA) al comienzo de los discos.


13.2.2. Configurar un Grupo de Volumen

  1. Crear un grupo de volumen

    
# vgcreate my_volume_group /dev/sda /dev/sdb /dev/sdc
                  

  2. Ejecuta vgdisplay para comprobar el grupo de volumen

    
# vgdisplay
    --- Volume Group ---
    VG Name	              my_volume_group
    VG Access             read/write
    VG Status             available/resizable
    VG #                  1
    MAX LV                256
    Cur LV                0
    Open LV               0
    MAX LV Size           255.99 GB
    Max PV                256
    Cur PV                3
    Act PV                3
    VG Size               1.45 GB
    PE Size               4 MB
    Total PE              372
    Alloc PE / Size       0 / 0
    Free  PE / Size       372/ 1.45 GB
    VG UUID               nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
                  
    Las cosas más importantes a comprobar son que los tres primeros puntos sean correctos y que el punto del Tamaño de VG sea el tamaño apropiado para la suma del espacio en todos los discos.


13.2.3. Creando un Volumen Lógico

Si el grupo de volumen parece correcto, es hora de crear un volumen lógico al principio del grupo de volumen.

Puedes hacer el volumen lógico del tamaño que tú quieras (hasta el tamaño del VG que has creado; es similar a una partición en una configuración no LVM). Para este ejemplo crearemos sólo un volumen lógico de un tamaño de 1GB en el grupo de volumen. El volumen lógico será un grupo rayado utilizando el tamaño de raya de 4k. Esto incrementará el rendimiento del volumen lógico.


# lvcreate -i3 -I4 -L1G -nmy_logical_volume my_volume_group
lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE
lvcreate -- doing automatic backup of "my_volume_group"
lvcreate -- logical volume "/dev/my_volume_group/my_logical_volume" successfully created
          

NoteNota
 

Si creas el volumen lógico con '-i2' estarás usando sólo dos de los discos en el grupo de volumen. Esto es útil si quieres crear dos volúmenes lógicos en el mismo volumen físico, pero no tocaremos este tema en