我的系统是 CentOS 6 x86_64,根分区格式为 ext4。
df
报告已用空间约为 3Gb:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md1 20158260 3433724 15700540 18% /
但du -sm -x /
声称实际使用的还不到 1 Gb:
[root@xxxx ~]# du -sm -x /
948 /
我想知道这里发生了什么。使用率数字在重启后立即发生变化。文件系统声称它是干净的,日志中没有错误。我发现这,但它没有解释问题的根源。我应该重新格式化分区吗?有什么方法可以追踪这种额外的使用情况吗?
du
我还执行了以下操作来检查在非空挂载点上的挂载没有隐藏任何数据:
[root@xxxx ~]# mount -o bind / /mnt/root
[root@xxxx ~]# du -sm /mnt/root/
949 /mnt/root/
[root@xxxx ~]#
不,我的情况不是这样。
答案1
我首先想到的是你删除了文件。使用lsof -n | grep deleted
会对你有所帮助。该命令的输出是否显示了一些文件?(也许你还有一个巨大的日志文件正在写入)。如果你有由进程(系统记录器或类似 Apache Web 服务器的东西)打开的文件正在写入,它们可能会占用大量磁盘空间,最简单的方法是重新启动拥有这些已删除文件的进程。
如果没有任何被删除的文件,您能粘贴运行的输出tune2fs -l
吗?
答案2
下次重启时强制检查文件系统。您可能有未恢复的保存数据的 inode。
# touch /forcefsck # Run as root, then reboot.
来源: http://ubuntuforums.org/showthread.php?t=1360204&p=9209650#post9209650
答案3
Ext3/4 最多可使用 400MB 的日志文件,但您看不到。日志大小会根据所创建的文件系统的大小自动缩放,也可以在创建文件系统时手动指定。
答案4
今天,我在几台运行应用程序的主机上遇到了类似的问题,有人删除了该应用程序生成的 .tmp 文件,但该进程仍然打开了一个文件句柄,我通过 lsof 找到了它,当我重新启动该进程时,磁盘空间被释放了。 lsof 是解决这个问题的好地方 -