Guide pratique de LVM

Version française du LVM HOWTO

Emmanuel Araman

Adaptation française 

Camille Huot

Relecture de la version française 

Alain Portal

Relecture de la version française 

Jean-Philippe Guérard

Préparation de la publication de la v.f. 

Version : 0.19.fr.1.0

Vous est autorisé à copier, distribuer et modifier ce document selon les termes de la Licence de documentation libre GNU (GFDL), version 1.2 ou ultérieure, telle que publiée par la Free Software Foundation ; sans section inaltérable, ni texte de première de couverture, ni texte de quatrième de couverture. La section « GNU Free Documentation License » contient une copie de cette licence.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 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".

Ce document est distribué dans l'espoir qu'il sera utile mais SANS AUCUNE GARANTIE, explicite ou implicite. Même si tous les efforts ont été faits pour assurer l'exactitude des informations fournies ici, les auteurs, éditeurs, responsables des mises à jours et contributeurs n'assument AUCUNE RESPONSABILITÉ pour les erreurs ou les dommages, directs ou indirects, qui pourraient résulter de l'utilisation des informations ci-incluses.

This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, either expressed or implied. While every effort has been taken to ensure the accuracy of the information documented herein, the author(s)/editor(s)/maintainer(s)/contributor(s) assumes NO RESPONSIBILITY for any errors, or for any damages, direct or consequential, as a result of the use of the information documented herein.

28 janvier 2007

Historique des versions
Version 0.19.fr.1.02007-01-28EA
Mise à jour de la version française.
Version 0.14.fr.1.02004-10-11EA, CH, AP, JPG
Première traduction française.
Version 0.192006-11-27AJL
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.182006-11-27AJL
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.172005-10-03AJL
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.162005-07-15AJL
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.152005-06-09AJL
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.142004-10-06AJL
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.132004-08-16AJL
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.122004-06-07AJL
Mise à jour de la FAQ sur LVM 2 (Updated LVM 2 FAQ entries)
Version 0.112004-05-03AJL
Mise à jour de la FAQ sur LVM 2 (Updated LVM 2 FAQ entries)
Version 0.102004-04-22AJL
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.92004-04-16AJL
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.82004-02-25AJL
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.72004-02-16AJL
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.62003-12-09AJL
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.52003-02-10AJL
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.42002-12-16AJL
Mise à jour pour LVM 1.0.6 (Updated for LVM 1.0.6).
Version 0.32002-09-16AJL
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.22002-09-11AJL
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.12002-04-28gf
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).

Table des matières

