9. Configurer la gestion de volume logique LVM

L'objectif de cette partie est de mettre en place un mécanisme de sauvegarde réseau automatisé, en s'appuyant sur la notion de « prise de vue » ou snapshot proposée par le gestionnaire de volume logique LVM. Dans un instantané, seules les différences par rapport au volume logique original sont stockées.

9.1. Créer les 3 types d'objets du gestionnaire LVM

L'utilisation de la gestion de volumes logiques sur les systèmes GNU/Linux impose 3 types d'objets.

  • Volume physique ou physical volume (PV). C'est un disque dur ou une partition préparée pour être utilisée par LVM.

  • Groupe de volumes ou volume group (VG). Il regroupe plusieurs volumes physiques pour fournir un espace de stockage commun.

  • Volume logique ou logical volume (LV). Ce sont des partitions virtuelles créées à l'intérieur d'un groupe de volumes et utilisées comme partitions classiques par le système.

Q45.

Quel est le paquet associé à la gestion de volume logique LVM ?

Recherchez et installez le paquet qui contient les outils qui permettent de créer et gérer des volumes physiques, des groupes de volumes ainsi que des volumes logiques.

En anglais, on parle de Logical Volume Manager ou LVM. On cherche donc un paquet avec la chaîne 'lvm'.

apt search --names-only ^lvm
lvm2/testing 2.03.31-2 amd64
  gestionnaire de volumes logiques de Linux

lvm2-dbusd/testing 2.03.31-2 all
  démon D-Bus pour LVM2

lvm2-lockd/testing 2.03.31-2 amd64
  démon de verrouillage pour LVM
sudo apt -y install lvm2

Q46.

Comment créer un volume physique associé au tableau RAID 1 précédemment créé ?

Recherchez dans la liste des outils fournis avec le paquet lvm2 ceux qui correspondent à la gestion de volume physique.

En anglais, on parle de physical volume et le nom des commandes associées commencent par la chaîne 'pv'.

Commencez par lister toutes les commandes contenues dans le paquet lvm2.

dpkg -L lvm2 | grep bin

Réduisez cette liste en utilisant la chaîne 'pv' comme filtre.

dpkg -L lvm2 | grep bin | grep pv
/usr/sbin/pvchange
/usr/sbin/pvck
/usr/sbin/pvcreate
/usr/sbin/pvdisplay
/usr/sbin/pvmove
/usr/sbin/pvremove
/usr/sbin/pvresize
/usr/sbin/pvs
/usr/sbin/pvscan

Affichez la liste des option de la commande pvcreate pour connaître les options possibles.

sudo pvcreate --help

Créez le volume physique à partir du nom de périphérique du tableau RAID 1.

sudo pvcreate /dev/md0
  Physical volume "/dev/md0" successfully created.

Affichez le résumé de l'état du volume physique avec la commande pvs.

sudo pvs
  PV         VG Fmt  Attr PSize   PFree
  /dev/md0      lvm2 ---  <31,97g <31,97g

Affichez aussi les détails sur l'état de cevolume physique.

sudo pvdisplay
  "/dev/md0" is a new physical volume of "<31,97 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/md0
  VG Name
  PV Size               <31,97 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               dh1YTs-eI6O-rpMY-1FQz-E5rS-FAN0-r6n3dt

Q47.

Comment créer un groupe de volumes contenant uniquement le tableau RAID 1 ?

Recherchez dans la liste des outils ceux qui correspondent à la gestion de groupes de volumes en suivant la même démarche que dans la question précédente avec la chaîne 'vg'.

La syntaxe de la commande de recherche est :

dpkg -L lvm2 | grep bin | grep vg

À partir de liste produite par cette commande identifiez la commande vgcreate qui sert à créer des groupes de volumes.

sudo vgcreate --help

Créez le groupe de volumes avec l'unique volume physique à disposition.

sudo vgcreate lab-vg /dev/md0
  Volume group "lab-vg" successfully created

Affichez résumé de l'état du groupe de volumes.

sudo vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  lab-vg   1   0   0 wz--n- 31,96g 31,96g

Affichez aussi les détails de l'état du groupe de volumes.

