質問

最近、FreeBSD サーバー上のドライブのディスク容量が不足しました。問題の原因となっているファイルを切り詰めましたが、実行時に変更が反映されません。 df. 。走るとき du -d0 パーティションでは正しい値が表示されます。この情報を強制的に更新する方法はありますか?ここでの出力が異なる原因は何でしょうか?

役に立ちましたか?

解決

おそらくこれが中心です どうやって ファイルを切り詰めました。 デュ そして DF さまざまなことを次のように報告する unix.com のこの投稿で説明されています. 。スペースを使用しないからといって、必ずしも無料であるとは限りません...

他のヒント

BSD では、ディレクトリ エントリは、基礎となるファイル データ (inode と呼ばれる) への多くの参照のうちの 1 つにすぎません。rm(1) コマンドでファイルを削除すると、参照カウントのみが減少します。参照カウントがまだ正の場合 (例:ファイルにはシンボリックリンクにより他のディレクトリ エントリが含まれている場合)、基礎となるファイル データは削除されません。

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

これを観察する簡単な方法は、次のとおりです。

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

バックグラウンドプロセスが終了するまで、/tmp/cat-test によって使用されるファイルスペースは割り当てられたままになり、df(1) によって報告されるように使用できなくなりますが、du(1) コマンドは、ファイル名。

プロセスがファイルを閉じることなくシステムがクラッシュした場合、ファイルデータはまだ存在しますが参照されていないため、ファイルシステムのスペースを回復するために fsck(8) を実行する必要があることに注意してください。

ファイルを開いたままにするプロセスは、newsyslog(8) コマンドが syslogd または他のログ プログラムにシグナルを送信して、ログ ファイルをローテーションした後にログ ファイルを閉じて再度開く必要があることを通知する理由の 1 つです。

実際の i ノード領域の回復が延期される可能性があるため、ソフトアップデートはファイルシステムの空き領域にも影響を与える可能性があります。sync(8) コマンドを使用すると、これをより早く実行することができます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top