df -h
报告“/”分区已满 100%。du -hs *
在此分区的每个目录上运行均显示仍有大量空间。
tune2efs
报告只有一个块可用。fsck
同时运行,还显示所有块均已使用。
'/' 分区上的 ionode 使用率为 14%。
请注意,/var、/usr、/dev、/tmp、/home 安装在不同的分区上,并且其中有可用空间。
您能否告诉我导致所有块都被占用并且磁盘报告已满的可能原因,尽管空间很大。
答案1
除了打开文件问题(通常会导致可用空间不可用)之外,一个并不少见的问题是文件被挂载点屏蔽。例如,如果您有/tmp
一个单独的逻辑卷,但/tmp
根文件系统中的目录中仍有文件,这些文件将占用空间,但会被挂载隐藏。
尝试在启动时进入单用户模式,这样就不会运行任何可能导致挂载打开的程序,卸载所有内容,并确保在通常用作挂载点的目录中没有隐藏的文件。
答案2
这通常是由于打开一个文件进行写入,但该文件已被删除,但写入该文件的进程尚未重新启动,因此放弃了该文件。您可以使用lsof查找已打开但未链接(已删除)的文件
lsof +L1
应该可以解决问题。正如手册页所述:
格式为 的规范
+L1
将选择已取消链接的打开文件。格式为 的规范+L1 <file_system>
将选择指定文件系统上未链接的打开文件。
答案3
如果文件被删除,而另一个进程仍保持其打开状态,则该进程可以继续写入,最终会无形地填满磁盘。一旦保持文件打开状态的进程退出,这些块就会可用。
尝试评估每个正在运行的守护进程。如果可能,请重新启动它们。如果您无法弄清楚,重新启动机器应该可以解决问题。
答案4
这可能是因为部分可用空间是为 root 用户保留的。