Gestion de Volumes Logiques (LVM) sous Linux : Configuration Initiale et Extension Dynamique

Le Logical Volume Manager (LVM) est un mécanisme de virtualisation du stockage pour les systèmes Linux. Son objectif principal est d'abstraire les disques physiques ou partitions en volumes logiques redimensionnables dynamiquement, résolvant ainsi les limitations des partitions traditionnelles, notamment la difficulté d'extension.

LVM repose sur trois composants fondamentaux :

  • PV (Physical Volume) : Un disque physique ou une partition balisée pour être utilisée par LVM. C'est la source de stockage brute pour LVM, subdivisée en unités minimales appelées PE (Physical Extents), de taille par défaut de 4 Mo.
  • VG (Volume Group) : Un regroupement de plusieurs PVs formant un pool de stockage unifié, agissant comme un "grand disque" logique.
  • LV (Logical Volume) : Une partition logique allouée à partir d'un VG, qui peut être directement formatée et montée pour être utilisée. Les LV sont composés d'unités minimales appelées LE (Logical Extents), qui correspondent aux PEs.

⚠️ AVERTISSEMENT ⚠️

Les opérations suivantes effaceront toutes les données présentes sur /dev/vdc. Asurez-vous que ce disque ne contient aucune donnée importante avant de procéder.

Une fois cette configuration LVM en place, toute future extension de disque cloud ou l'ajout de nouveaux disques durs pourra être gérée de manière transparente et à chaud, avec seulement quelques commandes, sans nécessiter de repartitions ou de migration de données.

Cet exemple illustre la configuration complète et le montage de /dev/vdc sur le répertoire /data en utilisant LVM.

1. Initialisation du Volume Physique (PV)

Marquez le disque entier /dev/vdc comme un volume physique LVM.

sudo pvcreate /dev/vdc

Sortie attendue :

 Physical volume "/dev/vdc" successfully created.

2. Création du Groupe de Volumes (VG)

Créez un groupe de volumes nommé vg_data et ajoutez-y le volume physique /dev/vdc.

sudo vgcreate vg_data /dev/vdc

Sortie attendue :

 Volume group "vg_data" successfully created.

3. Définition du Volume Logique (LV) - Utilisasion de tout l'espace

Créez un volume logique nommé lv_data, qui utilisera 100% de l'espace libre disponible dans le groupe de volumes.

sudo lvcreate -l 100%FREE -n lv_data vg_data

Sortie attendue :

 Logical volume "lv_data" created.

4. Formatage du Système de Fichiers

Formatez le volume logique avec le système de fichiers ext4 (pour xfs, utilisez mkfs.xfs).

sudo mkfs.ext4 /dev/vg_data/lv_data

5. Création du Point de Montage et Montage

1. Créez le répertoire de montage :

sudo mkdir -p /data

2. Montez le volume logique :

sudo mount /dev/vg_data/lv_data /data

6. Vérification du Montage

Vérifiez que le volume est correctement monté et que sa capacité est conforme aux attentes.

df -h /data

Exemple de sortie :

Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data    197G   64M  187G   1% /data

Note : L'espace disponible réel est légèrement inférieur à la taille nominale en raison des métadonnées LVM et des frais généraux du système de fichiers.

7. Configuration du Montage Automatique au Démarrage

Modifiez le fichier /etc/fstab pour garantir que le volume est monté automatiquement après un redémarrage. L'utilisation du chemin du volume logique /dev/vg_data/lv_data est recommendée pour sa lisibilité et sa stabilité par rapport à l'UUID.

1. Ajoutez la configuration :

echo "/dev/vg_data/lv_data  /data  ext4  defaults  0  0" | sudo tee -a /etc/fstab

2. Validez la configuration fstab (étape cruciale pour éviter les problèmes de démarrage) :

sudo mount -a

La validation est réussie si aucune erreur n'est affichée.

8. Opérations d'Extension à Chaud (après extension du cloud ou ajout de disque)

Scénario A : Extension d'un disque cloud existant (par exemple, /dev/vdc passe de 200 Go à 500 Go)

