Debian – Gérer et chiffrer des volumes logiques (LVM + LUKS)

Debian – Gérer et chiffrer des volumes logiques (LVM + LUKS)

LVM (Logical Volume Manager) est un système de gestion de volumes logiques qui apporte une plus grande flexibilité dans la gestion du stockage sous Linux. Il permet, entre autres, d’ajuster la taille des partitions à la volée, sans nécessiter d’arrêter la machine. Sous Debian 11, LVM facilite l’organisation et l’extension de l’espace disque en s’affranchissant des limites rigides des partitions traditionnelles. Grâce à cette approche, les administrateurs peuvent optimiser l’utilisation des ressources et assurer une meilleure continuité de service.

Quelques définitions :

PVCorrespond à un disque dur, une partition de disque, un volume RAID ou une unité logique issue d’un SAN.
VGReprésente l’agrégation d’un ou plusieurs PV.
LVDécoupe virtuellement un VG en « partitions » logiques.
PELes données sont segmentées en blocs physiques pour faciliter leur gestion.
LEFonctionnent comme les PE, mais au niveau logique. Tous les LV d’un même VG utilisent la même taille de bloc.

Voici un schéma explicatif :

+———————+
| Disque /dev/sdb|
| (Physical Disk) |
+———-+———-+
|
v
+————-+
| PV (Physical|
| Volume) |
+——+——+
|
v
+————-+
| VG (Volume |
| Group) |
+——+——+
|
v
+————-+
| LV (Logical |
| Volume) |
+————-+

En pratique :

Étape 1 : Installer le paquet lvm2

sudo apt-get update
sudo apt-get install lvm2 cryptsetup

Étape 1.1 : Si vous êtes plus adepte de l’interface graphique, vous pouvez configurer vos disques en interface graphique

apt-get install system-config-lvm

Étape 2 : Commencer par lister les disques présents sur la machine

fdisk -l
  • Le disque /dev/sda est pour le système
  • Le disque /dev/sdb est un disque supplémentaire que j’ai ajouté pour le TP

Étape 3 : Créer le volume physique /dev/sdb

pvcreate /dev/sdb

Étape 4 : Afficher le détail sur le nouveau volume physique

pvdisplay /dev/sdb

On remarque que le disque physique contient un volume physique de 500 Gb.

Étape 5 : On créer (ou étend) un groupe de volume (VG)

vgcreate nom_du_vg /dev/sdb

(ou vgextend si vous souhaitez ajouter /dev/sdb à un VG existant)

Étape 6 : Ensuite, on créer le volume logique (LV)

lvcreate -n nom_du_lv -L 10G nom_du_vg
  • lvcreate : commande pour créer un volume logique
  • nom_du_lv : donner un nom du VL
  • 10G : spécifier la taille du VL
  • nom_du_vg : spécifier le nom du VG

Étape 7 : Le volume sera accessible à deux endroits :

  • /dev/nom_du_vg/nom_du_lv
  • /dev/mapper/nom_du_vg-nom_du_lv

Étape 8 : Formater et mapper le volume logique

  • Formater le (LV)
mkfs.ext4 /dev/nom_du_vg/nom_du_lv
  • Créer un point de montage
mkdir /mnt/mon_volume
  • Mapper le volume
mount /dev/nom_du_vg/nom_du_lv /mnt/mon_volume

Étape bonus : Automatiser le montage

Ajouter cette ligne à votre ficher /etc/fstab

/dev/mapper/nom_du_vg-nom_du_lv  /mnt/mon_volume  ext4  defaults  0  2

Quelques commandes :

Créer un volume physique (PV)pvcreate /dev/sdb
Déplacer les extensions physiques (PE)pvmove /dev/sdb
Réduire un groupe de volumes en supprimant un, ou plusieurs volumes physiquevgreduce nom_vg /dev/sdb
Changer les attributs d’un volume physiquepvchange
Vérifier les métadonnées d’un volume physiquepvck
Afficher les attributs d’un volume physiquepvdisplay
Supprimer un volume physiquepvremove
Redimensionner un disque ou une partitionpvresize
Analyser tous les disques des volumes physiquespvscan
Créer un groupe de volume physique (VG)vgcreate nom_vg /dev/sdb
Ajouter un nouveau (PV) a un (VG) déjà existantvgextend nom_vg /dev/sdb
Afficher la configurationvgdisplay
Fusionner deux groupes de volumesvgmerge
Créer un volume logique (LV)lvcreate
Afficher les infos des (LV)lvdisplay
Réduire la taille d’un (LV)lvreduce
Renommer un (LV)lvrename
Supprimer un (LV)lvremove

