Aller au contenu

Linux avancé : disques et systèmes de fichiers

Fenêtre de terminal
lsblk -f # arbre : périphériques, systèmes de fichiers, UUID, points de montage
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
sudo blkid # UUID et types
sudo fdisk -l # partitions
findmnt # arbre des montages
findmnt /var # d'où vient /var
df -hT # espace par système de fichiers
df -i # inodes
Nom Type
/dev/sda, /dev/sdb Disques SATA, SAS, USB, ou virtuels
/dev/nvme0n1, nvme0n1p1 Disques NVMe (partitions : p1, p2)
/dev/vda Disque virtuel (KVM, VPS)
/dev/mapper/… Volumes LVM, chiffrés, RAID
/dev/md0 RAID logiciel

Utiliser les UUID (ou les étiquettes) plutôt que /dev/sdb1 : l’ordre des noms peut changer d’un démarrage à l’autre.

Fenêtre de terminal
sudo parted /dev/sdX --script mklabel gpt mkpart donnees ext4 1MiB 100% # une partition GPT
sudo fdisk /dev/sdX # interactif (g, n, w)
sudo gdisk /dev/sdX # GPT, interactif
sudo partprobe /dev/sdX # relire la table
lsblk /dev/sdX

Un disque d’amorçage moderne est en GPT (avec partition EFI) ; MBR seulement pour de très anciens matériels ou de petits disques. Alignement : commencer à 1MiB.

Fenêtre de terminal
sudo mkfs.ext4 -L donnees /dev/sdX1
sudo mkfs.xfs -L donnees /dev/sdX1
sudo mkfs.btrfs -L donnees /dev/sdX1
Système Points forts À savoir
ext4 Éprouvé, robuste, réparable (fsck), réductible Défaut d’Ubuntu
XFS Très bon avec de gros fichiers et le parallélisme Non réductible (agrandissement seulement)
Btrfs Instantanés, compression, sommes de contrôle Plus complexe, à connaître avant usage
tmpfs En mémoire (/tmp, /run) Perdu au redémarrage
Fenêtre de terminal
sudo mkdir -p /srv/donnees
sudo mount /dev/disk/by-label/donnees /srv/donnees
sudo mount -o ro,noexec /dev/sdX1 /mnt # lecture seule, sans exécution
sudo umount /srv/donnees # ou : umount -l (démontage « paresseux »)
sudo mount -o remount,rw /srv/donnees

Montage permanent :

