删除文件不会增加可用空间?

删除文件不会增加可用空间?

操作系统是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 仍然为零。使用一堆不同大小的不同文件来完成此操作。然而,当在没有 -h 的情况下执行 df 时,我可以看到“已用”空间下降,所以至少是这样。

这里究竟发生了什么?如何在不重新启动的情况下增加“可用”金额?

答案1

几个问题:

  1. -h如果数字是千兆字节,那么“几十兆字节”的节省不会显示在人类可读的输出中。
  2. 您删除的但仍被其他进程打开的文件仍然存在;如果您尝试删除程序仍打开的日志文件,则可能会发生这种情况。
  3. 在大多数 Linux 文件系统上,都有一个“保留”空间,只有root用户(和大多数守护进程)才能填充。就算你解脱了一些空间,普通用户可能仍然无法写入该分区。您可以使用类似的方法tune2fs来查看预留了多少。

答案2

df-h在您的情况下,显示的数据以 Gb 为单位。删除几个 Mb 文件不会显示在这里。

正如您提到的,如果没有,-h您确实会看到已用空间下降。所以你正在回收空间。只是还不够。

您需要查找可能已被删除但仍在使用的大文件(lsof | grep deleted可以在此处提供帮助)并重新启动进程以打开大文件。

您还需要查找大文件被删除;例如,find / -xdev -size +500M -ls将找到根分区上大小超过 500Mb 的所有文件。在 100Gb 文件系统上,这可能需要一些时间,但这是查找大型浪费文件的好方法!

你可以尝试一些捷径;例如,只搜索/tmpand/var 在 中看到很多东西并不罕见/var,特别是用 and 下载的包apt,因此可以删除,所以du -hs /var/* | sort -h有时很有用。

相关内容