chokmoso - Fotolia

Gérez l’élasticité du stockage grâce au module LVM de Linux

Le gestionnaire de volumes logiques de Linux permet de créer des volumes qui s’étendent sur plusieurs disques. On peut augmenter ou réduire leur taille à volonté sans même redémarrer le système. Cet article explique comment faire.

Pendant des décennies, les administrateurs système ont été contraints de considérer la capacité de stockage sur la base d’un disque physique et d’une partition. Cette situation a changé lorsque Linux a commencé à être équipé d’un gestionnaire de stockage par volumes logiques, prenant la forme d’un module dans son noyau baptisée LVM (Logical Volume Manager).

Auparavant, si vous aviez besoin d’une zone de stockage de 120 Go, il vous fallait un disque physique avec une partition d’au moins 120 Go. Le gestionnaire de volumes logiques de Linux offre aux administrateurs une bien plus grande flexibilité. Le module LVM permet à l’espace de stockage de s’étendre sur plusieurs partitions et disques. Les disques ne dictent plus la taille de la zone de stockage logique, et les administrateurs peuvent ajouter ou supprimer de la capacité facilement.

Logical Volume Manager cartographie les périphériques en tâche de fond, tout en montrant aux utilisateurs une zone de stockage unifiée. Les administrateurs peuvent créer un volume de stockage de 90 Go à partir de trois disques de 30 Go chacun ou de toute autre répartition de l’espace disponible. Par exemple un disque de 10 Go, un autre de 20 Go et un troisième de 60 Go.

La configuration requise pour utiliser LVM sur votre stockage comprend une distribution Linux récente et au moins un disque. Cependant, pour profiter de la flexibilité du gestionnaire de volumes logiques, vous avez besoin d’au moins deux disques.

Si vous migrez vers Logical Volume Manager un serveur qui dispose d’un schéma de partitionnement standard sur ses disques, sauvegardez les données utilisateur, implémentez le gestionnaire, puis restaurez le contenu. Si vous expérimentez simplement LVM sur des machines virtuelles ou des ordinateurs de test, installez Linux et munissez-vous d’au moins deux disques durs.

Attention : les utilisateurs doivent disposer des privilèges root ou sudo sur le système.

Les composants du LVM : PV, VG et LV

La structure du gestionnaire de volumes logiques sous Linux se compose de trois éléments principaux :

  • Les volumes physiques, dits PV. La capacité de stockage est allouée au mappeur de périphériques du gestionnaire de volumes logiques. Il peut s’agir de disques physiques, de partitions de disques ou de numéros d’unités logiques.
  • Les groupes de volumes, dits VG. Ils sont constitués d’un ou de plusieurs PV représentant un espace de stockage potentiel total qui peut s’étendre sur plusieurs unités de stockage. Cet espace potentiel est attribué à des volumes logiques.
  • Les volumes logiques, dits LV. Ces partitions virtuelles sont découpées à partir d’un VG. Ajoutez un système de fichiers, tel que ext4 ou XFS, puis montez l’espace de stockage pour que les utilisateurs puissent y accéder.

Les utilisateurs peuvent considérer les composants comme des couches superposées. La base est constituée d’une ou plusieurs PV, qui se voient allouer de l’espace sur les disques de stockage. Viennent ensuite les VG, constitués d’au moins un PV. L’espace de stockage est découpé à partir des VG en LV que les utilisateurs considèrent comme un espace de stockage utilisable.

La commande lsblk permet d’afficher les unités de stockage disponibles.

Les résultats de la commande lsblk avec le disque sdb en surbrillance.)
Les résultats de la commande lsblk avec le disque sdb en surbrillance.)

Créez des volumes physiques

Vous construisez votre espace de stockage LVM à partir de la couche physique. Commencez par un espace vide sur un disque physique ou une partition. Sauvegardez les données existantes pour les restaurer une fois le processus terminé.

Vous devez désigner la capacité en tant qu’espace de stockage PV pour qu’il soit affilié à LVM. Les commandes pour le faire ont un nom qui commence par « pv » et sont assez intuitives :

  • pvcreate. Initialise l’espace de stockage en tant que PV.
  • pvdisplay. Liste les attributs physiques d’un PV.
  • pvs. Affiche des informations sur les PV.
  • pvscan. Recherche d’un espace de stockage configuré en tant que PV.
  • pvremove. Supprime un PV de la gestion du Logical Volume Manager.

Par exemple, si vous devez désigner deux disques physiques comme PV pour la gestion de Logical Volume Manager, saisissez les commandes suivantes :

sudo pvcreate /dev/sdb
sudo pvcreate /dev/sdc

Vérifiez votre travail à l’aide des commandes pvs et pvdisplay.

La commande pvcreate désigne une partition en tant que volume physique LVM.
La commande pvcreate désigne une partition en tant que volume physique LVM.

Sauvegardez les données existantes chaque fois que vous modifiez des partitions ou des structures de disque. Dans ce cas, la commande pvcreate efface toutes les données sur /dev/sdb1.

La commande pvs permet d'afficher des informations sur les PV.
La commande pvs permet d'afficher des informations sur les PV.

Créez des groupes de volumes

Maintenant que Linux Logical Volume Manager dispose de PV, l’étape suivante consiste à regrouper cet espace dans un VG. Les commandes VG commencent par « vg ». Voici quelques commandes courantes de gestion des groupes de volumes :

  • vgcreate. Crée un VG à partir d’un ou plusieurs PV.
  • vgdisplay. Liste les attributs du VG.
  • vgs. Affiche les informations sur le VG.
  • vgremove. Supprime un VG de la gestion du Logical Volume Manger, libérant ainsi les PV pour les utiliser ailleurs.

