LVM : un stockage qui suit le mouvement
LVM (Logical Volume Manager) n'est pas un système de fichiers. C'est une couche entre vos disques physiques et votre système de fichiers, qui soustrait les disques et les partitions à leur taille fixe. Cet article explique comment fonctionne cette couche, ce que vous pouvez en faire, et où se situent les limites. Pour les administrateurs qui veulent gérer un stockage qui grandit avec la demande — pas avec le partitionnement d'origine.
Prérequis
- Un système Linux avec le support LVM. Toutes les distributions mainstream l'incluent par défaut : RHEL 8 et 9, Debian 10-12, Ubuntu 20.04-24.04.
- Un accès `root` ou des droits sudo.
- Un disque ou une partition libre pour vous exercer. Travailler sur un système où des données existent déjà n'est pas un bon début.
- Les paquets `lvm2` (pour LVM lui-même) et un système de fichiers de votre choix — `ext4` est le plus sûr pour commencer.
Les trois couches
LVM connaît trois niveaux, et il est utile de garder cette hiérarchie en tête avant de taper des commandes.Les volumes physiques (PV) sont les éléments bruts : des disques entiers comme `/dev/sdb`, ou des partitions comme `/dev/sdb1`. Vous les initialisez avec `pvcreate`, ce qui permet à LVM d'y placer des métadonnées.
Les groupes de volumes (VG) regroupent un ou plusieurs PV dans un seul pool. Un VG n'est pas un stockage que vous pouvez utiliser directement — c'est le garde-manger à partir duquel vous découperez plus tard des volumes. Deux disques de 1 To deviennent ensemble un VG de 2 To, ou un VG de 1,5 To si vous réservez le reste.
Les volumes logiques (LV) sont ce que vous formatez et montez finalement. Un LV ressemble à une partition, mais n'est pas lié à un seul disque physique. Il peut utiliser de l'espace sur plusieurs disques à la fois, et vous pouvez l'agrandir ou le réduire pendant que le système tourne — pour autant que le système de fichiers le permette.
Cette abstraction est le cœur du sujet. Une partition classique est un morceau fixe d'un seul disque ; un LV est un morceau flexible issu d'un pool partagé.
Pourquoi LVM, et ce que cela coûte
LVM existe parce que les partitions statiques posent un problème que vous ne rencontrez qu'au moment où il est trop tard. Vous ne pouvez pas facilement agrandir une partition avec de l'espace d'une autre partition — les partitions sont côte à côte sur le même disque, et il faudrait toutes les déplacer pour créer de l'espace entre elles.LVM résout cela en créant une couche intermédiaire. Mais cette couche a un coût : vous ajoutez une couche d'abstraction entre le matériel et le système de fichiers. Cela signifie des métadonnées supplémentaires, une étape supplémentaire au démarrage (LVM doit activer ses volumes), et un endroit de plus où quelque chose peut mal tourner. Sur un système à un seul disque avec une charge de travail fixe, c'est honnêtement superflu. Sur un serveur où les besoins en stockage changent — des bases de données qui grandissent, des partitions de journaux qui se remplissent, des sauvegardes qui demandent temporairement beaucoup d'espace — la flexibilité se rentabilise.
Les commandes
L'unité d'allocation standard dans un VG est l'étendue, par défaut 4 Mo dans la plupart des implémentations. Tout ce que vous faites avec LVM consiste à attribuer des étendues aux volumes. C'est le cœur pratique.1. Créer un volume physique
pvcreate /dev/sdbCela place des métadonnées LVM sur `/dev/sdb`. Le disque est maintenant un PV. Vérifiez avec `pvs` ou `pvdisplay` que LVM le reconnaît. Attention : cela n'efface pas le disque, mais cela le prépare pour la gestion LVM — n'y mettez pas de données existantes dont vous avez encore besoin.
2. Créer un groupe de volumes
vgcreate vg_data /dev/sdbCela combine le PV en un VG nommé `vg_data`. Vous pouvez ajouter plus tard d'autres disques avec `vgextend vg_data /dev/sdc`, ce qui fait grandir le pool. L'avantage devient clair à l'étape 3.
3. Créer un volume logique
lvcreate -L 100G -n lv_home vg_dataCela crée un LV de 100 Go nommé `lv_home` à partir du pool `vg_data`. Le volume apparaît comme `/dev/vg_data/lv_home`. Vous pouvez maintenant y placer un système de fichiers et le monter, comme une partition ordinaire.
La vraie puissance réside dans ce qui suit. Supposons que 100 Go ne suffisent pas.
4. Étendre le volume
lvextend -L +50G /dev/vg_data/lv_home
resize2fs /dev/vg_data/lv_homeLa première ligne agrandit le LV de 50 Go — le système n'a pas besoin d'être redémarré. La deuxième ligne informe `ext4` qu'il y a plus d'espace. Avec XFS, vous utilisez `xfs_growfs` au lieu de `resize2fs`. Le volume reste monté ; cela peut se faire à chaud, pendant que des données y sont écrites.
C'est pourquoi LVM est si apprécié en environnement de production : une base de données qui grandit de manière inattendue, une partition de journaux qui se remplit — vous résolvez cela sans interruption de service, sans passer à un disque plus grand.
5. Réduire un volume — avec précaution
umount /dev/vg_data/lv_home
e2fsck -f /dev/vg_data/lv_home
resize2fs /dev/vg_data/lv_home 120G
lvreduce -L 120G /dev/vg_data/lv_home
mount /dev/vg_data/lv_home /homeLa réduction est l'opération où LVM perd une partie de sa réputation de flexibilité. Le volume doit d'abord être démonté — il n'est pas possible de réduire un volume monté. Ensuite, vous devez d'abord réduire le système de fichiers lui-même (`resize2fs` à 120 Go), et seulement ensuite le LV (`lvreduce` à 120 Go). Dans cet ordre, et pas l'inverse : si vous réduisez d'abord le LV, vous endommagez le système de fichiers.
Plus important encore : tous les systèmes de fichiers ne coopèrent pas. `ext4` prend en charge le rétrécissement, mais pas XFS. Pour XFS, le rétrécissement n'est tout simplement pas une option — il faudrait copier le volume vers un nouveau volume plus petit. Ce n'est pas un bug, mais un choix de conception de XFS, et c'est la raison pour laquelle vous devez savoir à l'avance quel système de fichiers vous avez besoin.
6. Ajoutez un disque au pool
vgextend vg_data /dev/sdc
lvextend -l +100%FREE /dev/vg_data/lv_home
resize2fs /dev/vg_data/lv_homeAjouter un nouveau disque physique est au cœur de l'évolutivité de LVM. Vous étendez le VG avec un nouveau PV, puis vous agrandissez le LV avec tout l'espace libre (`-l +100%FREE` utilise tous les extents restants). Le LV peut désormais être réparti sur deux disques physiques — ce qui est impossible avec des partitions classiques.
Vérification
Vérifiez que tout fonctionne correctement :pvs
vgs
lvs
df -h /home`pvs` vous montre vos volumes physiques, `vgs` les groupes de volumes avec leur espace total et libre, `lvs` les volumes logiques. `df -h` confirme que le système de fichiers voit la nouvelle taille. Si les chiffres de `lvs` et `df -h` ne correspondent pas, le système de fichiers n'a pas encore été ajusté — exécutez alors `resize2fs` à nouveau.
Problèmes fréquents
Je ne vois pas mon LV après un redémarrage. LVM active normalement les volumes automatiquement au démarrage. Si ce n'est pas le cas, activez-les manuellement :vgchange -ay
`resize2fs` se plaint que le système de fichiers n'est pas propre. Exécutez d'abord `e2fsck -f /dev/vg_data/lv_home` avant de rétrécir ou d'agrandir le système de fichiers. Cela vérifie et répare les métadonnées — l'ignorer, c'est demander des problèmes.
Je veux rétrécir XFS, mais cela ne fonctionne pas. C'est normal — XFS ne prend pas en charge le rétrécissement. Créez un nouveau LV plus petit, copiez les données dessus avec `rsync` ou `xfsdump`/`xfsrestore`, puis supprimez l'ancien volume. C'est laborieux, et c'est la raison pour laquelle de nombreux administrateurs utilisent ext4 pour les volumes variables.
La limite de LVM
LVM ne remplace pas les sauvegardes. Répartir un LV sur plusieurs disques répartit vos données, mais n'offre aucune redondance — si un disque tombe en panne, tout le LV devient inutilisable. Pour éviter cela, vous avez besoin d'une mise en miroir (`lvcreate --mirrors 1`) ou d'une solution RAID à un autre niveau. LVM peut le faire, mais cela coûte de l'espace disque, et ce n'est pas la configuration par défaut.Ce que LVM fait réellement : il rend le stockage gérable d'une manière que les partitions classiques ne peuvent pas. Les volumes grandissent et rétrécissent sans redémarrage, les disques vont et viennent sans repartitionnement, et les données ne sont plus liées aux limites physiques d'un seul disque. Le prix est une couche supplémentaire que vous devez comprendre — et qui se fait sentir un jour quand vous en avez besoin.
Sur les systèmes où les besoins de stockage sont stables, LVM est une abstraction superflue. Sur les systèmes où ils ne le sont pas, c'est la différence entre une opération qui nécessite une fenêtre de maintenance et une commande que vous exécutez pendant que le service continue de fonctionner. L'art consiste à savoir de quel côté vous vous trouvez — et à installer LVM avant de découvrir que vous étiez du mauvais côté.