LVM le gestionnaire de volumes logiques sous GNU/Linux
1. Introduction
La gestion des disques et de l'espace de stockage peut vite devenir un casse-tête sur un serveur notamment lorsque l'on se rend compte après coup que le partitionnement choisi sur le disque dur n'était pas pertinent ou que l'une des paritions est saturée.
Heureusement sur GNU/Linux, une solution géniale existe ! Elle se nomme Logical Volume Manager (LVM). Elle pourra vous sauver la mise dans bien des situations stressantes et compliquées.
2. Historique
À la fin des années 1990, IBM a libéré le code source de son gestionnaire de volumes logiques (LVM) et de son système de fichiers journalisé (JFS) afin de les porter sur Linux. Cette initiative a permis d’intégrer LVM dans le noyau Linux, offrant ainsi une solution flexible pour la gestion des espaces de stockage, notamment la possibilité de redimensionner dynamiquement les partitions et de créer des volumes s’étendant sur plusieurs disques physiques.
Puis LVM 2 a été proposée et ajoute des fonctionnalités supplémentaires extrêmement puissantes telles que les snapshots et le thin provisioning (création de volumes n'utilisant que l'espace en cours d'utilisation, ex : un volume logique de 30 Go qui ne disposera que de 8Go d'espace utilisé aura une taille de 8 Go et pourra augmenter dynamiquement).
LVM 2 est un outil présent sur la majorité des distributions GNU/Linux modernes dont Debian.
3. Comment fonctionne LVM 2 ?
Voici les éléments clés de l’architecture de LVM2 :
-
Physical Volumes (PV) : Ce sont les disques physiques ou partitions qui serviront de base pour LVM2. Ils peuvent être de différents types (HDD, SSD, etc.).
-
Volume Groups (VG) : Un Volume Group regroupe plusieurs Physical Volumes en un seul espace logique. C’est une sorte de “pool” dans lequel on peut puiser pour créer des volumes logiques.
-
Logical Volumes (LV) : Les Logical Volumes sont des morceaux du Volume Group. Ce sont eux que vous formatez et montez pour y stocker vos données. Ils fonctionnent comme des partitions, mais avec beaucoup plus de flexibilité.
-
Thin Provisioning : C’est une fonctionnalité avancée qui permet de créer des volumes logiques sans allouer immédiatement tout l’espace. Pratique pour optimiser l’utilisation des ressources.
-
Snapshots : Ce sont des copies instantanées d’un volume logique. Parfait pour sauvegarder ou tester des modifications.
Voici un schéma de principe expliquant le fonctionnement de LVM 2 :

4. Les commandes liées à l'utilisation de LVM 2
Installer LVM 2 sur Debian si nécessaire
Analyse des disques existants sur le système
On peut également utiliser l'outil historique fdisk.
Convertir des disques ou des partitions en Physical Volumes (PV)
sudo pvcreate /dev/sda /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sda" successfully created.
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Si l'on souhaite initialiser un seul disque ou une seule partition :
Obtenir les informations concernant les PVE
Création d'un Volume Group (VG)
Obtenir les informations concernant les VG
Ajout du nouveau disque dans un groupe de volumes existant
Création de volumes logiques (LV)
Obtenir les informations concernant les LV
Formatage des volumes logiques (LV) en ext4 ou en btrfs
Montage des volumes logiques sur le système
Si vous souhaitez rendre les points de montage persistants (automatiquement montés au démarrage de l'OS), il est nécessaire d'ajouter une ligne spécifique dans le fichier /etc/fstab.
Pour vérifier si le montage est effectif, vous pouvez utiliser les commandes df ou mount.
Augmentation de la taille d'un volume logique
Après avoir agrandi le volume logique, il est nécessaire de redimensionner le système de fichier utilisé
Attention
Avec le système de fichier BTRFS la commande sera différente !
Réduction de la taille d'un volume logique
Attention
La réduction d'un volume logique n'est pas anodin et peut entrainer des problèmes dont la perte ou la corruption de données. Réalisez cette opération avec prudence.
Avec BTRFS la commande sera là encore différente.
Suppression d'un volume logique
Suppression d'un groupe de volume
Surveiller l'état des volumes
5. Les snapshots
LVM permet de réaliser des clichés instantanés de volumes logiques (snapshots). Les snapshots sont des volumes logiques "spéciaux". Ce LV "snapshot" ne contient pas de système de fichiers et ne peut donc pas être monté. Il va stocker uniquement les modifications de données (ajout/suppressions). On définira une taille à ce volume logique de type snapshot, mais cette valeur n'agrandira pas le volume logique initial évidemment
Dans un premier temps, il faut s'assurer qu'il reste de la place dans le groupe de volume afin de pouvoir créer un nouveau volume logique dédié aux snpashots.
Il faut identifier ensuite le volume logique pour lequel on veut créer un instantané.
Création du snapshot
On va créer ici un nouveau volume logique de 10 Giga dédié aux snapshots de MySQLData. Les 10 Giga ne seront pas directement mobilisés. Au fur et à mesure des modifications dans MySQLData, snpbdd grossira et utilisera de plus en plus d'espace libre.
La taille va augmenter à chaque modification sur le système de fichier concerné : création, modification, suppression de fichiers. Il peut donc théoriquement avoir besoin de plus de place sur le LV "snapshot" que de place initiale sur le LV source. Il s'agit du même mécanisme que les snapshots de machine virtuelle.
Restaurer un snapshot démontable
Si l'on ne souhaite pas conserver les modifications réalisées après le snapshot, on va restaurer le volume logique dans son état antérieur.
Restaurer un snapshot non démontable
Dans le cas d'un snapshot de la racine par exemple, ou d'un volume utilisé par des processus qu'on ne peut stopper, on va lancer directement la commande lvconvert.
Pour prendre en compte la restauration, nous n'aurons pas d'autre choix que de redémarrer la machine.
Fusionner le snapshot
Si après des modifications, on souhaite garder les données en l'état, on va supprimer le snapshot réalisé précédemment. Le LV d'origine et le LV snapshot seront fusionnés.