Introduction
1. Dernière version de ce document
2. Limitations de responsabilité
3. Auteurs
1. Qu'est-ce que LVM ?
2. Qu'est-ce que la gestion par volumes logiques ?
1. Pourquoi en voudrais-je ?
2. Bénéfices de la gestion par volumes logiques sur un petit système
3. Avantages de la gestion par volumes logiques sur un gros système
3. Anatomie de LVM
1. Groupe de volumes (Volume Group, VG)
2. Volume physique (Physical Volume, PV)
3. Volume logique (Logical Volume, LV)
4. Extent physique (Physical Extent, PE)
5. Extent logique (Logical Extent, LE)
6. Mettre tout ensemble
7. Types de correspondances (linéaire/répartie)
8. Les instantanés (snapshots)
4. Questions fréquemment posées
1. FAQ LVM 2
2. FAQ LVM 1
5. Obtenir LVM
1. Télécharger le code source
2. Télécharger le code source de développement par CVS
3. Avant de commencer
4. Configuration initiale
5. Récupération du code source
6. Mise à jour du code
7. Commencer un projet
8. Bidouiller le code
9. Conflits
6. Construire les modules du noyau
1. Construire le module noyau device-mapper
2. Construire le module du noyau pour LVM 1
2.1. Fabriquer un correctif pour votre noyau
2.2. Construire le module LVM pour Linux 2.2.17+
2.3. Compiler les modules LVM pour Linux 2.4
2.4. Vérifier le système de fichiers proc
7. Scripts de démarrage pour LVM 1
1. Caldera
2. Debian
3. Mandrake
4. Redhat
5. Slackware
6. SuSE
8. Scripts de démarrage pour LVM 2
9. Compiler LVM à partir des sources
1. Compiler la bibliothèque et les utilitaires LVM
2. Installer la bibliothèque LVM et les utilitaires
3. Supprimer la bibliothèque LVM et les utilitaires
10. Migrer d'une version précédente de LVM vers LVM 1.0.8
1. Migrer vers LVM 1.0.8 avec une partition racine non LVM
2. Migrer vers LVM 1.0.8 avec une partition racine en LVM et initrd
11. Tâches courantes
1. Initialiser des disques ou des partitions de disques
2. Créer un groupe de volumes
3. Activer un groupe de volumes
4. Enlever un groupe de volumes
5. Ajouter un volume physique à un groupe de volumes
6. Supprimer un volume physique d'un groupe de volumes
7. Créer un volume logique
8. Supprimer un volume logique
9. Étendre un volume logique
10. Réduire un volume logique
11. Migrer des données hors d'un volume physique
12. Partitionnement de disques
1. Plusieurs partitions sur le même disque
2. Étiquettes de disque Sun (Sun disk labels)
13. Recettes
1. Mettre en place LVM avec trois disques SCSI
1.1. Préparation des disques
1.2. Configuration du groupe de volumes
1.3. Création du volume logique
1.4. Création du système de fichiers
1.5. Test du système de fichiers
2. Mise en place de LVM sur trois disques SCSI avec répartition (striping)
2.1. Préparation des partitions de disque
2.2. Configuration du groupe de volumes
2.3. Création du volume logique
2.4. Création du système de fichiers
2.5. Test du système de fichiers
3. Ajouter un nouveau disque dans un système avec plusieurs disques SCSI
3.1. Situation actuelle
3.2. Préparation du partitionnement du disque
3.3. Ajout des nouvelles partitions au groupe de volumes
3.4. Extension des systèmes de fichiers
3.5. Remontage des volumes étendus
4. Faire une sauvegarde avec un instantané (snapshot)
4.1. Créer le volume d'instantané
4.2. Monter le volume d'instantané
4.3. Faire la sauvegarde
4.4. Supprimer l'instantané
5. Enlever un disque
5.1. Distribuer les anciens extents vers des disques existants du groupe de volumes
5.2. Distribuer les anciens extents sur un nouveau disque de remplacement
6. Déplacer un groupe de volumes vers un autre système
6.1. Démonter le système de fichiers
6.2. Marquer le groupe de volumes comme inactif
6.3. Exporter le groupe de volumes
6.4. Importer le groupe de volumes
6.5. Activer le groupe de volumes
6.6. Monter le système de fichiers
7. Diviser un groupe de volumes
7.1. Déterminer l'espace libre
7.2. Déplacer les données des disques à réutiliser
7.3. Créer un nouveau groupe de volumes
7.4. Enlever le volume restant
7.5. Créer le nouveau volume logique
7.6. Créez un système de fichiers sur le volume
7.7. Montez le nouveau volume
8. Convertir le système de fichiers racine en LVM 1
8.1. Démarrer en mode mono-utilisateur
8.2. Utiliser Parted
8.3. Redémarrer
8.4. Vérifier les options de configuration du noyau
8.5. Ajuster le type de partition
8.6. Configurer LVM 1 pour la nouvelle configuration
8.7. Créer le système de fichiers
8.8. Mise à jour de /etc/fstab
8.9. Créez une image disque RAM d'initialisation pour LVM 1
8.10. Mise à jour de /etc/lilo.conf
8.11. Lancez lilo pour écrire le nouveau secteur de boot
8.12. Redémarrer avec LVM
8.13. Ajoutez le reste du disque dans LVM
9. Restaurer les méta-données d'un volume physique
A. Opérations dangereuses
1. Restaurer les UUID de VG avec uuid_fixer
2. Partager des volumes LVM
B. Signaler des erreurs ou des bogues
C. Contacts et liens
1. Listes de diffusion
2. Liens
D. GNU Free Documentation License
1. PREAMBLE
2. APPLICABILITY AND DEFINITIONS
3. VERBATIM COPYING
4. COPYING IN QUANTITY
5. MODIFICATIONS
6. COMBINING DOCUMENTS
7. COLLECTIONS OF DOCUMENTS
8. AGGREGATION WITH INDEPENDENT WORKS
9. TRANSLATION
10. TERMINATION
11. FUTURE REVISIONS OF THIS LICENSE
12. ADDENDUM: How to use this License for your documents

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.

