我有一个带有 / on tmpfs 的系统。大多数 / 子目录都安装了 aufs,用只读的基本文件系统覆盖读写根文件系统(系统从只读介质启动)。早些时候,我使用unionfs而不是aufs。它一直正常工作,直到最近 tmpfs 开始填满。我不确定是什么触发了变化。它可能是 unionfs 到 aufs 的更改、内核升级或系统中的某些更改以及它如何访问文件系统。
无论如何,似乎是 tmpfs 的行为有些错误。
虽然系统不应该向 tmpfs 写入很多内容,但其中有相当一部分已经用完了:
# df -m /
Filesystem 1M-blocks Used Available Use% Mounted on
tmpfs 200 50 151 25% /
尽管:
# du -smx /
2 /
这是我的测试系统,基本上什么都不做。当使用率迅速超过 90% 并且系统崩溃时,生产系统就会出现故障。
我怀疑这些已删除的文件仍然打开,但是:
# lsof | grep deleted
什么都没显示。
另一个想法是, / 上的某些文件被安装在其上的文件系统所掩盖,所以我尝试了这个:
# mount --bind / /mnt
# du -sm /mnt
2 /mnt
仍然没有丢失 48MB 的痕迹。
我怎样才能找出是什么用完了我的 tmpfs 文件系统?
系统信息:
# uname -rm
3.4.6 i686
更新:我试过内核 3.4.17 和 3.6.6——没有变化。