sudo vgdisplay
  --- Volume group ---
  VG Name               lab-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               31,96 GiB
  PE Size               4,00 MiB
  Total PE              8183
  Alloc PE / Size       0 / 0
  Free  PE / Size       8183 / 31,96 GiB
  VG UUID               Q37sG9-3cDW-75BC-f7ca-VtEI-nVPx-TOLBJz

Q48.

Comment créer un volume logique qui occupe 16GB de l'espace du groupe contenant le tableau RAID 1 ?

Reprenez la même démarche que dans les deux questions précédentes pour identifier les commandes qui débutent par la chaîne 'lv'.

Identifiez la commande lvcreate à partir de la liste produite par la recherche des outils relatifs à la gestion de volumes logiques.

Affichez aussi les options disponibles avec cette commande.

sudo lvcreate --help

Créez un volume logique de 16GB.

sudo lvcreate --size 16GB lab-vg
  Logical volume "lvol0" created.

Affichez le résumé de l'état du nouveau volume logique.

sudo lvs
  LV    VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvol0 lab-vg -wi-a----- 16,00g

Affichez aussi les détails sur ce volume logique.

sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/lab-vg/lvol0
  LV Name                lvol0
  VG Name                lab-vg
  LV UUID                gpSv0b-5Qbi-wgSm-MTA0-sJNm-CeNp-stbjVy
  LV Write Access        read/write
  LV Creation host, time initiator, 2025-08-31 10:17:23 +0200
  LV Status              available
  # open                 0
  LV Size                16,00 GiB
  Current LE             4096
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           252:0

Q49.

Comment formater un système de fichiers sur le nouveau volume logique ?

Reprenez les traitements de la Section 4, « Préparer une unité de stockage » avec le nom du volume logique obtenu à la question précédente.

Formatez le volume logique avec un système de fichiers ext4.

sudo mkfs.ext4 /dev/lab-vg/lvol0
mke2fs 1.47.2 (1-Jan-2025)
Discarding device blocks: done
Creating filesystem with 4194304 4k blocks and 1048576 inodes
Filesystem UUID: 949e01dd-d119-4737-bfa9-c51b3b62ee86
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

9.2. Monter et utiliser la nouvelle partition LVM

Q50.

Comment monter et accéder au nouveau système de fichiers ?

Créez un sous dossier au niveau /mnt et montez le nouveau système de fichiers manuellement.

Créez le dossier /mnt/lvol0.

sudo mkdir /mnt/lvol0

Montez le nouveau volume logique sur ce dossier.

sudo mount /dev/lab-vg/lvol0 /mnt/lvol0/

Vérifiez que le montage est bien présent dans la liste des montages connus du système.

mount | grep lvol0
/dev/mapper/lab--vg-lvol0 on /mnt/lvol0 type ext4 (rw,relatime,stripe=32)

Q51.

Comment rendre le montage permanent ?

Retrouvez dans les questions de la Section 4, « Préparer une unité de stockage », celle relative à l'utilisation du fichier système /etc/fstab.

Affichez l'identifiant de la partition LVM et composez la ligne à ajouter à la fin du fichier /etc/fstab.

uuid=$(sudo blkid -s UUID -o value /dev/mapper/lab--vg-lvol0)
echo "UUID=$uuid /mnt/lvol0 ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
UUID=949e01dd-d119-4737-bfa9-c51b3b62ee86 /mnt/lvol0 ext4 defaults,nofail 0 2

L'option nofail a été ajoutée pour traiter le cas où le volume n’est pas toujours disponible

Vérifiez la validité des entrées du fichier des montages système /etc/fstab.

sudo mount -a

Le résultat de cette dernière commande ne doit produire aucun message.

Q52.

Comment créer et analyser une arborescence de fichiers utilisateur dans le nouveau montage ?

Créez un dossier etu-files au niveau /mnt/lvol0 et désignez l'utilisateur normal etu comme propriétaire du dossier

Créez ensuite un fichier vide de 32KB dans ce dossier.

sudo mkdir /mnt/lvol0/etu-files
sudo chown etu:etu /mnt/lvol0/etu-files
dd if=/dev/zero of=/mnt/lvol0/etu-files/my-first-file bs=4k count=8
ls -lAh /mnt/lvol0/etu-files/my-first-file
8+0 enregistrements lus
8+0 enregistrements écrits
32768 octets (33 kB, 32 KiB) copiés, 0,000149365 s, 219 MB/s
-rw-rw-r-- 1 etu etu 32K 31 août  16:25 /mnt/lvol0/etu-files/my-first-file

