LVM/fr

LVM (Logical Volume Manager - Gestionnaire de volumes logiques) permet aux administrateurs de créer des méta-périphériques qui fournissent une couche d'abstraction entre un système de fichiers et le stockage physique sous-jacent. Les méta-périphériques (sur lesquels sont placés les systèmes de fichiers) sont des volumes logiques, qui utilisent de l'espace de stockages tiré de pools de stockage appelés groupes de volumes. Un groupe de volumes dispose d'un ou plusieurs volumes physiques qui représentent les véritables périphériques sur lesquels les données sont stockées.

Les volumes physiques peuvent être des partitions, des disques durs SATA entiers regroupés sous formes de JBOD  (Just a Bunch Of Disks - Un simple groupe de disques), des systèmes RAID, iSCSI, un canal de fibre, eSATA etc.

Installation
La configuration de LVM est gérée à la fois par des pilotes au niveau du noyau et des applications de l'espace utilisateur.

Noyau
Activez les options suivantes du noyau:

Logiciel
Installez le paquet :

Configuration
Configuring LVM is done on several levels:
 * LV, PV and VG management through the management utilities;
 * 1) LVM subsystem fine-tuning through the configuration file;
 * 2) Service management at the distribution level;
 * 3) Setup through an initial ram file system (initramfs).

La gestion des volumes physiques et logiques, tout autant que celles des groupes de volumes est traitée dans le chapitre  Usage.

Fichiers de configuration de LVM
LVM dispose d'un fichier de configuration très étendu, soit. La plupart des utilisateurs n'ont pas besoin de modifier les paramètres de ce fichier pour commencer à utiliser LVM.

Gestion du service
Gentoo fournit le service LVM pour détecter automatiquement et activer les groupes de volumes et les volumes logiques.

Le service peut être géré via le système init.

openrc
Pour démarre LVM à la main :

Pour démarrer LVM au démarrage de la machine.

systemd
Pour démarrer lvm à la main

Pour démarrer LVM au démarrage de la machine.

Utilisation de LVM dans un disque virtuel de démarrage -- initramfs
La plupart des chargeurs d'amorçage ne peuvent pas démarrer depuis LVM directement - Ni GRUB patrimonial, ni LILO ne le peuvent. GRUB2 peut amorcer depuis un volume logique linéaire, un volume logique miroir et possiblement depuis quelques volume logiques RAID. Aucun chargeur d'amorçage ne prend actuellement en charge les volumes logiques parcimonieux.

For that reason, it is recommended to use a non-LVM /boot partition and mount the LVM root from an initramfs. Such an initramfs can be generated automatically through genkernel, and dracut:


 * genkernel can boot from all types except thin volumes (as it neither builds nor copies the binaries from the build host) and maybe RAID10 (RAID10 support requires LVM2 2.02.98, but genkernel builds 2.02.89, however if static binaries are available it can copy those);
 * genkernel-next can boot from all types volumes, but needs a new enough or the resulting thin binaries will be broken (See );
 * dracut should boot all types, but only includes thin support in the initramfs if the host being run on has a thin root.

Genkernel/Genkernel-next
Emerge either or. The static USE flag may also be enabled on the package so that genkernel will use the system binaries (otherwise it will build its own private copy). The following example will build only an initramfs (not an entire kernel) and enable support for LVM.

La page de manuel de genkernel présente d'autres options qui dépendent des besoins du système.

The initrd will require parameters to tell it how to start LVM, and they are supplied the same way as other kernel parameters. For example:

Dracut
Le paquet, qui a été porté depuis le projet RedHat, tient lieu d'outil similaire pour générer un système de fichiers virtuel de démarrage.Comme il est actuellement sous ~arch pour test, les utilisateurs doivent l'accepter explicitement (via  ) avant de l'installer. Avant cela, l'option   doit être déclarée dans. D'autres modules peuvent être requis. Reportez-vous à Dracut. En général, la commande suivante devrait générer un système virtuel de fichiers de démarrage utilisable (initramfs).

Le disque virtuel de démarrage requiert quelques paramètres pour le renseigner sur l'endroit où démarrer lvm. Ces derniers sont transmis de la même façon que les autres paramètres du noyau. Par exemple :

