我正在研究用于非常大的文件服务器 (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 镜像集(见图)
这是一个好主意,一个坏主意,还是只是一个丑陋的(但可用)的配置。
还有更好的解决方案吗?
答案1
有趣的问题...
我对使用感到惊讶RSF-1。你看过我的指南了吗Linux 高可用性上的 ZFS?
可以设计上面描述的内容,但是它可能过于复杂。
单独来看,以下都不是问题:
在高可用性中使用 ZFS 绝对是一个正常要求。
而使用硬件 RAID 上的 ZFS没关系。
您的设计存在的问题在于,您为解决方案注入了更多的复杂性、性能损失和更多的故障点。
CIFS 和 NFS 工作负载可以从 ZFS 缓存中受益,因此这也必须考虑到拓扑中。
如果您受困于硬件,无法规划具有多路径 SAS 磁盘的共享机箱解决方案,那么最好创建两个故障域并构建无共享解决方案或重新评估需求并确定可接受的损失。例如,您要防范哪些故障模式和情况?
如果我有上面描述的设备,我会将两个存储服务器构建为单独的节点;将一个指定为主节点,另一个指定为辅助节点,并使用连续从主服务器到从服务器的 ZFS 异步复制. 即使在繁忙的系统上,也可以每隔 15 秒安全地执行此操作。
如果您想同时使用两台服务器,您可以在每台服务器上提供不同的数据集并双向复制。如果您需要在每个节点上使用硬件 RAID,那也没问题。您仍然可以利用 ZFS RAM 缓存、卷管理、压缩以及可能的 L2ARC 和 SLOG 设备。
设计更简单,性能将最大化,这为使用更快的缓存驱动器提供了机会,并且消除了对 SAS 数据池磁盘的需求。您还可以在节点之间添加地理隔离,或在需要时引入第三个节点。