Comparateur indépendant · sans classement payant
Accueil / Blog / Technique / Inodes épuisés : pourquoi l'espace disque semble disponible

Inodes épuisés : pourquoi l'espace disque semble disponible

df -h affiche 40 % libre, yet impossible de créer un fichier : les inodes sont saturés. Classique après millions de petits fichiers cache ou session.

Rédaction Hébergeurs.eu 5 min

Le deploy échoue : « No space left on device ». df -h montre 35 % libre sur /var. Personne ne regarde df -i : 100 % inodes utilisés dans storage/framework/sessions — 4 millions de fichiers de 100 octets.

Les inodes sont le plafond invisible des petits fichiers.

Comprendre les inodes

Chaque fichier, symlink, socket = 1 inode (simplifié). Création impossible si inode table pleine même avec Go libres.

df -i avant chaque incident « espace ».

Diagnostic

for d in /*; do echo $(find $d -xdev | wc -l) $d; done — lent mais révélateur.

Plus rapide : find /var/www -xdev -type f | cut -d/ -f1-5 | sort | uniq -c | sort -n.

Causes web classiques

Sessions file driver, cache view compilé, failed queue jobs, extract zip temporaire, logs multi-fichiers par requête.

FixAction
SessionsRedis/database driver
CacheTTL + prune scheduled
Queue failedHorizon/cleanup job
Upload tempcron tmpwatch

Cleanup sans casse

Arrêtez écriture (maintenance mode), purge ciblée, pas rm -rf aveugle sur sessions actives.

Vérifiez legal hold / audit avant purge logs.

Architecture

Séparer /var/cache ou sessions sur volume dédié. Sharding hash subdirs (aa/bb/file). Monitor inode % comme disk %.

Prévention continue

Alerte inode 85% comme disque 85%. Cron prune cache nightly avec metric fichiers supprimés.

Sessions : migrer Redis avant inode incident — retrofit urgent coûte plus.

Évitez millions fichiers flat : hash subdirs ab/cd/ef123.

Conteneurs : limit log rotation driver json-file max-size.

Support ticket inode quota mutualisé : demander chiffre avant upgrade plan — parfois gratuit.

Migration sessions file → Redis

Plan : dual-write sessions temporaire, flip config, purge file sessions après 24h TTL max.

Mesure inode before/after — preuve fix.

Framework cache prefix : versionner clé cache (v2_) pour purge mass safe.

Maildir thousands fichiers : migration vers DB ou object pour pièces jointes — inode fix temporaire purge, pas durable.

CI artifact cache local : nettoyage branch stale — chaque branch = milliers fichiers.

Outils diagnostic

ncdu interactif pour naviguer millions petits fichiers. debugfs expert only.

Mail queue exim/qmail : chaque message fichier — purge queue si spam attack inbound.

Plan capacity : inode count at mkfs if rebuilding FS — mkfs.ext4 -N tuning.

Synthèse opérationnelle

Inodes épuisés signalent design inadapté (sessions fichier, cache illimité) plus que manque d'espace Go. df -i systématique sur « no space left ». Migration sessions Redis, prune cache, sharding hash directories.

Conteneurs et mutualisé : quotas inode panel — ticket support avant saturation.

Plan remediation 48h

Jour 1 : confirm df -i, locate top directory, enable maintenance if needed, prune cache safe subset. Jour 2 : migrate sessions Redis, deploy cron prune, add inode alert 85%. Semaine : refactor cache strategy, hash subdirs, capacity review with host support.

Communication interne : inode incident ≠ disk full — message clair évite mauvaise action finance « acheter Go ».

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Prévention inode

Alerte 85%. Sessions Redis migration. Hash subdirs. Cron prune. Support quota inode avant upgrade plan inutile.

Formation : inode ≠ Go libres. Template repo sessions Redis default.

Conteneurs et cache

json-file log max-size. Cache prefix versionné v2 pour purge safe.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Décider et avancer sans angle mort

  1. Confirmer avec df -i — pas confondre avec disque plein en Go ; message clair à la finance.
  2. Localiser le répertoire fautif — cache sessions, thumbnails, logs fragmentés, millions de petits fichiers.
  3. Migrer sessions vers Redis — avant l'incident si possible ; retrofit urgent coûte plus.
  4. Hasher les sous-répertoiresab/cd/ef123 au lieu de millions de fichiers à plat.
  5. Alerter inode à 85 % — comme disque 85 % ; cron prune nightly avec métrique.

Demandez le quota inode au support mutualisé avant upgrade — comparez via l'annuaire et le comparateur.

Questions fréquentes

Différence espace disque et inodes ?

Le disque peut afficher des Go libres alors que le système de fichiers n'a plus d'inodes pour créer un fichier — fréquent avec millions de petits fichiers cache ou sessions.

Que faire en urgence ?

Confirmez df -i, identifiez le top répertoire, purgez cache sûr ou migrez sessions vers Redis. N'achetez pas des Go supplémentaires — le problème n'est pas la capacité bloc.


Si votre cache écrit un fichier par requête, le plafond inode arrive avant le plafond disque — comptez.

Comparez les hébergeurs européens

Filtrez par conformité, localisation et usage — puis ouvrez les fiches pour vérifier le périmètre réel.

Voir l'annuaire
Blog

À lire aussi

Tous les articles →