# <fichier> <point> <type> <options> <dump> <fsck>
UUID=3e6be9de-8139-11e1-a1d8-0050568e0001 /srv/donnees ext4 defaults,noatime,nofail 0 2
UUID=8b0c2b8e-… none swap sw 0 0
//nas.exemple.com/partage /mnt/nas cifs credentials=/root/.nas,uid=1000,_netdev,nofail 0 0
Fenêtre de terminal
sudo blkid /dev/sdX1 # obtenir l'UUID
sudo findmnt --verify # vérifier fstab AVANT de redémarrer
sudo mount -a # monter tout ce qui est dans fstab
sudo systemctl daemon-reload
Option Effet
defaults Options usuelles (rw, suid, dev, exec, auto, nouser, async)
noatime Pas de mise à jour de l’heure d’accès (moins d’écritures)
nofail Le démarrage continue si le disque est absent
ro Lecture seule
nosuid,nodev,noexec Durcissement des partitions de données
_netdev Disque réseau : monter après le réseau
x-systemd.automount Montage à la demande
Fenêtre de terminal
df -hT -x tmpfs -x devtmpfs
sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15
sudo du -sh /var/log/* | sort -h | tail
sudo ncdu -x / # (paquet ncdu) navigation interactive
sudo journalctl --disk-usage
sudo apt clean; sudo apt autoremove --purge
docker system df # si Docker est utilisé
  • df plein mais du ne trouve pas : fichiers supprimés encore ouverts (lsof | grep deleted : Processus et ressources).
  • df indique de l’espace mais « No space left » : inodes épuisés (df -i) : très nombreux petits fichiers (sessions, courriers, caches).

LVM ajoute une couche souple entre disques et systèmes de fichiers : volumes physiques (PV) → groupe de volumes (VG) → volumes logiques (LV).

Fenêtre de terminal
sudo apt install lvm2
sudo pvcreate /dev/sdX1
sudo vgcreate vg_donnees /dev/sdX1
sudo lvcreate -n lv_site -L 20G vg_donnees
sudo mkfs.ext4 /dev/vg_donnees/lv_site
sudo mount /dev/vg_donnees/lv_site /srv/site
sudo pvs; sudo vgs; sudo lvs # états
sudo lvdisplay /dev/vg_donnees/lv_site
Fenêtre de terminal
sudo lvextend -r -L +10G /dev/vg_donnees/lv_site # +10 Gio ET système de fichiers (-r)
sudo lvextend -r -l +100%FREE /dev/vg_donnees/lv_site # tout l'espace libre
sudo vgextend vg_donnees /dev/sdY1 # ajouter un disque au groupe

L’agrandissement se fait à chaud (volume monté) pour ext4 et XFS. Réduire est risqué (ext4 seulement, démonté, sauvegarde préalable) : lvreduce -r -L 10G ….

L’installation par défaut crée souvent un volume logique ubuntu-lv plus petit que le disque :

Fenêtre de terminal
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
df -h /
Fenêtre de terminal
sudo lvcreate -s -n instantane -L 5G /dev/vg_donnees/lv_site
sudo mount -o ro /dev/vg_donnees/instantane /mnt/instantane
# sauvegarder depuis /mnt/instantane (état cohérent), puis supprimer :
sudo umount /mnt/instantane
sudo lvremove /dev/vg_donnees/instantane

L’instantané fige l’état à un instant : sauvegarde cohérente sans arrêter le service (Sauvegarde et automatisation). Un instantané trop petit se remplit et devient inutilisable : le surveiller.

Fenêtre de terminal
sudo apt install mdadm
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdX1 /dev/sdY1
cat /proc/mdstat
sudo mdadm --detail /dev/md0
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
sudo mdadm /dev/md0 --fail /dev/sdX1 --remove /dev/sdX1 # retirer un disque défaillant
sudo mdadm /dev/md0 --add /dev/sdZ1 # ajouter son remplaçant
Niveau Disques minimum Tolère Remarque
RAID 0 2 Aucune panne Performances, aucune redondance
RAID 1 2 1 panne Miroir
RAID 5 3 1 panne Capacité (n−1)
RAID 6 4 2 pannes Capacité (n−2)
RAID 10 4 1 par miroir Performances et redondance
Fenêtre de terminal
sudo apt install cryptsetup
sudo cryptsetup luksFormat /dev/sdX1 # détruit les données ; demande une phrase secrète
sudo cryptsetup open /dev/sdX1 donnees_chiffrees
sudo mkfs.ext4 /dev/mapper/donnees_chiffrees
sudo mount /dev/mapper/donnees_chiffrees /srv/prive
sudo umount /srv/prive && sudo cryptsetup close donnees_chiffrees
sudo cryptsetup luksDump /dev/sdX1

Montage automatique : /etc/crypttab (avec un fichier de clé protégé, ou une saisie au démarrage). Sauvegarder l’en-tête LUKS (cryptsetup luksHeaderBackup) : un en-tête corrompu rend les données irrécupérables.

Fenêtre de terminal
swapon --show
free -h
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo sysctl vm.swappiness=10 # 60 par défaut ; plus bas : moins d'échange
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo swapoff /swapfile

Un petit swap évite qu’un pic de mémoire déclenche l’OOM killer ; un système qui échange en permanence manque de mémoire (Processus et ressources).

Fenêtre de terminal
sudo apt install smartmontools
sudo smartctl -H /dev/sdX # verdict global
sudo smartctl -a /dev/sdX | grep -E "Reallocated|Pending|Uncorrectable|Power_On_Hours|Temperature|Percentage Used"
sudo smartctl -t short /dev/sdX # test court
sudo nvme smart-log /dev/nvme0n1 # NVMe (paquet nvme-cli)
sudo iostat -xz 1 # saturation (paquet sysstat)
dmesg -T | grep -iE "i/o error|ata[0-9]|nvme|blk_update_request"

Des secteurs réalloués ou en attente qui augmentent, des erreurs d’entrée-sortie dans dmesg : remplacer le disque et vérifier les sauvegardes.

Fenêtre de terminal
sudo umount /srv/donnees
sudo fsck -f /dev/sdX1 # ext4 : démonté obligatoirement
sudo e2fsck -fn /dev/sdX1 # simulation sans modification
sudo xfs_repair -n /dev/sdX1 # XFS : simulation
sudo tune2fs -l /dev/sdX1 | head -30
sudo tune2fs -c 0 -i 0 /dev/sdX1 # désactiver les contrôles périodiques

Ne jamais lancer fsck sur un système de fichiers monté en écriture. La racine se vérifie au démarrage (fsck.mode=force sur la ligne de commande du noyau) ou depuis un système de secours (Noyau et démarrage).

Symptôme Piste
Démarrage en mode d’urgence après modification de fstab Erreur de syntaxe ou disque absent : corriger depuis le mode d’urgence, ajouter nofail
mount: wrong fs type, bad option, bad superblock Mauvais type, système de fichiers corrompu : fsck, dmesg
target is busy au démontage Un processus utilise le point de montage : lsof +D, fuser -vm
Disque plein en apparence vide Inodes (df -i), fichiers supprimés ouverts
Volume LVM agrandi mais df inchangé Système de fichiers non étendu : -r, ou resize2fs/xfs_growfs
Disque absent après redémarrage Noms changés : UUID dans fstab ; câblage
Lenteurs, processus en D iostat -xz 1, smartctl, dmesg
device is busy à la fermeture de LUKS Démonter avant (umount)

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les outils de cette page sont identiques sur les deux versions ; sur 26.04, /tmp est en mémoire (tmpfs) : ne pas y stocker de gros fichiers. Les paquets lvm2, mdadm, cryptsetup, smartmontools, ncdu s’installent par apt.

  • Manuels : man fstab, man lvm, man mdadm, man cryptsetup
  • Suite : Réseau avancé