Q53.

Comment visualiser l'état global des systèmes de fichiers et des montages en cours ?

Utiliser les commandes usuelles telles que df et lsblk.

Lancez les commandes et relevez les résultats pour le montage du volume logique LVM.

df -hT | grep mnt
/dev/mapper/lab--vg-lvol0 ext4        16G    2,1M   15G   1% /mnt/lvol0
lsblk | grep -B2 mnt
sda                 8:0    0    32G  0 disk
└─md0               9:0    0    32G  0 raid1
  └─lab--vg-lvol0 252:0    0    16G  0 lvm   /mnt/lvol0
--
nvme1n1           259:6    0    32G  0 disk
└─md0               9:0    0    32G  0 raid1
  └─lab--vg-lvol0 252:0    0    16G  0 lvm   /mnt/lvol0

Les résultats de cette dernière commande illustrent bien l'état de la réplication RAID 1 en plus de l'utilisation du volume logique.

9.3. Utiliser les snapshots LVM

Q54.

Comment créer deux instantanés du volume logique avec des jeux de fichiers différents ?

  1. Créez une première série de fichiers vides avec une boucle.

  2. Créez un premier instantané (snapshot.

  3. Créez une seconde série de fichiers vides avec une nouvelle boucle.

  4. Créez un second instantané.

  5. Affichez la liste des volumes logiques.

Recherchez dans les options de la commande lvcreate celles spécifiques aux snapshots.

Créez la première série de 10 fichiers vides.

for i in {1..10}
do
        touch /mnt/lvol0/etu-files/first-$(printf "%02d" $i)-file
done
ls -1 /mnt/lvol0/etu-files/
first-01-file
first-02-file
first-03-file
first-04-file
first-05-file
first-06-file
first-07-file
first-08-file
first-09-file
first-10-file
my-first-file

Créez le premier instantané avec le nom first-snap.

sudo lvcreate --snapshot --name first-snap -L 500M /dev/lab-vg/lvol0
  Logical volume "first-snap" created.

Créez la seconde série de 10 nouveaux fichiers vides.

for i in {1..10}
do
    touch /mnt/lvol0/etu-files/second-$(printf "%02d" $i)-file
done
ls -1 /mnt/lvol0/etu-files/
first-01-file
first-02-file
first-03-file
first-04-file
first-05-file
first-06-file
first-07-file
first-08-file
first-09-file
first-10-file
my-first-file
second-01-file
second-02-file
second-03-file
second-04-file
second-05-file
second-06-file
second-07-file
second-08-file
second-09-file
second-10-file

Créez le second instantané avec le nom second-snap.

sudo lvcreate --snapshot --name second-snap -L 500M /dev/lab-vg/lvol0
  Logical volume "second-snap" created

Affichez la liste résumée des volumes logiques.

sudo lvs
  LV          VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  first-snap  lab-vg swi-a-s--- 500,00m      lvol0  0,01
  lvol0       lab-vg owi-aos---  16,00g
  second-snap lab-vg swi-a-s--- 500,00m      lvol0  0,01

Q55.

Comment tester la restauration du système de fichiers à partir des instantanés ?

Supprimez tous les fichiers du dossier /mnt/lvol0/etu-files/ pour simuler la perte des données de l'utilisateur.

Restaurez le contenu du premier instantané pour simuler le retour à une étape antérieure du système de fichiers en cas d'erreur sur la modification des données de l'utilisateur.

Restaurez le contenu du second instantané pour simuler la restauration totale des données depuis la dernière prise de vue.

Recherchez dans les options de la commande lvchange celles relatives à l'activation et la désactivation d'un volume logique.

Supprimez des fichiers du dossier /mnt/lvol0/etu-files/.

rm /mnt/lvol0/etu-files/*
ls -1 /mnt/lvol0/etu-files/

Le résultat de la dernière commande ne produit aucun affichage. Les données de l'utilisateur sont donc perdues.

Lancez la restauration à partir du premier instantané.

sudo lvconvert --merge /dev/lab-vg/first-snap
  Delaying merge since origin is open.
  Merging of snapshot lab-vg/first-snap will occur on next activation of lab-vg/lvol0.

Désactivez puis réactivez le volume logique à l'aide de la commande lvchange pour que la restauration soit effective.

  1. Tentez de désactiver directement le volume logique.

    sudo lvchange --activate n lab-vg/lvol0
      Logical volume lab-vg/lvol0 contains a filesystem in use.
  2. Le volume logique est en cours d'utilisation. Démontez le système de fichiers.

    sudo umount /mnt/lvol0
  3. Lancez à nouveau la désactivation du volume.

    sudo lvchange --activate n lab-vg/lvol0

    Cette fois ci, le volume est désactivé. Confirmez le résultat avec la commande lvdisplay.

    sudo lvdisplay /dev/lab-vg/lvol0
      --- Logical volume ---
      LV Path                /dev/lab-vg/lvol0
      LV Name                lvol0
      VG Name                lab-vg
      LV UUID                gpSv0b-5Qbi-wgSm-MTA0-sJNm-CeNp-stbjVy
      LV Write Access        read/write
      LV Creation host, time initiator, 2025-08-31 10:17:23 +0200
      LV snapshot status     source of
                             first-snap [INACTIVE]
                             second-snap [INACTIVE]
      LV Status              NOT available
      LV Size                16,00 GiB
      Current LE             4096
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
  4. Réactivez ce même volume logique.

    sudo lvchange --activate y lab-vg/lvol0

    La réactivation est un succès. Confirmez le avec les commandes lvdisplay ou lvscan.

    sudo lvdisplay /dev/lab-vg/lvol0
      --- Logical volume ---
      LV Path                /dev/lab-vg/lvol0
      LV Name                lvol0
      VG Name                lab-vg
      LV UUID                gpSv0b-5Qbi-wgSm-MTA0-sJNm-CeNp-stbjVy
      LV Write Access        read/write
      LV Creation host, time initiator, 2025-08-31 10:17:23 +0200
      LV snapshot status     source of
                             second-snap [active]
      LV Status              available
      # open                 0
      LV Size                16,00 GiB
      Current LE             4096
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     512
      Block device           252:2
    sudo lvscan
      ACTIVE   Original '/dev/lab-vg/lvol0' [16,00 GiB] inherit
      ACTIVE   Snapshot '/dev/lab-vg/second-snap' [500,00 MiB] inherit
  5. Remontez le système de fichiers à l'aide de la commande mount.

    sudo mount /dev/lab-vg/lvol0 /mnt/lvol0/

Listez le contenu du dossier /mnt/lvol0/etu-files/ pour confirmer le retour du système de fichiers au moment du premier snapshot.

ls -1 /mnt/lvol0/etu-files/
first-01-file
first-02-file
first-03-file
first-04-file
first-05-file
first-06-file
first-07-file
first-08-file
first-09-file
first-10-file
my-first-file

Pour restaurer le contenu du second instantané, reprenez les mêmes opérations à partir de la commande lvconvert.

Lancez la suite de commandes précédentes pour avec le second snapshot.

sudo lvconvert --merge /dev/lab-vg/second-snap
sudo umount /mnt/lvol0
sudo lvchange --activate n lab-vg/lvol0
sudo lvchange --activate y lab-vg/lvol0
sudo mount /dev/lab-vg/lvol0 /mnt/lvol0/

Listez le contenu du système de fichiers restauré.

ls -1 /mnt/lvol0/etu-files/
first-01-file
first-02-file
first-03-file
first-04-file
first-05-file
first-06-file
first-07-file
first-08-file
first-09-file
first-10-file
my-first-file
second-01-file
second-02-file
second-03-file
second-04-file
second-05-file
second-06-file
second-07-file
second-08-file
second-09-file
second-10-file

La liste affichée ci-dessus montre que le système de fichiers est revenu au moment de la seconde prise de vue.

Ces manipulations illustrent une partie de la flexibilité offerte par la gestion de volumes logiques LVM. L'utilisation des instantanés (snapshots) met en évidence la capacité d'adaptation du système, qui permet de sauvegarder et de restaurer les données instantanément et sans interruption de service. Seules les différences par rapport au volume original sont stockées, ce qui permet d'optimiser l'espace disque.