Création et gestion d’une structure LVM

Avant de savoir courir, il faut apprendre à marcher. En fait, si l’on souhaite utiliser LVM, il faut commencer par installer le package lvm2 sur le système. Ce dernier va permettre d’installer les commandes décrites ci-dessus et permettant la gestion du LVM. Ainsi, sur une distribution Debian (ou dérivé Ubuntu) on exécutera :

# apt-get install lvm2

Sur une distribution de type CentOS (voire RedHat), on exécutera plutôt la commande :

# yum install lvm2

 

RAPPEL : même si cela tombe sous le sens, il vaut mieux le dire dès maintenant, pour créer un volume logique, depuis un disque ou une partition (par exemple ici le disque /dev/sdc et sa seule partition /dev/sdc1), il faut avoir créé cette partition en utilisant l’utilitaire fdisk. De plus, pour pouvoir créer un groupe de volumes, il faut bien évidemment des volumes. Donc, il faut commencer par créer des volumes physiques. Ensuite, il faut les associer à un groupe de volumes. Et, seulement alors, on peut créer les volumes logiques, pour finir par les points de montage et les systèmes de fichiers.

Pour formater un disque en partition, on doit donc utiliser la commande ci-dessous qui permettra de visualiser les disques, les partitions du système et de savoir lesquels sont ou non utilisés:

# fdisk –l

D’après le résultat obtenu, dans l’exemple ci-dessous, on voit que le disque/dev/sdb n’est pas utilisé. Il n’est pas initialisé en tant que volume physique de LVM et ne peut donc en l’état être intégré à un groupe de volumes.

Il faut donc créer une partition sur ce disque en exécutant la commande ci-dessous . Cette partition sera alors formatée pour pouvoir être intégrée dans une structure LVM :

# fdisk /dev/sdb

Le type de partition LVM, utilisée par les tables de partitionnement GNU/Linux est identifiée par l’indicateur 0x8e de la commande fdisk.

Dans l’écran qui nous est proposé, on sélectionne l’option n (pour le formatage d’une partition vierge) du menu, en choisissant la valeur 8e équivalente à une partition LVM :

Il faut alors sélectionner le numéro de la partition, sa taille pour pouvoir sauvegarder (option w), ces modifications de la table de partitions sur le disque du système d’exploitation.

Cela permet d’initialiser une nouvelle partition sur le disque /dev/sdb. Il est important de disposer d’au moins une partition valide, au bon format (LVM), pour pouvoir en faire un volume physique au sein d’une structure LVM :

Ainsi, la commande ci-dessous, va permettre de formater le disque physique présenté et de l’intégrer au système de gestion LVM :

# pvcreate /dev/sdb1

 

IMPORTANT : il faut bien comprendre que cette commande formate le disque présenté. Aussi, toutes les données qui s’y trouvent seront effacées. De plus, dans cet exemple, j’ai utilisé /dev/sdb1 apparenté à un disque SATA dont le préfixe est caractérisé par les lettres sd. Mais, on peut aussi exécuter les mêmes commandes LVM avec des disques IDE (caractérisés par les lettres hd).

On dispose maintenant de notre premier volume physique intégré au LVM du système. On peut alors facilement visualiser les éléments caractérisant cet objet grâce à la commande pvdisplay :

En termes d’administration, on peut bien évidemment décider de formater la totalité du disque et par conséquent utiliser la commande suivante :

# pvcreate /dev/sdb (sans numéro de partition)

Toutefois, ce n’est pas forcément une bonne idée. Le fait que le disque ne soit alors plus partitionné peut à long terme poser problème. Il vaut mieux créer une partition sdb1 (dite primaire) utilisant la totalité du disque. De plus, cela permet également de modifier le type de la partition en indiquant qu’elle sera alors utilisée au format LVM

Ensuite, on peut créer le groupe de volumes. Le seul et unique paramètre indispensable à la commande vgcreate est de lui fournir un nom (en plus du volume physique que l’on souhaite intégrer dedans). Par convention, on donne généralement le nom vgxx (où xx représente l’indice du groupe de volume, en commençant par 00, puis 01...).

# vgcreate vg00 /dev/sdb1

A ce stade, si tout s’est bien passé, on devrait pouvoir interroger le système avec les commandes suivantes :

# pvdisplay (ou pvs)
# vgdisplay (ou vgs)

Normalement, on doit également pouvoir interroger les propriétés du nouveau groupe de volumes, grâce à la commande vgdisplay suivante :

On voit alors le nom du groupe de volume ainsi que son format. Une donnée très intéressante sur laquelle on reviendra ultérieurement, concerne champ metadata, servant à afficher le nombre de volumes physiques intégrés au groupe de volumes. On dispose également de la taille totale ainsi que du cumul de la taille de l’ensemble des volumes physiques (d’après l’exemple, 20Gio).

