2010-12-12 73 views
4

J'ai une tranche vps en cours d'exécution centos 5.5 Je suis censé avoir 15 Go d'espace disque, mais selon df il semble doubler mon utilisation de l'espace disque.du -skh * dans/retourne une taille très différente de df sur centos 5.5

quand je lance du -skh * dans/en tant que root i get:

[[email protected] /]# du -skh * 
0  aquota.group 
0  aquota.user 
5.2M bin 
4.0K boot 
4.0K dev 
4.9M etc 
2.5G home 
12M  lib 
14M  lib64 
4.0K media 
4.0K mnt 
299M opt 
0  proc 
692K root 
23M  sbin 
4.0K selinux 
4.0K srv 
0  sys 
48K  tmp 
2.0G usr 
121M var 

cela est compatible avec ce que j'ai téléchargé sur la machine, et ajoute jusqu'à environ 5gigs.

mais quand je lance df i get:

[[email protected] /]# df 
Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/simfs   15728640 11659048 4069592 75%/
none     262144   4 262140 1% /dev 

il me montre en utilisant presque 12 concerts déjà. Quelle est la cause de cette divergence et que je peux faire quelque chose à ce sujet, j'ai prévu le serveur basé sur 15 concerts, mais maintenant il ne me laisse plus que 7 concerts.

merci.

Répondre

11

La cause la plus fréquente de cet effet est les fichiers ouverts qui ont été supprimés.

Le noyau libérera uniquement les blocs de disque d'un fichier supprimé s'il n'est pas utilisé au moment de sa suppression. Sinon, cela est différé jusqu'à la fermeture du fichier ou le redémarrage du système.

Une astuce commune du monde Unix pour vous assurer qu'aucun des fichiers temporaires sont laissés est autour des axes suivants:

  • Un processus crée et ouvre un fichier temporaire

  • Tout en maintenant le descripteur de fichier ouvert , le processus délie (par exemple le fichier), suppression

  • le processus lit et écrit dans le fichier en utilisant normalement le descripteur de fichier

  • Le processus ferme le descripteur de fichier quand il est fait, et le noyau libère l'espace

  • Si le processus (ou le système) se termine de façon inattendue, le fichier temporaire est déjà supprimé et aucun nettoyage est nécessaire. En prime, la suppression du fichier réduit les risques de collision de noms lors de la création de fichiers temporaires et ajoute une couche supplémentaire d'obscurité sur les processus en cours - pour tout le monde sauf l'utilisateur root.

Ce comportement garantit que les processus ne doivent pas traiter les dossiers qui sont soudainement tirés sous leurs pieds, et que les processus ne sont pas de se consulter afin de supprimer un fichier. C'est un comportement inattendu pour ceux qui viennent de systèmes Windows, car vous n'êtes normalement pas autorisé à supprimer un fichier en cours d'utilisation.

La commande lsof, lorsqu'il est exécuté en tant que root, montrera tous les fichiers ouverts et il indique précisément les fichiers supprimés qui sont supprimés:

# lsof 2>/dev/null | grep deleted 
bootlogd 2024  root 1w  REG    9,3   58  917506 /tmp/init.0W2ARi (deleted) 
bootlogd 2024  root 2w  REG    9,3   58  917506 /tmp/init.0W2ARi (deleted) 

arrêter et redémarrer le processus de culpabilité, ou tout simplement redémarrer le serveur doit résoudre ce problème.

Les fichiers supprimés peuvent également être maintenus ouverts par le noyau si, par exemple, il s'agit d'une image de système de fichiers montée. Dans ce cas, démonter le système de fichiers ou redémarrer le serveur devrait faire l'affaire.

Dans votre cas, à en juger par la taille de l'espace "manquant", je rechercherais toute référence au fichier que vous avez utilisé pour configurer le VPS, par exemple. l'image DVD Centos que vous avez supprimée après l'installation.

+0

Merci de mentionner que le noyau pourrait contenir le fichier (et donc lsof ne l'affiche pas). J'avais un gros fichier (un groupe de volumes lvm clairsemé) associé à un périphérique en boucle et qui mangeait mon espace libre, mais lsof ne montrait rien, bien sûr. – Augusto

2

J'ai eu le même problème avec le serveur FreeBSD. Le redémarrage a aidé.

+0

vous avez raison de redémarrer l'a résolu. – Kalendae

3

Un autre cas que j'ai rencontré, même si cela ne semble pas être votre problème, est si vous montez une partition "au-dessus" des fichiers existants. Si vous le faites, vous masquez les fichiers existants qui se trouvent dans le répertoire de la partition montée (le point de montage) à partir de la partition montée.

Pour réparer: arrêtez tous les processus avec des fichiers ouverts sur la partition montée, démontez la partition, recherchez et déplacez/supprimez tous les fichiers qui apparaissent maintenant dans le répertoire des points de montage.