![ZFS:处理大量并发 RW 操作和故障转移](https://linux22.com/image/793044/ZFS%EF%BC%9A%E5%A4%84%E7%90%86%E5%A4%A7%E9%87%8F%E5%B9%B6%E5%8F%91%20RW%20%E6%93%8D%E4%BD%9C%E5%92%8C%E6%95%85%E9%9A%9C%E8%BD%AC%E7%A7%BB.png)
我有一个 ZFS/Linux 实例,其中的文件可以增长到 ZFS 支持的那些疯狂的大小。
大量并发用户需要通过公共互联网读取/写入此文件。如何在具有相同文件系统数据和元数据的 ZFS/Linux 实例池中平衡如此大量的文件访问负载?
另外 - 虽然 ZFS 可以从轻微的位腐烂中自我修复,但是在发生总体硬件故障的情况下,如何实现故障转移到一组复制的 ZFS/Linux 实例?
似乎没人在 ZFS 上下文中讨论副本、故障转移和负载平衡。或者,也许我在网上搜索的时间还不够长。
答案1
ZFS 和 BTRFS 都不是用于在实例之间实时复制的。您需要查看分布式文件系统的特定类别。维基百科页面分布式文件系统比较给出了一个很好的起始列表。
答案2
我不太了解 ZFS“RAID”模式,但 BTRFS“RAID”模式独特且特殊,并且具有极大的灵活性、内置负载平衡和冗余。
例如,BTRFS RAID1 不是在块级别上工作,而是在文件系统级别上工作。当您使用 4 个磁盘创建 BTRFS RAID1 时,RAID 模式表示每个文件至少存储在 2 个不同的磁盘上(在文件系统级别上)。因此,例如,您有磁盘 A、B、C 和 D,现在您将文件 TESTFILE 保存到 BTRFS RAID1 上,TESTFILE 随后作为完整副本保存在 4 个驱动器中的 2 个驱动器上。这为您带来了性能优势,因为当时只有 2 个驱动器真正需要工作,读取文件也是如此。
使用 BTRFS,您可以毫无问题地向“RAID”阵列添加/删除磁盘。您可以使用send
/receive
命令复制整个 BTRFS 文件系统或仅复制文件系统的子卷部分(对于备份很有用)。
我对 ZFS 确实不太了解,但我可以想象它也具有类似 BTRFS 的功能。如果它没有这样的功能,我会用 BTRFS 替换它。