4.4. Administration de volumes logiques

Cette section décrit le commandes permettant de mettre en oeuvre les différents aspects de l'administration de volumes logiques.

4.4.1. Création de volumes logiques

Pour créer un volume logique, utilisez la commande lvcreate. Vous pouvez créer des volumes linéaires, des volumes en mode stripe et des volumes en miroir, comme décrit dans les sous-sections suivantes.
Si vous ne spécifiez pas de nom pour le volume logique, le nom par défaut lvol# est utilisé où # correspond au numéro interne du volume logique.
Les sections suivantes fournissent des exemples de création de volumes logiques pour les trois types de volumes logiques que vous pouvez créer avec LVM.

4.4.1.1. Création de volumes linéaires

Lorsque vous créez un volume logique, celui-ci est issu d'un groupe de volumes en utilisant les extensions libres sur les volumes physiques qui composent le groupe de volumes. Habituellement, les volumes logiques utilisent tout l'espace disponible sur les volumes physiques sous-jacents. La modification du volume logique libère et réalloue l'espace dans les volumes physiques.
La commande suivante crée un volume logique de 10 giga-octets dans le groupe de volumes vg1.
lvcreate -L 10G vg1
La commande suivante crée un volume logique linéaire de 1500 méga-octets appelé testlv dans le groupe de volumes testvg, créant ainsi le périphérique bloc /dev/testvg/testlv.
lvcreate -L1500 -n testlv testvg
La commande suivante crée un volume logique de 50 giga-octets appelé gfslv à partir des extensions libres du groupe de volumes vg0.
lvcreate -L 50G -n gfslv vg0
Vous pouvez utiliser l'argument -l de la commande lvcreate pour spécifier la taille, en extensions, du volume logique. Vous pouvez également utiliser cet argument pour spécifier le pourcentage du groupe de volumes à utiliser pour le volume logique. La commande suivante crée un volume logique appellé mylv qui utilise 60% de l'espace total dans le groupe de volumes testvol.
lvcreate -l 60%VG -n mylv testvg
Vous pouvez également utiliser l'argument -l de la commande lvcreate pour spécifier le pourcentage de l'espace libre restant dans le groupe de volumes comme la taille du volume logique. La commande suivante crée un volume logique appelé yourlv qui utilise tout l'espace non alloué dans le groupe de volumes testvol.
lvcreate -l 100%FREE -n yourlv testvg
You can use -l argument of the lvcreate command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay command to find the "Total PE" size and to use those results as input to the the lvcreate command.
Les commandes suivantes créent un volume logique appelé mylv qui remplit le groupe de volumes testvg.
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n mylv
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see Section 4.3.6, « Suppression de volumes physiques à partir d'un groupe de volumes ».
Pour créer un volume logique alloué à partir d'un volume physique spécifique du groupe de volumes, spécifiez le ou les volumes physiques à la fin de la ligne de commande lvcreate. La commande suivante crée un volume logique appelé testlv dans le groupe de volumes testvg, alloué à partir du volume physique /dev/sdg1.
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
Vous pouvez spécifier les extensions d'un volume physique devant être utilisées pour le volume physique. La commande suivante crée un volume logique linéaire à partir des extensions 0 à 25 du volume physique /dev/sda1 et à partir des extensions 50 à 125 du volume physique /dev/sdb1 dans le groupe de volumes testvg.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
L'exemple suivant crée un volume logique linéaire à partir des extensions 0 à 25 du volume physique /dev/sda1 et continue ensuite à étendre le volume logique à l'extension 100.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
The default policy for how the extents of a logical volume are allocated is inherit, which applies the same policy as for the volume group. These policies can be changed using the lvchange command. For information on allocation policies, see Section 4.3.1, « Création de groupes de volumes ».

4.4.1.2. Création de volumes en mode stripe

For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see Section 2.3.2, « Les volumes logiques en mode stripe ».
Lorsque vous créez un volume logique en mode stripe, vous pouvez spécifier le nombre de stripes avec l'argument -i de la commande lvcreate. Cela permet de déterminer le nombre de volumes physiques sur lesquels le volume logique sera "stripé". Le nombre de stripes ne peut pas être supérieur au nombre de volumes physiques dans le groupe de volumes (à moins que l'argument --alloc anywhere soit utilisé).
Si les périphériques physiques sous-jacents qui composent un volume logique en mode stripe ont différentes tailles, la taille maximale du volume en mode stripe est déterminée par le plus petit périphérique sous-jacent. Par exemple, dans un stripe à deux branches, la taille maximale correspond à deux fois la taille du plus petit périphérique. Dans un stripe à trois branches, la taille maximale correspond à trois fois la taille du plus petit périphérique.
La commande suivante crée un volume logique en mode stripe à travers deux volumes physiques avec un stripe de 64Ko. Le volume logique a une taille de 50 giga-octets, il s'appelle gfslv et est issu du groupe de volumes vg0.
lvcreate -L 50G -i2 -I64 -n gfslv vg0
Comme avec les volumes linéaires, vous pouvez spécifier les extensions du volume physique que vous utilisez pour le stripe. La commande suivante crée un volume en mode stripe avec une taille de 100 extensions qui se trouve sur deux volumes physiques. Il s'appelle stripelv et fait partie du groupe de volumes testvg. Le stripe utilisera les secteurs 0-50 de /dev/sda1 et les secteurs 50-100 de /dev/sdb1.
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100
  Using default stripesize 64.00 KB
  Logical volume "stripelv" created

