Linux 上的联合挂载

Linux 上的联合挂载

A联合安装呈现单个层次结构中多个目录(分支)的组合视图。好的,但是我在实践中如何使用其中之一,以及哪一个呢?

现代 Linux 系统上可以使用许多联合安装技术:覆盖文件系统,奥夫斯,联盟FS,各种基于 FUSE 的文件系统,……

给定一个用例,我如何决定哪些用例是合适的?尤其:

  • 在典型系统上哪些需要 root 访问权限? (换句话说,非特权用户可以创建联合挂载吗?)
  • 哪些可以安装/(当然需要 root 访问权限)?
  • 哪些支持写入底层分支? (即,如果/foo/bar联合安装到/union,我可以写入/foo/bar吗?)
  • 哪些支持可配置的写入策略? (例如,当两个分支上都存在文件时,即使我从分支 A 获取内容,我是否可以将新创建​​的文件发送到分支 B?)
  • 哪些支持取决于文件的分支之间的优先级顺序? (例如,我总能在所有拥有该文件的分支中获得最新的文件吗?)

使用示例将不胜感激。

请避免回答集中于某一特定点的问题。我正在寻找审查可用软件的全面答案(类似于什么是绑定安装?)。好的答案将会有奖励。

答案1

对于每个具体点:

  • Root 访问:如果它使用 FUSE,则不需要 root,如果不使用 FUSE,则需要 root,除非您对功能(潜在危险)或命名空间进行特殊设置。

  • 安装在/:我假设您的意思是启动时作为根文件系统,在这种情况下,在内核模式下运行的任何文件系统在理论上都应该可以工作,尽管有些文件系统比其他文件系统更可靠。大多数 LiveCD 都这样做,因此我建议您在此处查找有关此特定点的信息。

  • 写入底层分支:这取决于你的意思。如果您的意思是将对已安装视图的写入传播到较低的分支,我不知道。如果您的意思是从主文件系统本身向带外写入较低的分支,从技术上讲,三大文件系统都这样做,但它们都需要重新安装以确保更改传播到已安装的视图。

  • 可配置的写入策略:我具体不知道这一点,但我认为三大巨头(UnionFS、AUFS 和 OverlayFS)不支持它。

  • 文件相关的优先级顺序:我认为这也属于第三个子问题,就像那里一样,我不知道有任何专门支持它的问题。

至于他们每个人的更多细节:

  • UnionFS:据我所知,这是 Linux 的原始可堆叠联合文件系统实现。它已经存在很长时间了,并且被许多 Linux LiveCD 使用。它在内核模式下运行,并且需要使用上游内核的补丁。

  • AUFS:最初是 UnionFS 的一个分支,然后变成了自己的东西。这个尝试合并主线,但因代码质量而被拒绝。它在一些发行版 LiveCD 中取代了 UnionFS,主要是 Debian 和 Gentoo 衍生品。与 UnionFS 一样,它在内核模式下运行,并且需要对上游内核进行补丁。

  • OverlayFS:我对这个最初的开发了解不多,除了它也受到一些 BSD 衍生品的支持之外。它特别是 Linux 内核中的上游覆盖/联合文件系统实现。它也在内核模式下运行。

  • UnionFS-FUSE:这个命名有点令人困惑的项目实际上与 UnionFS 没有任何关系,除了提供基本相同的功能之外。它是联合文件系统中使用最广泛的 FUSE 实现,但这就是我所知道的全部。

  • mhddfs:这是一个奇怪的异常值,与传统的联合文件系统相比,它更类似于文件粒度 RAID-0 实现。它支持根据空间使用情况平衡多个后备目录中的文件。它也是基于 FUSE 的。

需要注意的一些具体事项并非特定于特定实现:

  • 所有内核选项都对支持文件系统有限制,最明显的是不能与网络文件系统或 BTRFS 一起使用。

  • 所有 FUSE 实现在用作根文件系统时都会出现问题。这并非特定于联合文件系统实现,而是 FUSE 的一般问题。

相关内容