Toutes les conditions requises sont satisfaites pour pouvoir créer le volume logique via la commande lvcreate, en lui donnant un nom (option –n) et en précisant l’espace disque à allouer (option –L) ainsi que le nom du groupe de volumes sur lequel piocher cet espace :

# lvcreate –n lv-soft –L 10G vg00

Il existe une option permettant d’allouer la totalité de l’espace du groupe de volumes : -l 100%FREE. Cette dernière remplace alors l’option –L spécifiant la taille à allouer. On peut, de plus, spécifier une taille en pourcentage (pas nécessairement 100%FREE)

Exemple : -l 60%VG

REMARQUE : avec les partitions, les noms ressemblaient à des chaînes telles que /dev/sdc2, /dev/sdb1. Avec LVM, on utilise également des noms de périphériques /dev, mais, le chemin est alors de la forme :

/dev/<NomVG>/<NomLV>

Notez qu'il est fréquent sur certains systèmes ou certaines distributions, qu'un mapper réalloue le volume logique /dev/vg00/lv-soft en /dev/mapper/vg00-lv-soft. Mais il s'agit des mêmes noms.

RAPPEL : le device mapper est un framework fournit par le noyau Linux afin de faire correspondre les périphériques blocs de niveau physique à des périphériques blocs de niveau virtuel plus élevé. Cela constitue la base de LVM2 pour les logiciels RAID en de chiffrement de disque dm-crypt. Par ailleurs, ce mécanisme offre la possibilité de générer des snapshots que l’on verra un peu plus loin.

Exemple : le logiciel docker utilise le device mapper pour créer des images stockées, appelées “copy-on-write“, fournies aux containers. De même, la couche DM Multipath fournit ainsi un mécanisme d’équilibrage de charge et d’I/O failover, des périphériques de type bloc, au sein du noyau linux , s’appuyant sur le device mapper. Ce périphérique définit les nouveaux périphériques de bloc composés de tranches de secteurs de périphériques physiques présents.

Maintenant, on peut créer le système de fichiers, en commençant par créer son point de montage (dans l’exemple /soft) :

# mkdir /soft
# mkfs –t ext4 /dev/vg00/lv-soft

Ici, on crée un système de fichiers de type ext4. Mais, on peut tout aussi bien créer un système de fichiers de type xfs, btrfs...

Il ne reste plus qu’à effectuer le montage du système de fichiers, sur le point de montage /soft, en s’appuyant sur le mécanisme LVM sous-jacent, pour pouvoir accéder aux fichiers contenus sur ce volume :

# mount –t ext4 /dev/vg00/lv-soft

Afin d’automatiser ce mécanisme, lors des phases de redémarrage du système et autoriser le montage de la partition dès l’initialisation du système, on peut alors déclarer dans le fichier /etc/fstab l’enregistrement suivant :

/dev/vg00/lv-soft /soft ext4 defaults 0 0

Le premier champ correspond au chemin complet du volume logique à présenter au système, le second correspond au point de montage. le troisième champ correspond au système de fichiers et le quatrième, aux options de présentation du volume.

Les deux dernières options concernent respectivement la sauvegarde du système de fichiers (mais cela n’est plus guère utilisé et on met la valeur 0), et la vérification par la commande fsck du volume.

IMPORTANT : il est bon, de temps en temps, que la commande fsck puisse tester le périphérique sous-jacent avant de le présenter. La valeur plus élevée de ce champ indique qu’il faut effectuer le test du périphérique, en dernier. Au moins, il faut faire en sorte que les partitions importantes soient régulièrement inspectées.

Si l’ordre de création d’un volume logique est clairement défini, il convient également de respecter l’ordre de suppression, qui est, en toute logique, l’ordre inverse : c’est-à-dire démontage du système de fichiers et retrait du volume logique. Toutefois, il faut bien comprendre qu’une fois que le volume logique est supprimé, les données qui s’y trouvaient ne peuvent pas être récupérées.

# umount /soft
# lvremove /dev/vg00/lv-soft

 

ATTENTION : les partitions et les systèmes de fichiers (aussi appelés filesystems) ne font pas partie du périmètre LVM. Une partition peut être utilisée comme volume physique et un système de fichiers doit obligatoirement être configuré sur un volume logique pour pouvoir être présenté et utilisé.

Une fois que l’ensemble des objets est correctement créé et présenté (dans le cas d’un système de fichiers), on peut alors vérifier les points de montage présents et l’occupation disque de l’ensemble de l’architecture :

# df -h

La suite au prochain chapitre où l'on manipulera les objets du LVM.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Philippe PIERRE

A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.

philippe-pierre has 69 posts and counting.See all posts by philippe-pierre