我必须合并两个文件系统,一个是只读文件系统 (squashfs),另一个是读写文件系统 (ext4)。我的计划是将读写文件系统挂载到只读文件系统上,这样它看起来就是可写的。当我在只读文件系统上进行一些更改时,这些更改应该会转移到读写文件系统上。
我正在使用 Linux 3.17、Ubuntu 14.10,遇到了这些文件系统:aufs、unionfs 和 overlayfs。我不知道它们之间的区别是什么,也不知道在这种情况下应该使用什么。有人能告诉我 aufs、unionfs 和 overlayfs 之间的区别吗,或者只是建议在这种情况下使用哪个最好?
答案1
overlayfs 已合并到内核 3.18-rc2 中。现在它已经升级到主 Linux 树,我们可以合理地猜测 overlayfs 将来会得到更广泛的应用。
答案2
关于 gentoo 的一些阅读维基百科。揭示了 unionfs 和 OverlayFS 之间的一个区别。速度 OverlayFS 将所有文件 i/o 请求直接发送到底层文件系统。因此可能比 unionfs 更快。aufs 提供了一组超集的 OverlayFS 功能。换句话说,有些设置可以用 aufs 完成,但不能用 OverlayFS 完成。aufs 不在官方内核中,但应该包含在您的系统中。
aufs 支持选择哪个分支可写,而不是由驱动程序进行硬编码。目前还不清楚 overlayfs 是否支持,unionfs 是否不支持。
对于内核 3.17,主线中既不包含 overlayfs 也不包含 aufs。Ubuntu 可能选择包含它们。如果没有,则需要安装适当的内核模块。
答案3
我无法提供对比,但我确实使用 Aufs。如果你按照本文中的说明操作博客文章您可以通过示例 3 看到如何指定哪个分支可以是只读的或读写的。
通常,除非您按照示例 3 另行指定,否则将默认写入第一个文件系统。
mount -t aufs -o br=/read/write/dir=rw:/read/only/dir/=ro -o udba=reval none /tmp/aufs-root/
ubda
参数是您如何控制对文件夹直接所做的更改如何反映在联合系统中。