Travailler avec LVM | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Travailler avec LVM

LVM (Logical Volume Manager) est un système de gestion des disques qui ajoute une couche d'abstraction au-dessus du stockage physique. Il permet d'allouer l'espace disque de manière flexible, de modifier sa taille à chaud et de créer des sauvegardes basées sur des snapshots. LVM est largement utilisé comme couche de stockage pour la virtualisation. Sur les systèmes chiffrés, LVM est souvent placé au-dessus d'un périphérique chiffré avec LUKS, de sorte qu'un seul déverrouillage rende accessible l'ensemble du groupe de volumes.

Cet article explique comment installer LVM sous Linux, créer des Physical Volume, Volume Group et Logical Volume, modifier leur taille, travailler avec les snapshots et utiliser le thin provisioning.

Installation de LVM

LVM est inclus par défaut dans la plupart des distributions Linux. S'il n'est pas installé, installez le paquet lvm2 à l'aide du gestionnaire de paquets du système.

Sur Debian et Ubuntu :

sudo apt-get install lvm2

Sur RHEL, CentOS Stream, AlmaLinux et Rocky Linux :

sudo dnf install lvm2

Créer un Physical Volume

Un Physical Volume (PV) est le composant de base de LVM au niveau le plus bas. Il peut s'agir d'un disque entier (par exemple, /dev/sdb) ou d'une seule partition (par exemple, /dev/sdb1).

Info

L'utilisation d'un disque entier comme PV simplifie les opérations de redimensionnement ultérieures, car il n'est pas nécessaire d'agrandir d'abord une partition sous-jacente. L'utilisation d'une partition est préférable lorsque le disque doit également héberger des données qui ne sont pas gérées par LVM ou lorsque d'autres outils du système attendent une table de partitions.

Créez un Physical Volume avec pvcreate :

sudo pvcreate /dev/sdb

Remplacez /dev/sdb par le chemin de votre périphérique bloc.

Vérifiez le résultat avec pvdisplay :

sudo pvdisplay

La sortie répertorie les Physical Volume actuellement gérés par LVM, ainsi que leur taille et les informations relatives au Volume Group.

Créer un Volume Group

Un Volume Group (VG) combine un ou plusieurs Physical Volume en un pool de stockage unique. Les Logical Volume sont créés à partir de ce pool.

Créez un Volume Group nommé vg0 à partir d'un seul Physical Volume :

sudo vgcreate vg0 /dev/sdb

Ou à partir de plusieurs Physical Volume à la fois :

sudo vgcreate vg0 /dev/sdb /dev/sdc

Vérifiez le résultat avec vgdisplay :

sudo vgdisplay

Créer un Logical Volume

Un Logical Volume (LV) apparaît dans le système comme un périphérique bloc classique. Vous pouvez le formater avec un système de fichiers et le monter.

Créez un Logical Volume lv0 de 10 Go dans le Volume Group vg0 :

sudo lvcreate -n lv0 -L 10G vg0

L'option -n définit le nom du Logical Volume, tandis que -L définit sa taille.

Vérifiez le résultat avec lvdisplay :

sudo lvdisplay

Créez un système de fichiers sur le Logical Volume :

sudo mkfs.ext4 /dev/vg0/lv0

Créez un point de montage et montez le système de fichiers :

sudo mkdir -p /mnt/lv0 sudo mount /dev/vg0/lv0 /mnt/lv0

Le nouveau système de fichiers est maintenant disponible sous /mnt/lv0. Pour le monter automatiquement au démarrage, ajoutez une entrée correspondante dans /etc/fstab.

Info

LVM expose chaque Logical Volume via deux chemins équivalents : /dev/<vg>/<lv> et /dev/mapper/<vg>-<lv>. Dans l'exemple ci-dessus, il s'agit de /dev/vg0/lv0 et /dev/mapper/vg0-lv0. Les deux chemins pointent vers le même périphérique ; les outils et fichiers de configuration peuvent utiliser l'un ou l'autre.

Pour afficher la hiérarchie complète PV/VG/LV avec les périphériques blocs classiques, exécutez :

lsblk

Redimensionner les volumes

LVM prend en charge le redimensionnement en ligne à tous les niveaux : Physical Volume, Volume Group et Logical Volume.