S'il vous plaît, veuillez prévenir le mainteneur du guide pratique si vous pensez devoir être dans la liste ci-dessus.

LVM est un gestionnaire de volumes logiques (Logical Volume Manager) pour le système d'exploitation Linux. Il existe désormais deux versions de LVM pour Linux :

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

Le partitionnement du disque dur est l'une des décisions difficiles pour un nouvel utilisateur de Linux. La nécessité de devoir estimer précisément l'espace disque pour les fichiers systèmes et utilisateurs rend l'installation plus complexe que nécessaire et certains utilisateurs choisissent simplement de mettre toutes leurs données sur une seule grosse partition pour essayer de contourner ce problème.

Une fois que l'utilisateur (ou le programme d'installation) a déterminé l'espace nécessaire pour /home, /usr et /, il arrive fréquemment qu'une des partitions soit saturée alors qu'il reste encore plein d'espace libre sur une autre partition.

Avec la gestion par volumes logiques, le disque entier est alloué à un groupe de volumes et des volumes logiques sont créés pour contenir les systèmes de fichiers /, /usr et /home. Si, par exemple, le volume logique /home est plus tard saturé mais qu'il reste de l'espace libre dans /usr, alors il est possible de réduire /usr de quelques mégaoctets et de réallouer cet espace à /home.

Une autre solution est d'allouer un espace minimal pour chaque volume logique et de laisser une partie de l'espace disque non alloué. Ensuite, lorsque les partitions commencent à être remplies, elles peuvent être étendues suivant les besoins.

Par exemple : Joe achète un PC avec 8,4 Go d'espace disque et installe Linux avec le partitionnement suivant :

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

Quelque temps plus tard, Joe décide qu'il veut installer la dernière suite bureautique et le dernier environnement graphique disponible, mais il réalise que la partition racine n'est pas assez grande. Par contre, puisqu'il a archivé tous ses MP3 grâce à son nouveau graveur DVD, il lui reste plein d'espace libre dans /home.

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

[Avertissement] 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.

Lorsque Jane rencontre le même problème, elle peut réduire la taille de /home d'un gigaoctet et rajouter cet espace dans la partition racine.

Supposons que Joe et Jane remplissent aussi la partition /home et décident d'ajouter un nouveau disque de 20 Go dans leur système.

Joe formate le disque entièrement dans une seule partition (/dev/hdb1) et l'utilise comme /home en y déplaçant les données de son /home existant. Il lui reste alors 6 Go inutilisés qu'il peut faire apparaître comme une extension de /home avec un lien symbolique, /home/joe/anciens-mp3 par exemple.

Jane ajoute simplement le nouveau disque dans son groupe de volumes existant et étend son /home pour inclure le nouveau disque. Ou bien, elle pourrait déplacer les données de /home de l'ancien vers le nouveau disque et ensuite étendre le volume racine existant pour couvrir tout l'ancien disque.

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)

