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 partitionssda1,sda2sr0→ disque optique (CD/DVD)nvme0n1→ disque NVMeloop0→ 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 | 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,gcré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 valoirauto(détection automatique).<dump>(sauvegarde, généralement0),<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).

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)#

- 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#

- 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(commandestratis).
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