4.4.1.3. Création de volumes en miroir

Lorsque vous créez un volume en miroir, vous spécifiez le nombre de copies de données à effectuer avec l'argument -m de la commande lvcreate. Si vous spécifiez l'argument -m1, vous créez un miroir qui produira deux copies du système de fichiers : un volume logique linéaire plus une copie. De façon similaire, spécifiez l'argument -m2 pour créer deux miroirs qui produiront trois copies du système de fichiers.
La commande suivante crée un volume logique en miroir avec un seul miroir. Le volume a une taille de 50 giga-octets, s'appelle mirrorlv et est issu du groupe de volumes vg0 :
lvcreate -L 50G -m1 -n gfslv vg0
Un miroir LVM divise le périphérique copié en plusieurs régions qui, par défaut, ont une taille de 512Ko. Vous pouvez utiliser l'argument -R pour spécifier la taille des régions en Mo. LVM maintient un fichier journal afin de garder une trace des régions synchronisées avec le ou les miroirs. Par défaut, ce fichier journal est stocké sur le disque, il est donc persistant à travers les redémarrages. Cependant, vous pouvez utiliser l'argument --corelog afin que ce fichier soit stocké en mémoire ; vous n'aurez pas besoin de périphérique de fichiers journaux supplémentaire mais le miroir entier devra être resynchronisé à chaque redémarrage.
La commande suivante crée un volume logique en miroir à partir du groupe de volumes bigvg. Le volume logique est appelé ondiskmirvol et a un seul miroir. Le volume a une taille de 12Mo et garde le fichier journal du miroir en mémoire.
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg
  Logical volume "ondiskmirvol" created
Le journal miroir est créé sur un dispositif séparé des autres dispositifs sur lesquelles toutes les branches du miroir sont créées. Il est possible, cependant, de créer un jourmal miroir sur le même dispositif, en tant qu'une des branches de miroir en utilisant l'argument --alloc anywhere de la commande vgcreate. Cela risque de dégrader la performance, mais vous permet de créer un miroir, même si vous n'avez que deux dispositifs sous-jacents.
La commande suivante crée un volume logique en miroir avec un seul miroir dont le journal est sur le même dispositif qu'une des branches du miroir. Dans cet exemple, le groupe de volume consiste en deux dispositifs uniquement. Le volume en miroir créé par cette commande, d'une taille de 500 megaoctets, s'appelle mirrorlv, et est issu du groupe de volumes vg0.
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
Lorsqu'un miroir est créé, les régions du miroir sont synchronisées. Pour les composants miroir volumineux, le processus de synchronisation peut prendre un moment. Lorsque vous créez un nouveau miroir qui n'a pas besoin d'être réactivé, vous pouvez spécifier l'argument nosync pour indiquer qu'une synchronisation initiale à partir du premier périphérique n'est pas requise.
Vous pouvez spécifier les périphériques à utiliser pour les fichiers journaux du miroir ainsi que les extensions des périphériques. Pour forcer un fichier journal sur un disque particulier, spécifiez une seule extension sur le disque où il sera placé. LVM ne respecte pas forcément l'ordre dans lequel les périphériques sont listés dans la ligne de commande. Si des volumes physiques sont listés, il s'agit du seul emplacement sur lequel l'allocation aura lieu. Toute extension physique inclue dans la liste, qui est déjà allouée, sera ignorée.
La commande suivante crée un volume logique en miroir avec un seul miroir. Le volume a une taille de 500 mega-octets, il s'appelle mirrorlv et est issu du groupe de volumes vg0. La première branche du miroir se trouve sur le périphérique /dev/sda1, la seconde sur /dev/sdb1 et le fichier journal du miroir se trouve sur /dev/sdc1.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
La commande suivante crée un volume logique en miroir avec un seul miroir. Le volume a une taille de 500 mega-octets, il s'appelle mirrorlv et est issu du groupe de volumes vg0. La première branche du miroir se trouve sur les extensions 0-499 du périphérique /dev/sda1, la seconde sur les extensions 0-499 du périphérique /dev/sdb1 et le fichier journal du miroir commence à l'extension 0 de /dev/sdc1. Il y a 1Mo d'extensions. Si une des extensions spécifiées a déjà été allouée, elle sera ignorée.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0

Note

Comme dans la version RHEL 5.3, les volumes logiques en miroir sont supportés dans le cluster.

4.4.1.4. Changement de la configuration du volume en miroir

Vous pouvez convertir un volume logique à partir d'un volume en miroir vers un volume linéaire ou à partir d'un volume linéaire vers un volume en miroir avec la commande lvconvert. Vous pouvez également utiliser cette commande pour reconfigurer les autres paramètres d'un volume logique existant, tels que corelog.
Lorsque vous convertissez un volume logique en un volume en miroir, vous créez des branches de miroir pour un volume existant. Cela signifie que votre groupe de volumes doit contenir les périphériques et l'espace nécessaires pour les branches et le fichier journal du miroir.
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the lvconvert command to restore the mirror. This procedure is provided in Section 6.3, « Récupération suite à un échec miroir LVM ».
La commande suivante convertit le volume logique linéaire vg00/lvol1 en un volume logique en miroir.
lvconvert -m1 vg00/lvol1
La commande suivante convertit le volume logique en miroir vg00/lvol1 en un volume logique linéaire, en supprimant la branche du miroir.
lvconvert -m0 vg00/lvol1