For a comprehensive list of LVM options within dracut please see the section in the Dracut Manual.

Utilisation
LVM organise le stockage sur 3 niveaux différents comme suit :
 * disques durs, partitions, systèmes RAID systems ou autres moyens de stockage sont initialisés en tant que volumes physiques (PVs)
 * les volumes physiques (Physical Volumes) sont regroupés en groupe de volumes (Volumes Groups)
 * les volumes logiques (Logical Volumes) sont gérés en groupes de volumes (VG)

Volumes physiques (Pysical Volumes)
Les volumes physiques sont les systèmes physiques réels sur lesquels LVM est construit.

Partitionnement
Le code du type de partition pour LVM est8e (Linux LVM).

For instance, to set the type through fdisk for a partition on :

In fdisk, create partitions using the key and then change the partition type with the  key to 8e.

Créer un volume physique
Physical volumes can be created / initialized with the pvcreate command.

Par exemple, la commande suivante crée un volume physique sur la première partition de et :

Lister les volumes physiques
With the pvdisplay command, an overview of all active physical volumes on the system can be obtained.

If more physical volumes should be displayed, then pvscan</tt> can detect inactive physical volumes and activate those.

Retirer un volume physique
LVM répartit les données automatiquement sur tous les volumes physiques (sauf si on lui demande de procéder différemment) mais dans une démarche linéaire. Si un volume logique requis (dans un groupe de volumes) est plus petit que le volume de l'espace libre sur un unique volume physique, alors tout l'espace de ce volume physique (unique) est alloué à ce volume logique d'une manière contigüe. Ceci vise à optimiser la performance.

If a physical volume needs to be removed from a volume group, the data first needs to be moved away from the physical volume. With the pvmove</tt> command, all data on a physical volume is moved to other physical volumes within the same volume group.

Such an operation can take a while depending on the amount of data that needs to be moved. Once finished, there should be no data left on the device. Verify with pvdisplay that the physical volume is no longer used by any logical volume.

The next step is to remove the physical volume from the volume group using vgreduce</tt> after which the device can be "deselected" as a physical volume using pvremove:

Groupe de volumes (Volum Group)
Un groupe de volumes (VG) regroupe un certain nombre de volumes physiques et se présente comme dans le système de fichiers. Le nom du groupe de volumes est choisi par l'administrateur.

Créer un groupe de volumes
La commande suivante crée un groupe de volume appelé vg0 en lui assignant deux volumes physiques et.

Lister les groupes de volumes
To list all active volume groups, use the vgdisplay</tt> command:

If volume groups are missing, use the vgscan</tt> command to locate volume groups:

Étendre un groupe de volumes
Les groupes de volumes regroupent des volumes physiques, permettant ainsi aux administrateurs d'utiliser un pool de stockage pour allouer de l'espace aux systèmes de fichiers. Lorsqu'un groupe de volumes manque de ressources physiques, il est nécessaire de l'étendre en lui ajoutant de nouveaux volumes physiques.

La commande suivante étend le groupe de volumes vg0 en lui ajoutant le volume physique :

N'oubliez pas que le volume physique doit d'abord être initialisé en tant que tel !

Réduire un groupe de volumes
If physical volumes need to be removed from the volume group, all data still in use on the physical volume needs to be moved to other physical volumes in the volume group. As seen before, this is handled through the pvmove</tt> command, after which the physical volume can be removed from the volume group using vgreduce:

Retirer un groupe de volumes
If a volume group is no longer necessary (or, in other words, the storage pool that it represents is no longer used and the physical volumes in it need to be freed for other purposes) then the volume group can be removed with vgremove. This only works if no logical volume is defined for the volume group, and all but one physical volume have already been removed from the pool.

Volume logique (Logical Volume)
Les volumes logiques sont les méta-périphériques finaux mis à la disposition du système, ordinairement pour y placer des systèmes de fichiers. Ils sont créés et gérés en groupes de volumes et apparaissent sous la forme. Comme avec les groupes de volumes, le nom utilisé pour désigner le volume est fixé par l'administrateur.

