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 seulerw: lecture-écriturenoexec: interdire l'exécution de binairesnosuid: ignorer le bit setuidnodev: 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 -hpour voir l'espace disque,du -shpour mesurer les répertoiresncdupour trouver interactivement ce qui prend de la place/etc/fstabdefinit les montages permanents, utilise des UUIDlsblkpour voir les disques,fdiskpour 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