Voici mon problème, visible dans un graphique munin :
Mes inodes utilisés/ouverts sont "soudainement" en augmentation constante.
Existe-t-il un moyen de déterminer quel processus conserve les inodes les plus ouverts ? J'ai utilisé l'approche de https://unix.stackexchange.com/questions/117093/find-where-inodes-are-being-used et j'ai trouvé et nettoyé quelques dossiers avec des mails et des logs dont je pouvais me débarrasser... Pourtant, si les inodes sont OUVERTS, il doit y avoir un processus qui les maintient en service, non ? Ce n'est pas forcément du dossier contenant le plus de fichiers que provient l'augmentation - ou est-ce que je me trompe ?
J'aimerais donc savoir qui les garde ouverts et suivre l'utilisation pour voir d'où vient l'augmentation.
Mise à jour
En me basant sur le script d'Andrew, j'ai créé une version de celui-ci qui affiche également le nom du processus. Comme j'ai quelques processus nginx/apache en cours d'exécution qui peuvent respawn, j'aimerais voir les résultats sur le nom du processus.
for dir in /proc/*/fd;
do
echo -n "$dir ";
pid=`expr "$dir" : '\/proc\/\(.*\)\/.*'`; # extract the pid
pname=`ps -p $pid -o comm=`; # grab process name
echo -n "$pname ";
ls $dir 2>/dev/null | wc -l;
done | sort -n -k 3
Exemple de sortie :
/proc/4612/fd sshd 49
/proc/46470/fd node 60
/proc/5655/fd nginx 66
/proc/6656/fd nginx 76
/proc/7654/fd nginx 81
/proc/8578/fd dovecot 107
/proc/9657/fd nginx 117
/proc/3495/fd java 146
/proc/4785/fd mysqld 382
Le prochain test consisterait à enregistrer la distribution dans le temps pour voir ce qui change et comment cela est corrélé avec le nombre de /proc/sys/fs/inode-nr que Morgan a mentionné.
Un an plus tard...
Un certain temps a passé, voici un nouveau graphique
Et devinez quoi, fin septembre est le moment où un disque défectueux a été remplacé. Il semble donc que tout le désordre ait été généré par une erreur de disque. Néanmoins, les scripts sont toujours utiles !