WIKI
Linux Administration

5 - Gestion des disques

11 min de lecture Mis à jour le 23 juin 2026
Sur cette page

Partitionnement, systèmes de fichiers, montage persistant, swap, LVM et Stratis sous RHEL 9 — le module le plus pratique de l'EX200, où LVM est central.

A. Block devices & nommage#

lsblk liste les block devices (lit en réalité la table kernel /proc/partitions).

lsblk              # liste tous les block devices + points de montage
fdisk -l /dev/sda  # détail du partitionnement de sda

Repères de lecture :

  • sda → disque, avec partitions sda1, sda2
  • sr0 → disque optique (CD/DVD)
  • nvme0n1 → disque NVMe
  • loop0 → device loop (on y monte des fichiers ISO)

Conventions de nommage selon le driver :

Device Usage
/dev/sdX SCSI & SATA (commun)
/dev/vdX machines virtuelles KVM
/dev/nvmeXnY disques NVMe

Numérotation des partitions :

  • Sur sd/vd, numéros séquentiels : /dev/sda2 = 2ᵉ partition du 1ᵉʳ disque, /dev/sdb1 = 1ʳᵉ partition du 2ᵉ disque.
  • Sur NVMe, le nom inclut le device : /dev/nvme0n1p1 = 1ʳᵉ partition du 1ᵉʳ disque, /dev/nvme0n3p2 = 2ᵉ partition du 3ᵉ disque.

Options de stockage Linux :

  • Partitions : allouent du stockage dédié selon le type de données.
  • LVM (Logical Volumes) : ajoutent de la flexibilité (resize, snapshot).
  • Stratis : volume manager nouvelle génération, thin provisioning par défaut, implémenté en user space.

B. MBR vs GPT#

Schéma de partitionnement d'un disque : tranches extended, /boot et /home, avec notes MBR (64 bytes) vs GPT (limites de partitions)

Schéma Boot Table partitions Max partitions Taille max
MBR (Master Boot Record) 512 bytes 64 bytes 4 primaires 2 TiB
GPT (GUID Partition Table) — espace étendu 128 très grande

🚨 Avec MBR, au-delà de 4 partitions il faut une partition extended contenant des partitions logiques. Sous Linux, l'unique utilité concrète d'une extended est souvent d'héberger des LVM. 💡 GPT existe principalement pour contourner les limites du MBR.

C. Créer des partitions#

Plusieurs outils :

  • fdisk : supporte MBR & GPT. Sur un disque neuf, g crée une table GPT.
  • gdisk : orienté GPT (crée des partitions GPT par défaut).
  • parted : pensé pour simplifier le partitionnement (scriptable).

