Linux 上的联合挂载

Gil*_*il' 13 linux filesystems union-mount

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

许多联合挂载技术可用于现代 Linux 系统:OverlayFSaufsUnionFS、各种基于 FUSE 的文件系统……

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

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

使用示例将不胜感激。

请避免专注于特定点的答案。我正在寻找查看可用软件的综合答案(类似于什么是绑定安装?)。好的答案将得到奖励。

Aus*_*arn 13

在每个具体点上:

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

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

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

  • 可配置的写入策略:我不知道具体是什么,但我认为大 3(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 的问题。