2008-08-26 13 views
0

私は最近、FreeBSDサーバ上のドライブのディスク領域を使い果たしました。私は問題を引き起こしていたファイルを切り捨てましたが、dfを実行したときにその変更が反映されているとは思えません。パーティションにdu -d0を実行すると、正しい値が表示されます。この情報を強制的に更新する方法はありますか?ここでの出力が異なる原因は何ですか?FreeBSDで最新の情報を表示する `df`を取得します

答えて

2

ファイルを切り捨てた可能性があります。 duおよびdfは、this post on unix.com explainsと異なることを報告します。スペースが使用されていないからといって、必ずしも空き領域であるとは限りません。

-1

df --syncは機能しますか?

3

BSDのディレクトリエントリは、基本ファイルデータ(inodeと呼ばれます)への参照のひとつです。 rm(1)コマンドでファイルを削除すると、参照カウントだけが減少します。参照カウントがまだ正の場合(たとえば、ファイルにシンボリックリンクのために他のディレクトリエントリがある場合)、基礎となるファイルデータは削除されません。

新しいBSDユーザーは、ファイルを開いているプログラムにも参照があることに気付かないことがよくあります。これは、プロセスがそれを使用している間、下にあるファイルデータが去るのを防ぎます。プロセスがファイルをクローズするときに、参照カウントがゼロになると、ファイル・スペースは使用可能としてマークされます。このスキームは、特定されていないプログラムの中にはまだ開いているものがあるため、ファイルを削除できないMicrosoft Windowsタイプの問題を回避するために使用されます。

これを観察する簡単な方法は、バックグラウンド・プロセスは、DFによって報告されているようには/ tmp /猫のテストで使用されるファイル・スペースが割り当てられ、使用できないままになります終了するまで、次の

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

を行うことです(1 )du(1)コマンドは、もはやファイル名を持たないので、du(1)コマンドはそれを考慮することができません。

プロセスがファイルをクローズせずにクラッシュした場合でも、ファイルデータは残っていますが参照されていないので、ファイルシステムのスペースを回復するにはfsck(8)が必要です。

newsyslog(8)コマンドは、syslogdやその他のログプログラムに信号を送信して、ログファイルを閉じた後に再オープンする必要があることを通知する理由の1つです。

Softupdatesは、実際のinode領域のリカバリを延期することができるため、ファイルシステムのフリースペースに影響を与えることもできます。 sync(8)コマンドを使用して、これをより早く実行するよう促すことができます。

関連する問題