4 votes

Comment puis-je connaître l'utilisation du stockage fantôme ?

J'ai un serveur de fichiers Mac OS X 10.6.4 Snow Leopard Server (AFP) qui n'a plus d'espace de stockage sur le volume de démarrage depuis quelques semaines. Il faut environ deux jours pour que les 42 Go restants sur le volume de démarrage de 80 Go soient consommés, bien qu'un sudo du -chsx -I dev / n'indique toujours que 29 Go utilisés.

J'ai rencontré ce problème dans le passé avec un serveur Linux dont les journaux Apache étaient supprimés après N jours, mais le journal restait ouvert par Apache, ce qui empêchait la libération de l'espace de stockage. J'ai pu trouver le problème relativement facilement dans ce cas avec un sudo lsof mais je ne trouve pas facilement le coupable dans ce cas (s'agissant d'un serveur de fichiers, il y a un grand nombre de serveurs de fichiers). tonne de fichiers et de sockets ouverts). Comment puis-je trier lsof Les données de sortie peuvent-elles être classées par taille de fichier (et affichées dans un format convivial) afin que je puisse trouver le coupable ?

Le serveur dispose de 3 Go de RAM. Après 4 heures de fonctionnement, le moniteur d'activité indique 700 Mo libres, 1,5 Go inactifs et 200 Go de VM. mds est celui qui utilise le plus de VM (1,8 Go), AppleFileServer en 2ème position avec 500MB, et tout le reste utilise 10MB-75MB de VM. Cela dit, /private/var/vm ne fait que 128 Mo.

Le redémarrage du système élimine le problème, d'où ma conviction qu'il s'agit d'un espace de stockage libre qui est toujours maintenu ouvert par un ou plusieurs processus.

Toute autre hypothèse, suggestion, etc. est très appréciée.

18voto

simon Points 21

Vous pouvez trouver les plus grands fichiers ouverts avec :

sudo lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50

Ceci listera les fichiers réguliers (pas les pipes, sockets, etc) triés par taille dans l'ordre décroissant, et prendra les 50 premiers.

Vous pouvez également regarder quels sont les processus qui ont le plus de fichiers ouverts, avec quelque chose comme

sudo lsof | awk '$5 == "REG" {freq[$2]++ ; names[$2] = $1 ;} END {for (pid in freq) print freq[pid], names[pid], pid ; }' | sort -n -r -k 1,1

2voto

James L Points 5835

Je regarderais sudo lsof | grep deleted

1voto

Dan Albey Points 294

sudo lsof +L1 affichera les fichiers supprimés. Pour plus de rapidité, combinez cette option avec -Pn .

par exemple lsof -Pn +L1

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