Version : 0.19.fr.1.0
Copyright © 2002-2003-NaN Sistina Software, Inc
Copyright © 2004-2005-NaN Red Hat, Inc
Copyright © 2005-2006-NaN Terrascale Technologies, Inc
Copyright © 2006 Rackable Systems, Inc
Copyright © 2004-2007-NaN Emmanuel Araman, Camille Huot, Alain Portal, Jean-Philippe Guérard
Historique des versions | ||
---|---|---|
Version 0.19.fr.1.0 | 2007-01-28 | EA |
Mise à jour de la version française. | ||
Version 0.14.fr.1.0 | 2004-10-11 | EA, CH, AP, JPG |
Première traduction française. | ||
Version 0.19 | 2006-11-27 | AJL |
Clarification des conditions pour les sauvegardes instantanées dans Section 8, « Les instantanés (snapshots) » et ajout d'une remarque sur le redimensionnement de la source d'un instantané (Clarified full snapshot conditions in Section 8, « Les instantanés (snapshots) » and Section 4.1, « Créer le volume d'instantané » and added a note about resizing the origin of a snapshot) ; correction des droits d'utilisation (Fixed Rackable copyright) ; correction de l'adresse e-mail (Fixed e-mail address). | ||
Version 0.18 | 2006-11-27 | AJL |
Clarification sur l'utilisation du disque complet dans Section 1, « Initialiser des disques ou des partitions de disques » (Clarify whole disk usage in Section 1, « Initialiser des disques ou des partitions de disques ») ; mise à jour des droits d'utilisation (Updated copyright) ; mise à jour de l'adresse e-mail (Updated e-mail address). | ||
Version 0.17 | 2005-10-03 | AJL |
Ajout d'une entrée dans la FAQ sur la taille maximale des LVs avec LVM 2 (Added FAQ entry for max size of LVs in LVM2) ; ménage dans le paragraphe "Récupération des méta-données d'un volume physique" (Did some cleanup of "Recover physical volume metadata" section) ; mise à jour de l'adresse e-mail (Updated e-mail address). | ||
Version 0.16 | 2005-07-15 | AJL |
Ajout d'informations relatives au scripts de démarrage de LVM 2 (Added lvm2 boot-time scripts info) ; ajout du paragraphe "Récupération des méta-données d'un volume physique" - remerciements à Maximilian Attems pour le patch (Added "Recover physical volume metadata" section - thanks to Maximilian Attems for the patch). | ||
Version 0.15 | 2005-06-09 | AJL |
Suppression des références à xfs_freeze, qui ne sont plus nécessaires (Removed references to xfs_freeze - it is no longer needed) ; mise à jour du paragraphe sur les instantanés dans le chapitre "Anatomie de LVM" (Updated snapshots subsection in Anatomy of LVM section) ; ajout de plusieurs entrées dans la FAQ LVM 2 (Added a couple entries to the LVM2 FAQ) ; correction de plusieurs coquilles (Fixed a couple typos). | ||
Version 0.14 | 2004-10-06 | AJL |
Ajout d'une référence au script lvm2_createinitrd dans les sources ; petite mise à jour de l'exemple de lvcreate ; ajout de « vgchange -ay » dans la recette « Déplacer un groupe de volumes vers un autre système » (Added reference to lvm2_createinitrd in source tree; Adjusted lvcreate example slightly; Added 'vgchange -ay' in 'Moving a volume group to another system' recipe). | ||
Version 0.13 | 2004-08-16 | AJL |
Clarification de la description sur les liens ; correction du nombre majeur du périphérique de contrôle de dm ; suppression de /boot de vg dans l'exemple de petite configuration LVM ; ajout de commentaires sur /boot et / dans LVM ; suppression d'un lien mort (Clarify symlink farm description; Fix dm control device major number; Remove /boot from vg in small lvm setup example; Add notes about /boot and / on LVM; Remove outdated link). | ||
Version 0.12 | 2004-06-07 | AJL |
Mise à jour de la FAQ sur LVM 2 (Updated LVM 2 FAQ entries) | ||
Version 0.11 | 2004-05-03 | AJL |
Mise à jour de la FAQ sur LVM 2 (Updated LVM 2 FAQ entries) | ||
Version 0.10 | 2004-04-22 | AJL |
Retrait de -print0 de la commande find suite aux retours indiquant que cela ne fonctionne pas (removed -print0 from find command after receiving reports that it doesn't work). | ||
Version 0.9 | 2004-04-16 | AJL |
Ajout de -print0 à la commande find avant la redirection vers cpio (Added -print0 to find command before pipingit to cpio) ; changement de la ligne de commande vgimport pour LVM 2 (Changed vgimport command line for LVM 2) ; ajout de ext3 au paragraphe de redimensionnement de ext2 (Added ext3 to the ext2 resize section) ; mise à jour de la FAQ (Updated FAQ) mise à jour des liens (Updated Links section). | ||
Version 0.8 | 2004-02-25 | AJL |
Mise à jour de l'emplacement du CVS et des liens FTP (Updated CVS locations and FTP links) ; ajout d'un paragraphe sur l'extension d'un système de fichiers JFS (Added section on extending a JFS filesystem) ; corrections typographiques — utilisation d'aspell sur le document (Fixed typos - Ran aspell against document). | ||
Version 0.7 | 2004-02-16 | AJL |
Mise à jour pour inclure les informations sur LVM 2 et le mappeur de périphériques (Updated to include LVM 2 and device mapper information) mise à jour des adresses électroniques (Updated email addresses) ; mise à jour des droits d'utilisation (Updated copyright) ; ajout de la FAQ (Added FAQ section) ; ajout de la licence (Added document license) ; mise à jour vers DocBook 4.2 (Updated to docbook 4.2). | ||
Version 0.6 | 2003-12-09 | AJL |
Mise à jour pour LVM 1.0.8 (Updated for LVM 1.0.8) ; réparation d'un lien cassé (fixed broken link) ; clarification de la partie sur le script d'initialisation RedHat (Clarified redhat init script section). | ||
Version 0.5 | 2003-02-10 | AJL |
Mise à jour des informations du script initscript de RedHat pour les versions 7.0 et supérieures (Updated Redhat initscript information for 7.0 and above) ; ajout des informations pour supprimer une table de partitions d'un disque lorsque pvcreate échoue (Added information on removing a partition table from a disk if pvcreate fails) ; la taille par défaut de PE est désormais de 32 Mo (Default PE size is 32MB now) ; mise à jour de la méthode d'instantanés avec XFS (Updated method for snapshotting under XFS). | ||
Version 0.4 | 2002-12-16 | AJL |
Mise à jour pour LVM 1.0.6 (Updated for LVM 1.0.6). | ||
Version 0.3 | 2002-09-16 | AJL |
Suppression de l'exemple de pvmove du chapitre « Opérations de commandes » — nous pointons désormais vers la recette plus détaillée sur pvmove qui contient différents avertissements (removed example pvmove from Command Operations section - we now just point to the more detailed recipe on pvmove that contains various warnings and such). | ||
Version 0.2 | 2002-09-11 | AJL |
Mise à jour pour LVM 1.0.5 et conversion vers DocBook XML 4.1.2. (Updated for LVM 1.0.5 and converted to DocBook XML 4.1.2). | ||
Version 0.1 | 2002-04-28 | gf |
Conversion initiale du source du format Latex de Sistina vers le format LinuxDoc du tLDP (Initial conversion from Sistina's LaTeX source and import to tLDP in LinuxDoc format). |
Ce document essaie de rassembler tous les éléments nécessaires pour obtenir LVM et le faire fonctionner. Il traite l'ensemble du processus pour l'obtenir, le compiler, l'installer et le mettre en œuvre. Il fournit aussi des liens vers des configurations testées de LVM. Cette version de guide pratique couvre LVM 2 et LVM 1.0.8.
Toutes les versions précédentes de LVM sont considérées comme obsolètes et sont gardées uniquement pour des raisons historiques. Ce document n'a pas pour objet d'essayer d'expliquer et décrire le fonctionnement de ces versions.
Vous trouverez la plus récente version française de ce document à l'adresse : http://www.traduc.org/docs/howto/lecture/LVM-HOWTO.html.
La dernière version originale de ce guide pratique est disponible sur le serveur CVS du Projet de documentation Linux avec les autres guides pratiques (howto). Vous pouvez l'obtenir en faisant un checkout de « LDP/howto/docbook/LVM-HOWTO.xml » sur le serveur CVS du LDP. Vous devriez toujours pouvoir obtenir une version lisible de ce guide pratique à l'adresse : http://www.tldp.org/HOWTO/LVM-HOWTO.html.
Liste de tous ceux qui ont écrit dans ce document.
Jochen Radmacher - Informations sur l'extension de JFS
S'il vous plaît, veuillez prévenir le mainteneur du guide pratique si vous pensez devoir être dans la liste ci-dessus.
LVM 2 - La dernière et meilleure version de LVM pour Linux.
LVM 1 - La version présente dans les noyaux 2.4.
LVM 1 est un produit mature et considéré comme stable depuis plusieurs années. Le pilote noyau pour LVM 1 est inclus dans les noyaux 2.4, mais cela ne veut pas dire que votre noyau 2.4.x est à jour de la dernière version de LVM. Regardez dans le fichier README pour obtenir les dernières informations sur les versions de noyaux possédant le code le plus récent.
La gestion par volumes logiques permet une gestion de plus haut niveau des problèmes de stockage sur disque par rapport à l'approche traditionnelle avec des disques et des partitions. Cela apporte à l'administrateur système une bien meilleure flexibilité pour allouer de l'espace aux applications et aux utilisateurs.
Les volumes de stockage créés au moyen du gestionnaire de volumes logiques peuvent être redimensionnés et déplacés à la demande, bien que cela puisse nécessiter une mise à jour des utilitaires des systèmes de fichiers.
Le gestionnaire de volumes logiques autorise aussi la gestion de volumes logiques par groupes d'utilisateurs, ce qui permet à l'administrateur système de gérer des groupes de volumes en utilisant un nommage compréhensible avec, par exemple, des noms comme « developpement » et « ventes » plutôt que les noms des disques physiques comme « sda » et « sdb ».
/boot /dev/hda1 10 Mo swap /dev/hda2 256 Mo / /dev/hda3 2 Go /home /dev/hda4 6 Go
Il pense que cette répartition optimisera l'espace disponible pour tous ses fichiers MP3.
Les différentes possibilités qui s'offrent à lui ne sont pas satisfaisantes :
Avec LVM, tout cela devient beaucoup plus facile :
Jane achète un PC identique mais utilise LVM pour diviser son disque de manière similaire :
/boot /dev/hda1 10 Mo swap /dev/vg00/swap 256 Mo / /dev/vg00/root 2 Go /home /dev/vg00/home 6 Go
![]() | Note |
---|---|
La partition de démarrage /boot n'est pas incluse dans le LV car les chargeurs de démarrage ne gèrent pas encore les volumes LVM. Il est possible que le démarrage sur une partition LVM fonctionne, mais vous risquez de vous retrouvez avec un système non amorçable. |
![]() | Seuls les utilisateurs avancés peuvent envisager de passer leur partition racine en LVM |
---|---|
Pour passer la partition racine en LVM, une image initrd doit activer le LV racine au démarrage. Si le noyau est mis à jour sans créer l'image initrd nécessaire, le noyau ne pourra pas démarrer. Les nouvelles distributions incluent LVM dans leurs scripts mkinitrd ainsi que dans leurs images initrd, donc cela va devenir de moins en moins problématique. |
Le schéma suivant donne une vision générale des composants d'un système à base de LVM.
+-- Groupe de volumes (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 | | | +----------------------------------------+ | | | +------------------------------------------------+
Voici une autre façon de visualiser ceci (grâce à la gentillesse d'Erik Bågfors de la liste de diffusion linux-lvm) :
hda1 hdc1 (PV dans des partitions ou disques entiers) \ / \ / diskvg (VG) / | \ / | \ usrlv rootlv varlv (LV) | | | ext2 reiserfs xfs (Systèmes de fichiers)
1er morceau de LE[1] -> PV1[1], 2me morceau de LE[1] -> PV2[1], 3me morceau de LE[1] -> PV3[1], 4me morceau de LE[1] -> PV1[2],
![]() | Défaut de LVM 1 |
---|---|
Avec LVM 1, les LV créés par répartition ne peuvent pas être étendus au-delà des PV où ils ont été créés initialement. |
![]() | Les instantanés pleins sont automatiquement désactivés |
---|---|
Lorsque le volume logique d'un instantané est plein, il est désactivé (état inutilisable). Il est donc primordial de lui allouer un espace suffisant. Il n'y a pas de recette magique pour déterminer l'espace requis, qui dépend uniquement de l'utilisation de l'instantané. Cependant, un instantané de taille identique à sa source ne sera jamais saturé. |
Avec LVM 2, les instantanés sont par défaut en lecture/écriture. Le fonctionnement est similaire aux instantanés en lecture seule avec la possibilité supplémentaire d'écrire sur l'instantané : le bloc est alors marqué comme utilisé dans la table d'exception et ne sera plus récupéré du volume source. Cela ouvre de nouvelles perspectives par rapport au fonctionnement en lecture seule de LVM 1. Par exemple, on peut faire l'instantané d'un volume, le monter et tester un programme expérimental qui modifie les fichiers dessus. Si le résultat n'est pas satisfaisant, on peut le démonter, le supprimer et remonter le système de fichiers originel à la place. C'est aussi utile pour créer des volumes utilisés avec Xen. Vous pouvez créer une image disque et en faire un instantané que vous pourrez modifier avec une instance spécifique de domU. Vous pourrez ensuite créer un autre instantané de l'image orginale et le modifier avec une autre instance de domU. Comme les instantanés ne stockent que les blocs modifiés, la majeure partie du volume sera partagée entre les domUs.
![]() | Note |
---|---|
Avec le mappeur de périphériques actuel et LVM 2, la source peut être agrandie mais pas réduite. Avec LVM 1, le redimensionnement de la source est impossible. |
![]() | Mise à jour de LVM 1 vers LVM 2 |
---|---|
Assurez-vous de supprimer tous les instantanés avant la mise à jour de LVM 1 vers LVM 2. (Cf. Section 1, « FAQ LVM 2  ».) |
1.1. | J'ai LVM 1 installé et fonctionnel sur mon système. Comment faire pour passer à LVM 2 ? | |||
Voici les instructions pour démarrer rapidement :)
| ||||
1.2. | Un module noyau spécifique est-il nécessaire pour LVM 2 ? | |||
Non. Il faut le mappeur de périphériques (device-mapper). Les utilitaires de LVM 2 l'utilisent pour s'interfacer avec le noyau et effectuer tout le mappage des interfaces (d'où le nom de mappeur de périphériques). A partir du moment où le mappeur de périphériques est disponible, vous devriez pouvoir utiliser LVM 2. | ||||
1.3. |
J'ai des erreurs concernant
| |||
La cause première de ce problème est de ne pas avoir lancé la commande « dmsetup mknodes » après le redémarrage avec un noyau utilisant le mappeur de périphériques. Ce script génère le nœud de contrôle pour le mappeur de périphériques.
Si la commande « dmsetup mknodes » n'est pas
disponible, ne désespérez pas! (Cependant cela veut probablement dire
que vous devriez migrer vers la dernière version de device-mapper.)
Il est assez simple de créer le fichier
| ||||
1.4. | Quelles sont les commandes et types de volumes logiques compatibles avec LVMÂ 2Â ? | |||
Si vous utilisez le correctif de l'archive lvm2 pour les noyaux stables 2.4, toutes les fonctionnalités majeures de LVM1 seront compatibles avec les outils de LVM2 (il est toujours nécessaire de supprimer les instantanés avant la mise à jour de LVM 1 vers LVM 2.) Si vous utilisez la version du mappeur de périphériques du noyau 2.6 de kernel.org, les commandes et types de LV suivants ne sont pas compatibles :
| ||||
1.5. | Les formats de représentation sur le disque des groupes de volumes et volumes logiques sont-ils différents dans LVM 2 par rapport à LVM 1 ? | |||
Oui. LVM 2 utilise le format de méta-données lvm 2. Ce format est beaucoup plus flexible que celui de LVM 1. Il supprime ou réduit la plupart des limitations de LVM 1. | ||||
1.6. | LVM 2 est-il compatible avec les VG et LV créés avec LVM 1 ? | |||
Oui. LVM 2 est capable d'activer et de fonctionner avec les VG et LV créés avec LVM 1 à l'exception des instantanés qui doivent être supprimés avant la mise à jour. Les instantanés qui restent après la mise à jour devront être supprimés afin que l'on puisse activer leur volume d'origine avec LVM 2. | ||||
1.7. | Puis-je passer mes VG et LV qui proviennent de LVMÂ 1 au format natif de LVMÂ 2Â ? | |||
Oui. vgconvert permet de convertir un VG et tous les LV qu'il contient au nouveau format de méta-données lvm 2. Attention, il n'est pas toujours possible de revenir ensuite aux méta-données lvm 1. | ||||
1.8. | J'ai mis à jour mon système avec LVM 2, mais les utilitaires échouent constamment en indiquant qu'il ne reste plus de mémoire libre. Que se passe-t-il ? | |||
Une des causes possibles de cela est le non positionnement par certaines versions de LVM 1 du champ UUID dans les structures de PV et VG alors qu'elles étaient supposées le faire. (L'utilisateur qui a signalé l'anomalie utilisait une Mandrake 9.2, mais d'autres distributions peuvent être impactées.) Les dernières versions des utilitaires de LVM 2 positionnent les UUID automatiquement s'ils manquent, il vous suffit donc de récupérer une version plus récente que la vôtre et le problème devrait être résolu. Dans le cas contraire, envoyez un message sur la liste de diffusion linux-lvm. | ||||
1.9. | Ma partition racine est sur un LV en LVM 1. Comment faire pour passer à LVM 2 ? Qu'est devenu lvmcreate_initrd ? | |||
Passer à LVM 2 avec sa partition racine en LVM est un peu compliqué, mais pas impossible. Vous devez créer un noyau compatible avec le mappeur de périphériques et installer les utilitaires LVM 2. (Vous devriez faire une sauvegarde des utilitaires de LVM 1 ou trouver un disque de secours avec les utilitaires LVM au cas où vous en auriez besoin avant la fin de la migration.) Ensuite, vous devez trouver un script mkinitrd compatible avec votre distribution et de LVM 2. Voici la liste des scripts mkinitrd que je connais et qui sont compatibles avec LVM 2, classés par distributions : Scripts mkinitrd compatible LVM 2
| ||||
1.10. | Comment se comporte LVM par rapport à un renommage soudain des disques physiques ? | |||
Très bien : LVM identifie les PV par leur UUID et non par le nom du périphérique. Chaque disque (PV) possède un UUID, qui est un identifiant unique dans le système. Il est utilisé par « vgscan » pour le reconnaître lorsqu'un nouveau disque est ajouté et change la numérotation du disque. Pour cela, la plupart des distributions lancent vgscan dans les scripts de démarrage pour détecter les ajouts de matériel. Si vous faites des ajouts à chaud, je pense que vous devrez faire cela manuellement. D'un autre coté, si votre VG est activé et utilisé, la renumérotation ne devrait pas l'affecter du tout. L'identifiant est uniquement utilisé lors de l'activation et le pire qu'il puisse arriver sans le vgscan est que l'activation échoue avec un message indiquant qu'il manque un PV.
| ||||
1.11. | J'essaie de remplir mon VG et vgdisplay/vgs indique que j'ai 1,87 Go de libre mais quand je fais un lvcreate vg -L1.87G, il indique « pas assez d'extents libres » (« insufficient free extents »). Que se passe-t-il ? | |||
Le chiffre 1,87 Go est arrondi à deux décimales, donc il correspond à quelque chose comme 1,866 Go. C'est juste une présentation à l'écran du chiffre pour donner une idée générale de la taille du VG. Si vous voulez donner une taille exacte, vous devez utiliser les extents à la place de quelque multiple d'octets. Dans le cas de vgdisplay, utilisez le chiffre donné par Free PE à la place. Free PE / Size 478 / 1.87 GB ^^^ Vous devriez donc lancer la commande suivante : # lvcreate vg -l478 Remarquez qu'à la place d'un « L » majuscule, il faut utiliser un « l » minuscule pour dire à LVM d'utiliser les extents plutôt que les octets. Dans le cas de vgs, il est nécessaire de lui demander explicitement le nombre d'extents disponibles : # vgs -o +vg_free_count,vg_extent_count Cela demande à vgs de rajouter le nombre d'extents libres et leur nombre total à la fin de la liste produite par vgs. Utilisez le nombre d'extents libres de la même façon que pour le cas de vgdisplay. | ||||
1.12. | Quelles sont les différences entre les instantanés de LVM 2 et LVM 1 ? | |||
Avec LVM 2, les instantanés sont en lecture/écriture par défaut, alors qu'ils sont en lecture seule avec LVM 1. Voir Section 8, « Les instantanés (snapshots) » pour plus de détails. | ||||
1.13. | Quelle est la taille maximale d'un LVÂ ? | |||
Cela dépend de l'architecture CPU et du noyau utilisé :
|
2.1. | Quand y aura-t-il des infos ici ? |
Quand les gens commenceront à envoyer des entrées de FAQ ;) |
La première chose à faire est de récupérer une copie de LVM.
Télécharger une archive de LVM par FTP.
Télécharger le code source en développement continu par CVS.
Assurez-vous de télécharger aussi les sources du mappeur de périphériques.
![]() | Note |
---|---|
Le correctif du noyau pour LVM 1 doit être généré avec les sources de LVM 1. Plus d'informations sur ceci peuvent être trouvées dans la Section 2, « Construire le module du noyau pour LVM 1 ». |
Pour suivre la progression des développements de LVM, abonnez-vous aux listes de diffusion de LVM, linux-lvm et la liste de commit appropriée. (Cf. Section 1, « Listes de diffusion ».)
Pour construire LVM à partir des sources CVS, plusieurs outils GNU sont nécessaires :
le client CVS version 1.9 ou supérieure ;
GCC 2.95.2Â ;
GNU make 3.79Â ;
autoconf version 2.13 ou supérieure.
Bibliothèque et utilitaires du mappeur de périphériques
La bibliothèque du mappeur de périphériques est nécessaire pour construire LVM 2.
Vous devez vous authentifier lors de votre premier chargement :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs
Le mot de passe est « cvs ». La commande ne renvoie rien
en cas de succès et renvoie un message d'erreur en cas d'échec.
Seule la première connexion nécessite une
authentification explicite.
Toutes les commandes CVS suivantes lisent le mot de passe
stocké dans le fichier
$HOME/.cvspass
pour l'authentification.
La commande de « checkout » suivante permet de récupérer une copie du code :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper
Cela crée un nouveau répertoire
device-mapper
dans le répertoire courant.
Il contient la version la plus à jour possible du code du
mappeur de périphériques.
LVMÂ 2
Vous devez vous authentifier lors de votre premier chargement :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 login cvs
Le mot de passe est « cvs ». La commande ne renvoie rien
en cas de succès et un message d'erreur en cas d'échec.
Seule la première connexion nécessite une
authentification explicite.
Toutes les commandes CVS suivantes lisent le mot de passe
stocké dans le fichier
$HOME/.cvspass
pour l'authentification.
La commande de « checkout » suivante permet de récupérer une copie du code :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2
Cela crée un nouveau répertoire
LVM2
dans le répertoire courant.
Il contient la version la plus à jour possible du code de LVM 2.
LVMÂ 1
Vous devez vous authentifier lors de votre premier chargement :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm login cvs
Le mot de passe est « cvs ». La commande ne renvoie rien
en cas de succès et un message d'erreur en cas d'échec.
Seule la première connexion nécessite une
authentification explicite.
Toutes les commandes CVS suivantes lisent le mot de passe
stocké dans le fichier
$HOME/.cvspass
pour l'authentification.
La commande de « checkout » suivante permet de récupérer une copie du code :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout LVM
Cela crée un nouveau répertoire
LVM
dans le répertoire courant.
Il contient la version la plus à jour possible du code de LVM 1.
Les commandes CVS fonctionnent depuis n'importe où dans l'arborescence des sources et de façon récursive. Par conséquent, si vous faites une mise à jour à partir du sous répertoire « tools », cela fonctionnera mais uniquement pour le répertoire « tools » et ses sous-répertoires. Les commandes qui suivent supposent que vous êtes à la racine de l'arborescence des sources.
# cvs update # cvs diff > patchfile
Envoyez le correctif à la liste linux-lvm ou dm-devel (Section 1, « Listes de diffusion ») avec une description des modifications et ajouts que vous avez effectués.
# 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
<<<<<<< pvcreate.c j++; ======= j--; >>>>>>> 1.6
N'oubliez pas de supprimer les lignes avec les symboles « < », « = » et « > ».
Le mappeur de périphériques est inclus dans les noyaux 2.6.9 et suivants,
donc vous devez juste vérifier qu'il est activé directement dans le noyau ou
sous forme de module. Pour cela, vous devez avoir la présence de /sys/class/misc/device-mapper
ou de la ligne device-mapper dans /proc/devices
.
Si aucun n'est présent, essayez modprobe dm_mod et re-vérifiez.
Pour les versions de noyau avant le 2.6.9, vous ou votre distribution doit
patcher le noyau pour le supporter. Allez voir la page web du
mappeur de périphériques
pour plus d'informations.
Le correctif raw_io de Stephen Tweedie est disponible à http://www.kernel.org/pub/linux/kernel/people/sct/raw-io
Correctif lvm
Ce correctif doit être construit à partir du sous-répertoire PATCHES de la distribution de LVM 1. Vous trouverez plus d'informations dans la Section 2.1, « Fabriquer un correctif pour votre noyau ».
Une fois que les correctifs ont été correctement appliqués, il faut vous assurer que le module soit bien compilé. Les pilotes LVM 1 se trouvent dans la section « devices » de la configuration du noyau. Vous devriez aussi compiler les informations de /proc pour LVM.
Compilez les modules noyau comme d'habitude.
Le noyau 2.4 contient déjà LVM, mais vous devriez vérifier la
présence de mises à jour sur le site web de LVM (c'est-à -dire
que les noyaux 2.4.9 et inférieurs doivent utiliser le plus récent correctif
LVMÂ 1). En configurant le noyau, cherchez
LVMÂ 1 dans Multi-device support
(RAID and LVM). LVM 1 peut être compilé dans
le noyau ou en tant que module. Compilez votre noyau et les
modules et installez-les de la manière habituelle. Si vous
décidez de compiler LVM en tant que module, il s'appellera
lvm-mod.o
.
Si vous voulez faire des instantanés avec ReiserFS,
faites attention à appliquer le correctif
linux-2.4.x-VFS-lock
(il y en a une copie dans le répertoire
LVM/1.0.8/PATCHES
).
Les scripts de démarrage ne sont pas fournis par la distribution de LVM, bien qu'ils soient simples à faire soi-même.
Le démarrage de LVM demande juste ces deux commandes :
# vgscan # vgchange -ay
Et l'arrêt une seule :
# vgchange -an
Suivez les instructions ci-dessous suivant la distribution de Linux que vous utilisez.
Créez le script de démarrage /etc/init.d/lvm
contenant les lignes suivantes :
#!/bin/sh case "$1" in start) /sbin/vgscan /sbin/vgchange -ay ;; stop) /sbin/vgchange -an ;; restart|force-reload) ;; esac exit 0
Ensuite, exécutez les commandes :
# chmod 0755 /etc/init.d/lvm # update-rc.d lvm start 26 S . stop 82 1 .
# 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 |
---|---|
Cette portion de script est pour la RedHat 7.3. Les autres versions peuvent apparaître légèrement différentes. |
vgchange -an
La Slackware 8.1 ne demande aucune mise à jour des scripts de démarrage pour faire fonctionner LVM.
cd /etc/rc.d cp -a rc.S rc.S.old patch -p0 < rc.S.diff
(Le cp sert à faire une sauvegarde au cas où).
----- snip snip file: rc.S.diff--------------- --- rc.S.or Tue Jul 17 18:11:20 2001 +++ rc.S Tue Jul 17 17:57:36 2001 @@ -4,6 +4,7 @@ # # Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com> # +# Added LVM support <tgs@iafrica.com> PATH=/sbin:/usr/sbin:/bin:/usr/bin @@ -28,19 +29,21 @@ READWRITE=yes fi + # Check the integrity of all filesystems if [ ! READWRITE = yes ]; then - /sbin/fsck -A -a + /sbin/fsck -a / + # Check only the root fs first, but no others # If there was a failure, drop into single-user mode. if [ ? -gt 1 ] ; then echo echo - echo "*******************************************************" - echo "*** An error occurred during the file system check. ***" - echo "*** You will now be given a chance to log into the ***" - echo "*** system in single-user mode to fix the problem. ***" - echo "*** Running 'e2fsck -v -y <partition>' might help. ***" - echo "*******************************************************" + echo "************************************************************" + echo "*** An error occurred during the root file system check. ***" + echo "*** You will now be given a chance to log into the ***" + echo "*** system in single-user mode to fix the problem. ***" + echo "*** Running 'e2fsck -v -y <partition>' might help. ***" + echo "************************************************************" echo echo "Once you exit the single-user shell, the system will reboot." echo @@ -82,6 +85,44 @@ echo -n "get into your machine and start looking for the problem. " read junk; fi + # okay / fs is clean, and mounted as rw + # This was an addition, limits vgscan to /proc thus + # speeding up the scan immensely. + /sbin/mount /proc + + # Initialize Logical Volume Manager + /sbin/vgscan + /sbin/vgchange -ay + + /sbin/fsck -A -a -R + #Check all the other filesystem, including the LVM's, excluding / + + # If there was a failure, drop into single-user mode. + if [ ? -gt 1 ] ; then + echo + echo + echo "*******************************************************" + echo "*** An error occurred during the file system check. ***" + echo "*** You will now be given a chance to log into the ***" + echo "*** system in single-user mode to fix the problem. ***" + echo "*** Running 'e2fsck -v -y <partition>' might help. ***" + echo "*** The root filesystem is ok and mounted readwrite ***" + echo "*******************************************************" + echo + echo "Once you exit the single-user shell, the system will reboot." + echo + + PS1="(Repair filesystem) #"; export PS1 + sulogin + + echo "Unmounting file systems." + umount -a -r + mount -n -o remount,ro / + echo "Rebooting system." + sleep 2 + reboot + fi + else echo "Testing filesystem status: read-write filesystem" if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then @@ -111,14 +152,16 @@ echo -n "Press ENTER to continue. " read junk; fi + fi + # remove /etc/mtab* so that mount will create it with a root entry /bin/rm -f /etc/mtab* /etc/nologin /etc/shutdownpid # mount file systems in fstab (and create an entry for /) # but not NFS or SMB because TCP/IP is not yet configured -/sbin/mount -a -v -t nonfs,nosmbfs +/sbin/mount -a -v -t nonfs,nosmbfs,proc # Clean up temporary files on the /var volume: /bin/rm -f /var/run/utmp /var/run/*.pid /var/log/setup/tmp/* --snip snip snip end of file---------------
Pour utiliser initrd, vous avez besoin d'avoir les lignes :
dmsetup mknodes vgscan --ignorelockingfailure vgchange -ay --ignorelockingfailuredans
linuxrc
pour pouvoir activer le LV racine avant d'accéder au volume racine.
La plupart des distributions semblent maintenant posséder cette configuration dans leur
script mkinitrd et tendent aussi à l'avoir dans les scripts d'initialisation
du système (rc.sysinit
ou équivalent), ce qui active tous les volumes au démarrage.
Il ne devrait pas y avoir d'erreur dans le processus de compilation. S'il y en a, reportez-vous au chapitre Signaler des erreurs et des bogues pour les signaler.
Vous êtes aussi les bienvenus si vous les corrigez et que vous nous envoyez les correctifs. Les correctifs sont habituellement à envoyer à la liste linux-lvm.
Migrer d'une version précédente de LVM vers LVM 1.0.8 devrait être très simple. Nous avons trouvé une méthode pour lire les méta-données des PV version 1 (LVM 0.9.1 Beta7 et précédents) aussi bien que les méta-données des PV version 2 (LVM 0.9.1 Beta8 et LVM 1.0).
Attention : Les nouveaux PV initialisés avec LVM 1.0.8 utilisent la structure de disque des PV version 1. Cela signifie que LVM 0.9.1 Beta8 et LVM 1.0 ne peuvent pas lire ou utiliser les PV créés avec la version 1.0.8.
Compiler le noyau LVM et les modules
Suivez les étapes expliquées dans les Chapitre 5, Obtenir LVM et Section 2, « Construire le module du noyau pour LVM 1 » pour connaître les instructions pour obtenir et compiler les éléments nécessaires de LVM pour le noyau Linux.
Compiler les utilitaires LVM
Suivez les étapes du Chapitre 9, Compiler LVM à partir des sources pour compiler et installer les utilitaires de LVM.
Configurer les scripts de démarrage
Assurez-vous d'avoir une configuration correcte des scripts de démarrage comme dans le Chapitre 7, Scripts de démarrage pour LVM 1.
Démarrer avec le nouveau noyau
Assurez-vous que le chargeur d'amorçage est configuré pour
charger le nouveau noyau avec LVM et, si vous utilisez
des modules, que la commande insmod lvm-mod
soit dans le script de démarrage ou que les lignes suivantes
soient ajoutées dans /etc/modules.conf
(anciennement appelé /etc/conf.modules
)
pour permettre à modprobe de charger le module LVM
(n'oubliez pas d'activer kmod)Â :
alias block-major-58 lvm-mod alias char-major-109 lvm-mod
Redémarrez la machine et appréciez.
# df Sys. de fich. Blocs-1k Occupé Dispo. Cap% Monté sur /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
# 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"
Compiler le noyau LVM et les modules
Suivez les instructions détaillées dans les Chapitre 5, Obtenir LVM et Section 2, « Construire le module du noyau pour LVM 1 » pour obtenir et compiler les composants noyau nécessaires pour LVM.
Compiler les utilitaires LVM
Suivez les instructions détaillées dans le Section 2, « Construire le module du noyau pour LVM 1 » pour compiler et installer les utilitaires nécessaires pour LVM.
Installer les nouveaux utilitaires. Une fois cela effectué, vous ne pourrez plus faire de manipulations sur LVM car les utilitaires ne sont pas compatibles avec le noyau démarré actuellement.
Renommer le fichier initrd.gz existant
Cela permet qu'il ne soit pas écrasé par le nouveau fichier.
# mv /boot/initrd.gz /boot/initrd08.gz
Modifier /etc/lilo.conf
Faites pointer l'entrée de démarrage existante vers le fichier renommé. Vous devrez redémarrer en utilisant cela si quelque chose se passe mal. L'entrée modifiée devrait ressembler à cela :
image=/boot/vmlinux-2.2.16lvm label=lvm08 read-only root=/dev/rootvg/root initrd=/boot/initrd08.gz append="ramdisk_size=8192"
Lancer lvmcreate_initrd pour créer une nouvelle image disque RAM d'initialisation
# lvmcreate_initrd 2.4.9
N'oubliez pas de spécifier la nouvelle version du noyau afin qu'il prenne les bons modules.
Ajouter une nouvelle entrée dans /etc/lilo.conf
Cette nouvelle entrée sert à démarrer avec le nouveau noyau et le nouvel initrd.
image=/boot/vmlinux-2.4.9lvm label=lvm10 read-only root=/dev/rootvg/root initrd=/boot/initrd.gz append="ramdisk_size=8192"
Relancer lilo
Cela installe le nouveau bloc d'amorçage
# /sbin/lilo
Redémarrer la machine
Lorsque vous avez l'écran de sélection de Lilo, choisissez la nouvelle entrée (lvm10 dans cet exemple) et le système devrait démarrer avec un Linux utilisant la nouvelle version de LVM.
Si le nouveau noyau ne démarre pas, alors démarrez avec l'ancien et essayez de corriger le problème. Cela peut provenir du noyau qui n'aurait pas tous les pilotes de périphériques correctement compilés ou bien qu'ils ne sont pas disponibles dans initrd. Souvenez-vous que tous les pilotes (excepté pour LVM) qui sont nécessaires pour accéder au périphérique racine doivent être compilés en dur dans le noyau et non en tant que modules.
Si vous avez besoin d'effectuer des manipulations avec LVM lorsque vous avez redémarré sur l'ancienne version, il vous faut juste recompiler les anciens utilitaires et les installer avec :
# make install
Si vous faites cela, n'oubliez pas de réinstaller la nouvelle version lorsque vous redémarrerez avec le nouveau LVM.
Ce chapitre détaille quelques opérations courantes sur un système LVM. Cela ne remplace pas la lecture des pages de man.
Avant de pouvoir utiliser un disque ou une partition comme volume physique, il faut l'initialiser :
Lancez pvcreate sur le disque :
# pvcreate /dev/hdb
Cela crée un descripteur de groupe de volumes au début du disque.
![]() | Déconseillé |
---|---|
L'utilisation d'un disque entier en tant que PV (par rapport à une partition utilisant tout le disque) est déconseillée en raison des problèmes de gestion que cela peut créer. Tout autre système d'exploitation ne détectera pas les méta-données LVM, affichera un disque vide et écrasera probablement son contenu. Sinon LVM fonctionne parfaitement avec des PVs occupant tout le disque. |
![]() | DANGEREUX |
---|---|
Les commandes suivantes vont détruire la table des partitions sur le disque où elles sont lancées. Soyez vraiment sûr que c'est le bon disque. |
# dd if=/dev/zero of=/dev/nomdudisque bs=1k count=1 # blockdev --rereadpt /dev/nomdudisque
Quand vous utilisez LVM 1 sur des PC avec des partitions DOS, mettez le type de la partition à 0x8e avec fdisk ou un programme similaire. Ceci n'est pas nécessaire avec un système PPC ou avec LVM 2.
Lancez pvcreate sur la partition :
# pvcreate /dev/hdb1Cela crée un descripteur de groupe de volumes au début de la partition /dev/hdb1.
Utilisez le programme vgcreate :
# vgcreate mon_groupe_de_volumes /dev/hda1 /dev/hdb1
# vgcreate mon_groupe_de_volumes \\ /dev/ide/host0/bus0/target0/lun0/part1 \\ /dev/ide/host0/bus0/target1/lun0/part1
Désactivez le groupe de volumes :
# vgchange -a n mon_groupe_de_volumes
Maintenant, vous pouvez supprimer le groupe de volumes :
# vgremove mon_groupe_de_volumes
# 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
Utilisez ensuite « vgreduce » pour enlever le volume physique :
# vgreduce mon_groupe_de_volumes /dev/hda1
# lvcreate -L1500 -ntestlv testvg
Pour créer un volume logique de 100 LE avec 2 blocs répartis et une taille de bloc de 4 Ko :
# lvcreate -i2 -I4 -l100 -nunautretestlv testvg
# vgdisplay testvg | grep "Total PE" Total PE 10230 # lvcreate -l 10230 testvg -n monlv
Cela créera un LV appelé monlv qui remplira la totalité du VG testvg.
# lvcreate -L 1500 -ntestlv testvg /dev/sdg
Un volume logique doit être démonté avant d'être supprimé :
# umount /dev/monvg/homevol
# lvremove /dev/monvg/homevol
lvremove -- do you really want to remove "/dev/monvg/homevol"? [y/n]: y
lvremove -- doing automatic backup of volume group "monvg"
lvremove -- logical volume "/dev/monvg/homevol" successfully removed
# lvextend -L12G /dev/monvg/homevol lvextend -- extending logical volume "/dev/monvg/homevol" to 12 GB lvextend -- doing automatic backup of volume group "monvg" lvextend -- logical volume "/dev/monvg/homevol" successfully extended
étend /dev/monvg/homevol
jusqu'Ã 12Â Go.
# lvextend -L+1G /dev/monvg/homevol lvextend -- extending logical volume "/dev/monvg/homevol" to 13 GB lvextend -- doing automatic backup of volume group "monvg" lvextend -- logical volume "/dev/monvg/homevol" successfully extended
ajoute 1 Go à /dev/monvg/homevol
.
# umount /dev/monvg/homevol # ext2resize /dev/monvg/homevol # mount /dev/monvg/homevol /home
Si vous n'avez pas e2fsprogs 1.19 ou supérieur, la commande ext2resize est disponible sur ext2resize.sourceforge.net. Utilisez-la ensuite :
# umount /dev/monvg/homevol # resize2fs /dev/monvg/homevol # mount /dev/monvg/homevol /home
Pour ext2, il y a une solution plus simple : LVM 1 fournit un utilitaire appelé e2fsadm qui effectue le lvextend et le resize2fs pour vous (et peut aussi faire la réduction, voir le chapitre suivant).
![]() | Inconvénient de LVM 2 |
---|---|
Il n'y a pas actuellement d'équivalent à e2fsadm pour LVM 2 et la version de e2fsadm de LVM 1 ne fonctionne pas avec LVM 2. |
# e2fsadm -L+1G /dev/monvg/homevol
qui est équivalente à  :
# lvextend -L+1G /dev/monvg/homevol # resize2fs /dev/monvg/homevol
![]() | Remarque |
---|---|
Il est toujours nécessaire de démonter le système de fichiers avant d'utiliser e2fsadm. |
reiserfs
Le système de fichiers Reiserfs peut être redimensionné monté ou démonté, comme vous le préférez :
en fonctionnement :
# resize_reiserfs -f /dev/monvg/homevol
hors fonctionnement :
# umount /dev/monvg/homevol # resize_reiserfs /dev/monvg/homevol # mount -treiserfs /dev/monvg/homevol /home
xfs
Les systèmes de fichiers XFS doivent être montés pour être redimensionnés et le point de montage doit être donné à la place du nom de périphérique.
# xfs_growfs /home
jfs
Comme XFS, le système de fichiers JFS doit être monté pour être redimensionné et le point de montage doit être spécifié plutôt que le nom du périphérique. Il vous faut au minimum la version 1.0.21 de jfs-utils pour cela.
# mount -o remount,resize /home
![]() | Bogue connu du noyau |
---|---|
Certaines versions du noyau ont des problèmes avec cette syntaxe (2.6.0 en fait partie). Dans ce cas, vous devez explicitement spécifier la nouvelle taille du système de fichiers en blocs. Attention aux erreurs car vous devez connaître la taille de blocs de votre système de fichiers et vous en servir pour calculer la nouvelle taille. Exemple : Si vous devez redimensionner un système de fichiers JFS à 4 Go, écrivez : # mount -o remount,resize=1048576 /home |
# umount /home # e2fsadm -L-1G /dev/monvg/homevol # mount /home
![]() | Inconvénient de LVM 2 |
---|---|
Actuellement, il n'y a pas d'équivalent à e2fsadm pour LVM 2 et la version de e2fsadm de LVM 1 ne fonctionne pas avec LVM 2. |
# umount /home # resize2fs /dev/monvg/homevol 524288 # lvreduce -L-1G /dev/monvg/homevol # mount /home
Il semble que Reiserfs préfère être démonté avant d'être réduit :
# umount /home # resize_reiserfs -s-1G /dev/monvg/homevol # lvreduce -L-1G /dev/monvg/homevol # mount -treiserfs /dev/monvg/homevol /home
Pour mettre un disque hors service, il faut au préalable déplacer tous ses extents physiques sur d'autres disques du groupe de volumes. Il doit y avoir assez d'extents physiques libres sur les PV qui restent pour accueillir les extents provenant du disque à enlever. Pour plus de détails, voir la Section 5, « Enlever un disque ».
# pvcreate /dev/sda1 # pvcreate /dev/sdf # pvcreate /dev/hda8 # pvcreate /dev/hda6 # pvcreate /dev/md1Cependant, il peut être souhaitable de le faire pour certaines raisons :
La migration d'un système existant vers LVM.
Sur un système avec peu de disques, il peut être nécessaire de déplacer des données entre les partitions pour effectuer la conversion (cf. la Section 8, « Convertir le système de fichiers racine en LVM 1 »).
Séparer un gros disque dans plusieurs groupes de volumes.
Si vous avez un très gros disque et que vous voulez plus d'un groupe de volumes pour des raisons d'administration, alors il est nécessaire de faire plusieurs partitions sur le disque.
Si vous avez un disque avec plus d'une partition et que ces partitions sont dans le même groupe de volumes, faites attention à bien spécifier les partitions qui doivent être incluses dans le volume logique lorsque vous créez des volumes répartis.
Il est recommandé d'utiliser une seule partition qui couvre l'ensemble du disque physique. Cela évite des accidents avec les nœuds des périphériques du disque et évite les messages d'alerte du noyau au démarrage à propos de types de partitions inconnus.
Ce chapitre détaille plusieurs « recettes » différentes pour mettre en place LVM. L'objectif est que le lecteur puisse adapter ces recettes pour son système et ses propres besoins.
Il faut préparer le disque avant de pouvoir l'utiliser dans un groupe de volumes :
![]() | Attention ! |
---|---|
Les commandes suivantes vont détruire toutes les données présentes sur /dev/sda, /dev/sdb et /dev/sdc. |
Lancez pvcreate sur les disques :
# pvcreate /dev/sda # pvcreate /dev/sdb # pvcreate /dev/sdc
# vgcreate mon_groupe_de_volumes /dev/sda /dev/sdb /dev/sdc
Utilisez vgdisplay pour vérifier le groupe de volume
# vgdisplay --- Volume Group --- VG Name mon_groupe_de_volumes 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
Si le groupe de volumes semble correct, il est alors temps de créer un volume logique dessus.
# lvcreate -L1G -nmon_volume_logique mon_groupe_de_volumes lvcreate -- doing automatic backup of "mon_groupe_de_volumes" lvcreate -- logical volume "/dev/mon_groupe_de_volumes/mon_volume_logique" successfully created
Créez un système de fichiers ext2 dans le volume logique :
# mke2fs /dev/mon_groupe_de_volumes/mon_volume_logique 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
![]() | Remarque |
---|---|
Il n'est pas actuellement possible d'ajouter un disque dans un volume logique réparti avec LVM 1. Utilisez LVM 2 avec le format de méta-données lvm 2 si vous voulez effectuer cela. |
Il faut préparer le disque avant de pouvoir l'utiliser dans un groupe de volumes :
![]() | Attention ! |
---|---|
Les commandes suivantes vont détruire toutes les données présentes sur /dev/sda, /dev/sdb et /dev/sdc. |
Lancez pvcreate sur les disques :
# pvcreate /dev/sda # pvcreate /dev/sdb # pvcreate /dev/sdc
# vgcreate mon_groupe_de_volumes /dev/sda /dev/sdb /dev/sdc
Utilisez vgdisplay pour vérifier le groupe de volume
# vgdisplay --- Volume Group --- VG Name mon_groupe_de_volumes 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
Si le groupe de volumes semble correct, il est alors temps de créer un volume logique dessus.
# lvcreate -i3 -I4 -L1G -nmon_volume_logique mon_groupe_de_volumes lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE lvcreate -- doing automatic backup of "mon_groupe_de_volumes" lvcreate -- logical volume "/dev/mon_groupe_de_volumes/mon_volume_logique" successfully created
![]() | Remarque |
---|---|
Si vous créez le volume logique avec l'option « -i2 », vous n'utiliserez que deux disques de votre groupe de volumes. Ceci est utile si vous voulez créer deux volumes logiques à partir du même volume physique, mais ce point n'est pas abordé dans cette recette. |
Créez un système de fichiers ext2 dans le volume logique :
# mke2fs /dev/mon_groupe_de_volumes/mon_volume_logique 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
Un serveur de données possède six disques organisés de la façon suivante :
# 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
# fdisk /dev/sdg Device contains neither a valid DOS partition table, nor Sun or SGI disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. 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.
Ensuite, les volumes physiques sont créés sur cette partition :
# pvcreate /dev/sdg1 pvcreate -- physical volume "/dev/sdg1" successfully created # pvcreate /dev/sdg2 pvcreate -- physical volume "/dev/sdg2" successfully created
Les volumes sont ensuite ajoutés aux groupes de volumes dev et 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]
# umount /mnt/ops/batch # umount /mnt/dev/users
# 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
Un volume instantané est un type de volume spécial qui présente toutes les données du volume telles qu'elles étaient au moment où l'instantané a été créé. Pour une description plus détaillée, voir Section 8, « Les instantanés (snapshots) ». Cela signifie que nous pouvons faire une sauvegarde du volume sans se préoccuper des modifications de données pendant la sauvegarde et par conséquent il n'y a pas besoin de garder la base de données éteinte pendant la sauvegarde.
![]() | Note |
---|---|
Avec LVM 1, ce type de volume était en lecture seule, alors qu'il est en lecture/écriture par défaut avec LVM 2. |
# 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
![]() | Les instantanés pleins sont automatiquement désactivés |
---|---|
Lorsque le volume logique d'un instantané est plein, il est désactivé (état inutilisable). Il est donc primordial de lui allouer un espace suffisant. Il n'y a pas de recette magique pour déterminer l'espace requis, qui dépend uniquement de l'utilisation de l'instantané. Cependant, un instantané de taille identique à sa source ne sera jamais saturé. |
Nous pouvons désormais créer un point de montage et monter le volume.
# mkdir /mnt/ops/dbbackup # mount /dev/ops/dbbackup /mnt/ops/dbbackup mount: block device /dev/ops/dbbackup is write-protected, mounting read-only
Si vous utilisez le système de fichiers XFS, il faut ajouter l'option
nouuid
à la commande mount :
# mount /dev/ops/dbbackup /mnt/ops/dbbackup -onouuid,ro
Je suppose que vous avez des stratégies de sauvegarde un peu plus sophistiquées que ça !
# tar -cf /dev/rmt0 /mnt/ops/dbbackup tar: Removing leading `/' from member names
![]() | Sauvegarder votre système |
---|---|
Vous devriez toujours effectuer une sauvegarde de votre système avant de faire une opération avec pvremove. |
# 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
![]() | pvmove est lent |
---|---|
Attention, pvmove est très lent car il doit copier le contenu
d'un disque vers un ou plusieurs autres, bloc par bloc. Si
vous souhaitez plus d'informations sur l'avancement de
l'opération, utilisez l'option |
![]() | Note |
---|---|
vgexport et vgimport ne sont pas nécessaires pour déplacer des disques. Ce sont des outils d'administration permettant d'empêcher les accès aux volumes le temps de les déplacer. |
Rendre le groupe de volumes inactif l'enlève du noyau et empêche toute activité sur celui-ci.
# vgchange -an design vgchange -- volume group "design" successfully deactivated
# vgexport design vgexport -- volume group "design" sucessfully exported
Au prochain arrêt de la machine, le disque peut être enlevé et placé sur sa nouvelle machine.
Une fois connecté au nouveau système, un pvscan initial montre qu'il est devenu /dev/sdb :
# 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]
# vgimport design /dev/sdb1 /dev/sdb2 vgimport -- doing automatic backup of volume group "design" vgimport -- volume group "design" successfully imported and activated
Ensuite, enlevez /dev/sdg1 de ops et ajoutez-le dans design.
# 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
![]() | Sauvegardez votre système |
---|---|
Il est fortement recommandé de faire une sauvegarde complète de votre système avant d'essayer de convertir votre racine en LVM 1. |
![]() | Complications des mises à jour |
---|---|
Avoir son système de fichiers racine en LVM 1 peut compliquer significativement les procédures de mise à jour (suivant les distributions) donc la décision ne doit pas être prise à la légère. Plus précisément, vous devez vous assurer que le module LVM 1 (s'il n'est pas compilé directement dans le noyau) ainsi que les utilitaires vgscan et vgchange sont disponibles avant, pendant et après la mise à jour. |
![]() | Complications des récupérations |
---|---|
Avoir son système racine sous LVM 1 peut compliquer significativement la récupération de systèmes de fichiers endommagés. Si vous perdez votre initrd, il sera très difficile de démarrer le système. Il faudra alors un disque de récupération contenant le noyau, le module et les utilitaires LVM 1 et tous les outils nécessaires pour récupérer un système de fichiers endommagé. Soyez sûr de faire des sauvegardes régulières et de garder une méthode de démarrage alternative qui permet la récupération de LVM. |
/dev/hda1 /boot /dev/hda2 swap /dev/hda3 /
Le plus simple pour faire cela est d'utiliser GNU parted. Ce logiciel permet de réduire ou d'agrandir des partitions avec des systèmes de fichiers. Il est possible d'utiliser resize2fs et fdisk, mais GNU parted est moins sensible aux erreurs. S'il n'est pas inclus dans votre distribution, vous pouvez le télécharger à l'adresse : ftp://ftp.gnu.org/pub/gnu/parted.
Une fois que vous avez installé parted et QUE VOUS AVEZ SAUVEGARDÉ VOTRE SYSTÈME :
# parted /dev/hda (parted) p . . .
Maintenant, retaillez la partition :
(parted) resize 3 145 999
Créez une nouvelle partition :
(parted) mkpart primary ext2 1000 1999
(parted) q
Créez un système de fichiers dans le volume logique et copiez-y les fichiers racines.
# mke2fs /dev/vg/root # mount /dev/vg/root /mnt/ # find / -xdev | cpio -pvmd /mnt
Ouvrez /mnt/etc/fstab de la nouvelle racine pour monter / sur /dev/vg/root. Par exemple :
/dev/hda3 / ext2 defaults 1 1
/dev/vg/root / ext2 defaults 1 1
Ajoutez une entrée dans /etc/lilo.conf pour LVM 1. Cela devrait ressembler à ceci :
image = /boot/KERNEL_IMAGE_NAME label = lvm root = /dev/vg/root initrd = /boot/INITRD_IMAGE_NAME ramdisk = 8192
lvmcreate_initrd -- making loopback file (6189 kB)
et créez un ramdisk de la taille entre parenthèses.
Vous devez recopier ce nouveau lilo.conf dans le nouveau système de fichiers racine.
# cp /etc/lilo.conf /mnt/etc/
D'abord, il faut mettre le type de partition à 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
Convertissez-la en PV et ajoutez-la au groupe de volumes :
# pvcreate /dev/hda3 # vgextend vg /dev/hda3
![]() | A utiliser uniquement avec des VG qui ne marchent pas |
---|---|
Ne pas exécuter sur un LVM qui fonctionne correctement. Vous devez donner le bon volume physique à pvcreate ou vous risquez de perdre vos données. |
![]() | Note |
---|---|
pvcreate permet juste d'écraser les méta-données LVM sur le disque et ne touche pas aux données en elles-même (les volumes logiques). |
![]() | Attention |
---|---|
Ne faites pas ceci si vous n'êtes pas sûr de ce que vous faites. Vous y perdrez probablement toutes vos données. |
Il se trouve à  : ftp://ftp.sistina.com/pub/LVM/contrib/uuid_fixer-0.3-IOP10.tar.gz.
Extrayez uuid_fixer-0.3-IOP10.tar.gz
 :
# tar zxf uuid_fixer-0.3-IOP10.tar.gz
Allez dans uuid_fixer :
# cd uuid_fixer
Il y a deux possibilités à ce niveau :
Utiliser le binaire déjà compilé (pour une architecture i386 uniquement)
Assurez-vous de lister tous les PV dans le VG que vous restaurez et suivez les indications :
# ./uuid_fixer <LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS>
Construire le programme uuid_fixer à partir des sources
Ouvrez le Makefile avec votre éditeur favori et vérifiez que LVMDIR pointe sur vos sources de LVM.
Ensuite, lancez make.
# make
Lancez maintenant uuid_fixer. Assurez-vous de lister tous les PV dans le VG que vous restaurez et suivez les indications :
# ./uuid_fixer <LISTE DE TOUS LES PV DU VG QUI DOIVENT ÊTRE RESTAURÉS>
Désactivez les groupes de volumes (optionnel) :
# vgchange -an
Lancez vgscan :
# vgscan
Réactivez des groupes de volumes :
# vgchange -ay
![]() | LVM n'est pas conscient des clusters |
---|---|
Faites très attention en faisant cela car LVM n'est pas conscient des clusters et il est très facile de perdre toutes ses données. |
Si vous avez un environnement avec du fiber-channel ou du SCSI partagé où plusieurs machines peuvent avoir un accès physique à un lot de disques, vous pouvez utiliser LVM pour diviser ces disques en volumes logiques. Si vous voulez partager des données, vous devriez vraiment regarder GFS ou un autre système de fichiers pour cluster.
Le point clé à se souvenir lorsqu'on partage des volumes est que toute l'administration de LVM doit être effectuée sur l'un des nœuds et que LVM doit être arrêté sur tous les autres nœuds avant de faire une quelconque modification sur le nœud d'administration. Une fois les changements effectués, il est nécessaire de lancer vgscan sur les autres nœuds avant de réutiliser les groupes de volumes. Aussi, à moins que vous n'utilisiez un système de fichiers ou une application prenant en compte les clusters (comme GFS), un seul nœud à la fois peut monter un système de fichiers. C'est à l'administrateur de gérer cela ; LVM ne vous empêchera pas de corrompre vos données.
La séquence de démarrage de chaque nœud est la même que pour une configuration à un seul nœud avec l'utilisation de :
vgscan vgchange -ay
dans les scripts de démarrage.
Si vous avez besoin d'apporter une quelconque modification aux méta-données de LVM (indépendamment que cela affecte ou pas les volumes montés sur d'autres nœuds), il faut utiliser la procédure suivante. Dans les points suivants, le « nœud d'administration » est un nœud choisi arbitrairement dans le cluster.
Nœud d'administration Autres nœuds --------------------- ------------------ Fermer tous les volumes logiques (umount) vgchange -an <faire les modifications, par ex. lvextend> vgscan vgchange -ay
![]() | Les VG doivent être actifs sur le nœud d'administration |
---|---|
Vous n'avez pas besoin et ne devez pas défaire les VG du nœud d'administration. Par conséquent, cela doit être le nœud avec les pré-requis d'uptime les plus grands. |
Je me répète encore : Soyez très prudent en faisant cela.
Juste nous dire que LVM ne fonctionne pas ne nous donne pas assez d'informations pour vous aider. Nous devons connaître les différents composants de votre configuration. La première chose à faire est de regarder les archives de la liste de diffusion linux-lvm pour vérifier si quelqu'un n'a pas déjà signalé le même problème. Si vous ne trouvez pas de rapport de bogue pour un problème similaire au vôtre, vous devriez essayer de récupérer autant d'information que possible. La liste est organisée avec trois catégories d'erreurs :
Pour les erreurs de compilation :
Détaillez la version spécifique de LVM que vous utilisez. Si elle provient d'un paquet, donnez le nom du fichier tar et des différents correctifs que vous auriez pu appliquer. Si elle provient du serveur CVS public, donner la date et l'heure où vous l'avez récupérée.
Donnez le message d'erreur exact. Fournissez aussi les quelques lignes qui précèdent le message d'erreur et les quelques lignes suivantes. Elles donnent parfois des indices sur la raison du problème.
Listez les étapes, dans l'ordre, qui ont amené à l'erreur. Indiquez si l'erreur est reproductible. Si vous repartez de l'état initial, les mêmes étapes permettent-elles de reproduire l'erreur ?
Pour les erreurs LVMÂ :
Incluez toutes les informations demandées dans le paragraphe compilation.
Ajoutez une brève description de votre matériel : type de machine et de disques, interface des disques (SCSI, FC, NBD) et toute autre information matérielle que vous trouvez importante.
Donnez les lignes de commandes de LVM qui ont amené l'erreur.
Un fichier de trace produit par les commandes fautives.
Pour cela, vérifiez la présence des lignes suivantes dans
/etc/lvm/lvm.conf
 :
log { file="/tmp/lvm2.log" level=7 activation=1 }
Quand LVM panique :
Incluez toutes les informations demandées dans les deux paragraphes précédents.
Fournissez les informations de debug de la machine. Le mieux est de récupérer ces informations d'une console sur le port série de la machine, étant donné qu'il est difficile de faire un copier/coller d'une machine en panique et qu'il est très facile de faire une erreur en recopiant les informations à la main.
Cela peut faire beaucoup d'informations. Si vous avez plusieurs fichiers, faites une archive tar et gzip en un seul fichier. Envoyez un lien vers l'archive sur la liste de diffusion appropriée (voir la Section 1, « Listes de diffusion ») avec une brève description de l'erreur. Si vous n'avez pas de site web ou ftp pour mettre votre archive à disposition, vous pouvez essayer d'envoyer le fichier à la liste.
L'inscription se fait par une interface web.
Les anciens messages sont consultables dans les archives.
Cette liste n'est pas spécifique à LVM mais elle est mentionnée ici du fait de l'utilisation du mappeur de périphériques par LVM 2.
L'inscription se fait par l'interface web.
Les anciens messages sont consultables dans les archives.
Listes LVM relatives au commit
Cette liste reçoit des messages automatiquement quand quelqu'un fait un commit dans le CVS de LVM 2. Son but est de permettre de suivre l'évolution de l'arborescence CVS.
Les anciens messages sont consultables dans les archives.
Cette liste reçoit des messages automatiquement quand quelqu'un fait un commit dans le CVS de LVM. Son but est de permettre de suivre l'évolution de l'arborescence CVS.
Les anciens messages sont consultables dans les archives.
Cette liste reçoit des messages automatiquement quand quelqu'un fait un commit dans le CVS de dm. Son but est de permettre de suivre l'évolution de l'arborescence CVS.
Les anciens messages sont consultables dans les archives.
Anciennes listes
Cette liste n'est plus en activité, veuillez utiliser linux-lvm pour les discussions sur le développement de LVM.
Cette liste n'est plus en activité. Les rapports d'anomalie doivent être envoyés à la liste linux-lvm.
Page principale de LVMÂ 1.
Page principale de Device-Mapper.
Site FTP de LVMÂ 2.
Site FTP de LVMÂ 1.
Site FTP de Device-Mapper.
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.
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".