Créer un volume logique
To create a logical volume, the lvcreate</tt> command is used. The parameters to the command consist out of the requested size for the logical volume (which cannot be larger than the amount of free space in the volume group), the volume group from which the space is to be claimed and the name of the logical volume to be created.

Dans l'exemple qui suit, un volume logique nommé lvol1 est créé à partir du groupe de volumes nommé vg0 avec une taille de 150MB.

It is possible to tell lvcreate</tt> to use all free space inside a volume group. This is done through the  option which selects the amount of extents rather than a (human readable) size. Logical volumes are split into logical extents which are data chunks inside a volume group. All extents in a volume group have the same size. With the  option lvcreate</tt> can be asked to allocate all free extents:

Juste après FREE la clé VG peut être utilisée pour signifier la taille entière du groupe de volumes.

Lister les volumes logiques
To list all logical volumes, use the lvdisplay</tt> command:

If logical volumes are missing, then the lvscan</tt> command can be used to scan for logical volumes on all available volume groups.

Étendre un volume logique
When a logical volume needs to be expanded, then the lvextend</tt> command can be used to grow the allocated space for the logical volume.

Par exemple pour augment la taille du volume logique 'lvol1'' jusqu'à 500 MO :

On peut aussi utiliser la taille à ajouter plutôt que de spécifier la taille totale.

Un groupe de volumes ne met pas immédiatement un espace de stockage additionnel à la disposition de l'utilisateur. Pour cela, le système de fichiers qui occupe ce groupe de volumes doit être élargi lui aussi. Tous les systèmes de fichiers ne permettent pas le redimensionnement à chaud. Vérifiez la documentation de votre système de fichier pour plus d'information.

À titre d'exemple, pour redimensionner un système de fichiers ext4 pour lui donner une taille de 500 MO :

Réduire un volume logique
Si un volume logique doit être réduit en taille, commencez par réduire l'étendue du système de fichier. Tous les systèmes de fichiers ne peuvent être redimensionné système en marche.

Par exemple, ext4 ne peut être redimensionner avec un système qui tourne dessus, il faut d'abord le démonter. Il est également recommandé de vérifier le système de fichiers afin d'être certain qu'il ne comporte pas d'incohérence.

Une fois le système de fichiers réduit, il est possible de réduire le volume logique à son tour.

Permissions d'un volume logique
LVM prend en charge les permissions sur les volumes logiques.

For instance, a logical volume can be set to read only using the lvchange</tt> command:

Il est nécessaire de remonter le volume car le changement ne peut être pris en compte immédiatement.

Pour marquer le volume logique comme inscriptible à nouveau, utilisez les bits de permission rw

Retirer un volume logique
Avant de retirer un volume logique, assurez-vous qu'il n'est pas monté.

Désactivez le volume logique de façon à ce qu'on ne puisse plus y écrire :

Dès lors que le volume logique est démonté et désactivé, on peut le retirer, libérant ainsi les étendues élémentaires qui lui sont alloués pour les mettre à la disposition des autres volumes logiques dans le groupe de volumes.

Fonctionnalités
LVM offre quelques fonctionnalités intéressantes pour les administrateurs, y compris (mais sans limitation) :
 * l'allocation parcimonieuse
 * la prise en charge des instantanés
 * des types de volumes utilisant des méthodes d'allocation différentes

L'allocation parcimonieuse
De récentes version de LVM2 (2.02.89) prennent en charge les volumes à allocation parcimonieuse (thin volumes ou volumes parcimonieux). Les volumes parcimonieux sont aux périphériques de blocs, ce que les fichiers parcimonieux (sparse files) sont aux systèmes de fichiers. En conséquences, un volume logique parcimonieux à l'intérieur d'un pool peut être sur-engagé : sa taille affichée peut être supérieure à l'espace qui lui est alloué - il peut même être plus volumineux que le pool lui-même. Tout comme un fichier parcimonieux, les étendues physiques élémentaires sont allouées au fur et à mesure que le périphérique de blocs est peuplé. Si le système de fichiers prend en charge la fonctionnalité discard(rejette), des étendues physiques élémentaires sont à nouveau libérées dès lors que des fichiers sont retirés, réduisant ainsi l'utilisation d'espace du pool.

