我有两台运行 Linux 的 PC,每台都有 2 TB 的磁盘和一台小型千兆交换机。为了以低成本构建高可用性系统,我采用了以下堆栈:
- 两台电脑上都有带有 ZFS 和 DRBD9 的定制 5.6 内核。
- 每台 PC 的每个本地磁盘的一个分区中都有一个 zvol - 启用压缩,禁用重复数据删除(尝试启用压缩,但一切都失败了)
- 双主 DRBD9 在它们之间进行镜像
- OCFS2 位于顶部,用于在两台 PC 上安装生成的设备
第三台非常旧的机器充当 DRBD 仲裁器,没有实际的磁盘空间参与 DRBD 镜像。
第二个交换机和第二个 NIC 即将推出,以提高可用性。
我想了解是否有更简单的堆栈来实现相同的结果。根据我目前的知识,我已经放弃了一些选项:Lustre(对于小型环境来说太复杂)、BeeGFS(未更新)、GlusterFS(不适用于原始设备,仅适用于已安装的文件夹)
编辑 - 我被要求集中讨论一个问题。由于第一个问题已经得到回答,我保留了第二个问题。
答案1
您正在将集群文件系统与分布式文件系统混淆。
使用 ZVOL+DRBD+OCFS2 设置,您实现了一个“无共享”集群文件系统,其中 DRBD 模拟真正的共享块 SAN,而 OCFS2(或 GFS2)通过多个头节点提供多个并发挂载。在此配置中,您可以不是交换第 2 层和第 3 层(即:DRBD+ZVOL+OCFS2),因为 ZFS 不是集群文件系统 - 如果安装在两个不同的主机上,它会很快损坏自身(即使对于 ZVOL 也是如此,它只不过是根 ZFS 数据集中的隐藏文件)。
Lustre、Gluster、Ceph 等是分布式文件系统:它们在每个主机上使用单独的文件系统/文件/数据库,这些文件系统/文件/数据库在用户空间级别组合为单个、跨多主机(即分布式)的文件系统。
如何在这两种方法之间进行选择?这取决于多种因素:
如果冷异步复制就足够了,你可以使用
zfs send/recv
它并结束这一天如果需要真正的实时复制,但不需要硬/即时 HA,并且可以选择手动故障转移,则可以在单主模式下使用 DRBD,并完全跳过集群文件系统的开销(即:使用普通 XFS 而不是 OCFS2/GFS2)
如果用于大文件存储(即虚拟机映像)并且只有少量主机,则当前方法可能是最佳方法(代价是增加复杂性和降低性能)。如果有许多节点,GlusterFS(具有正确的选项 -
sharding
是第一个)可能是一个合理的选择,但当然关注邮件列表(有很多陷阱)如果你需要一个“大型 NAS”来存储许多中型文件(1-128M),那么副本模式下的 GlusterFS 可能是正确的选择(再次强调,请务必关注邮件列表)
如果拥有许多节点和大型系统管理员资源(阅读:专门的团队),您可以考虑 Lustre 或 Ceph,它们是分布式文件系统中更高端的选项。
我强烈建议您尽可能保持简单,即使面临可用性降低的情况(除非您真的需要它):存储管理是一项复杂的任务,需要深刻理解所有活动部件,以避免烧伤自己(并消耗您的数据)。
注意:你可以阅读这里补充信息