Chiffrer un volume

Etape 1 : Attention : Cette étape formate la partition/LV ciblée (vous perdez donc les données sur ce volume).

  • Pour un volume LVM
cryptsetup luksFormat /dev/vg_nom/lv_crypt
  • Pour une partition classique
sudo cryptsetup luksFormat /dev/sdb

Étape 2 : Mapper et configurer

  • Une fois la couche LUKS créer, vous devez mapper le volume chiffré pour l’utiliser. On peut choisir un nom logique, par exemple cryptlvm
sudo cryptsetup luksOpen /dev/vg_nom/lv_crypt cryptlvm
  • Maintenant, vous avez un périphérique déchiffré accessible dans /dev/mapper/cryptlvm

Puis, créer la structure LVM à l’intérieur :

Selon votre architecture, vous avez deux approches :

  • Approche A : LVM en dessous, LUKS au-dessus (le plus courant).
    • On chiffre directement un volume logique LVM unique. Puis on crée un système de fichiers dessus.
    • Avantage : plus simple à maintenir.
    • Vous aurez un volume /dev/mapper/cryptlvm, sur lequel vous ferez un mkfs.
  • Approche B : LUKS en dessous, LVM au-dessus (setup plus avancé).
    • On chiffre une partition physique, on ouvre LUKS, puis on configure LVM sur le périphérique mapper.
    • Avantage : possibilité de découper en plusieurs volumes logiques (LVs) chiffrés au sein du LUKS unique.
    • Plus flexible si vous souhaitez plusieurs partitions logiques (/, /home, etc.) dans le conteneur LUKS.

Si vous restez sur l’approche A (LVM -> LUKS -> FS)

  • Créez un système de fichiers (par exemple ext4) sur le volume déchiffré :
sudo mkfs.ext4 /dev/mapper/cryptlvm
  • Montez-le manuellement pour le tester :
sudo mkdir /mnt/secure_data
sudo mount /dev/mapper/cryptlvm /mnt/secure_data
  • Vos données seront désormais chiffrées en transparence.

Si vous optez pour l’approche B (Partition -> LUKS -> LVM -> FS)

  • Après avoir « ouvert » la partition chiffrée, initialisez un PV (Physical Volume) sur /dev/mapper/cryptlvm :
sudo pvcreate /dev/mapper/cryptlvm
  • Créez un VG (Volume Group) :
sudo vgcreate vg_chiffre /dev/mapper/cryptlvm
  • Créez un ou plusieurs LV (Logical Volume) :
sudo lvcreate -L 10G -n lv_secure vg_chiffre
  • Enfin, formatez le volume logique obtenu (ex. ext4) :
sudo mkfs.ext4 /dev/vg_chiffre/lv_secure
  • Montez le volume :
sudo mkdir /mnt/secure_data
sudo mount /dev/vg_chiffre/lv_secure /mnt/secure_data

Configurer le montage automatique (crypttab + fstab)

Pour que votre volume soit déchiffré et monté automatiquement au démarrage, il faut remplir deux fichiers de configuration :

  1. /etc/crypttab : pour indiquer au système quelles partitions sont à ouvrir au boot.
  2. /etc/fstab : pour monter automatiquement le système de fichiers après déchiffrement.

Éditer /etc/crypttab :

sudo nano /etc/crypttab

Voici le format a utiliser :

<nom_du_mapper>   <partition/LV>   none   luks

cryptlvm   /dev/vg_nom/lv_crypt   none   luks
  • cryptlvm : le nom que vous voulez donner au périphérique dans /dev/mapper.
  • /dev/vg_nom/lv_crypt : le volume chiffré à ouvrir.

Éditer /etc/fstab :

nano /etc/fstab

Et ajoutez une ligne pour monter votre volume une fois déchiffré :

Si vous avez créé un système de fichiers directement sur cryptlvm (Approche A) :

/dev/mapper/cryptlvm   /mnt/secure_data   ext4   defaults   0   2

Si vous avez un volume logique LVM au-dessus du conteneur LUKS (Approche B) :

/dev/vg_chiffre/lv_secure   /mnt/secure_data   ext4   defaults   0   2

Redémarrer votre machine :

reboot
  • Au démarrage, Debian vous demandera la phrase de passe pour ouvrir la partition chiffrée.
  • Si tout est correct, le volume sera automatiquement monté (via fstab) après déchiffrement (via crypttab).

Et voilà, vous savez manipuler différents volumes dans un environnement linux 🙂

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *