P14 - Disques, partitions, fstab et LVM sous Linux
Objectif
Savoir ajouter un disque à une machine Linux : le repérer, le partitionner, le formater, le monter au démarrage avec
/etc/fstab, puis utiliser LVM pour pouvoir agrandir un volume sans tout casser.
Source
Fiche rédigée à partir de cours de lidstah et des deux astuces cours de lidstah.
Avant de commencer
Ces commandes effacent des données si on se trompe de disque. Toujours s’entraîner sur une VM avec un disque ajouté exprès (1 Go suffit), et vérifier deux fois le nom du disque avec
lsblk.
1. Le chemin complet
flowchart LR A["Disque brut<br/>/dev/sdb"] -->|"cfdisk / fdisk"| B["Partition<br/>/dev/sdb1"] B -->|"mkfs.ext4"| C["Système de fichiers"] C -->|"mount"| D["Dossier<br/>/mnt/volume1"] D -->|"/etc/fstab"| E["Monté à chaque démarrage"]
2. Repérer le disque
lsblk # arbre des disques et partitions (le plus lisible)
sudo dmesg | tail # messages du noyau : le nouveau disque y apparaît (souvent sdb)
sudo blkid # identifiants UUID et type de chaque partition
df -h # espace utilisé sur ce qui est monté| Nom | Signification |
|---|---|
/dev/sda, /dev/sdb | Disques SATA/SCSI/USB (a = premier, b = deuxième…) |
/dev/sdb1 | Première partition du disque sdb |
/dev/nvme0n1p1 | Partition 1 d’un SSD NVMe |
/dev/vda | Disque virtuel d’une VM KVM/Proxmox |
3. Partitionner et formater
sudo cfdisk /dev/sdb # menu interactif : New → taille → Write → Quit
# (fdisk /dev/sdb fait la même chose en mode questions/réponses)
sudo mkfs.ext4 /dev/sdb1 # formater la partition en ext4| Système de fichiers | Usage |
|---|---|
| ext4 | Le choix par défaut, fiable |
| btrfs | Instantanés (snapshots), compression ; jamais sur du RAID 5 |
| XFS | Très bon pour les gros fichiers (bases de données) |
| ZFS | RAID intégré, instantanés, intégrité (TrueNAS, Proxmox) |
| FAT32 / exFAT / NTFS | Échange avec Windows, clés USB |
| swap | Mémoire d’échange (mkswap, swapon) |
4. Monter
sudo mkdir -p /mnt/volume1
sudo mount /dev/sdb1 /mnt/volume1 # montage temporaire (perdu au redémarrage)
ls /mnt/volume1
sudo umount /mnt/volume1 # démonter (sortir du dossier avant !)5. Monter au démarrage : /etc/fstab
Une ligne = un montage, avec 6 colonnes :
# <quoi> <où> <type> <options> <dump> <fsck>
UUID=2fc007d9-01a1-4d21-bd63-9ece32cd8040 /mnt/volume1 ext4 defaults,noatime 0 2| Colonne | Explication |
|---|---|
| quoi | Mieux vaut l’UUID (donné par blkid) que /dev/sdb1 : si le disque change de nom, il est quand même retrouvé |
| où | Le dossier de montage (il doit exister) |
| type | ext4, xfs, btrfs, nfs, swap… |
| options | defaults, noatime (n’écrit pas la date de dernière lecture : moins d’écritures), nofail (ne bloque pas le démarrage si le disque manque) |
| dump | Presque toujours 0 |
| fsck | 1 pour /, 2 pour les autres disques locaux, 0 pour les montages réseau (NFS, SMB) |
sudo nano /etc/fstab # ajouter la ligne
sudo mount -a # TESTER : monte tout fstab, affiche l'erreur s'il y en a une
findmnt --verify # vérifier la syntaxe de fstabToujours tester avec
mount -aavant de redémarrerUne erreur dans fstab peut empêcher la machine de démarrer (mode secours).
mount -amontre l’erreur tout de suite, pendant qu’on peut encore corriger.
6. LVM : des volumes qu’on peut agrandir
LVM (Logical Volume Manager) ajoute une couche entre les disques et les systèmes de fichiers.
flowchart BT PV1["PV<br/>/dev/sdc"] --> VG["VG « epsivg »<br/>(groupe = réserve d'espace)"] PV2["PV<br/>/dev/sdd"] --> VG VG --> LV1["LV « lv1 »<br/>/dev/epsivg/lv1"] VG --> LV2["LV « lv2 »"] LV1 --> FS["ext4 monté sur /mnt/lv1"]
| Sigle | Nom | Rôle |
|---|---|---|
| PV | Physical Volume | Un disque ou une partition donné à LVM |
| VG | Volume Group | La réserve d’espace formée de plusieurs PV |
| LV | Logical Volume | Un « disque virtuel » découpé dans le VG, qu’on formate et monte |
sudo apt install lvm2
sudo pvcreate /dev/sdc # déclarer le disque comme PV
sudo vgcreate epsivg /dev/sdc # créer le groupe
sudo lvcreate -L 512M -n lv1 epsivg # créer un volume de 512 Mo
sudo mkfs.ext4 /dev/epsivg/lv1
sudo mkdir -p /mnt/lv1 && sudo mount /dev/epsivg/lv1 /mnt/lv1
# voir l'état
sudo pvs ; sudo vgs ; sudo lvs # résumés (pvdisplay, vgdisplay, lvdisplay = détaillé)Agrandir un volume quand il est plein (sans démonter, sans perdre de données) :
sudo pvcreate /dev/sdd # nouveau disque
sudo vgextend epsivg /dev/sdd # on l'ajoute au groupe
sudo lvextend -r -L +512M epsivg/lv1 # on agrandit le LV ; -r agrandit aussi le système de fichiers
# (sans -r : sudo resize2fs /dev/epsivg/lv1 pour ext4, xfs_growfs /mnt/lv1 pour XFS)Cas réel donné par lidstah
Une base de données sur un LV posé sur un RAID 1 de 1 To arrive à saturation : on ajoute un deuxième RAID 1 au VG, on étend le LV, et c’est reparti pour quelques années, sans coupure.
Astuces avancées du wiki :
- Étendre un LV avec un fichier image monté en loop device quand on n’a pas de disque libre (dépanne, à ne pas laisser en production) : cours de lidstah.
- Réduire
/à chaud en basculant la racine en RAM (pivot_rootsur un tmpfs) : technique d’expert, risquée, cours de lidstah.
Exercices
- Sur une VM, ajoute un disque de 1 Go, crée une partition ext4 et fais-la monter automatiquement sur
/dataau démarrage. - Pourquoi utiliser l’UUID plutôt que
/dev/sdb1dans fstab ? - Ton LV
/var/lib/mysqlest plein. Quelles commandes, dans l’ordre, après avoir branché un disque/dev/sde?
Correction
lsblk→sudo cfdisk /dev/sdb→sudo mkfs.ext4 /dev/sdb1→sudo mkdir /data→sudo blkid /dev/sdb1(copier l’UUID) → ligneUUID=... /data ext4 defaults,nofail 0 2dans/etc/fstab→sudo mount -a→df -h /data.- Le nom
/dev/sdXdépend de l’ordre de détection des disques et peut changer ; l’UUID est propre à la partition.sudo pvcreate /dev/sde→sudo vgextend NOM_VG /dev/sde→sudo lvextend -r -L +10G NOM_VG/NOM_LV→ vérifier avecdf -h.
Erreurs fréquentes / dépannage
| Symptôme | Cause / solution |
|---|---|
umount: target is busy | Un terminal est encore dans le dossier : cd ~, ou voir qui l’utilise avec sudo lsof +D /mnt/volume1 |
| Démarrage en mode secours | Erreur dans fstab : se connecter, nano /etc/fstab, corriger ou commenter la ligne, mount -a |
df ne montre pas la nouvelle taille | lvextend sans -r : lancer resize2fs |
wrong fs type | Partition pas formatée, ou mauvais type indiqué |
Voir aussi
- ST01 - RAID · L02 - Fichiers, dossiers et redirections · W04 - Disques, RAID logiciel et sauvegarde sous Windows · P18 - Haute disponibilité (stockage, BDD, réseau)
- Cours complet : cours de lidstah · cours de lidstah
- Retour : P00 - Programme pas encore vu