pvresize met à jour la vue de LVM sur un Physical Volume après le redimensionnement du périphérique bloc sous-jacent (par exemple, après l'agrandissement d'un disque virtuel dans l'hyperviseur) :

sudo pvresize /dev/sdb

vgextend ajoute un Physical Volume à un Volume Group existant, ce qui permet d'augmenter la taille du Volume Group :

sudo vgextend vg0 /dev/sdc

vgreduce supprime un Physical Volume d'un Volume Group :

sudo vgreduce vg0 /dev/sdc

lvresize modifie la taille d'un Logical Volume. Par exemple, pour ajouter 5 Go à lv0 :

sudo lvresize -L +5G /dev/vg0/lv0

Ou pour étendre le Logical Volume afin d'utiliser tout l'espace libre du Volume Group :

sudo lvresize -l +100%FREE /dev/vg0/lv0

Info

Notez la différence entre -L (majuscule) et -l (minuscule). La version majuscule accepte une taille avec un suffixe d'unité comme M, G ou T. La version minuscule accepte un nombre d'extents ou un pourcentage.

Le redimensionnement d'un Logical Volume ne redimensionne pas automatiquement le système de fichiers qui s'y trouve. Utilisez l'outil correspondant au système de fichiers. Pour ext2, ext3 et ext4 :

sudo resize2fs /dev/vg0/lv0

Pour XFS, exécutez xfs_growfs sur le point de montage du système de fichiers.

Sur les systèmes de fichiers pris en charge, notamment ext4 et XFS, lvextend avec l'option -r redimensionne le Logical Volume et le système de fichiers en une seule étape :

sudo lvextend -r -L +5G /dev/vg0/lv0

Il s'agit de la méthode la plus courante pour augmenter la taille en ligne.

Warning

La réduction d'un Logical Volume s'effectue dans l'ordre inverse : il faut d'abord réduire le système de fichiers, puis seulement le Logical Volume. Faire l'inverse tronque le périphérique sous-jacent alors que le système de fichiers pense toujours disposer de sa taille d'origine, ce qui détruit les données. Pour ext4, l'opération doit être effectuée hors ligne. Démontez le système de fichiers, exécutez sudo e2fsck -f /dev/vg0/lv0, réduisez le système de fichiers avec sudo resize2fs /dev/vg0/lv0 <new_size>, réduisez le Logical Volume à la même taille avec sudo lvresize -L <new_size> /dev/vg0/lv0, puis remontez le système de fichiers. XFS ne prend pas du tout en charge la réduction ; la seule façon de réduire un système de fichiers XFS est d'effectuer une sauvegarde, de créer un système de fichiers plus petit et de restaurer les données.

Toutes les commandes ci-dessus acceptent l'option --help pour afficher la liste complète des options.

Snapshots LVM

Un snapshot capture l'état d'un Logical Volume à un instant donné. Il fonctionne selon un mécanisme copy-on-write : au fur et à mesure que le Logical Volume d'origine est modifié, les blocs modifiés sont enregistrés dans l'espace réservé du snapshot, qui continue ainsi à afficher l'état d'origine.

Les snapshots sont utiles pour créer des sauvegardes cohérentes avec un état de panne d'un système de fichiers en cours d'exécution et pour tester des modifications qui peuvent être annulées en supprimant le snapshot. Les sauvegardes cohérentes avec l'application nécessitent une coordination supplémentaire, comme le gel du système de fichiers ou la mise en pause de l'application avant la création du snapshot.

Créer un snapshot

Créez un snapshot avec lvcreate et l'option -s :

sudo lvcreate -L 1G -s -n myvolume_snap /dev/myvg/myvolume

Cette commande crée un snapshot nommé myvolume_snap du Logical Volume myvolume dans le Volume Group myvg, avec 1 Go réservé aux modifications. Choisissez la taille réservée en fonction de la quantité de données susceptible de changer pendant l'existence du snapshot : les snapshots de volumes principalement inactifs nécessitent peu d'espace, tandis que les volumes fortement sollicités en écriture peuvent nécessiter une part importante de la taille d'origine.

Pour les snapshots de longue durée et les scénarios qui en utilisent un grand nombre, envisagez les thin snapshots au sein d'un thin pool. Ils utilisent l'espace du pool partagé à la demande au lieu de réserver à l'avance une quantité fixe, ce qui est généralement plus efficace en termes d'espace.

Warning

Si le Logical Volume d'origine change davantage que ce que le snapshot peut contenir, le snapshot devient invalide et les données qu'il avait capturées sont perdues. Dimensionnez le snapshot afin qu'il puisse contenir la quantité de modifications prévue pendant toute sa durée de vie.

Utiliser un snapshot

Un snapshot peut être monté comme n'importe quel autre Logical Volume. Pour les opérations de sauvegarde et d'inspection, montez-le en lecture seule sauf si un accès en écriture est réellement nécessaire :

sudo mkdir -p /mnt/snapshot sudo mount -o ro /dev/myvg/myvolume_snap /mnt/snapshot

Une fois monté, le snapshot peut être lu pour effectuer une sauvegarde ou une inspection.

Supprimer un snapshot

Lorsque le snapshot n'est plus nécessaire, supprimez-le avec lvremove :

sudo lvremove /dev/myvg/myvolume_snap

La suppression d'un snapshot libère l'espace qu'il avait réservé. Toutes les données écrites directement dans le snapshot, et non dans le volume d'origine, sont perdues.

Pour restaurer le volume d'origine à l'état capturé par le snapshot, utilisez lvconvert --merge au lieu de lvremove :

sudo lvconvert --merge /dev/myvg/myvolume_snap

Après la fusion, le snapshot est consommé et supprimé automatiquement. Si le volume d'origine est actuellement utilisé, la fusion est reportée jusqu'à sa prochaine activation.

Thin provisioning

Un thin pool est un type spécial de Logical Volume qui alloue l'espace de stockage à la demande. Les Logical Volume créés à l'intérieur (thin volumes) peuvent avoir une taille déclarée supérieure à l'espace libre réellement disponible dans le pool, et seuls les blocs écrits consomment réellement de l'espace de stockage.

Cette technologie est largement utilisée dans la virtualisation, où de nombreux disques virtuels partagent un même pool de stockage, mais atteignent rarement tous leur capacité déclarée en même temps.

Créer un thin pool

Créez un thin pool mythinpool de 50 Go dans le Volume Group myvg :

sudo lvcreate -L 50G -T -n mythinpool myvg

L'option -L définit la taille du pool, -T demande à lvcreate de créer un thin pool et -n définit son nom. LVM alloue le pool à partir de l'espace libre du Volume Group ; des Physical Volume spécifiques peuvent être indiqués à la fin de la commande si le pool doit être placé sur des périphériques particuliers.

Créer un thin volume

Créez un thin volume mythinvolume de 10 Go dans mythinpool :

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

L'option -V définit la taille virtuelle du thin volume, -T fait référence au thin pool et -n définit le nom du nouveau volume.

Utiliser un thin volume

Un thin volume s'utilise comme n'importe quel autre Logical Volume. Créez-y un système de fichiers :

sudo mkfs.ext4 /dev/myvg/mythinvolume

Le thin volume peut ensuite être monté et utilisé comme un périphérique bloc classique.

Warning

Les thin pools pouvant être suralloués, surveillez leur utilisation réelle. L'espace de données et l'espace de métadonnées peuvent être épuisés indépendamment l'un de l'autre et sont tous deux critiques : si un thin pool manque d'espace de données ou de métadonnées pendant une écriture sur un thin volume, les opérations d'écriture sur ce volume commenceront à échouer.

L'utilisation actuelle des données et des métadonnées de chaque Logical Volume, y compris les thin pools, peut être vérifiée avec lvs :

sudo lvs -o +data_percent,metadata_percent

Lorsque data_percent ou metadata_percent approche 100, étendez le thin pool avec lvextend avant qu'il ne soit complètement rempli.

Référence des commandes

Commandes LVM courantes regroupées par niveau.

Physical Volume :

  • pvcreate initialise un périphérique bloc en tant que Physical Volume.
  • pvdisplay affiche des informations détaillées sur les Physical Volume.
  • pvs affiche un tableau récapitulatif compact des Physical Volume.
  • pvresize met à jour un Physical Volume après le redimensionnement du périphérique sous-jacent.

Volume Group :

  • vgcreate crée un Volume Group à partir d'un ou plusieurs Physical Volume.
  • vgextend ajoute un Physical Volume à un Volume Group.
  • vgreduce supprime un Physical Volume d'un Volume Group.
  • vgdisplay affiche des informations détaillées sur les Volume Group.
  • vgs affiche un tableau récapitulatif compact des Volume Group.

Logical Volume :

  • lvcreate crée un Logical Volume.
  • lvextend et lvresize modifient la taille d'un Logical Volume.
  • lvremove supprime un Logical Volume.
  • lvconvert --merge fusionne un snapshot avec son volume d'origine.
  • lvdisplay affiche des informations détaillées sur les Logical Volume.
  • lvs affiche un tableau récapitulatif compact des Logical Volume.

Pour une utilisation quotidienne, les commandes de résumé courtes pvs, vgs et lvs sont généralement plus pratiques que les variantes détaillées *display. Chaque commande accepte --help pour afficher la liste complète des options.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA