我有一个在 tmpfs 上带有 / 的系统。大多数 / 子目录都挂载了 aufs,覆盖读写根文件系统和只读基本文件系统(系统从只读介质启动)。早些时候,我曾经使用 unionfs 而不是 aufs。它一直正常工作,直到最近 tmpfs 开始填满。我不确定是什么触发了变化。可能是 unionfs 到 aufs 的更改、内核升级或系统中的某些更改以及它如何访问文件系统。
无论如何,似乎是 tmpfs 的行为有些错误。
虽然系统应该不会对tmpfs写很多,但是用完还是蛮多的:
# df -m /
Filesystem 1M-blocks Used Available Use% Mounted on
tmpfs 200 50 151 25% /
Run Code Online (Sandbox Code Playgroud)
尽管:
# du -smx /
2 /
Run Code Online (Sandbox Code Playgroud)
这是我的测试系统,基本上什么都不做。当使用率迅速超过 90% 并且系统崩溃时,生产系统上的东西就会磨损。
我怀疑这些已删除的文件仍然打开,但是:
# lsof | grep deleted
Run Code Online (Sandbox Code Playgroud)
什么都不显示。
另一个想法是, / 上的某些文件被安装在其上的文件系统屏蔽,所以我尝试了这个:
# mount --bind / /mnt
# du -sm /mnt
2 /mnt
Run Code Online (Sandbox Code Playgroud)
尽管如此,仍然没有丢失 48MB 的痕迹。
我怎样才能找出是什么用完了我的 tmpfs 文件系统?
系统信息:
# uname -rm
3.4.6 …
Run Code Online (Sandbox Code Playgroud) 我在 Redhat 的 Fedora 或任何其他可堆叠的文件系统中找不到 Aufs。
这似乎是由于 SELinux 的重新标记限制所致。
有没有办法在不诉诸文件/目录复制的情况下实现类似的目标。
我有以下目录列表:
/proj/online/src/main/java
/proj/online/src/main/resources
/proj/online/src/test/java
/proj/client/src/test/scala
/proj/common/src/main/resources
/proj/common/src/main/scala
/proj/common/src/test/resources
/proj/common/src/test/scala
/proj/integration/src/main/resources
/proj/integration/src/main/scala
/proj/integration/src/test/scala
/proj/mockfeedserver/src/main/scala
/proj/mockfeedserver/src/test/scala
/proj/server/src/main/scala
/proj/server/src/test/scala
/proj/foit/src/main/resources
/proj/foit/src/main/scala
/proj/foit/src/test/resources
/proj/foit/src/test/scala
Run Code Online (Sandbox Code Playgroud)
我想向编译器提供以下内容*:
/tmp/foo/src/main/scala /tmp/foo/src/main/resources /tmp/foo/src/test/scala /tmp/foo/src/test/resources
使用 AUFS,我可以使用以下几个命令来实现这一点:
mount -t aufs -o br=r:/proj/common/src/main/scala=r:/proj/integration/src/main/scala=r:/proj/mockfeedserver/src/main/scala=r:/proj/server/src/main/scala=r:/proj/foit/src/main/scala=r -o udba=reval none /tmp/foo/src/main/scala
Run Code Online (Sandbox Code Playgroud)
所以这将挂载 /tmp/foo/src/main/scala 作为所有 src/main/scala 目录的组合。
太好了,但我在 Fedora 上!在没有 AUFS 或 UnionFS 的情况下,我真的看不到实现这一目标的方法。我以前听说过挂载重新绑定,它有帮助吗,还是应该更改我的发行版?