Dans LVM, un tel pool parcimonieux est un type de volume logique, qui peut lui-même héberger des volumes logiques.

Créer un pool parcimonieux
Chaque pool parcimonieux possède des méta-données associées, qui augmentent la taille du pool parcimonieux. LVM calcule la taille des méta-données en se basant sur la taille du pool parcimonieux comme étant le minimum de pool_chunks * 64 octets</tt> et de <2 MO. L'administrateur peut choisir un taille des méta-données différentes.

To create a thin pool, add the  options to lvcreate</tt>:

L'exemple précédent crée un pool parcimonieux appelé thin_pool qui aura une taille totale de 150 MO. Il s'agit de la taille réelle du pool parcimonieux (et par conséquent le montant total d'espace de stockage qui peut être utilisé).

To explicitly ask for a certain metadata size, use the  option:

À cause des méta-données qui sont ajoutées au pool parcimonieux, la manière intuitive qui consiste à utiliser toute la taille disponible dans un groupe de volume ne fonctionne pas (voir LVM bug |812726):

Notez que le pool parcimonieux n'a pas de nœud de périphérique associé comme les autres.

Créer un volume logique parcimonieux
A thin logical volume is a logical volume inside the thin pool (which itself is a logical volume). As thin logical volumes are sparse, a virtual size instead of a physical size is specified using the  option:

Dans cet exemple le volume logique parcimonieux (thin) lvol1 est mis à disposition en tant que périphérique de taille 300 MO, bien que le pool sous-jacent ne contienne que 150 MO d'espace mémoire réel alloué.

Il est également possible de créer à la fois le pool parcimonieux et le volume logique à l'intérieur de ce pool en une seule commande :

Lister les pools parcimonieux et les volumes logiques parcimonieux
Thin pools and thin logical volumes are special types of logical volumes, and as such as displayed through the lvdisplay</tt> command. The <tt>lvscan</tt> command will also detect these logical volumes.

Étendre un pool parcimonieux
The thin pool is expanded like a non-thin logical volume using <tt>lvextend</tt>. For instance:

Étendre un volume logique parcimonieux
Un volume logique parcimonieux est étendu de la même manière qu'un volume ordinaire :

Note that the <tt>lvextend</tt> command uses the  option (or   if extent counts are used) and not a "virtual size" option as was used during the creation.

Réduire un pool parcimonieux
Au stade actuel, LVM ne sait pas réduire la taille d'un pool parcimonieux. Reportez-vous au rapport de bogue |812731.

Réduire un volume logique parcimonieux
Les volumes logiques parcimonieux sont réduits de la même manière que les volumes logiques ordinaires.

For instance:

Note that the <tt>lvreduce</tt> command uses the  option (or   if extent counts are used) and not a "virtual size" option as was used during the creation.

Retirer des pools parcimonieux
Ces pools ne peuvent être retirés que si tous les volumes logiques parcimonieux qu'ils contenaient ont été retirés.

When a thin pool no longer services any thin logical volume, it can be removed through the <tt>lvremove</tt> command:

Instantanés LVM2 et instantanés parcimonieux
Un instantané est un volume logique que agit comme copie d'un autre volume logique. Il affiche l'état du volume logique original au moment de la création de l'instantané.

Créer un instantané de volume logique
A snapshot logical volume is created using the  option to <tt>lvcreate</tt>. Snapshot logical volumes are still given allocated storage as LVM "registers" all changes made to the original logical volume and stores these changes in the allocated storage for the snapshot. When querying the snapshot state, LVM will start from the original logical volume and then check all changes registered, "undoing" the changes before showing the result to the user.

Un volume logique instantané, grossit par conséquence au rythme des changements apportés au volume logique original. Lorsque tout l'espace alloué à l'instantané est épuisé, l'instantané est automatiquement retiré du système.

L'exemple qui précède crée un volume logique instantané appelé 20140412_lvol1, basé sur le volume lvol1' du groupe de volumes vg0''. Il utilise 10% de l'espace (réellement des étendues physiques élémentaires) alloués au groupe de volumes.

Accéder à un volume logique instantané
Les volumes logiques instantanés sont montés de la même manière que les volumes logiques ordinaires. Ils ne sont même pas réduits à des opérations en lecture seule - il est possible de modifier des instantanés et les utiliser ainsi pour des tester des changements avant de les appliquer à un système de fichier de production.

Tant qu'un volume logique instantané existe, le volume logique original ordinaire ne peut être réduit en taille ou supprimer.

Les instantanés parcimonieux de LVM
To create a thin snapshot, the <tt>lvcreate</tt> command is used with the  option. No size declaration needs to be passed on:

Les volumes logiques instantanés parcimonieux ont la même taille que leur volume logique original, et utilisent une allocation physique de 0 tout comme les autres volumes logiques.

Il est aussi possible de prendre des instantanés d'instantanés.

Ce type d'instantanés procure plusieurs avantages par rapport aux instantanés ordinaires. Tout d'abord, les instantanés parcimonieux sont indépendants de leur volume logique original une fois créés. Le volume logique original peut être réduit ou supprimé sans que cela n'affecte l'instantané. En second lieu, ce type d'instantanés peut être créé efficacement de manière récursive (instantanés d'instantanés) sans la surcharge due au chaînage des instantanés LVM ordinaires récursifs.