Une des merveilleuses fonctionnalités apportées par LVM est l'instantané. Elle permet à l'administrateur de créer un nouveau périphérique qui est une copie exacte d'un volume logique figé à un moment donné. Typiquement, cela peut être utilisé lors de traitements par lots sur le volume logique, pour une sauvegarde par exemple, lorsque l'on ne veut pas arrêter une application qui est en train de modifier les données. Une fois que l'on a fini d'utiliser l'instantané, l'administrateur système peut tout simplement supprimer le périphérique. Cette fonctionnalité demande à ce que l'instantané soit effectué lorsque le volume logique se trouve dans un état consistant - Le patch "VFS-lock" pour LVM 1 permet de garantir cet état à la création de l'instantané pour certains systèmes de fichiers. Avec le noyau 2.6, de nombreux systèmes de fichiers le font automatiquement à la création de l'instantané, sans avoir besoin d'un patch.

[Avertissement]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 1, les instantanés sont en lecture seule. Ils fonctionnent par l'utilisation d'une table d'exception qui trace les blocs modifiés : Lorsqu'un bloc est modifié sur la source, il est d'abord copié dans l'instantané, marqué comme modifié dans la table d'exceptions et ensuite modifié sur le volume source avec les nouvelles données.

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

[Avertissement]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 ?
1.2. Un module noyau spécifique est-il nécessaire pour LVM 2 ?
1.3. J'ai des erreurs concernant /dev/mapper/control quand j'essaie d'utiliser les utilitaires LVM 2. Que se passe-t-il ?
1.4. Quelles sont les commandes et types de volumes logiques compatibles avec LVM 2 ?
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 ?
1.6. LVM 2 est-il compatible avec les VG et LV créés avec LVM 1 ?
1.7. Puis-je passer mes VG et LV qui proviennent de LVM 1 au format natif de LVM 2 ?
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 ?
1.9. Ma partition racine est sur un LV en LVM 1. Comment faire pour passer à LVM 2 ? Qu'est devenu lvmcreate_initrd ?
1.10. Comment se comporte LVM par rapport à un renommage soudain des disques physiques ?
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 ?
1.12. Quelles sont les différences entre les instantanés de LVM 2 et LVM 1 ?
1.13. Quelle est la taille maximale d'un LV ?

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. Commencez par enlever tous les instantanés du système. Ils ne sont pas gérés par LVM 2 et empêcheront l'activation de leur volume d'origine au démarrage de LVM 2.

  2. Assurez-vous de posséder un moyen de démarrage du système autre que par la partition de démarrage standard. Vous devez avoir les utilitaires de LVM 1, les outils systèmes standards (mount) et un noyau compatible LVM 1 au cas où il serait nécessaire de revenir en arrière pour faire des corrections.

  3. Récupérez les sources des utilitaires de LVM 2 et le mappeur de périphériques. Compilez-les. Il faut installer la bibliothèque du mappeur de périphériques avec « make install » avant de compiler les utilitaires de LVM 2. Copiez aussi le script dm/scripts/devmap_mknod.sh dans /sbin. Je recommande d'installer seulement le binaire « lvm » pour l'instant pour garder l'accès aux utilitaires de LVM 1 au cas où. Si vous avez accès à des paquets de LVM 2 et du mappeur de périphériques, vous pouvez les installer à la place mais il faut noter qu'il vont probablement écraser les utilitaires de LVM 1.

  4. Récupérez un noyau compatible avec le mappeur de périphériques, compilé en interne ou avec un module.

  5. Recherchez les commandes d'activation de LVM dans les scripts de démarrage de la machine. Assurez-vous que le module du mappeur de périphériques est chargé à cet endroit (si vous utilisez le mappeur de périphériques en tant que module) et ajoutez ensuite la commande « /sbin/devmap_mknod.sh; lvm vgscan; lvm vgchange -ay ».

  6. Installez le noyau compatible avec le mappeur de périphériques et redémarrez. Si tout se passe bien, vous devriez être en train d'utiliser LVM 2.

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 /dev/mapper/control quand j'essaie d'utiliser les utilitaires LVM 2. Que se passe-t-il ?

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 /dev/mapper/control par vous même :

  1. Assurez-vous d'avoir chargé le module du mappeur de périphériques s'il n'est pas directement dans le noyau.

  2. Tapez :

    # cat /proc/misc | grep device-mapper | awk '{print $1}'
    

    et notez le chiffre affiché. (S'il n'y a rien d'affiché, reportez-vous à l'étape 1.)

  3. Tapez :

    # mkdir /dev/mapper
    

    Si vous obtenez une erreur comme quoi /dev/mapper existe déjà, vérifiez que c'est un répertoire et continuez.

  4. Tapez :

    # mknod /dev/mapper/control c 10 $nombre
    

    $nombre est le chiffre affiché à l'étape 2.

