我正在研究一个非常大的文件服务器(70+TB,只服务于 NFS 和 CIFS)的 RAID 解决方案。我知道在硬件 raid 之上使用 ZFS raid 通常是禁忌的,但是我发现自己处于一种不寻常的情况。
我个人的偏好是设置大型RAID-51
虚拟磁盘。即两个镜像 RAID5,每个 RAID5 有 9 个数据 + 1 个热备用(所以我们不会丢失太多存储空间)。通过将数据镜像到两个不同的驱动器机箱上,这缓解了我的管理偏执,同时在危机发生之前允许每个镜像集中有 1 个磁盘故障。
然而,这个问题源于这样一个事实,即我们有现有的硬件 RAID 控制器(LSI Megaraid 集成磁盘机箱 + 服务器),仅许可用于 RAID5 和 6。我们还有一个现有的 ZFS 文件系统,这是预期的(但尚未配置)使用 RFS-1 提供 HA。
从我在文档中看到的内容来看,ZFS 不提供 RAID-51 解决方案。
建议是使用硬件 RAID 在每个机箱上创建两个大小相同的 RAID5 虚拟磁盘。然后将这两个 RAID5 虚拟磁盘作为 /dev/sdx 提供给它们各自的服务器。
然后使用 ZFS + RFS-1 将这两个虚拟磁盘镜像为 HA 镜像集(见图)
这是一个好主意,一个坏主意,还是只是一个丑陋(但可用)的配置。
有更好的解决方案吗?
有趣的问题...
我对使用RSF-1感到惊讶。你看过我的Linux 高可用性 ZFS指南吗?
可以设计您上面描述的内容,但是它可能过于复杂。
另外,这些都不是问题:
在高可用性中使用 ZFS 绝对是一个正常的请求。在硬件 RAID 上
使用ZFS是可以的。
您的设计问题在于您在解决方案中注入了更多的复杂性、性能损失和更多的故障点。
CIFS 和 NFS 工作负载可以从 ZFS 缓存中受益,因此这也必须考虑到拓扑结构中。
如果您受困于硬件并且无法规划具有多路径 SAS 磁盘的共享机箱解决方案,最好创建两个故障域并构建无共享解决方案或重新评估需求并确定可接受的损失。例如,您要防范哪些故障模式和情况?
如果我有您上面描述的设备,我会将两个存储服务器构建为单独的节点;将一个指定为主,另一个指定为辅助,并使用一种从主到辅助的连续 ZFS 异步复制形式。即使在繁忙的系统上,也可以以 15 秒的间隔安全地执行此操作。
如果您想同时使用两台服务器,您可以在每台服务器上提供不同的数据集并以两种方式复制。如果您需要在每个节点上使用硬件 RAID,那很好。您仍然可以利用 ZFS RAM 缓存、卷管理、压缩以及可能的 L2ARC 和 SLOG 设备。
设计更简单,性能将最大化,这为使用更快的缓存驱动器提供了机会,并消除了对 SAS 数据池磁盘的需求。如果需要,您还可以在节点之间添加地理分隔或引入第三个节点。