Revenir à l'état de l'instantané
Pour faire revenir en arrière le volume logique à l'état de l'instantané, utilisez la commande suivante :

This might take a couple of minutes, depending on the size of the volume. Please note that the rollback will only happen once the parent logical volume is offline. Hence a reboot might be required.

Revenir à l'état d'un instantané parcimonieux
For thin volumes, <tt>lvconvert --merge</tt> does not work. Instead, delete the original logical volume and rename the snapshot:

Différentes méthodes d'allocation d'espace de stockage
LVM supports different allocation methods for storage:
 * Linear volumes (which is the default);
 * Mirrored volumes (in a more-or-less active/standby setup);
 * Striping (RAID0);
 * Mirrored volumes (RAID1 - which is more an active/active setup);
 * Striping with parity (RAID4 and RAID5);
 * Striping with double parity (RAID6);
 * Striping and mirroring (RAID10).

Les volumes linéaires
Les volumes linéaires sont les volumes les plus courants de LVM. LVM essaye d'allouer l'espace au volume logique pour assurer une contiguïté physique aussi grande que possible. S'il existe un volume physique suffisamment grand pour contenir le volume logique tout entier, alors LVM lui allouera cet espace, autrement, il l'éclatera en aussi peu de morceaux que possible.

Les commandes introduites plus haut dans cette page pour la création de volumes logiques créent des volumes logiques linéaires.

Comme les volumes logiques n'ont aucune exigence particulière, ils sont les plus faciles à manipuler et peuvent être redimensionnés et ré-alloués à volonté. Si un volume logique se voit alloué de l'espace de plusieurs volumes physiques, et que l'un de ces volumes physiques devient indisponible, alors le volume logique ne peut plus être démarré et devient inutilisable.

Les volumes réfléchis
LVM prend en charge les volumes réfléchis (mirrored), qui procure une tolérance aux fautes en cas de panne de disque. À la différence de RAID, il n'y a pas de gain de performance - toutes les lectures et écritures ne se font que sur un seul coté du miroir.

Pour suivre l'état du miroir, LVM a besoin qu'un journal soit tenu. Il est conseillé (et souvent obligatoire) de placer ce journal sur un volume physique qui ne contient aucun des volumes logiques réfléchis. Il y a trois sortes de journaux utilisables avec les miroirs :


 * 1) Disk est le type de journal par défaut. Tous les changements effectués sont inscrits dans les étendues physiques élémentaires de méta-données supplémentaires, que LVM gère. Si un périphérique tombe en panne, alors les changements sont inscrits dans le journal jusqu'à ce que le miroir soit restauré.
 * 2) Les journaux de type Mirror sont des journaux de type disk qui sont eux-même réfléchis.
 * 3) Les journaux Core mirror enregistre l'état du miroir en mémoire seulement. LVM doit reconstruir le miroir à chaque fois qu'il est activé. Ce type de journal est utile pour les miroirs temporaires.