La syntaxe de la commande vgcreate inclut un nom pour le nouveau VG et les PV qu’il contient. Utilisez la commande suivante pour créer un nouveau VG nommé projects_vg à partir du PV /dev/sdb1 existant.

sudo vgcreate projects_vg /dev/sdb1

Affichez les résultats à l’aide des commandes vgs et vgdisplay.

Un seul système prend en charge plusieurs VG, ce qui est important pour les grands serveurs de fichiers.

Screenshot of the vgcreate and vgs commands.
Les commandes vgcreate et vgs permettent de créer et d'afficher un nouveau VG.

Créez des volumes logiques

Découpez l’espace agrégé d’un VG en un ou plusieurs LV. Vous traitez ces LV comme s’il s’agissait de partitions traditionnelles en ajoutant un système de fichiers et en les attachant à un point de montage pour l’accès des utilisateurs. Comme pour les PV et les VG, les commandes de gestion des LV commencent par « lv ». Voici quelques exemples de commandes courantes :

  • lvcreate. Crée un LV à partir d’un VG.
  • lvdisplay. Affiche les attributs du LV.
  • lvs. Affiche des informations sur les LV.
  • lvremove. Désalloue un LV, en renvoyant la capacité au VG à partir duquel il a été découpé.

Vous pouvez configurer plusieurs LV sur un même système. Chacun peut utiliser l’espace d’un même VG ou de VG différents.

Tapez les commandes suivantes pour créer et afficher un LV à partir d’un VG existant.

sudo lvcreate --name projects --size 3G projects_vg
sudo lvdisplay

L’option --name donne un nom au nouveau LV, il faut donc qu’il soit descriptif. L’option --size définit la capacité totale. Il existe de nombreuses façons de définir la taille, vérifiez donc la documentation.

Les commandes lvcreate et lvs créent et affichent un nouveau LV
Les commandes lvcreate et lvs créent et affichent un nouveau LV.

Formatez et montez l’espace de stockage

Pour les étapes suivantes, gérez les LV comme s’il s’agissait de partitions standard. Pour les utiliser comme espace de stockage, vous devez ajouter un système de fichiers, créer un point de montage et les monter.

Commencez par afficher les paramètres des LV à l’aide de la commande lvdisplay. Parmi ces informations, identifiez la valeur Path des LV. Vous l’utiliserez avec la commande mkfs à l’étape suivante.

sudo lvdisplay
La commande lvdisplay affiche des informations sur les LV. Notez le chemin d'accès aux LV pour l'étape suivante.
La commande lvdisplay affiche des informations sur les LV. Notez le chemin d'accès aux LV pour l'étape suivante.

Installez le système de fichiers ext4 sur le LV /dev/projects_vg/projects à l’aide de cette commande :

sudo mkfs.ext4 /dev/projects_vg/projects
La commande standard mkfs installe un système de fichiers sur le LV.
La commande standard mkfs installe un système de fichiers sur le LV.

Créez un point de montage :

sudo mkdir /projects

Montez manuellement le LV dans le répertoire /projects :

mount /dev/projects_vg/projects /projects

Confirmez que le nouvel espace de stockage est disponible en utilisant les commandes du -h et df -h.

sudo du -h /projects
sudo df -h /projects
Screenshot of a mount point.
Créez un point de montage et montez-y le nouveau LV.

Étendez ou diminuez l’espace de stockage

L’un des principaux avantages du LVM de Linux est la possibilité de réduire ou d’étendre la capacité de stockage sans perdre de données ni redémarrer le système. Supposons que vous ayez sous-estimé l’espace de stockage nécessaire et que vous deviez maintenant en ajouter sans provoquer de temps d’arrêt. Les étapes sont les suivantes :

  1. Installez physiquement un lecteur et identifiez-le avec lsblk ; supposons qu’il s’agisse de /dev/sdc dans cet exemple.
  2. Désignez-le comme PV avec la commande pvcreate.
  3. Démontez le LV existant du point de montage avec la commande umount.
  4. Ajoutez le nouveau PV au VG existant avec la commande vgextend.
  5. Étendez le LV existant avec la commande lvextend.
  6. Étendez le système de fichiers ext4 à l’aide de la commande resize2fs.
  7. Remontez le LV au point de montage avec la commande mount.
  8. Confirmez que le processus a fonctionné à l’aide des commandes df -h et lvdisplay.

Les commandes du Logical Volume Manager pour étendre le stockage en utilisant 100 % de la taille du nouveau PV ressemblent à ceci :

sudo pvcreate /dev/sdc1
sudo vgextend /dev/projects_vg /dev/sdc
sudo lvextend -l +100%FREE /dev/projects_vg/projects
sudo resize2fs /dev/projects_vg/projects

Mieux encore, aucune de ces étapes ne nécessite un redémarrage du système, à l’exception de l’installation physique du nouveau disque de stockage. Le système de fichiers XFS offre des possibilités similaires grâce à la commande xfsgrow.

Si vous avez alloué à un LV plus d’espace de stockage qu’il n’en a besoin, vous pouvez décider de la quantité d’espace à supprimer, réduire le système de fichiers et réduire le LV. Commencez par utiliser la commande resize2fs pour réduire le système de fichiers, puis réduisez le LV à l’aide de la commande lvreduce.

Pour approfondir sur SAN et NAS