Linux pour les devs - 17 - Stockage et disques

df, du, mount, fstab, LVM et ncdu : gerer le stockage et les disques sur Linux.

  1. 01 Linux pour les devs - 00 - Pourquoi Linux meme si tu codes sur Mac ou Windows
  2. 02 Linux pour les devs - 01 - Le terminal, bash et zsh
  3. 03 Linux pour les devs - 02 - Fichiers et répertoires
  4. 04 Linux pour les devs - 03 - Permissions et droits d'acces
  5. 05 Linux pour les devs - 04 - Utilisateurs, groupes et sudo
  6. 06 Linux pour les devs - 05 - nano, vim, sed et awk
  7. 07 Linux pour les devs - 06 - Pipes et redirections
  8. 08 Linux pour les devs - 07 - grep et find en profondeur
  9. 09 Linux pour les devs - 08 - Les processus : comprendre ce qui tourne sur ta machine
  10. 10 Linux pour les devs - 09 - systemd : gerer tes services comme un pro
  11. 11 Linux pour les devs - 10 - Le réseau : comprendre ce qui passe par le fil
  12. 12 Linux pour les devs - 11 - Le firewall : contrôler qui entre et qui sort
  13. 13 Linux pour les devs - 12 - SSH : l'acces distant sécurisé
  14. 14 Linux pour les devs - 13 - Les variables d'environnement : configurer sans hardcoder
  15. 15 Linux pour les devs - 14 - Scripts bash : automatiser pour ne plus se répéter
  16. 16 Linux pour les devs - 15 - cron : les taches planifiees
  17. 17 Linux pour les devs - 16 - Les logs : lire, filtrer, comprendre
  18. 18 Linux pour les devs - 17 - Stockage et disques
  19. 19 Linux pour les devs - 18 - Les gestionnaires de paquets
  20. 20 Linux pour les devs - 19 - Les conteneurs sans Docker
  21. 21 Linux pour les devs - 20 - Securiser un serveur Linux
  22. 22 Linux pour les devs - 21 - Performance et diagnostic
  23. 23 Linux pour les devs - 22 - tmux : le multiplexeur de terminal
  24. 24 Linux pour les devs - 23 - Glossaire Linux

17 - Stockage et disques

Ce que tu vas apprendre

  • Verifier l'espace disque avec df et du
  • Comprendre les points de montage et /etc/fstab
  • Lister et partitionner les disques avec lsblk et fdisk
  • Connaitre les bases de LVM pour gerer les volumes
  • Choisir entre ext4 et xfs
  • Reagir quand le disque est plein

Prerequisites

Savoir naviguer dans le système de fichiers et connaître les permissions.


Un vendredi soir, 23h. Mon application ne répond plus. Les logs sont vides. Apres 20 minutes de panique, je decouvre que le disque est plein a 100%. Les logs etaient vides parce qu'il n'y avait plus de place pour écrire. J'ai supprime les vieux fichiers temporaires a la main, l'app est repartie, et j'ai passe le weekend a mettre en place de la surveillance disque. Le stockage, ca ne pardonne pas.

df : voir l'espace disque

df (disk free) affiche l'utilisation de chaque système de fichiers monte :

bash# Affichage lisible
df -h

# Exemple de sortie :
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sda1        50G   32G   16G  67% /
# /dev/sda2       200G  180G   10G  95% /home
# tmpfs           3.9G  1.2M  3.9G   1% /tmp

# Uniquement les systemes de fichiers locaux (pas tmpfs, etc.)
df -h -x tmpfs -x devtmpfs

# Un seul point de montage
df -h /home

Quand Use% dépassé 90%, il faut reagir. A 100%, des choses cassent silencieusement.

du : trouver ce qui prend de la place

du (disk usage) mesure la taille des répertoires :

bash# Taille d'un repertoire
du -sh /var/log

# Les 10 plus gros sous-repertoires
du -sh /var/* | sort -rh | head -10

# Profondeur limitee a 1 niveau
du -h --max-depth=1 /home

# Exclure un pattern
du -sh --exclude="*.log" /var

ncdu : du en interactif

ncdu est la version interactive de du. C'est mon outil préféré pour trouver ce qui mange l'espace :

bash# Installer
sudo apt install ncdu

# Analyser depuis la racine
sudo ncdu /

# Analyser un repertoire specifique
ncdu /var/log

Tu navigues avec les flèches, tu vois les tailles en temps réel, tu peux meme supprimer directement avec d. Quand un disque est plein et que tu dois trouver quoi supprimer en urgence, ncdu te fait gagner un temps fou.

Points de montage et mount

Sur Linux, il n'y a pas de lettres de lecteur comme sur Windows. Chaque disque ou partition est "monte" quelque part dans l'arborescence :

bash# Voir tous les montages actuels
mount

# Version plus lisible
findmnt

# Monter un disque USB (exemple)
sudo mount /dev/sdb1 /mnt/usb

# Demonter
sudo umount /mnt/usb

# Monter avec des options specifiques
sudo mount -o ro,noexec /dev/sdb1 /mnt/usb

Options de montage courantes :

  • ro : lecture seule
  • rw : lecture-écriture
  • noexec : interdire l'exécution de binaires
  • nosuid : ignorer le bit setuid
  • nodev : ignorer les fichiers de périphériques

/etc/fstab : les montages permanents

/etc/fstab definit les systèmes de fichiers montes au démarrage :

bashcat /etc/fstab
# UUID=a1b2c3d4-...  /       ext4  errors=remount-ro  0  1
# UUID=e5f6a7b8-...  /home   ext4  defaults           0  2
# UUID=c9d0e1f2-...  none    swap  sw                 0  0

Les colonnes : périphérique, point de montage, type, options, dump, pass (ordre de fsck).

bash# Trouver l'UUID d'un disque
sudo blkid

# Tester fstab sans redemarrer
sudo mount -a

Sur paltemps.fr, j'utilise des UUID plutot que des noms de périphériques (/dev/sda1). Les UUID ne changent pas si tu ajoutes un disque, alors que les noms de périphériques peuvent bouger.

Piege classique : une erreur dans fstab peut empecher le système de démarrer. Teste toujours avec mount -a avant de rebooter.

lsblk et fdisk : voir et partitionner

bash# Lister les disques et partitions
lsblk

# Avec plus de details (taille, UUID, type)
lsblk -f

# Voir la table de partitions d'un disque
sudo fdisk -l /dev/sda

# Partitionner un disque (interactif)
sudo fdisk /dev/sdb
# n : nouvelle partition
# p : partition primaire
# w : ecrire et quitter

# Creer un systeme de fichiers
sudo mkfs.ext4 /dev/sdb1

ext4 vs xfs

Les deux systèmes de fichiers principaux sur Linux :

Aspect ext4 xfs
Défaut sur Debian, Ubuntu RHEL, CentOS
Taille max fichier 16 To 8 Eo
Redimensionner Agrandir et réduire Agrandir seulement
Performance gros fichiers Bon Excellent
Reparation fsck rapide xfs_repair

Mon conseil : si tu ne sais pas, prends ext4. C'est le plus repandu, le mieux documente, et il fait le job pour 99% des cas d'usage de dev. xfs brille sur les serveurs avec de gros fichiers ou beaucoup d'I/O parallèles.

LVM : les bases

LVM (Logical Volume Manager) ajoute une couche d'abstraction entre les disques physiques et les partitions. L'interet : tu peux redimensionner des volumes sans tout reformater.

bash# Les trois couches de LVM :
# PV (Physical Volume) -> VG (Volume Group) -> LV (Logical Volume)

# Voir les volumes physiques
sudo pvs

# Voir les groupes de volumes
sudo vgs

# Voir les volumes logiques
sudo lvs

# Agrandir un volume logique de 10 Go
sudo lvextend -L +10G /dev/vg0/home

# Redimensionner le systeme de fichiers apres
sudo resize2fs /dev/vg0/home    # ext4
# ou
sudo xfs_growfs /dev/vg0/home   # xfs

LVM est surtout utile sur les serveurs ou tu ne sais pas a l'avance combien de place chaque partition aura besoin. Sur un poste de dev, c'est rarement nécessaire.

Disque plein : procedure d'urgence

Quand le disque est a 100%, voici ma checklist :

bash# 1. Trouver les plus gros fichiers
sudo du -sh /* | sort -rh | head -10

# 2. Verifier les suspects habituels
sudo du -sh /var/log /var/cache /tmp /var/lib/docker

# 3. Nettoyer les logs anciens
sudo journalctl --vacuum-size=200M

# 4. Nettoyer le cache apt
sudo apt clean

# 5. Supprimer les vieux noyaux
sudo apt autoremove --purge

# 6. Si Docker est present, c'est souvent le coupable
sudo docker system prune -a

# 7. Trouver les gros fichiers supprimes mais encore ouverts
sudo lsof +L1

Le point 7 est subtil. Un fichier supprime peut encore occuper de l'espace si un processus le garde ouvert. lsof +L1 les trouve. Il suffit de redemarrer le service concerne pour libérer l'espace.

Résumé

  • df -h pour voir l'espace disque, du -sh pour mesurer les répertoires
  • ncdu pour trouver interactivement ce qui prend de la place
  • /etc/fstab definit les montages permanents, utilise des UUID
  • lsblk pour voir les disques, fdisk pour partitionner
  • ext4 est le choix par défaut, xfs pour les gros volumes avec beaucoup d'I/O
  • LVM permet de redimensionner les volumes a chaud
  • Quand le disque est plein : logs, cache apt, Docker et fichiers supprimes ouverts

Article précédent : Les logs Article suivant : Les gestionnaires de paquets

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.