To create a logical volume with a single mirror, pass the -m 1 argument (to select standard mirroring) with optionally  to select a particular log type:

The -m 1 tells LVM to create one (additional) mirror, so requiring 2 physical volumes. The  option is an optimization - without it LVM will try synchronize the mirror by copying empty sectors from one logical volume to another.

Il est possible de créer un miroir d'un volume physique existant :

The  option does the conversion in the background as this can take quite a while.

Pour retirer un miroir, repositionnez le nombre de miroirs à zéro :

Si une partie du miroir est indisponible (généralement parce que le disque contenant le volume physique est en panne), le groupe de volumes aura besoin d'être restauré dans un mode dégradé :

Dès le première écriture, LVW se rendra compte que le miroir est brisé. La politique par défaut (remove c.à.d. retirer) est de réduire/briser automatiquement le miroir selon le nombre de morceaux disponibles. Un miroir à trois volets avec un volume physique manquant sera réduit à un miroir à deux volets; un miroir à deux volets sera réduit à un volume linéaire ordinaire. Si la panne est seulement transitoire, et que le volume physique redevient disponible après que LVM a cassé le miroir, il faudra recréer le volume logique réfléchi dessus.

To recover the mirror, the failed physical volume needs to be removed from the volume group, and a replacement physical volume needs to be added (or if the volume group has a free physical volume, it can be created on that one). Then the mirror can be recreated with <tt>lvconvert</tt> at which point the old physical volume can be removed from the volume group:

Il es possible de faire en sorte que LVM recrée le miroir avec des étendues physiques élémentaires libres sur un volume physique différent si un des coté est en panne. Pour cela définissez   à  la valeur allocate dans.

Miroir parcimonieux
It is not (yet) possible to create a mirrored thin pool or thin volume. It is possible to create a mirrored thin pool by creating a normal mirrored logical volume and then converting the logical volume to a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Segmentation répartie (RAID0)
Instead of a linear volume, where multiple contiguous physical volumes are appended, it possible to create a striped or RAID0 volume for better performance. This will alternate storage allocations across the available physical volumes.

Pour créer un volume à segmentation répartie sur 3 volumes physiques :

The  option indicates over how many physical volumes the striping should be done.

It is possible to mirror a stripe set. The  and   options can be combined to create a striped mirror:

This creates a 2 physical volume stripe set and mirrors it on 2 different physical volumes, for a total of 4 physical volumes. An existing stripe set can be mirrored with <tt>lvconvert</tt>.

Un pool parcimonieux peut être rendu à segmentation répartie comme tout autre volume logique. Tous les volumes parcimonieux créés à partir du pool héritent de ces réglages - ne les spécifiez pas à la main lorsque vous créez un volume parcimonieux.

Il n'est pas possible de transformer un volume existant en un volume à segmentation répartie, ni de redéfinir la répartition sur plus ou moins de volumes physiques, ni de le convertir en un volume linéaire de niveau de RAID différent. Un volume à segmentation répartie peut être réfléchi. Il est possible d'étendre un volume à segmentation répartie sur des volumes physiques additionnels, mais ces derniers doivent être ajoutés en multiples de ceux du volume original (ce qui ajoutera linéairement un nouveau volume à segmentation répartie).

Réflexion (RAID1)
À la différence de RAID 0, qui correspond à la segmentation répartie, RAID 1 correspond à la réflexion, mais mis en œuvre différemment du miroir LVM original. Sous RAID 1, les lectures sont réparties à travers les volumes physiques, améliorant ainsi la performance. Une panne du miroir RAID 1 ne conduit pas à un blocage des entrées/sorties parce que LVM n'a pas besoin de le casser en écriture.

Any place where an LVM mirror could be used, a RAID1 mirror can be used in its place. It is possible to have LVM create RAID1 mirrors instead of regular mirrors implicitly by setting mirror_segtype_default to raid1 in.

Pour créer un volume logique avec un miroir unique :