Le type de partition est un identifiant low-level signalant à l'OS / filesystem / boot manager l'usage prévu (Linux fonctionne quand même si le type est imparfait, mais c'est une mauvaise pratique). Types courants : linux, swap, uefi, lvm.

Séquence fdisk (création d'une partition) :

lsblk              # repérer le disque à partitionner
fdisk /dev/sda     # ouvrir fdisk sur sda
# n  -> nouvelle partition
# p  -> primary (ou 'e' pour extended)
# 3  -> numéro de partition (défaut = suivante)
# <Entrée> -> premier secteur (défaut)
# +1G      -> dernier secteur : taille de 1 Gio
# p  -> print (vérifier la table) [optionnel]
# w  -> write (écrire et quitter)
lsblk              # vérifier l'apparition de sda3

Commandes internes utiles : p (print table), m (menu d'aide).

💡 Pour une extended (MBR) : on tape e, puis <Entrée> sur la taille pour prendre tout l'espace restant. On recrée ensuite des partitions logiques à l'intérieur. La première partition logique porte toujours le numéro 5 (sda5).

D. Créer des systèmes de fichiers#

Filesystem Notes
XFS défaut RHEL, rapide & scalable, journalisé. Taille augmentable mais pas réductible
EXT4 compatible ext2/ext3, journalisé. Taille augmentable ET réductible
vfat support multi-OS (devices partagés Windows/Linux)
Btrfs avancé mais non supporté sur RHEL
mkfs.xfs  /dev/sda1   # créer un FS XFS (défaut RHEL)
mkfs.ext4 /dev/sda1   # créer un FS ext4
mkfs.vfat /dev/sda1   # créer un FS vfat
mkfs.<Tab><Tab>       # lister les variantes mkfs disponibles

🚨 mkfs seul (sans suffixe) crée un ext2 (sans journal) — toujours préciser mkfs.xfs / mkfs.ext4.

E. Monter un filesystem (manuel)#

mount /dev/vdb1 /mnt   # monte vdb1 sur /mnt
umount /mnt            # démonte (on cible le point de montage, pas le disque)
lsof /mnt              # quels fichiers ouverts empêchent le umount
mount                  # tous les FS montés (bruité par les mounts kernel)
findmnt                # vue arborescente claire des montages

🚨 On ne peut pas monter un device sans filesystem, ni une partition extended seule.

F. Montage persistant via /etc/fstab#

Syntaxe d'une ligne /etc/fstab :

<device>          <mountpoint> <type> <options> <dump> <pass>
/dev/sdaX         /mnt         ext4   defaults  0      0
  • <type> peut valoir auto (détection automatique).
  • <dump> (sauvegarde, généralement 0), <pass> (ordre de fsck au boot, 0 = pas de check).
findmnt --verify          # valider la syntaxe de /etc/fstab
systemctl daemon-reload   # recharger après édition de fstab
mount -a                  # monter tout ce qui est dans fstab et non encore monté

🚨 Piège critique EX200 : une erreur dans /etc/fstab empêche le boot. Toujours tester avec mount -a après édition. Si le boot échoue, passer en mode dépannage via GRUB (éditer la ligne de boot, retirer rhgb quiet pour voir les messages). 💡 Ne jamais oublier la colonne defaults (options) ni les deux derniers 0 0.

G. Labels & UUID (montage robuste)#

En datacenter, les noms de block devices peuvent changer d'un boot à l'autre. Pour un montage stable :

  • UUID : généré automatiquement pour chaque device portant un filesystem.
  • Label : nom arbitraire posé sur le filesystem (option -L).

Les noms uniques persistants sont exposés sous /dev/disk/*.

blkid                       # tous les devices + UUID, LABEL, TYPE
tune2fs -L monlabel /dev/sdX1   # poser un label sur ext2/3/4
xfs_admin -L monlabel /dev/sdX1 # poser un label sur XFS
mkfs.xfs -L monlabel /dev/sdX1  # label à la création

Dans /etc/fstab, on remplace alors le device par :

UUID=xxxxxxxx-xxxx /mnt ext4 defaults 0 0
LABEL=monlabel     /mnt ext4 defaults 0 0

🚨 Si on démonte une partition logique renommée automatiquement (sda5 / sda6 → si sda5 part, sda6 devient sda5), l'entrée fstab pointant sur l'ancien nom casse le boot. Solution : monter par UUID (meilleure pratique) ou par label.

💡 Récupérer l'UUID et l'ajouter à fstab :

blkid | grep sdaX | awk '{print $2}' >> /etc/fstab

🚨 Clone XFS : un clone garde le même UUID → conflit. Régénérer :

xfs_admin -U generate /dev/sdb1   # nouvel UUID pour un FS XFS

H. Supprimer une partition#

umount /mnt           # démonter d'abord
fdisk /dev/sdX        # d -> delete, w -> write

I. Systemd mounts#

Les lignes de /etc/fstab sont en réalité converties en units systemd .mount.

ls /run/systemd/generator/   # units .mount générés automatiquement
systemctl cat tmp.mount      # voir une unit .mount d'exemple

💡 On peut écrire directement un fichier .mount (au lieu de fstab) pour exprimer des dépendances de montage plus fines.

J. Swap#

Le swap est de la RAM émulée sur disque ; tout système Linux doit en disposer un minimum. Il se crée sur n'importe quel block device, type de partition linux-swap.

mkfs.<...>            # pas ici : pour le swap on utilise mkswap
mkswap /dev/sda7      # initialise la zone de swap
swapon /dev/sda7      # active le swap

Séquence complète :

fdisk /dev/sda
# n  -> nouvelle partition (ex. sda7)
# <Entrée> <Entrée>  -> secteurs par défaut
# +2G  -> taille 2 Gio
# t    -> changer le type
# L    -> lister les types disponibles
# swap -> sélectionner linux-swap
# (réordonner les partitions si besoin : x puis f, puis r pour revenir)
# w    -> write

free -m               # vérifier mémoire et swap
mkswap /dev/sda7
swapon /dev/sda7
swapoff /dev/sda7     # désactiver le swap

Ligne /etc/fstab pour rendre le swap persistant :

/dev/sda7 none swap defaults 0 0

💡 Préférer UUID=... au device direct dans fstab (même logique qu'en section G).


K. LVM — concepts#

On agrège des volumes physiques (PV) en un volume group (VG), depuis lequel on taille des logical volumes (LV).

Schéma LVM : plusieurs Physical Volumes alimentent un Volume Group, d'où sont découpés LV1 à LV4, accessibles via /dev/vgx/lvx

Chaîne : PV (pvcreate) → VG (vgcreate) → LV (lvcreate) → filesystem → montage. Les noms LVM (/dev/vg/lv) ne changent pas : pas besoin d'UUID/label dans fstab pour un LV.

L. LVM — création de A à Z#

# 1. Partition de type LVM (gdisk : code 8e00 ; fdisk : t -> lvm)
gdisk /dev/sdb
# n -> nouvelle partition, <Entrée> x2, +2G
# t -> type -> 8e00 (Linux LVM)
# p -> vérifier, w -> write, Y -> confirmer

# 2. Créer le volume physique
pvcreate /dev/sdb1

# 3. Créer le volume group (option -s = taille des extents)
vgcreate -s 8M vgdata /dev/sdb1
vgs                              # lister les VG
vgdisplay                        # détails (dont taille des extents)

# 4. Créer le logical volume
lvcreate -L 1G -n lvdata vgdata  # par taille
# ou : lvcreate -l 255 -n lvdata vgdata   (par nombre d'extents)
lvs                              # lister les LV

# 5. Filesystem + montage
mkfs.xfs /dev/vgdata/lvdata
# /etc/fstab : /dev/vgdata/lvdata /lvdata xfs defaults 0 0
mount -a

💡 Extents = blocs élémentaires d'allocation LVM. -s 8M à la création du VG fixe leur taille ; tous les LV du VG l'héritent.

M. Device Mapper — noms#

Le kernel expose les LVM via device mapper :

  • Noms non persistants : /dev/dm-0, /dev/dm-1...
  • Noms persistants (liens symboliques) : /dev/mapper/vgdata-lvdata
  • Lien symbolique « friendly » : /dev/vgdata/lvdata
ls -l /dev/mapper/vgdata-lvdata /dev/vgdata/lvdata   # ce sont des symlinks
mount                                                # vérifie le chemin réel utilisé

N. Étendre un LVM (resize)#

vgs                                   # le VG a-t-il de l'espace libre ?
vgextend vgdata /dev/sdb2             # ajouter un PV au VG
lvextend -r -L +1G /dev/vgdata/lvdata # +1G au LV ET au filesystem (-r)

🚨 L'option -r de lvextend redimensionne aussi le filesystem. Si on l'oublie :

resize2fs /dev/vgdata/lvdata   # ext4 uniquement
xfs_growfs /lvdata             # XFS (cible le point de montage)

Shrinking (réduction) possible uniquement sur ext4, jamais sur XFS.

Exemple concret (2 PV, extension par %FREE) :

vgcreate vgfiles /dev/sde1            # vgcreate fait le pvcreate implicitement
lvcreate -l 255 -n lvfiles vgfiles
mkfs.ext4 /dev/vgfiles/lvfiles
mount /dev/vgfiles/lvfiles /mnt
df -h
vgextend vgfiles /dev/sde2            # ajouter un 2ᵉ PV
lvextend -r -l +50%FREE /dev/vgfiles/lvfiles
df -h                                 # nouvelle taille visible

O. Réduire un Volume Group (retirer un PV)#

Un PV ne peut être retiré que si les PV restants ont assez d'espace libre pour accueillir les extents déplacés (impossible si tout est utilisé).

pvmove -v /dev/sdf2 /dev/sdf1   # déplacer les extents de sdf2 vers sdf1
pvs                             # sdf2 maintenant inutilisé
vgreduce vgdemo /dev/sdf2       # retirer sdf2 du VG

Démo complète :

# 2 partitions LVM de 2G créées sous fdisk (type lvm)
vgcreate vgdemo /dev/sdf1
lvcreate -L 1G -n lvdemo vgdemo       # ne PAS tout consommer (sinon reduce impossible)
vgextend vgdemo /dev/sdf2             # ajouter sdf2
pvs                                   # extents dispo sur sdf2
lvextend -L +500M /dev/vgdemo/lvdemo /dev/sdf2  # +500M pris sur sdf2
mkfs.ext4 /dev/vgdemo/lvdemo
mount /dev/vgdemo/lvdemo /mnt
df -h
dd if=/dev/zero of=/mnt/bigfile bs=1M count=1100  # remplir pour répartir sur les 2 PV
pvmove -v /dev/sdf2 /dev/sdf1         # vider sdf2
pvs                                   # sdf2 libre
vgreduce vgdemo /dev/sdf2             # retirer sdf2

P. Stack de stockage (vue d'ensemble)#

Schéma de la pile de stockage : stratis / LVM / FS au sommet, au-dessus de partitions / RAID / multipath, eux-mêmes au-dessus des block devices (scsi, nvme, virtual)

  • Block device layer : permet à RHEL d'exploiter différents stockages via les drivers kernel adaptés.
  • Multipath : redondance des chemins d'accès.
  • Partition : découpe un block device en unités.
  • RAID : redondance au niveau des volumes.
  • LVM : volumes dynamiques sur un ou plusieurs block devices.
  • Les volumes peuvent servir à divers usages : filesystem, base de données, OSD Ceph, etc.

Q. Stratis#

Schéma Stratis : un pool (ex. 10 To) alimenté par des blockdev, exposant un ou plusieurs filesystems

  • Utilise toujours XFS comme filesystem et est thin provisioned par nature.
  • Les volumes sont alloués depuis un pool Stratis (taille minimale par volume : 1 Gio environ ; l'outil n'affiche que l'espace réellement restant).
  • Packages requis : stratisd (daemon) & stratis-cli (commande stratis).
stratis pool list        # lister les pools
stratis pool create ...  # créer pool & filesystem

🚨 Les volumes Stratis se montent par UUID, avec l'option fstab x-systemd.requires=stratisd.service (sinon le montage tente de se faire avant le démarrage du daemon → boot cassé).

Démo :

dnf install stratis-cli stratisd -y
systemctl enable --now stratisd
stratis pool create mypool /dev/sdb
stratis pool list
stratis pool add-data mypool /dev/sdc      # agrandir le pool avec un 2ᵉ disque
stratis blockdev list                      # quels disques dans quel pool
stratis fs create mypool myfs              # FS -> /dev/stratis/mypool/myfs
mkdir /myfs
lsblk --output=UUID /dev/stratis/mypool/myfs >> /etc/fstab   # récupérer l'UUID
# /etc/fstab :
# UUID=XXX /myfs xfs x-systemd.requires=stratisd.service 0 0
mount -a
stratis pool list

R. Snapshots Stratis#

Montés par device name (pas par UUID), ils donnent accès à des données supprimées du FS d'origine.

dd if=/dev/zero of=/myfs/bigfile bs=1M count=2000   # fichier 2 Go dans le pool
stratis fs snapshot mypool myfs myfs-snap           # snapshot de myfs
stratis fs list                                     # le snapshot apparaît
rm /myfs/bigfile                                     # suppression dans l'original
mkdir /myfs-snap
mount /dev/stratis/mypool/myfs-snap /myfs-snap
ls -l /myfs-snap                                     # bigfile toujours présent !
umount /myfs-snap
stratis fs destroy mypool myfs-snap                  # détruire le snapshot

S. Compléments EX200#

⚠️ Non couvert par les notes : VDO. Sous RHEL 9, VDO (déduplication/compression) n'est plus un objectif RHCSA distinct et s'intègre désormais à LVM (lvcreate --type vdo -L <taille> -V <taille_virtuelle> -n <lv> <vg>). À connaître seulement de nom.

💡 ACL & attributs de FS (objectif « file system attributes » de l'EX200, partiellement couvert) :

getfacl fichier                      # voir les ACL
setfacl -m u:alice:rw fichier        # ACL pour un utilisateur
setfacl -m d:u:alice:rw repertoire   # ACL par défaut (héritage)

💡 NFS côté client (objectif « mount network file systems ») :

mount -t nfs serveur:/export /mnt
# /etc/fstab : serveur:/export /mnt nfs defaults,_netdev 0 0

Couverture objectifs storage EX200 : configure local storage using partitions and logical volumes ✅ · create and configure file systems (XFS/ext4/vfat, mount, fstab, UUID/label) ✅ · swap ✅ · LVM (create/extend/reduce) ✅ · Stratis ✅. ACL/NFS référencés ci-dessus ; VDO signalé comme hors objectif RHCSA 9.


Sources : Red Hat EX200 — RHCSA exam · RHCSA certification

Sur cette page
Échap

Tape au moins 2 lettres. Plusieurs mots : tous doivent apparaître.