Aller au contenu principal

Gestion de l'espace disque

Ce guide explique comment analyser, nettoyer et optimiser l'espace disque de votre VPS.

Analyser l'utilisation du disque

Vue d'ensemble

df -h

Exemple :

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1 50G 35G 15G 70% /
tmpfs 1.9G 0 1.9G 0% /dev/shm

Détail par dossier

# Taille des dossiers principaux
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -15

Résultat typique :

15G     /var
8G /usr
5G /home
3G /opt

Analyser un dossier spécifique

# Analyser /var
du -h --max-depth=1 /var | sort -hr

# Analyser /home
du -h --max-depth=1 /home | sort -hr

Outil interactif : ncdu

# Installer
sudo apt install ncdu

# Analyser
sudo ncdu /

# Navigation : flèches, Entrée pour entrer, d pour supprimer

Nettoyer le système

Paquets APT

# Supprimer les paquets orphelins
sudo apt autoremove -y

# Vider le cache APT
sudo apt clean

# Supprimer les vieux kernels
sudo apt autoremove --purge -y

Espace récupéré : ~500MB à 2GB

Cache et fichiers temporaires

# Fichiers temporaires
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

# Cache des thumbnails (si desktop)
rm -rf ~/.cache/thumbnails/*

Logs système

# Taille actuelle des logs
du -h /var/log/

# Nettoyer les journaux systemd (garder 7 jours)
sudo journalctl --vacuum-time=7d

# Ou garder max 500MB
sudo journalctl --vacuum-size=500M

# Supprimer les vieux logs compressés
sudo find /var/log -name "*.gz" -delete
sudo find /var/log -name "*.1" -delete
sudo find /var/log -name "*.old" -delete

Rotation des logs

Configurer une rotation automatique :

sudo nano /etc/logrotate.d/custom
/var/log/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
}

Nettoyer Docker

Si vous utilisez Docker :

# Voir l'utilisation
docker system df

# Supprimer les ressources inutilisées
docker system prune -af

# Supprimer aussi les volumes non utilisés
docker system prune -af --volumes

# Supprimer les images non taguées
docker image prune -af
Attention

docker system prune --volumes supprime les volumes non attachés. Vérifiez que vous n'avez pas de données importantes.

Nettoyer les applications

Node.js / npm

# Cache npm
npm cache clean --force

# node_modules inutiles
find /home -name "node_modules" -type d -exec du -sh {} \; 2>/dev/null
# Supprimer ceux qui ne servent plus
rm -rf /chemin/vers/projet/node_modules

Python / pip

# Cache pip
pip cache purge

# Ou manuellement
rm -rf ~/.cache/pip

Composer (PHP)

# Cache Composer
composer clear-cache
rm -rf ~/.composer/cache

Trouver les gros fichiers

# Fichiers > 100MB
find / -type f -size +100M 2>/dev/null | xargs ls -lh

# Fichiers > 500MB
find / -type f -size +500M 2>/dev/null | xargs ls -lh

# Top 20 des plus gros fichiers
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20

Fichiers à vérifier en priorité

Logs applicatifs

# Logs Nginx
du -h /var/log/nginx/

# Logs Apache
du -h /var/log/apache2/

# Logs MySQL
du -h /var/log/mysql/

Backups oubliés

# Chercher les .bak, .backup, .old
find / -name "*.bak" -o -name "*.backup" -o -name "*.old" 2>/dev/null | xargs du -ch

Core dumps

# Chercher les core dumps
find / -name "core.*" -o -name "core" 2>/dev/null

Fichiers de session PHP

du -h /var/lib/php/sessions/
# Nettoyer les vieilles sessions
find /var/lib/php/sessions/ -type f -mtime +7 -delete

Augmenter l'espace disque

Ajouter du swap (temporaire)

# Créer un fichier swap de 2GB
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Rendre permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Monter un stockage externe

Si votre offre inclut un stockage additionnel :

# Lister les disques
lsblk

# Formater (si nouveau)
sudo mkfs.ext4 /dev/sdb

# Créer le point de montage
sudo mkdir /mnt/storage

# Monter
sudo mount /dev/sdb /mnt/storage

# Montage automatique au boot
echo '/dev/sdb /mnt/storage ext4 defaults 0 2' | sudo tee -a /etc/fstab

Script de nettoyage automatique

sudo nano /usr/local/bin/clean-disk.sh
#!/bin/bash

echo "=== Nettoyage disque $(date) ==="

# Espace avant
echo "Espace avant :"
df -h /

# APT
echo "Nettoyage APT..."
apt autoremove -y > /dev/null
apt clean > /dev/null

# Journaux systemd
echo "Nettoyage journaux..."
journalctl --vacuum-time=7d > /dev/null

# Vieux logs
echo "Nettoyage vieux logs..."
find /var/log -name "*.gz" -delete
find /var/log -name "*.1" -delete

# Fichiers temporaires
echo "Nettoyage fichiers temporaires..."
rm -rf /tmp/* 2>/dev/null
rm -rf /var/tmp/* 2>/dev/null

# Docker (si installé)
if command -v docker &> /dev/null; then
echo "Nettoyage Docker..."
docker system prune -af > /dev/null 2>&1
fi

# Espace après
echo ""
echo "Espace après :"
df -h /

echo ""
echo "=== Nettoyage terminé ==="
sudo chmod +x /usr/local/bin/clean-disk.sh

Ajouter au cron (hebdomadaire) :

sudo crontab -e
0 3 * * 0 /usr/local/bin/clean-disk.sh >> /var/log/clean-disk.log 2>&1

Alertes d'espace disque

Script d'alerte :

sudo nano /usr/local/bin/disk-alert.sh
#!/bin/bash

THRESHOLD=85
EMAIL="admin@votredomaine.com"

USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')

if [ $USAGE -gt $THRESHOLD ]; then
echo "ALERTE: Disque à ${USAGE}% sur $(hostname)" | \
mail -s "Alerte disque $(hostname)" $EMAIL
fi
sudo chmod +x /usr/local/bin/disk-alert.sh

Cron quotidien :

0 9 * * * /usr/local/bin/disk-alert.sh

Bonnes pratiques

  1. Surveillez régulièrement l'espace disque avec df -h
  2. Configurez des alertes avant d'atteindre 90%
  3. Automatisez le nettoyage avec des crons
  4. Limitez la taille des logs avec logrotate
  5. Stockez les backups ailleurs que sur le VPS principal
Conseil

Un disque ne devrait jamais dépasser 85% d'utilisation pour garder une marge de sécurité.