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:[email protected]:/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:[email protected]:/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:[email protected]:/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:[email protected]:/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:[email protected]:/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:[email protected]:/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, <[email protected]>
 #
+# Added LVM support <[email protected]>

 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 esta receta.


13.2.4. Crear el 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)
132192 inodes, 264192 blocks
13209 blocks (5.00%) reserved for the super user
First data block=0
9 block groups
32768 blocks per group, 32768 fragments per group
14688 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

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


13.2.5. Probar el Sistema de Archivos

Monta el sistema de archivos del volumen lógico


# mount /dev/my_volume_group/my_logical_volume /mnt
               
y comprueba que todo parezca correcto

# 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 montado en /mnt.


13.3. Añadir un nuevo disco en un sistema multi-disco SCSI

13.3.1. Situación actual

La máquina de un centro de datos tiene 6 discos adjuntos del siguiente modo:


# pvscan
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
pvscan -- total: 8 [11.72 GB] / in use: 8 [11.72 GB] / in no VG: 0 [0]

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
/dev/dev/users         2064208   2060036      4172 100% /mnt/dev/users
/dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
/dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
/dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
/dev/ops/batch         1032088    897122    134966  86% /mnt/ops/batch
          
Como puedes ver los grupos "dev" y "ops" se están llenando por lo que se compra un nuevo disco y se añade al sistema. Se convierte en /dev/sdg.


13.3.2. Preparar las particiones del disco

El nuevo disco debe ser compartido a partes iguales entre ops y dev por lo que es particionado en dos volumenes físicos /dev/sdg1 y /dev/sdg2 :


# fdisk /dev/sdg

El dispositivo no contiene ninguna tabla de partición DOS válida, ni
etiqueta Sun o SGI. Los cambios se mantendrán en memoria sólo, hasta que
los escriba. Después de esto, por supuesto, el anterior contenido no podrá
ser recuperado.


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1000, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1000, default 1000): 500

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (501-1000, default 501): 
Using default value 501
Last cylinder or +size or +sizeM or +sizeK (501-1000, default 1000): 
Using default value 1000

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Unknown)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Unknown)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x partitions,
please see the fdisk manual page for additional information.

          

Lo siguiente es crear los volúmenes físicos en esta partición:


# pvcreate /dev/sdg1
pvcreate -- physical volume "/dev/sdg1" successfully created

# pvcreate /dev/sdg2
pvcreate -- physical volume "/dev/sdg2" successfully created
          


13.3.3. Añadir los nuevos discos al grupo de volumen

Los volúmenes son añadidos a los grupos de volúmenes dev y ops:


# vgextend ops /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "ops"
vgextend -- volume group "ops" successfully extended

# vgextend dev /dev/sdg2
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "dev"
vgextend -- volume group "dev" successfully extended

# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 44 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde1" of VG "ops"   [996 MB / 52 MB free]
pvscan -- ACTIVE   PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free]
pvscan -- ACTIVE   PV "/dev/sdf1" of VG "ops"   [996 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdf2" of VG "dev"   [996 MB / 72 MB free]
pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   [996 MB / 996 MB free]
pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   [996 MB / 996 MB free]
pvscan -- total: 10 [13.67 GB] / in use: 10 [13.67 GB] / in no VG: 0 [0]
          


13.3.4. Extender el sistema de archivos

Lo siguiente que hay que hacer es exenteder el sistema de archivos para que los usuarios puedan hacer uso del espacio extra.

Hay utilidades que permiten hacer el redimensionado-online de sistemas de archivos ext2 pero nosotros tomaremos la ruta segura y desmontaremos los dos sistemas de archivos antes de redimensionarlos:


# umount /mnt/ops/batch
# umount /mnt/dev/users
          

Usaremos el comando e2fsadm para redimensionar el volumen lógico y el sistema de archivos ext2 en una operación. Estamos usando ext2resize en vez de resize2fs (que es el comando por defecto de e2fsadm) por lo que definiremos la variable de entorno E2FSADM_RESIZE_CMD para decirle a e2fsadm que use ese comando.


# export E2FSADM_RESIZE_CMD=ext2resize
# e2fsadm /dev/ops/batch -L+500M
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/ops/batch: 11/131072 files (0.0<!--  non-contiguous), 4127/262144 blocks
lvextend -- extending logical volume "/dev/ops/batch" to 1.49 GB
lvextend -- doing automatic backup of volume group "ops"
lvextend -- logical volume "/dev/ops/batch" successfully extended

ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
e2fsadm -- ext2fs in logical volume "/dev/ops/batch" successfully extended to 1.49 GB


# e2fsadm /dev/dev/users -L+900M
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/dev/users: 12/262144 files (0.0% non-contiguous), 275245/524288 blocks
lvextend -- extending logical volume "/dev/dev/users" to 2.88 GB
lvextend -- doing automatic backup of volume group "dev"
lvextend -- logical volume "/dev/dev/users" successfully extended

ext2resize v1.1.15 - 2000/08/08 for EXT2FS 0.5b
e2fsadm -- ext2fs in logical volume "/dev/dev/users" successfully extended to 2.88 GB
          


13.3.5. Remontar los volúmenes extendidos

Podremos ahora remontar los sistemas de archivos y ver que están repletos de espacio.


# mount /dev/ops/batch
# mount /dev/dev/users
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/dev/cvs           1342492    516468    757828  41% /mnt/dev/cvs
/dev/dev/users         2969360   2060036    909324  69% /mnt/dev/users
/dev/dev/build         1548144   1023041    525103  66% /mnt/dev/build
/dev/ops/databases     2890692   2302417    588275  79% /mnt/ops/databases
/dev/sales/users       2064208    871214   1192994  42% /mnt/sales/users
/dev/ops/batch         1535856    897122    638734  58% /mnt/ops/batch
          


13.4. Haciendo una Copia de Seguridad usando instantáneas (snapshots)

Siguiendo con el anterior ejemplo ahora queremos usar el espacio extra en el grupo de volumen "ops" para hacer una copia de seguridad de la base de datos cada tarde. Para asegurar que los datos que irán a la cinta son consistentes usaremos un volumen lógido de una instantánea de LVM.

Un volumen de instantánea es un tipo especial de volumen que presenta todo los datos que había en el volumen en el momento que se creó la instantánea. Para una descripción más detallada, ver Section 3.8, Instantáneas. Esto significa que podemos hacer una copia de ese volumen sin preocuparnos sobre los datos que se han cambiado mientras que se estaba haciendo la copia de seguridad, y no tenemos que desconectar el volumen de la base de datos mientras que se está haciendo la copia de seguridad.

Note

En LVM1, este tipo de volumen era de sólo-lectura, pero LVM2 crea instantáneas de lectura/escritura por defecto.


13.4.1. Crear un volumen de instantánea

Hay algo más de 500 Megabytes de espacio libre en el grupo de volumen "ops", por lo que lo usaremos para alojar el espacio para el volúmen lógico de instantánea. Un volumen de instantánea puede ser tan grande o tan pequeño como queramos pero deberá ser lo suficientemente grande para alojar todos los cambios que pueden ocurrir al volumen original durante el tiempo de vida de la instantánea. Por eso aquí, permitiendo 500 megabytes de cambios en el volumen de la base de datos debería ser suficiente.


# lvcreate -L592M -s -n dbbackup /dev/ops/databases 
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/ops/dbbackup"
lvcreate -- doing automatic backup of "ops"
lvcreate -- logical volume "/dev/ops/dbbackup" successfully created

          

WarningLas instantáneas llenas completamente son automaticamente desactivadas
 

Si el volumen lógico de instantánea se llena se convertirá en inútil así que es de vital importancia alojar espacio suficiente.


13.4.2. Montar el volumen de instantánea

Podemos crear un punto de montaje y montar el volumen


# mkdir /mnt/ops/dbbackup
# mount /dev/ops/dbbackup /mnt/ops/dbbackup
mount: block device /dev/ops/dbbackup is write-protected, mounting read-only
          

Si estás usando un sistema de archivos XFS necesitarás añadir la opción nouuid en el comando de montaje:


# mount /dev/ops/dbbackup /mnt/ops/dbbackup -onouuid,ro
          


13.4.3. Hacer la copia de seguridad

Asumo que tienes una manera más sofisticada de hacer ésto!


# tar -cf /dev/rmt0 /mnt/ops/dbbackup
tar: Removing leading `/' from member names
          


13.4.4. Borrar la instantánea

Cuando la copia de seguridad ha terminado puedes desmontar el volumen y borrarla del sistema. Deberías borrar el volumen de instantánea cuando hayas finalizado con él porque tiene una copia de todos los datos escritos en el volumen original dañar el rendimiento.


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


13.5. Quitando un Disco Antiguo

Di que tienes una unidad IDE antigua en /dev/hdb. Quieres quitarla pero tiene un montón de archivos.

CautionCopia de seguridad de tu sistema
 

Deberías hacer una copia de seguridad antes de hacer operaciones con pvmove.


13.5.1. Distribuyendo Extensiones Antiguas a Discos Existentes en el Grupo de Volumen

Si tienes suficientes extensiones libre en los otros discos del grupo de volumen, lo tienes fácil. Simplemente ejecuta


# pvmove /dev/hdb
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
          
Esto moverá las extensiones físicas alojadas desde /dev/hdb en el resto de los discos del grupo de volumen.

Notepvmove is Lento
 

Se consciente que pvmove es tan lento como si tuviera que hacer una copia del contenido de cada uno de los bloques de un disco a uno o más discos. Si quieres una mayor información de pvmove, usa la opción -v.


13.5.1.1. Quitar el disco no usado

Ahora puedes quitar el disco antiguo del grupo de volumen.


# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "dev"
vgreduce -- volume group "dev" successfully reduced by physical volume:
vgreduce -- /dev/hdb
            
La unidad puede ser quitada fisicamente cuando la máquina se apague la próxima vez o se redistribuya a otros usuarios.


13.5.2. Distribuyendo Antiguas Extensiones en un Nuevo Disco de Reemplazo

Si no tienes suficientes extensiones físicas libre para distribuir las extensiones físicas antiguas, tendrás que añadir un disco al grupo de volumen y mover las extensiones en él.


13.5.2.1. Preparar el disco

Lo primero, necesitas hacer pvcreato en el nuevo disco para hacerlo disponible a LVM. En esta receta enseñaremos que no es necesario particionar un disco para poder usarlo.


# pvcreate /dev/sdf
pvcreate -- physical volume "/dev/sdf" successfully created
            


13.5.2.2. Añadirlo al grupo de volumen

Como los desarrolladores usan un montón de espacio en disco ese es un buen grupo de volumen para añadirlo.


# vgextend dev /dev/sdf
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "dev"
vgextend -- volume group "dev" successfully extended
            


13.5.2.3. Mover los datos

Lo siguiente que haremos será mover los datos desde el disco antiguo al nuevo. Nótese que no es necesario desmontar el sistema de archivos antes de hacerlo. Aunque is *altamente* recomendado que hagas una copia de seguridad completa antes de intentar esta operación en caso de que se vaya la corriente o algún otro problema que lo pueda interrumpir. El comando pvmove puede tomar bastante tiempo en terminar y utilizarán un alto rendimiento de ambos volúmenes, por lo que es recomendable hacerlo cuando los volúmenes no estén muy ocupados.


# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
            


13.5.2.4. Quitar el disco no usado

Ahora podemos quitar el disco antiguo del grupo de volumen.


# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "dev"
vgreduce -- volume group "dev" successfully reduced by physical volume:
vgreduce -- /dev/hdb
            
La unidad puede ser quitada fisicamente la siguiente vez que se apague la máquina o se redistribuya a algunos usuarios.


13.6. Moviendo un grupo de volumen a otro sistema

Es bastante fácil mover el grupo de volumen íntegro a otro sistema si, por ejemplo, el departamento de usuarios adquiere un nuevo servidor. Para hacer esto usaremos vgexport y vgimport.

Note

vgexport/vgimport no son necesarios para mover unidades de un sistema a otro. Es una utilidad politicamente administrativa para prevenir el acceso a los volúmenes en el tiempo que se tarda en moverlos.


13.6.1. Desmontar el sistema de archivos

Primero, asegúrate de que los usuarios no están accediendo a los archivos en el volumen activo, después desmóntalo.


# unmount /mnt/design/users
          


13.6.2. Marca el grupo de volumen como inactivo

Marcando el grupo de volumen como inactivo lo quita del kernel y previene cualquier actividad en él.


# vgchange -an design
vgchange -- volume group "design" successfully deactivated
          


13.6.3. Exporta el grupo de volumen

Es necesario ahora exporta el grupo de volumen. Esto previene que se accesible en el ``antiguo'' sistema y lo prepara para ser eliminado.


# vgexport design
vgexport -- volume group "design" successfully exported
          
La siguiente vez que se apague la máquina, el disco puede ser desconectado y conectado en su nueva máquina.


13.6.4. Importar el grupo de volumen

Una vez conectado en el nuevo sistema se convertirá en /dev/sdb por lo que pvscan muestra:


# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1"  is in EXPORTED VG "design" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2"  is in EXPORTED VG "design" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
          
Podemos importar el grupo de volumen (que lo activará) y montar el sistema de archivos.

Si estás importando en un sistema LVM 2, ejecuta:


# vgimport design
  Volume group "vg" successfully imported
          

Si estás importando en un sistema LVM 2, añade los PVs que necesitan ser importados:


# vgimport design /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "design"
vgimport -- volume group "design" successfully imported and activated
          


13.6.5. Activar el grupo de volumen

Ahora puedes activar el grupo de volumen antes de que puedas acceder a él.


# vgchange -ay design
          


13.6.6. Montar el sistema de archivos


# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users
          
El sistema de archivos está disponible para ser usado.


13.7. Dividiendo un grupo de volumen

Hay un nuevo grupo de usuarios llamado "design" que hay que añadir al sistema. Una manera de hacerlo es crear un nuevo grupo de volumen para mantener sus datos. No hay nuevos discos pero hay un montón de espacio libre en los discos actuales que pueden ser realojados.


13.7.1. Determinar el espacio libre


# pvscan 
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales" [1.95 GB / 1.27 GB free]
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   [1.95 GB / 564 MB free]
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   [1.95 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/sde"  of VG "ops"   [1.95 GB / 1.9 GB free]
pvscan -- ACTIVE   PV "/dev/sdf"  of VG "dev"   [1.95 GB / 1.33 GB free]
pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   [996 MB / 432 MB free]
pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   [996 MB / 632 MB free]
pvscan -- total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 0 [0]
          
Decidiremos realojar /dev/sdg1 y /dev/sdg2 para rediseñarlo por lo que lo primero que tenemos que hacer es mover las extensiones físicas dentro de las áreas libres de otros volúmenes (en este caso /dev/sdf del grupo dev y /dev/sde del grupo ops).


13.7.2. Mover los datos a los discos que serán usados

Algo de espacio está siendo usado por los volúmenes elegidos por lo que es necesario mover ese espacio en otros.

Mueve todas las extensiones físicas usadas desde /dev/sdg1 a /dev/sde y desde /dev/sdg2 a /dev/sdf


# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved

# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
          


13.7.3. Crear un nuevo grupo de volumen

Ahora, divide /dev/sdg2 desde dev y añádelo dentro de un nuevo grupo llamado "design". Es posible hacerlo usando vgreduce y vgcreate pero el comando vgsplit los combina a los dos.


# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
          


13.7.4. Eliminar el volumen restante

Lo siguiente es eliminar /dev/sdg1 de ops y añadirlo dentro del diseño.


# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1

# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
          


13.7.5. Crear un nuevo volumen lógico

Ahora creamos un volumen lógico. Más que alojar todo el espacio disponible, lo que haremos es dejar algo libre para el caso de que nos haga falta.


# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created
          


13.7.6. Hacer un sistema de archivos en el volumen


# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00<!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840

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

13.7.7. Montar el nuevo volumen


# mkdir -p /mnt/design/users mount /dev/design/users /mnt/design/users/
        

Es también una buena idea añadir una línea en el archivo del sistema /etc/fstab como esta:


/dev/design/user
/mnt/design/users   ext2    defaults        1 2
          


13.8. Convirtiendo un sistema de archivos raiz a LVM 1

CautionHacer una copia de seguridad del Sistema
 

Es muy recomendable que hagas una copia de seguridad de todo tu sistema antes de convertir el sistema de archivos principal a LVM 1.

WarningComplicaciones en la actualización
 

Tener el sistema de archivos principal en LVM 1 puede complicar significativamente los procedimientos de actualización (dependiendo de tu distribución) por lo que no debería ser intentado a la ligera. Particularmente, deberías asegurarte de que tanto el módulo de kernel de LVM 1 (si no tienes compilado el kernel con soporte LVM 1) como las utilidades vgscan/vgchange están disponibles antes, durante, y después de la actualización.

WarningComplicaciones de recuperación
 

Tener tu sistema de archivos principal en LVM 1 puede complicar la recuperación de sistemas de archivos dañados. Si pierdes el initrd, será muy difícil arrancar el sistema. Necesitarás el disco de recuperación que contenga el kernel, el módulo de LVM 1, y las utilidades de LVM 1, asaí como todas las utilidades necesarias para recuperar sistemas de archivos dañados. Asegúrate de hacer una copia de seguridad regularmente y tener una alternativa para el arranque de tu sistema que te permita recuperar el LVM 1.

En este ejemplo el sistema entero fue instalado como una única partición a excepción de /boot. El sistema tiene un disco de 2 gigas particionado de esta manera:


/dev/hda1  /boot 
/dev/hda2  swap
/dev/hda3  /
        

La partición / cubre todo el disco que no esté usado por /boot o el espacio de intercambio (swap). Un importante prerequisito en este procedimiento es que la partición principal esté llena a menos de la mitad de su capacidad (por lo que se podrá hacer una copia en un volumen lógico). Si este no es el caso entonces necesitarás un segundo disco. El procedimiento en ese caso es similar pero no hace falta encoger la actual particion principal y /dev/hda4 debería ser reemplazada con (ej) /dev/hdb1 en estos ejemplos.

Para hacer esto lo más fácil es usar el programa GNU parted. Este programa permite agrandar o encoger particiones que contienen sistemas de archivos. Es posible usar resize2fs y fdisk para hacer esto, pero el GNU parted lo hace mucho más eficaz. Debería estar incluido en tu distribución, pero si no, lo puedes bajar desde: ftp://ftp.gnu.org/pub/gnu/parted.

Una vez que has aplicado el programa parted en tu sistema Y HAS HECHO UNA COPIA DE SEGURIDAD DEL SISTEMA:


13.8.1. Arranca el sistema en modo "single user"

Arranca el sistema en modo "single user" (escribe linux S en el prompt de LILO). Esto es importante. Arrancando en modo "single-user" asegura que el sistema de archivos principal sea montado en modo de sólo-lectura y ningún programa está accediendo al disco.


13.8.2. Ejecutar Parted

Ejecuta parted para encoger la partición principal. Hazlo de manera que haya espacio en disco para hacer una copia completa de la partición en un volumen lógico. En este ejemplo una partición de 1.8 gigas es encogida a una de 1 gigabytes. Esto muestra los tamaños y los nombres de las particiones en el disco


# parted /dev/hda
(parted) p
.
.
.
          

Ahora redimensiona la partición:


(parted) resize 3 145 999
          
El primer número indica el número de partición (hda3), el segundo es la misma posición de comiendo que tiene hda3. No lo cambies. El último número debería hacer la partición más o menos la mitad de lo que es.

Crear una nueva partición


(parted) mkpart primary ext2 1000 1999
          
Esto hace una nueva partición para tener los datos iniciales de LVM 1. Debería empezar más allá de la nueva partición encogida hda3 y terminar al final del disco.

Cierra el programa parted


(parted) q
          


13.8.3. Reinicia

Reinicia el sistema


13.8.4. Verifica las opciones de configuración del kernel

Asegúrate de que el kernel que estás ejecutando funciona con LVM 1 y tiene puesto CONFIG_BLK_DEV_RAM y CONFIG_BLK_DEV_INITRD en el archivo de configuración.


13.8.5. Ajustar el tipo de partición

Cambia el tipo de partición de la nueva a tipo LVM (8e). El programa parted no entiende de particiones LVM 1 por lo que hay que hacerlo usando fdisk.


# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w
          


13.8.6. Configurar LVM 1 para el nuevo esquema

  • Inicializa LVM 1 (vgscan)

    
# vgscan
                  

  • Crea la nueva partición en un PV

    
# pvcreate /dev/hda4
                  

  • Crea un nuevo grupo de volumen

    
# vgcreate vg /dev/hda4
                  

  • Crea un volumen lógico para alojar la nueva partición principal

    
# lvcreate -L250M -n root vg
                  


13.8.7. Creación del sistema de archivos

Crea un sistema de archivos en el volumen lógico y copia los archivos de la partición principal dentro de ella.


# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
          


13.8.8. Actualizar /etc/fstab

Edita /mnt/etc/fstab en la nueva partición principal para que / sea montada en /dev/vg/root. Por ejemplo:


  /dev/hda3       /    ext2       defaults 1 1
          
becomes:

  /dev/vg/root    /    ext2       defaults 1 1
          


13.8.9. Creación de un disco RAM de inicio de LVM 1


# lvmcreate_initrd
        

Asegúrate de anotar el nombre con el que lvmcreate_initrd llama a la imagen initrd. Debería estar en /boot.


13.8.10. Actualiza /etc/lilo.conf

Agrega una entrada en /etc/lilo.conf para LVM 1. Debería aparecer algo parecido a esto:


  image   = /boot/KERNEL_IMAGE_NAME
  label   = lvm
  root    = /dev/vg/root
  initrd  = /boot/INITRD_IMAGE_NAME
  ramdisk = 8192
          
Donde KERNEL_IMAGE_NAME va el nombre de tu kernel compilado con LVM 1 y INITRD_IMAGE_NAME es el nombre de la imagen initrd creada por lvmcreate_initrd. La línea ramdisk debería ser incrementada si tienes una configuración extensa de LVM 1, pero 8192 debería ser suficiente para la mayoría de los usuarios. El tamaño por defecto de ramdisk es 4096. Si es necesario comprueba en la salida de lvmcreate_initrd, la línea que dice:

lvmcreate_initrd -- making loopback file (6189 kB)
          
y pon en ramdisk el tamaño que aparece entre paréntesis.

Deberías también copiar este nuevo lilo.conf en el /etc de la nueva partición principal.


# cp /etc/lilo.conf /mnt/etc/
          


13.8.12. Reinicia para arrancar con lvm

Reinicia - en el prompt de LILO escribe "lvm" El sistema debería reiniciar en Linux usando el nuevo Volumen Lógico.

Si funcionó entonces deberías hacer a lvm el arranque por defecto en LILO añadiendo la línea


default=lvm
          
en la primera sección de /etc/lilo.conf

Si no funciona entonces reinicia normalmente e intenta encontrar el problema. Podría ser un error en lilo.conf o que LVM 1 no está disponible en el disco RAM de inicio o en el kernel. Comprueba los mensajes en el arranque cuidadosamente.


13.8.13. Añade el reto del disco

Añade el resto del disco en LVM 1. Cuando estés contento con la configuracion puedes entonces añadir la antigua partición principal a LVM 1 y extenderlo por todo el disco.

Lo primero es poner a la partición con tipo 8e (LVM)


# fdisk /dev/hda

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w
          

Conviértela en un PV y añádelo en el grupo de volumen:


# pvcreate /dev/hda3
# vgextend vg /dev/hda3
          


Appendix A. Operaciones peligrosas

WarningAtención
 

No lo hagas a no ser que estés totalmente seguro de lo que estás haciendo. Probablemente pierdas todos tus datos.


A.1. Recuperando los UUIDs de VG usando uuid_fixer

Si estás actualizando LVM desde una versión anterior a la 0.9 y 0.9.1 de LVM y vgscan dice vgscan -- no volume groups found, este es un modo de arreglarlo.

  • Descarga el programa que arregla los UUID desde el directorio de contribuciones de Sistina.

    Está alojado en ftp://ftp.sistina.com/pub/LVM/contrib/uuid_fixer-0.3-IOP10.tar.gz"

  • Extrae uuid_fixer-0.3-IOP10.tar.gz

    
# tar zxf uuid_fixer-0.3-IOP10.tar.gz
                

  • cd to uuid_fixer

    
# cd uuid_fixer
                

    Tienes una o dos opciones en este punto:

    1. Usar los binarios precompilados (están compilados para la arquitectura i386).

      Asegúrate de listar todos los PV en el VG que estás restaurando, y sigue las indicaciones

      
# ./uuid_fixer <LIST OF ALL PVS IN VG TO BE RESTORED>
                      

    2. Compila el programa uuid_builder desde el código fuente

      Edita el archivo Makefile con tu editor favorito, y asegúrate que LVMDIR apunta al origen de tu LVM.

      Ejecuta make.

      
# make
                      

      Ejecuta uuid_fixer. Asegúrate de listar todos los PV en el VG que estás restaurando, y sigue las indicaciones

      
# ./uuid_fixer <LIST OF ALL PVS IN VG TO BE RESTORED>
                      

  • Desactiva cualquier Grupo de Volumen (optional)

    
# vgchange -an
                

  • Ejecuta vgscan

    
# vgscan
                

  • Reactiva los Grupos de Volumen

    
# vgchange -ay
                


A.2. Compartiendo volúmenes LVM

WarningLVM no está preparado para cluster
 

Ten mucho cuidado haciendo esto, LVM no está actualmente preparado para cluster y es muy fácil que pierdas todos tus datos.

Si estás en un entorno de canal-de-fibra o de SCSI-compartido donde más de una máquina tiene acceso físico a un grupo de discos entonces puedes usar LVM para dividir estos discos en volúmenes lógicos. Si quieres compartir los datos deberías mirar en GFS u otros sistemas de archivos de cluster.

La clave a recordar cuando compartimos volúmenes es que toda la administración de LVM debería ser hecha en un único nodo y que todos los nodos restantes deben tener LVM apagado antes de cambiar cualquier cosa en el nodo administrador. Entonces, cuando se hayan hecho los cambios, es necesario ejecutar vgscan en el resto de nodos antes de volver a cargar los grupos de volumen. También, a no ser que estés ejecutando un sistema de ficheros de cluster (como GFS) o una aplicación en el volumen, sólo un nodo puede montar cada sistema de archivos. Eso depende de ti, como administrador del sistema hacer cumplir ésto, si no LVM no parará de corromper tus datos.

La secuencia de arranque en cada nodo es del mismo modo con el que se configura un sistema de un único nodo.


vgscan
vgchange -ay
        
en los scripts de arranque.

Si necesitas hacer cualquier cambio en los metadatos de LVM (a pesar de ésto afecta a los volúmenes montados en los otros nodos) debes ejecutar la siguiente secuencia. En los pasos más abajo ``el nodo administrador'' es alguno escogido arbitrariamente de los que conforman el cluster.


Nodo Admin                   Otros nodos
----------                   -----------
			     Cierra todos los volúmenes (umount)
                             vgchange -an
<haz los cambios, ej lvextend>
                             vgscan
                             vgchange -ay
        

NoteLos VGs deberían ser activados por el nodo administrador
 

Ni necesitas, ni deberías, descargar los VGs en el nodo administrador, por lo que puede ser el nodo con más requerimiento.

Lo diré otra vez: Cuidado con lo que haces


Appendix B. Informando sobre Errores y Fallos

Si sólo nos dices que LVM no funciona no nos proporcionas la suficiente información para ayudarte. Necesitamos saber tu configuración y los componentes de tu ordenador. Lo primero que deberías hacer es mirar las listas de correo linux-lvm para ver si algún otro ha tenido un problema similar al tuyo. Si no encuentras un fallo que haya sido informado similar al tuyo entonces deberías recopilar la mayor información posible de la siguiente. La lista está agrupada en tres categorías de errores.

Esto puede resultar en un montón de información. Si al final salen más de un par de archivos, lo mejor es empaquetarlos y comprimirlos en uno sólo. Envía un enlace de donde se pueden descargar los archivos en la lista de correo apropiada (ver Section C.1) con una breve descripción del error. Si no tienes una página o un servidor de ficheros público en el que poner la información, puedes intentar enviar el archivo a la lista.


Appendix C. Contacto y enlaces

C.1. Listas de correo

Antes de que envíes nada a alguna de nuestras listas por favor lee todo este documento y comprueba en el archivo que tu pregunta ya está contestada. Por favor, escribe sólo en modo texto en nuestras listas, los mensajes formateados con colorines son imposibles de leer si alguno no utiliza un cliente de correo que los entienda. Aplica el modo de comportarte adecuado. Preguntas incompletas o sin información son muy difíciles de contestar.

Listas de correo sobre LVM

linux-lvm

Esta lista está orientada a preguntas y comentarios de usuarios. Es posible obtener respuestas que necesitas de otros usuarios. Os animamos a abrir discusiones. Los fallos deberían ser enviados a esta lista.

Suscríbete usando el interfaz web.

Mira en archivos

dm-devel

Esta lista no es especificamente para lvm, pero desde que el mapeador de dispositivos es usado en LVM 2, es mencionado aquí.

Suscríbete usando el interfaz web.

Mira en los archivos

Lista relacionada con la modificación de archivos de CVS

lvm2-commit

En esta lista se generan los mensaje automaticamente cuando alguien modifica algo en el árbol de fuentes de lvm2. Su principal propósito es mantener información sobre el árbol de fuentes de cvs.

Mira en los archivos

lvm-commit

En esta lista se generan los mensaje automaticamente cuando alguien modifica algo en el árbol de fuentes de lvm. Su principal propósito es mantener información sobre el árbol de fuentes de cvs.

Mira en los archivos

dm-commit

En esta lista se generan los mensaje automaticamente cuando alguien modifica algo en el árbol de fuentes de dm. Su principal propósito es mantener información sobre el árbol de fuentes de cvs.

Mira en los archivos

Listas que ya no se usan

lvm-devel

Esta lista ya no se usa; por favor usa linux-lvm para discusiones sobre el desarrollo de lvm

lvm-bugs

Esta lista ya no se usa; el informe de fallos debería ser enviado a la lista linux-lvm


C.2. Enlaces

Enlaces de LVM:


Appendix D. GNU Free Documentation License

Version 1.2, November 2002

Version 1.2, November 2002

Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Se permite la copia y distribución de copias literales de este documento de licencia, pero no se permiten cambios


D.1. PREÁMBULO

El propósito de esta Licencia es permitir que un manual, libro de texto, u otro documento escrito sea libre en el sentido de libertad: asegurar a todo el mundo la libertad efectiva de copiarlo y redistribuirlo, con o sin modificaciones, de manera comercial o no. En segundo término, esta Licencia proporciona al autor y al editor[2] una manera de obtener reconocimiento por su trabajo, sin que se le considere responsable de las modificaciones realizadas por otros.

Esta Licencia es de tipo copyleft, lo que significa que los trabajos derivados del documento deben a su vez ser libres en el mismo sentido. Complementa la Licencia Pública General de GNU, que es una licencia tipo copyleft diseñada para el software libre.

Hemos diseñado esta Licencia para usarla en manuales de software libre, ya que el software libre necesita documentación libre: un programa libre debe venir con manuales que ofrezcan la mismas libertades que el software. Pero esta licencia no se limita a manuales de software; puede usarse para cualquier texto, sin tener en cuenta su temática o si se publica como libro impreso o no. Recomendamos esta licencia principalmente para trabajos cuyo fin sea instructivo o de referencia.


D.2. APLICABILIDAD Y DEFINICIONES

Esta Licencia se aplica a cualquier manual u otro trabajo, en cualquier soporte, que contenga una nota del propietario de los derechos de autor que indique que puede ser distribuido bajo los términos de esta Licencia. Tal nota garantiza en cualquier lugar del mundo, sin pago de derechos y sin límite de tiempo, el uso de dicho trabajo según las condiciones aquí estipuladas. En adelante la palabra Documento se referirá a cualquiera de dichos manuales o trabajos. Cualquier persona es un licenciatario y será referido como Usted. Usted acepta la licencia si copia. modifica o distribuye el trabajo de cualquier modo que requiera permiso según la ley de propiedad intelectual.

Una Versión Modificada del Documento significa cualquier trabajo que contenga el Documento o una porción del mismo, ya sea una copia literal o con modificaciones y/o traducciones a otro idioma.

Una Sección Secundaria es un apéndice con título o una sección preliminar del Documento que trata exclusivamente de la relación entre los autores o editores y el tema general del Documento (o temas relacionados) pero que no contiene nada que entre directamente en dicho tema general (por ejemplo, si el Documento es en parte un texto de matemáticas, una Sección Secundaria puede no explicar nada de matemáticas). La relación puede ser una conexión histórica con el tema o temas relacionados, o una opinión legal, comercial, filosófica, ética o política acerca de ellos.

Las Secciones Invariantes son ciertas Secciones Secundarias cuyos títulos son designados como Secciones Invariantes en la nota que indica que el documento es liberado bajo esta Licencia. Si una sección no entra en la definición de Secundaria, no puede designarse como Invariante. El documento puede no tener Secciones Invariantes. Si el Documento no identifica las Secciones Invariantes, es que no las tiene.

Los Textos de Cubierta son ciertos pasajes cortos de texto que se listan como Textos de Cubierta Delantera o Textos de Cubierta Trasera en la nota que indica que el documento es liberado bajo esta Licencia. Un Texto de Cubierta Delantera puede tener como mucho 5 palabras, y uno de Cubierta Trasera puede tener hasta 25 palabras.

Una copia Transparente del Documento, significa una copia para lectura en máquina, representada en un formato cuya especificación está disponible al público en general, apto para que los contenidos puedan ser vistos y editados directamente con editores de texto genéricos o (para imágenes compuestas por puntos) con programas genéricos de manipulación de imágenes o (para dibujos) con algún editor de dibujos ampliamente disponible, y que sea adecuado como entrada para formateadores de texto o para su traducción automática a formatos adecuados para formateadores de texto. Una copia hecha en un formato definido como Transparente, pero cuyo marcaje o ausencia de él haya sido diseñado para impedir o dificultar modificaciones posteriores por parte de los lectores no es Transparente. Un formato de imagen no es Transparente si se usa para una cantidad de texto sustancial. Una copia que no es Transparente se denomina Opaca.

Como ejemplos de formatos adecuados para copias Transparentes están ASCII puro sin marcaje, formato de entrada de Texinfo, formato de entrada de LaTeX, SGML o XML usando una DTD disponible públicamente, y HTML, PostScript o PDF simples, que sigan los estándares y diseñados para que los modifiquen personas. Ejemplos de formatos de imagen transparentes son PNG, XCF y JPG. Los formatos Opacos incluyen formatos propietarios que pueden ser leídos y editados únicamente en procesadores de palabras propietarios, SGML o XML para los cuáles las DTD y/o herramientas de procesamiento no estén ampliamente disponibles, y HTML, PostScript o PDF generados por algunos procesadores de palabras sólo como salida.

La Portada significa, en un libro impreso, la página de título, más las páginas siguientes que sean necesarias para mantener legiblemente el material que esta Licencia requiere en la portada. Para trabajos en formatos que no tienen página de portada como tal, Portada significa el texto cercano a la aparición más prominente del título del trabajo, precediendo el comienzo del cuerpo del texto.

Una sección Titulada XYZ significa una parte del Documento cuyo título es precisamente XYZ o contiene XYZ entre paréntesis, a continuación de texto que traduce XYZ a otro idioma (aquí XYZ se refiere a nombres de sección específicos mencionados más abajo, como Agradecimientos, Dedicatorias , Aprobaciones o Historia. Conservar el Título de tal sección cuando se modifica el Documento significa que permanece una sección Titulada XYZ según esta definición.

El Documento puede incluir Limitaciones de Garantía cercanas a la nota donde se declara que al Documento se le aplica esta Licencia. Se considera que estas Limitaciones de Garantía están incluidas, por referencia, en la Licencia, pero sólo en cuanto a limitaciones de garantía: cualquier otra implicación que estas Limitaciones de Garantía puedan tener es nula y no tiene efecto en el significado de esta Licencia..


D.3. COPIA LITERAL

Usted puede copiar y distribuir el Documento en cualquier soporte, sea en forma comercial o no, siempre y cuando esta Licencia, las notas de copyright y la nota que indica que esta Licencia se aplica al Documento se reproduzcan en todas las copias y que usted no añada ninguna otra condición a las expuestas en esta Licencia. Usted no puede usar medidas técnicas para obstruir o controlar la lectura o copia posterior de las copias que usted haga o distribuya. Sin embargo, usted puede aceptar compensación a cambio de las copias. Si distribuye un número suficientemente grande de copias también deberá seguir las condiciones de la sección 3.

Usted también puede prestar copias, bajo las mismas condiciones establecidas anteriormente, y puede exhibir copias públicamente.


D.4. COPIADO EN CANTIDAD

Si publica copias impresas del Documento (o copias en soportes que tengan normalmente cubiertas impresas) que sobrepasen las 100, y la nota de licencia del Documento exige Textos de Cubierta, debe incluir las copias con cubiertas que lleven en forma clara y legible todos esos Textos de Cubierta: Textos de Cubierta Delantera en la cubierta delantera y Textos de Cubierta Trasera en la cubierta trasera. Ambas cubiertas deben identificarlo a Usted clara y legiblemente como editor de tales copias. La cubierta debe mostrar el título completo con todas las palabras igualmente prominentes y visibles. Además puede añadir otro material en las cubiertas. Las copias con cambios limitados a las cubiertas, siempre que conserven el título del Documento y satisfagan estas condiciones, pueden considerarse como copias literales.

Si los textos requeridos para la cubierta son muy voluminosos para que ajusten legiblemente, debe colocar los primeros (tantos como sea razonable colocar) en la verdadera cubierta y situar el resto en páginas adyacentes.

Si Usted publica o distribuye copias Opacas del Documento cuya cantidad exceda las 100, debe incluir una copia Transparente, que pueda ser leída por una máquina, con cada copia Opaca, o bien mostrar, en cada copia Opaca, una dirección de red donde cualquier usuario de la misma tenga acceso por medio de protocolos públicos y estandarizados a una copia Transparente del Documento completa, sin material adicional. Si usted hace uso de la última opción, deberá tomar las medidas necesarias, cuando comience la distribución de las copias Opacas en cantidad, para asegurar que esta copia Transparente permanecerá accesible en el sitio establecido por lo menos un año después de la última vez que distribuya una copia Opaca de esa edición al público (directamente o a través de sus agentes o distribuidores).

Se solicita, aunque no es requisito, que se ponga en contacto con los autores del Documento antes de redistribuir gran número de copias, para darles la oportunidad de que le proporcionen una versión actualizada del Documento.


D.5. MODIFICACIONES

Puede copiar y distribuir una Versión Modificada del Documento bajo las condiciones de las secciones 2 y 3 anteriores, siempre que usted libere la Versión Modificada bajo esta misma Licencia, con la Versión Modificada haciendo el rol del Documento, por lo tanto dando licencia de distribución y modificación de la Versión Modificada a quienquiera posea una copia de la misma. Además, debe hacer lo siguiente en la Versión Modificada:

  1. Usar en la Portada (y en las cubiertas, si hay alguna) un título distinto al del Documento y de sus versiones anteriores (que deberían, si hay alguna, estar listadas en la sección de Historia del Documento). Puede usar el mismo título de versiones anteriores al original siempre y cuando quien las publicó originalmente otorgue permiso.

  2. Listar en la Portada, como autores, una o más personas o entidades responsables de la autoría de las modificaciones de la Versión Modificada, junto con por lo menos cinco de los autores principales del Documento (todos sus autores principales, si hay menos de cinco), a menos que le eximan de tal requisito.

  3. Mostrar en la Portada como editor el nombre del editor de la Versión Modificada.

  4. Conservar todas las notas de copyright del Documento.

  5. Añadir una nota de copyright apropiada a sus modificaciones, adyacente a las otras notas de copyright.

  6. Incluir, inmediatamente después de las notas de copyright, una nota de licencia dando el permiso para usar la Versión Modificada bajo los términos de esta Licencia, como se muestra en la Adenda al final de este documento.

  7. Conservar en esa nota de licencia el listado completo de las Secciones Invariantes y de los Textos de Cubierta que sean requeridos en la nota de Licencia del Documento original.

  8. Incluir una copia sin modificación de esta Licencia.

  9. Conservar la sección Titulada Historia, conservar su Título y añadirle un elemento que declare al menos el título, el año, los nuevos autores y el editor de la Versión Modificada, tal como figuran en la Portada. Si no hay una sección Titulada Historia en el Documento, crear una estableciendo el título, el año, los autores y el editor del Documento, tal como figuran en su Portada, añadiendo además un elemento describiendo la Versión Modificada, como se estableció en la oración anterior.

  10. Conservar la dirección en red, si la hay, dada en el Documento para el acceso público a una copia Transparente del mismo, así como las otras direcciones de red dadas en el Documento para versiones anteriores en las que estuviese basado. Pueden ubicarse en la sección Historia. Se puede omitir la ubicación en red de un trabajo que haya sido publicado por lo menos cuatro años antes que el Documento mismo, o si el editor original de dicha versión da permiso.

  11. En cualquier sección Titulada Agradecimientos o Dedicatorias, Conservar el Título de la sección y conservar en ella toda la sustancia y el tono de los agradecimientos y/o dedicatorias incluidas por cada contribuyente.

  12. Conservar todas las Secciones Invariantes del Documento, sin alterar su texto ni sus títulos. Números de sección o el equivalente no son considerados parte de los títulos de la sección.

  13. Borrar cualquier sección titulada Aprobaciones. Tales secciones no pueden estar incluidas en las Versiones Modificadas.

  14. No cambiar el título de ninguna sección existente a Aprobaciones ni a uno que entre en conflicto con el de alguna Sección Invariante.

  15. Conservar todas las Limitaciones de Garantía.

Si la Versión Modificada incluye secciones o apéndices nuevos que califiquen como Secciones Secundarias y contienen material no copiado del Documento, puede opcionalmente designar algunas o todas esas secciones como invariantes. Para hacerlo, añada sus títulos a la lista de Secciones Invariantes en la nota de licencia de la Versión Modificada. Tales títulos deben ser distintos de cualquier otro título de sección.

Puede añadir una sección titulada Aprobaciones, siempre que contenga únicamente aprobaciones de su Versión Modificada por otras fuentes --por ejemplo, observaciones de peritos o que el texto ha sido aprobado por una organización como la definición oficial de un estándar.

Puede añadir un pasaje de hasta cinco palabras como Texto de Cubierta Delantera y un pasaje de hasta 25 palabras como Texto de Cubierta Trasera en la Versión Modificada. Una entidad solo puede añadir (o hacer que se añada) un pasaje al Texto de Cubierta Delantera y uno al de Cubierta Trasera. Si el Documento ya incluye un textos de cubiertas añadidos previamente por usted o por la misma entidad que usted representa, usted no puede añadir otro; pero puede reemplazar el anterior, con permiso explícito del editor que agregó el texto anterior.

Con esta Licencia ni los autores ni los editores del Documento dan permiso para usar sus nombres para publicidad ni para asegurar o implicar aprobación de cualquier Versión Modificada.


D.6. COMBINACIÓN DE DOCUMENTOS

Usted puede combinar el Documento con otros documentos liberados bajo esta Licencia, bajo los términos definidos en la sección 4 anterior para versiones modificadas, siempre que incluya en la combinación todas las Secciones Invariantes de todos los documentos originales, sin modificar, listadas todas como Secciones Invariantes del trabajo combinado en su nota de licencia. Así mismo debe incluir la Limitación de Garantía.

El trabajo combinado necesita contener solamente una copia de esta Licencia, y puede reemplazar varias Secciones Invariantes idénticas por una sola copia. Si hay varias Secciones Invariantes con el mismo nombre pero con contenidos diferentes, haga el título de cada una de estas secciones único añadiéndole al final del mismo, entre paréntesis, el nombre del autor o editor original de esa sección, si es conocido, o si no, un número único. Haga el mismo ajuste a los títulos de sección en la lista de Secciones Invariantes de la nota de licencia del trabajo combinado.

En la combinación, debe combinar cualquier sección Titulada Historia de los documentos originales, formando una sección Titulada Historia; de la misma forma combine cualquier sección Titulada Agradecimientos, y cualquier sección Titulada Dedicatorias. Debe borrar todas las secciones tituladas Aprobaciones.


D.7. COLECCIONES DE DOCUMENTOS

Puede hacer una colección que conste del Documento y de otros documentos liberados bajo esta Licencia, y reemplazar las copias individuales de esta Licencia en todos los documentos por una sola copia que esté incluida en la colección, siempre que siga las reglas de esta Licencia para cada copia literal de cada uno de los documentos en cualquiera de los demás aspectos.

Puede extraer un solo documento de una de tales colecciones y distribuirlo individualmente bajo esta Licencia, siempre que inserte una copia de esta Licencia en el documento extraído, y siga esta Licencia en todos los demás aspectos relativos a la copia literal de dicho documento.


D.8. AGREGACIÓN CON TRABAJOS INDEPENDIENTES

Una recopilación que conste del Documento o sus derivados y de otros documentos o trabajos separados e independientes, en cualquier soporte de almacenamiento o distribución, se denomina un agregado si el copyright resultante de la compilación no se usa para limitar los derechos de los usuarios de la misma más allá de lo que los de los trabajos individuales permiten. Cuando el Documento se incluye en un agregado, esta Licencia no se aplica a otros trabajos del agregado que no sean en sí mismos derivados del Documento.

Si el requisito de la sección 3 sobre el Texto de Cubierta es aplicable a estas copias del Documento y el Documento es menor que la mitad del agregado entero, los Textos de Cubierta del Documento pueden colocarse en cubiertas que enmarquen solamente el Documento dentro del agregado, o el equivalente electrónico de las cubiertas si el documento está en forma electrónica. En caso contrario deben aparecer en cubiertas impresas enmarcando todo el agregado.


D.9. TRADUCCIÓN

La Traducción es considerada como un tipo de modificación, por lo que usted puede distribuir traducciones del Documento bajo los términos de la sección 4. El reemplazo las Secciones Invariantes con traducciones requiere permiso especial de los dueños de derecho de autor, pero usted puede añadir traducciones de algunas o todas las Secciones Invariantes a las versiones originales de las mismas. Puede incluir una traducción de esta Licencia, de todas las notas de licencia del documento, así como de las Limitaciones de Garantía, siempre que incluya también la versión en Inglés de esta Licencia y las versiones originales de las notas de licencia y Limitaciones de Garantía. En caso de desacuerdo entre la traducción y la versión original en Inglés de esta Licencia, la nota de licencia o la limitación de garantía, la versión original en Inglés prevalecerá.

Si una sección del Documento está Titulada Agradecimientos, Dedicatorias o Historia el requisito (sección 4) de Conservar su Título (Sección 1) requerirá, típicamente, cambiar su título.


D.10. TERMINACIÓN

Usted no puede copiar, modificar, sublicenciar o distribuir el Documento salvo por lo permitido expresamente por esta Licencia. Cualquier otro intento de copia, modificación, sublicenciamiento o distribución del Documento es nulo, y dará por terminados automáticamente sus derechos bajo esa Licencia. Sin embargo, los terceros que hayan recibido copias, o derechos, de usted bajo esta Licencia no verán terminadas sus licencias, siempre que permanezcan en total conformidad con ella.


D.11. REVISIONES FUTURAS DE ESTA LICENCIA

De vez en cuando la Free Software Foundation puede publicar versiones nuevas y revisadas de la Licencia de Documentación Libre GNU. Tales versiones nuevas serán similares en espíritu a la presente versión, pero pueden diferir en detalles para solucionar nuevos problemas o intereses. Vea http://www.gnu.org/copyleft/.

Cada versión de la Licencia tiene un número de versión que la distingue. Si el Documento especifica que se aplica una versión numerada en particular de esta licencia o cualquier versión posterior, usted tiene la opción de seguir los términos y condiciones de la versión especificada o cualquiera posterior que haya sido publicada (no como borrador) por la Free Software Foundation. Si el Documento no especifica un número de versión de esta Licencia, puede escoger cualquier versión que haya sido publicada (no como borrador) por la Free Software Foundation.


D.12. ADENDA: Cómo usar esta Licencia en sus documentos

Para usar esta licencia en un documento que usted haya escrito, incluya una copia de la Licencia en el documento y ponga el siguiente copyright y nota de licencia justo después de la página de título:

Copyright (c) AÑO SU NOMBRE. Se otorga 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 o cualquier otra versión posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. Una copia de la licencia está incluida en la sección titulada GNU Free Documentation License.

Si tiene Secciones Invariantes, Textos de Cubierta Delantera y Textos de Cubierta Trasera, reemplace la frase sin ... Trasera por esto:

siendo las Secciones Invariantes LISTE SUS TÍTULOS, siendo los Textos de Cubierta Delantera LISTAR, y siendo sus Textos de Cubierta Trasera LISTAR.

Si tiene Secciones Invariantes sin Textos de Cubierta o cualquier otra combinación de los tres, mezcle ambas alternativas para adaptarse a la situación.

Si su documento contiene ejemplos de código de programa no triviales, recomendamos liberar estos ejemplos en paralelo bajo la licencia de software libre que usted elija, como la Licencia Pública General de GNU (GNU General Public License), para permitir su uso en software libre.


Appendix E. GNU Free Documentation License

Version 1.2, November 2002

Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.


E.1. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.


E.2. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.


E.3. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.


E.4. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.


E.5. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

  4. Preserve all the copyright notices of the Document.

  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

  8. Include an unaltered copy of this License.

  9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

  11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

  13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

  14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

  15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.


E.6. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".


E.7. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.


E.8. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.


E.9. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.


E.10. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.


E.11. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.


E.12. ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.