这里有一些想法-我仍在学习,并会随时更新。
如何选择联合文件系统
有两种查看方式:
- 每个人的功能如何比较?
- 对于某些常见用例,我应该选择哪一个?
我将比较unionfs / unionfs-fuse / overlayfs / aufs / mergerfs,后者是mhddfs的替代品。
每个人的特征
发展状况
- aufs似乎很活跃
- unionfs看起来很成熟,但还没有积极发展?
- unionfs-fuse似乎很活跃
- mergefs似乎很活跃
- overlayfs处于活动状态
发行/内核支持
有内核模式和用户系统模式文件系统,后者在FUSE上运行。内核模式的开销较少(代码在用户空间和内核空间之间切换时会有开销),但是Linux内核当前唯一支持的就是overlayfs。用户模式文件系统更易于分发到程序包。
- unionfs和aufs需要内核补丁
- unionfs不是由Debian发行的(其余是)
- unionfs-fuse和mergefs基于FUSE,因此不需要内核中的其他模块
- 从3.18(Debian Stretch)开始,overlayfs已经成为内核的一部分。
写时复制
这与以下Live CD用例有关:
用例
只读root / Live CD用例
这个想法是要拥有一个Linux系统的只读CD-ROM /分区。联合文件系统使用户看起来像是一个读写系统,因此他们可以进行更改。有一个读写文件系统(例如tmpfs RAM磁盘),用于存储用户所做的任何更改的“增量”,但不存储完整快照。
在这里,任何联合文件系统都可以。
Docker用例
我知道这是一个主要用例,但不知道细节-有人可以提供有关此方面的指导吗?
合并硬盘
例如,您可能/home
在不同的文件系统上有两组目录。或者,您可能正在使用第二个硬盘升级家用计算机,并且想要一个逻辑卷。
在这里,您实际上并不需要写时复制,因此,mergefs可能是最佳选择。
联合文件系统与LVM进行磁盘池化
我将列出一些可以用联合文件系统实现的用例,但不能列出LVM:
如果要使用第二个磁盘升级现有系统,则诸如mergefs之类的东西可能会更好,因为LVM会要求您重新格式化第一个硬盘,从而销毁其上的数据。联合文件系统将避免此步骤。
LVM可能会将文件拆分为两个物理硬盘(假设RAID 0),因此如果一个硬盘出现故障,您将丢失该文件。
例如,某些用户可能希望将其/home
目录保存在可以取出的USB记忆棒上。
在使用两个物理磁盘上的一个虚拟分区的情况下,使用LVM,您无需担心文件是保存在一个磁盘上还是另一个磁盘上。使用mergefs,系统可以根据可用空间的多少自动为您选择哪个。