35 votes

Trouver les répertoires avec beaucoup de fichiers dans

Donc un de mes clients a reçu un email de Linode aujourd'hui disant que leur serveur causait l'explosion du service de sauvegarde de Linode. Pourquoi ? Trop de fichiers. J'ai ri et j'ai couru :

# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/xvda        2.5M  2.4M   91K   97% /

Merde. 2,4 millions d'inodes utilisés. Qu'est-ce qui s'est passé ?

J'ai cherché les suspects évidents ( /var/{log,cache} et le répertoire où tous les sites sont hébergés) mais je ne trouve rien de vraiment suspect. Quelque part sur cette bête, je suis certain qu'il y a un répertoire qui contient quelques millions de fichiers.

Pour le contexte, l'un de mes mon Les serveurs occupés utilisent 200k inodes et mon ordinateur de bureau (une vieille installation avec plus de 4TB de stockage utilisé) est seulement un peu plus d'un million. Il y a un problème.

Ma question est donc la suivante : comment trouver où se situe le problème ? Y a-t-il un du pour les inodes ?

0voto

thinsoldier Points 69

Cela a fonctionné pour moi quand les autres ont échoué sur Android à travers le Shell :

find / -type d -exec sh -c "fc=\$(find '{}' -type f | wc -l); echo -e \"\$fc\t{}\"" \; | sort -nr | head -n25

0voto

Tommy Bravo Points 101

J'aime utiliser quelque chose comme du --inodes -d 1 pour trouver un répertoire qui contient soit récursivement soit directement beaucoup de fichiers.

J'aime aussi cette réponse : https://unix.stackexchange.com/a/123052

Pour les plus paresseux d'entre nous, voici l'essentiel :

du --inodes -S | sort -rh | sed -n \
    '1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X