Notez la différence pour créer un miroir : il n'y a pas de mirorlog spécifié, parce que les volumes RAID1 n'ont pas de journal miroir explicite - it built-in to the logical volume.

It is possible to convert an existing logical volume to RAID1:

Pour retirer un miroir RAID 1, mettez le nombre de miroirs à 0 :

Si une partie de RAID1 est indisponible (en général parce qu'un des disques contenant le volume physique est en panne), le groupe de volume doit être mis dans un état dégradé:

Unlike an LVM mirror, writing does NOT break the mirroring. If the failure is only transient, and the missing physical volume returns, LVM will resync the mirror by copying cover the out-of-date segments instead of the entire logical volume. If the failure is permanent, then the failed physical volume needs to be removed from the volume group, and a replacement physical volume needs to be added (or if the volume group has a free physical volume, it can be created on a different PV). The mirror can then be repaired with <tt>lvconvert</tt>, and the old physical volume can be removed from the volume group:

RAID1 parcimonieux
It is not (yet) possible to create a RAID1 thin pool or thin volume. It is possible to create a RAID1 thin pool by creating a normal mirrored logical volume and then converting the logical volume to a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will then merge them into a single logical volume.

Segmentation répartie avec parité (RAID4 et RAID5)
RAID 0 n'est pas tolérant aux défaillances - si l'un des volumes physiques tombe en panne alors le volume logique devient inutilisable. En ajoutant la segmentation répartie à RAID 0, le volume logique peut continuer à fonctionner si un volume physique est manquant. Un nouveau volume physique peut alors être ajouté pour restaurer la tolérance aux défaillances.

Les volumes à segmentation répartie avec parité existent en deux versions : RAID 4 et RAID 5. Avec RAID 4, tous les segments de parité sont stockés sur le même volume physique. Ceci devient un goulot d'étranglement parce que toutes les écritures affectent ce volume physique, et cela empire avec le nombre de volumes physiques dans le groupe. Avec RAID 5, les données de parité sont distribuées de manière régulière à travers tous les volumes physiques et ainsi aucun d'entre eux ne devient un goulot d'étranglement. Pour cette raison, RAID 4 est rarement employé et est considéré comme obsolète. En pratique, tous les volumes à segmentation répartie avec parité sont en RAID 5.

Seuls les volumes physiques de données sont spécifiés avec -i, LVM en ajoute un automatiquement pour la parité. Ainsi pour un RAID 5 à 3 volumes physiques, on donne -i 2 et non pas -i 3.

Lorsqu'un volume physique est défaillant, le groupe de volume doit être mis dans un mode dégradé :

The volume will work normally at this point, however this degrades the array to RAID0 until a replacement physical volume is added. Performance is unlikely to be affected while the array is degraded - although it does need to recompute its missing data via parity, it only requires simple XOR for the parity block with the remaining data. The overhead is negligible compared to the disk I/O.

Réparer le RAID 5 :

Il est possible de remplacer un volume physique toujours opérationnel en RAID 5 également :

Les mêmes restrictions qui s'appliquent aux volumes à segmentation répartie s'appliquent également aux  volumes à segmentation répartie avec parité : il n'est pas possible de reformer les volumes à segmentation répartie sur plus ou moins de volumes physiques, ni de les reconvertir en un volume linéaire RAID de niveau différent. Un volume à segmentation répartie avec parité peut être réfléchi. Il est possible de l'étendre sur des volumes physiques additionnels, mais ils doivent être ajoutés en multiples du volume à segmentation répartie avec parité (ce qui ajoute effectivement linéairement un nouveau volume à segmentation répartie avec parité).

Volumes logiques RAID 5 parcimonieux
It is not (yet) possible to create stripe set with parity (RAID5) thin pools or thin logical volumes. It is possible to create a RAID5 thin pool by creating a normal RAID5 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Segmentation répartie avec double parité (RAID6)
RAID6 is similar to RAID5, however RAID6 can survive up to two physical volume failures, thus offering more fault tolerance than RAID5 at the expense of extra physical volumes.

Like RAID5, the  option is used to specify the number of physical volumes to stripe, excluding the 2 physical volumes for parity. So for a 5 physical volume RAID6, pass on  and not.

La récupération pour RAID6 est la même que pour RAID5.

Les volumes logiques RAID6 parcimonieux
It is not (yet) possible to create a RAID6 thin pool or thin volumes. It is possible to create a RAID6 thin pool by creating a normal RAID6 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

LVM RAID10
RAID10 est une combinaison de RAID0 et de RAID1. Il est plus puissant que RAID0+RAID1 car la réflexion est faite au niveau des bandes plutôt qu'au niveau du volume logique. En conséquence l'agencement n'a pas besoin d'être symétrique. Un volume RAID10 peut tolérer au moins un volume physique manquant, et possiblement plus.

Both the  and   options are specified:   is the number of stripes and   is the number of mirrors. Two stripes and 1 mirror requires 4 physical volumes.

RAID10 parcimonieux
It is not (yet) possible to create a RAID10 thin pool or thin volumes. It is possible to create a RAID10 thin pool by creating a normal RAID10 logical volume and then converting the logical volume into a thin pool with <tt>lvconvert</tt>. 2 logical volumes are required: one for the thin pool and one for the thin metadata; the conversion process will merge them into a single logical volume.

Expérimenter avec LVM
Il est possible d'expérimenter avec LVM sans utiliser des périphériques de stockage réels. Pour ce faire, les périphériques de boucle de retour sont créés.

Tout d'abord, assurez-vous que le module de boucle de retour loopback est chargé.

Ensuite configurez LVM pour qu'il n'utilise pas udev pour scanner les périphériques :

Créez quelques fichiers images qui deviendront vos périphériques de stockage. L'exemple suivant utilise 5 fichiers pour un total d'environ ~10 GO d'espace disque réel :

Vérifiez quels sont les périphériques de boucle de retour disponibles :

En supposant que tous les périphériques de boucle de retours soient disponibles, créez les périphériques :

Les périphériques sont désormais disponibles pour une utilisation identique à celle de tout autre disque dur du système (et par conséquent parfaits pour les volumes physiques).

Dépannage
LVM dispose de quelques fonctionnalités qui offrent déjà quelques niveaux de redondance. Néanmoins, il y a des situations où il est possible de restaurer des volumes physiques ou logiques perdus.

La fonctionnalité vgcfgrestore
Par défaut, lors de tout changement apporté à un volume LVM physique, à un groupe de volumes, ou à un volume logique, LVM2 crée un fichier de sauvegarde des méta-données dans. Ces fichiers peuvent être utilisés pour récupérer d'un changement accidentel (tel que l'effacement malencontreux d'un volume physique). LVM tient également une copie de sauvegarde des méta-données les plus récentes dans. Ces copies peuvent être utilisées pour restaurer le méta-données sur un disque de rechange, ou pour réparer les méta-données corrompues.

Pour connaître quels sont les états disponibles du groupe de volumes pour restauration (listing partiel pour améliorer la lisibilité):

Restaurer un volume logique accidentellement effacé
En supposant que le volume logique lvw_raid1 ait été effacé accidentellement du groupe de volumes vg0, il est possible de le restaurer de la manière suivante :

Remplacer un volume physique défaillant
Il est possible de faire un remplacement véritable et de recréer les méta-données sur un nouveau volume physique pour qu'il soit identique à l'ancien volume physique :

La ligne importante ici est UUID unknown device.

Ceci recrée les méta-données du volume physique, mais pas le volume logique manquant ou les données manquantes du groupe de volume sur le volume physique.

Ceci reconstruit maintenant toutes les méta-données manquantes sur le volume physique, y compris le volume logique et les données du groupe de volumes. Cependant, cela ne restaure pas les données, et le miroir est ainsi hors synchronisation.

Ceci resynchronise le miroir. Cela fonctionne avec RAID 4, 5 et 6.

Désactiver un volume logique
Il est possible de désactiver un volume logique via la commande suivante :

Il n'est pas possible de monter le volume logique tant qu'il n'est pas réactivé.

Ressources externes

 * LVM2 sourceware.org
 * LVM tldp.org
 * LVM2 Wiki redhat.com