Question

Récemment, j'ai couru hors de l'espace disque sur un disque sur un serveur FreeBSD.J'ai tronqué le fichier qui a été à l'origine des problèmes, mais je ne vois pas de changement reflète lors de l'exécution de df.Quand je le lance du -d0 sur la partition, il affiche la bonne valeur.Est-il un moyen de forcer cette information à mettre à jour?Quelle est la cause de la sortie ici, à la différence?

Était-ce utile?

La solution

C'est probablement ce qui les centres comment vous tronqué le fichier. du et df rapport des choses différentes comme ce post sur unix.com explique.Tout simplement parce que l'espace n'est pas utilisé ne signifie pas nécessairement que c'est gratuit...

Autres conseils

Dans BSD une entrée de répertoire est tout simplement l'une des nombreuses références à la sous-jacentes fichier de données (appelé un inode).Quand un fichier est supprimé avec la rm(1) commande uniquement le nombre de références est diminué.Si le nombre de références est toujours positif, (par ex.le fichier a d'autres entrées de l'annuaire en raison des liens symboliques), alors le sous-jacent de données de fichier n'est pas supprimé.

Nouveaux BSD souvent, les utilisateurs ne se rendent pas compte qu'un programme a un fichier à ouvrir est aussi une référence.L'empêche les sous-jacents des données du fichier d'aller loin alors que le processus est en l'utilisant.Lorsque le processus se termine le fichier si le nombre de références tombe à zéro l'espace fichier est marqué comme disponible.Ce schéma est utilisé pour éviter les Microsoft Windows type de questions où il ne sera pas vous permettre de supprimer un fichier parce que certains programme quelconque, toujours ouvert.

Un moyen facile d'observer c'est de faire ce qui suit

cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test

Jusqu'à ce que le processus d'arrière-plan est mis fin à l'espace de fichier utilisé par /tmp/cat-test restent alloués et indisponible tel que rapporté par df(1) mais le du(1) la commande ne sera pas en mesure de rendre compte comme il n'a plus de nom de fichier.

Notez que si le système doit bloquer sans le processus de la fermeture du fichier, le fichier de données sera toujours présente mais non référencées, un fsck(8) seront nécessaires pour récupérer le système de fichiers de l'espace.

Les processus de tenue de dossiers ouverts est une des raisons pour lesquelles le newsyslog(8) de commande envoie des signaux à syslogd ou d'autres journalisation des programmes afin de les informer qu'ils doivent fermer et ré-ouvrir leur journal de fichiers après il a tourné entre eux.

Softupdates peut également avoir une incidence système de fichiers de l'espace comme étant l'inode de récupérer de l'espace peut être différé;la synchronisation(8) de commande peuvent être utilisés pour encourager cette arriver tôt.

Df --sync travail?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top