ファイルを削除しても空き容量が増えませんか?

ファイルを削除しても空き容量が増えませんか?

オペレーティングシステムはDebianです。出力df -h /

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       99G  97G  0   100% /

lsof/var/log/syslogファイルハンドルが開いていますが/var/log/syslog.7.gz

/var/log/syslog.7.gzそのため、数十メガバイトのディスク容量を確保するために削除しました。

再出力df -h /

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       99G  97G  0   100% /

/var/logの一部のファイルでこれを試しました。まず、lsofを使用してファイルハンドルが開いていないことを確認し、削除しようとしたらすぐにdfを確認しましたが、availはまだ0でした。さまざまなサイズのさまざまなファイルを使用してこれを行います。ただし、-hなしでdfを実行すると、「使用されている」スペースが少なくなることがわかるので、少なくともそれはすべてです。

ここで何が起こっているのでしょうか?再起動せずに「使用可能な」量を増やすにはどうすればよいですか?

答え1

いくつかの問題:

  1. -h数値がギガバイト単位の場合、「数十メガバイト」の節約効果は、人間が読める出力には表示されません。
  2. 削除したが他のプロセスでまだ開いているファイルはまだ存在します。これは、プログラムでまだ開いているログファイルを削除しようとしたときに発生する可能性があります。
  3. rootほとんどのLinuxファイルシステムには、ユーザー(およびほとんどのデーモン)のみを埋めることができる「予約済み」スペースがあります。解放されても一部スペースが不足すると、通常のユーザーはまだパーティションに書き込むことができません。同様の方法でtune2fs予約された金額を確認できます。

答え2

df-hあなたの場合、表示されるデータはGb単位です。削除された複数のMbファイルはここには表示されません。

おっしゃるとおり、そうでなければ-h使用されるスペースが減ります。それで空間を取り戻しているのです。それだけでは十分ではありません。

削除されたがまだ使用されている大容量ファイルを見つけて(lsof | grep deletedここで役に立つ可能性がある)、プロセスを再起動して大容量ファイルを開く必要があります。

大容量ファイルも見つける必要があります。できるたとえば、find / -xdev -size +500M -ls500Mbを超えるルートパーティションのすべてのファイルが検索されます。 100Gbファイルシステムでは少し時間がかかるかもしれませんが、無駄になる大容量ファイルを見つけるのに最適な方法です!

試すことができるいくつかのショートカットがあります。例えば、 を検索すると/tmp/var 多くの内容を見ることができ/var、特にパッケージをダウンロードしてapt削除することがdu -hs /var/* | sort -hできるので、時には便利です。

関連情報