開いている削除されたファイルからディスク領域を解放する最良の方法

開いている削除されたファイルからディスク領域を解放する最良の方法

こんにちは。複数の削除されたファイルがあり、何らかの理由でディスク領域を占有していたファイルのプロセスを明示的に終了するまで、削除されたファイルに関連するディスク領域は使用できません。

$ lsof /tmp/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)

上記で削除したファイルが占めるディスク容量が原因で、Tabキーを使用してファイルパスをオートコンプリートしようとするとエラーが発生するなどの問題が発生する可能性があります。bash: cannot create temp file for here-document: No space left on device

ただし、そのPIDのスペースを実行した後、kill -9 1623そのPIDのスペースが解放され、エラーは発生しなくなります。

私の質問は次のとおりです

  • ファイルを最初に削除したときにそのスペースがすぐに解放されないのはなぜですか?
  • 削除されたファイルに関連するファイルスペースを回復するための最良の方法は何ですか?

私が使用した誤った用語やこの状況に関するその他の情報がある場合は、お知らせください。

ベストアンサー1

unice では、ファイル名はファイルを含むメモリ (ハードドライブまたは RAM 対応ファイルシステムの場合もあります) へのポインタ (インデックスノード) にすぎません。各ファイルは、自分を指すリンクの数を追跡します。リンクはファイル名(同じファイルへの複数のハードリンクがある場合は複数形)であり、ファイルが開かれるたびにプロセスは実際に「リンク」を保存します。 「同じ空間に。

スペースは、リンクが残っていない場合にのみ物理的に解放されます(したがって、そのスペースに到達できません)。これが唯一合理的なオプションです。ファイルの使用中に他の人がファイルにアクセスできなくても構いません。ファイルを使用しており、ファイルが閉じられるまで制御を続けることができます。ファイル名が消えたり、移動したり、別のものを確認してください。これは一時ファイルにも当てはまります。一部の実装ではファイルを作成してすぐにリンクを解除するため、ファイルシステムには表示されませんが、ファイルを作成したプロセスはそのファイルを正常に使用しています。 Flashプラグインは特にこのアプローチを好みます。ダウンロードしたすべてのビデオファイルは開いていますが、ファイルシステムはそのファイルを表示しません。

したがって、答えはプロセスでまだファイルが開いている間してはいけないスペースを取り戻してください。リリースされていませんが、積極的に使用されています。これがアプリケーションがファイルを使い終わった後に実際にファイルを閉じる必要がある理由の1つです。一般的な使用では、そのスペースを空きスペースと見なすべきではなく、一般的ではありません。意図的にリンクを解除した一時ファイルを除外すると、未使用と見なしたいがまだ開いているファイルは実際には存在しないでください。このタスクを頻繁に実行するプロセスがあるかどうかを確認し、どのように使用されるかを検討するか、より多くのスペースを見つけてください。

おすすめ記事