在我们的一些服务器上/var/log
,这是一个单独的 ext4 分区,显示 4.8G 空间的 100% 已被使用。但实际上它占用了大约 200M 的磁盘空间。应用程序仍然可以将日志写入目录。这个错误的原因可能是什么?
其他信息:
Debian 版本:9.9
Inode 使用 1%
答案1
这通常发生在您删除已打开的文件时。假设您有一个大文件,并且有一个进程正在写入它,然后您删除了它 - 空间仍然被占用,直到文件被关闭,因为进程无法收到文件已被删除的通知。
首先,您需要找到导致问题的进程 - 尝试一下lsof | grep deleted
,现代 Linux 会告诉您。如果没有 - 使用lsof
查找目录中未列出的打开文件。
其次,您需要刷新进程,通常 kill -HUP 会有所帮助,文件应该会重新打开。如果没有帮助,请重新启动相应的服务。
下次您需要释放空间时,请使用truncate --size 0 aaa.log
或> aaa.log
。这将截断文件,但使其保持完整。