Commandes Linux pour la surveillance de l'espace disque

#Linux#Monitoring#System Administration#Ubuntu

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.