Commandes Linux pour la surveillance de l'espace disque

par Maxime Decooman
La surveillance de l'espace disque sur les serveurs Linux est un aspect essentiel de l'administration système. Un manque d'espace disque peut entraîner des pannes d'applications, empêcher la journalisation et même faire planter votre système. Voici quelques commandes pour vous aider.
1. Afficher l'espace disque libre
La commande la plus couramment utilisée pour vérifier l'espace disque. Cette commande affiche chaque système de fichiers monté, sa taille totale, l'espace utilisé, l'espace disponible, le pourcentage d'utilisation et le point de montage. Une surveillance régulière permet d'éviter les urgences liées à l'espace disque.
df -h
# The -h flag displays sizes in human-readable format (KB, MB, GB)
# Result example:
Filesystem Size Used Avail Use% Mounted on
tmpfs 97M 1.1M 96M 2% /run
/dev/vda1 24G 8.8G 15G 38% /
tmpfs 481M 1.1M 480M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 881M 112M 707M 14% /boot
/dev/vda15 105M 6.1M 99M 6% /boot/efi
tmpfs 97M 12K 97M 1% /run/user/1000
2. Afficher les types de systèmes de fichiers
Ajoutez le paramètre -T pour obtenir le type de système de fichiers. Les différents types de systèmes de fichiers (ext4, xfs, btrfs, etc.) ont des caractéristiques et des limitations différentes concernant les tailles maximales de fichiers, la capacité totale et les caractéristiques de performance.
df -hT
# Result example:
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 97M 1.1M 96M 2% /run
/dev/vda1 ext4 24G 8.8G 15G 38% /
tmpfs tmpfs 481M 1.1M 480M 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 ext4 881M 112M 707M 14% /boot
/dev/vda15 vfat 105M 6.1M 99M 6% /boot/efi
tmpfs tmpfs 97M 12K 97M 1% /run/user/1000
3. Vérifier l'utilisation des inodes
Chaque fichier sur un système Linux utilise un inode (nœud d'index), qui stocke les métadonnées du fichier. Un épuisement des inodes peut empêcher la création de nouveaux fichiers même si l'espace disque est disponible. La surveillance de l'utilisation des inodes est cruciale pour les systèmes qui gèrent de nombreux petits fichiers, comme les serveurs de messagerie ou les serveurs web.
df -i
# Result example
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 123085 784 122301 1% /run
/dev/vda1 3145728 210820 2934908 7% /
tmpfs 123085 3 123082 1% /dev/shm
tmpfs 123085 3 123082 1% /run/lock
/dev/vda16 58496 604 57892 2% /boot
/dev/vda15 0 0 0 - /boot/efi
tmpfs 24617 32 24585 1% /run/user/1000
4. Vérifier la taille d'un répertoire
La commande d'utilisation du disque (du) avec les options -s (résumé) et -h (lisible par l'homme) affiche la taille totale d'un répertoire spécifié et de son contenu.
du -sh /var/log
# Result
1.2G /var/log
Cette commande est inestimable pour identifier rapidement les répertoires qui consomment un espace significatif. Utilisez-la pour cibler les emplacements potentiels de nettoyage lorsque l'espace est insuffisant.
5. Afficher les tailles des répertoires
Une alternative plus granulaire à -sh est d'afficher la taille de tous les sous-répertoires immédiats sans descendre plus profondément dans l'arborescence des répertoires. Cela aide à identifier quels répertoires de premier niveau consomment le plus d'espace. Vous pourriez avoir besoin d'utiliser sudo pour avoir les permissions de lecture.
sudo du -h --max-depth=1 /var
# The --max-depth=1 parameter is particularly useful for exploring space
# usage hierarchically without being overwhelmed by thousands of files.
# Result
4.0K /var/mail
40M /var/spool
4.0K /var/local
1.3G /var/log
...
2.7G /var
6. Trier les répertoires par taille
Utilisez le pipe avec sort pour afficher les répertoires classés par taille (les plus grands d'abord), ce qui facilite l'identification des gros consommateurs d'espace.
sudo du -h --max-depth=1 /var | sort -hr
# -h parameter compares according to human readable numbers.
# -r parameter means reverse (biggest to smallest).
# Result
1.3G /var
1.2G /var/log
132M /var/cache
12M /var/backups
24K /var/tmp
4.0K /var/mail
7. Analyseur interactif d'utilisation du disque
Une version plus conviviale et interactive de du avec une interface textuelle. Elle permet de naviguer à travers les répertoires et fournit une représentation visuelle de l'utilisation de l'espace.
ncdu /var
ncdu fournit une navigation basée sur des touches pour parcourir les répertoires, supprimer des fichiers et identifier rapidement les répertoires consommant de l'espace.
# Result example
--- /var -----------------------------------------------------
. 1.3 GiB [##################] /log
. 577.7 MiB [####### ] /lib
. 336.3 MiB [#### ] /cache
2.9 MiB [ ] /backups
. 420.0 KiB [ ] /spool
52.0 KiB [ ] /snap
8. Trouver les gros fichiers
Utilise la commande find pour rechercher dans tout le système de fichiers les fichiers plus grands que 100 Mo. Cette approche ciblée aide à identifier des fichiers volumineux spécifiques qui pourraient être candidats à la suppression ou à l'archivage.
find / -type f -size +100M
# Adjust the size parameter (+100M) as needed.
# Add `-exec ls -lh {} \;` to see detailed file information
# including human-readable sizes.
# Result
/var/log/journal/7aa9dd79e9e94f0f9519591df3024c5a/system.journal
/home/user/Downloads/large-file.iso
9. Lister les fichiers triés par taille
Liste les fichiers dans le répertoire actuel, triés par taille (les plus grands d'abord) avec des tailles lisibles par l'homme. Cela fournit un aperçu rapide des plus grands fichiers dans un répertoire spécifique.
ls -laSh
# The parameters used are:
# -l (long format),
# -a (all files including hidden),
# -S (sort by size), and
# -h (human-readable sizes).
# Result example:
total 1.2G
-rw-r--r-- 1 user user 500M Apr 10 12:34 database.dump
-rw-r--r-- 1 user user 350M Apr 9 09:12 backup.tar.gz
-rw-r--r-- 1 user user 120M Apr 8 22:45 logs.tar
10. Lister les périphériques de bloc
Cette commande fournit un aperçu de vos périphériques de stockage et de leur organisation. Elle aide à identifier tous les stockages disponibles, y compris les périphériques non montés, ce qui est utile pour la planification du stockage et le dépannage.
lsblk
# Result example:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 30G 0 part /
├─sda2 8:2 0 434G 0 part /home
└─sda3 8:3 0 36G 0 part [SWAP]
sdb 8:16 0 1T 0 disk
└─sdb1 8:17 0 1T 0 part /data
11. Lister les partitions du disque
Cet outil de bas niveau montre la disposition exacte des partitions sur le disque, ce qui est utile pour la gestion du disque, le dépannage et la planification des modifications de partition. Il nécessite des privilèges root.
sudo fdisk -l
# Result example:
Disk /dev/sda: 500 GiB
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 62914559 62912512 30G 83 Linux
/dev/sda2 62914560 973078527 910163968 434G 83 Linux
/dev/sda3 973078528 1048575999 75497472 36G 82 Linux swap
12. Surveiller les E/S disque
Affiche les statistiques d'E/S disque en temps réel pour les processus, similaire à la façon dont top affiche l'utilisation du CPU. Cela aide à identifier quels processus causent une activité disque importante.
sudo iotop
# Result example:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --system
1234 be/4 user 0.00 B/s 1.12 M/s 0.00 % 0.12 % python backup.py
13. Afficher les systèmes de fichiers montés
Cette commande fournit une vue complète de tous les points de montage dans votre système, ce qui aide à comprendre la hiérarchie du système de fichiers et à diagnostiquer les problèmes liés au montage.
findmnt
# Result example:
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime
├─/sys sysfs sysfs rw,nosuid,nodev,noexec
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec
...
├─/home /dev/sda2 ext4 rw,relatime
14. Gestion des volumes logiques
Ces commandes sont essentielles pour gérer le stockage basé sur LVM (Logical Volume Management), qui offre de la flexibilité pour redimensionner les systèmes de fichiers et gérer le stockage sur plusieurs disques physiques. De nombreux systèmes d'entreprise utilisent LVM pour la gestion du stockage.
sudo pvs
# Result example:
PV VG Fmt Attr PSize PFree
/dev/sda3 vg_sys lvm2 a-- 100.00g 10.00g
sudo vgs
# Result example:
VG #PV #LV #SN Attr VSize VFree
vg_sys 1 2 0 wz--n- 100.00g 10.00g
sudo lvs
# Result example:
LV VG Attr LSize Pool Origin Data% Meta%
lv_root vg_sys -wi-ao---- 50.00g
lv_home vg_sys -wi-ao---- 40.00g
15. Vérifier l'utilisation du disque par type de fichier
La commande find combinée avec du peut aider à identifier l'utilisation de l'espace par types de fichiers spécifiques, ce qui est utile pour les opérations de nettoyage ciblées.
sudo find /path/to/search -name "*.log" -type f -exec du -ch {} \+ | grep total$
# This example finds all .log files and shows their total size
# You can replace "*.log" with any file extension (.zip, .mp4, etc.)
# Result example:
450M total
Un article va suivre pour construire un dashboard de monitoring basé sur certaines de ces commandes.