Cela devrait être bon maintenant.

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 :

  • pvmove

  • snapshots

Vous pourrez trouver un début de compatibilité avec ces fonctionnalités dans les correctifs instables du mappeur de périphériques maintenus par Joe Thornber.

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

Fedora

Le programme mkinitrd de la dernière Fedora Core 2 gère LVM 2, mais repose sur un binaire lvm lié statiquement dans la dernière archive LVM 2.

Les utilisateurs de Redhat 9 devraient pouvoir l'utiliser.

Debian

Il existe une version non officielle ici.

Générique

Il en existe une version dans la distribution source de LVM 2 dans le répertoire scripts/lvm2_createinitrd/. Voir la documentation dans ce répertoire pour plus de détails.

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.

[Note]Note

Des problèmes de fonctionnement ou l'enlèvement d'un disque en cours d'utilisation par LVM cause des problèmes avec l'utilisation en cours et les futures activations du VG concerné.

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

  • Pour les noyaux 2.4, la taille maximale d'un LV est de 2TB. Cependant, pour certains noyaux plus anciens, la limite était de 1TB en raison d'un problème de nombres signés au niveau des blocs. La distribution Red Hat Enterprise Linux Update 4 a un correctif pour autoriser les LVs de 2TB. Consultez les informations de votre distribution pour ce problème.

  • Pour les CPUs 32 bits avec les noyaux 2.6, la taille maximale des LVs est de 16TB.

  • Pour les CPUs 64 bits avec les noyaux 2.6, la taille maximale des LVs est de 6EB. (Oui, c'est un nombre très gros.)

2.1. Quand y aura-t-il des infos ici ?

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.

[Note]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.

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.

Pour utiliser LVM 1, il faut que vous compiliez le module LVM 1 du noyau (recommandé) ou, si vous le préférez, que vous reconstruisiez le noyau avec le code LVM 1 lié statiquement dedans.

Votre système Linux est probablement basé sur une des distributions populaires de Linux (Redhat, Debian...) avec laquelle le module LVM 1 est peut-être déjà fourni. Vérifiez la version des utilitaires que vous avez sur votre système en utilisant une des commandes de LVM avec l'option « -h ». Utilisez la commande pvscan -h si vous ne connaissez aucune des commandes. Si le numéro de version en tête du listing de l'aide est 1.0.8, utilisez votre configuration actuelle et sautez le reste de ce chapitre.

Un noyau de la série 2.2 doit être mis à jour avant de commencer la compilation. Allez voir ailleurs les instructions pour apprendre à appliquer des correctifs au noyau.

Correctifs :

  1. Correctif rawio

    Le correctif raw_io de Stephen Tweedie est disponible à http://www.kernel.org/pub/linux/kernel/people/sct/raw-io

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

La Slackware 8.1 ne demande aucune mise à jour des scripts de démarrage pour faire fonctionner LVM.

Pour les versions précédentes de Slackware 8.1, vous devrez appliquer le correctif suivant à /etc/rc.d/rc.S.

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 --ignorelockingfailure
      
dans 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.

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.

Les étapes de la migration sont très simples, mais il est néanmoins recommandé de faire une sauvegarde des données avant. Vous êtes prévenus.

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

  2. Compiler les utilitaires LVM

    Suivez les étapes du Chapitre 9, Compiler LVM à partir des sources pour compiler et installer les utilitaires de LVM.

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

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