1. Mettez à jour la taille du volume physique :

sudo pvresize /dev/vdc

2. Étendez le volume logique pour qu'il occupe tout l'espace disponible dans le groupe de volumes :

sudo lvextend -l 100%FREE /dev/vg_data/lv_data

3. Redimensionnez le système de fichiers en ligne :

  • Pour les systèmes de fichiers ext4 :
sudo resize2fs /dev/vg_data/lv_data

  1. Pour les systèmes de fichiers xfs :
sudo xfs_growfs /data

Scénario B : Ajout d'un nouveau disque dur (par exemple, /dev/vdd)

1. Initialisez le nouveau disque comme un volume physique :

sudo pvcreate /dev/vdd

2. Ajoutez le nouveau volume physique au groupe de volumes existant :

sudo vgextend vg_data /dev/vdd

3. Étendez le volume logique pour qu'il utilise tout l'espace libre du groupe de volumes :

sudo lvextend -l 100%FREE /dev/vg_data/lv_data

4. Redimensionnez le système de fichiers en ligne :

  • Pour les systèmes de fichiers ext4 :
sudo resize2fs /dev/vg_data/lv_data

  1. Pour les systèmes de fichiers xfs :
sudo xfs_growfs /data

Après l'une de ces opérations, exécutez df -h pour visualiser immédiatement la nouvelle capacité.

Script de Déploiement Complet (LVM)

Ce script regroupe toutes les étapes de configuration initiale pour un déploiement LVM.

#!/bin/bash

# Vérification optionnelle de l'état du disque /dev/vdc
echo "Vérification du disque /dev/vdc..."
lsblk /dev/vdc || { echo "Erreur: Le disque /dev/vdc n'existe pas ou est inaccessible."; exit 1; }

# 1. Initialisation du Volume Physique (PV)
echo "Création du volume physique sur /dev/vdc..."
sudo pvcreate /dev/vdc || { echo "Erreur lors de pvcreate."; exit 1; }

# 2. Création du Groupe de Volumes (VG) nommé vg_data
echo "Création du groupe de volumes vg_data..."
sudo vgcreate vg_data /dev/vdc || { echo "Erreur lors de vgcreate."; exit 1; }

# 3. Création du Volume Logique (LV) nommé lv_data, utilisant 100% de l'espace libre
echo "Création du volume logique lv_data..."
sudo lvcreate -l 100%FREE -n lv_data vg_data || { echo "Erreur lors de lvcreate."; exit 1; }

# 4. Formatage en système de fichiers ext4
echo "Formatage de /dev/vg_data/lv_data en ext4..."
sudo mkfs.ext4 /dev/vg_data/lv_data || { echo "Erreur lors de mkfs.ext4."; exit 1; }

# 5. Création du point de montage et montage du volume
echo "Création du point de montage /data et montage du volume..."
sudo mkdir -p /data || { echo "Erreur lors de la création de /data."; exit 1; }
sudo mount /dev/vg_data/lv_data /data || { echo "Erreur lors du montage."; exit 1; }

# 6. Configuration du montage automatique au démarrage (fstab)
echo "Sauvegarde de /etc/fstab et ajout de l'entrée LVM..."
sudo cp /etc/fstab /etc/fstab.bak
echo "/dev/vg_data/lv_data  /data  ext4  defaults  0  0" | sudo tee -a /etc/fstab || { echo "Erreur lors de l'écriture dans fstab."; exit 1; }

# 7. Validation de la configuration fstab
echo "Validation de la configuration fstab..."
sudo mount -a || { echo "Erreur de validation fstab. Veuillez vérifier /etc/fstab."; exit 1; }
echo "Validation fstab réussie (aucune erreur affichée)."

# 8. Vérification finale
echo "Déploiement LVM terminé avec succès."
echo "Informations sur l'espace disque de /data :"
df -h /data
echo "Détails des volumes logiques :"
lvs

Étiquettes: LVM Linux DiskManagement VolumeGroup LogicalVolume

Publié le 8 juin à 05h43