我有两台运行 linux 的 PC,每台 2 TB 磁盘和一个小型千兆交换机。为了以便宜的方式构建一个高度可用的系统,我使用了这个堆栈:
- 在两台 PC 上使用带有 ZFS 和 DRBD9 的自定义 5.6 内核。
- 每台 PC 的每个本地磁盘的分区中都有一个 zvol - 启用压缩,禁用重复数据删除(尝试启用压缩,一切都挂了)
- 双主 DRBD9 在它们之间进行镜像
- OCFS2 在顶部,将生成的设备安装在两台 PC 上
第三台非常旧的机器充当 DRBD 仲裁器,没有实际磁盘空间参与 DRBD 镜像。
第二个交换机和第二个 NIC 即将推出以提高可用性。
我想了解是否有更简单的堆栈来实现相同的结果。根据我目前的知识,我已经放弃了一些选项:Lustre(对于小型环境来说太复杂)、BeeGFS(未更新)、GlusterFS(不适用于原始设备,仅适用于已安装的文件夹)
编辑 - 我被要求专注于一个问题。由于第一个已经回答,我保留了第二个。
您将集群文件系统与分布式文件系统混为一谈。
您通过 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)
如果用于大型文件存储(即:vm 映像)并且只有少数主机,那么您当前的方法可能是最好的方法(以增加复杂性和降低性能为代价)。如果有很多节点,GlusterFS(有正确的选项 -
sharding
是第一个)可能是一个合理的选择,但一定要遵循邮件列表(它有很多陷阱)如果您需要一个“大型 NAS”来存储许多中型文件(1-128M),副本模式的 GlusterFS 可能是正确的选择(再次,请务必关注邮件列表)
如果有很多节点和大型系统管理员资源(阅读:一个专门的团队),您可以考虑 Lustre 或 Ceph,它们是分布式文件系统中的高端选项。
我强烈建议您尽可能保持简单,即使面对可用性或可用性降低(除非您真的需要它):存储管理是一项复杂的任务,需要对所有活动部件有深刻的了解,以免烫伤自己(和吃你的数据)。
注意:您可以在此处阅读补充信息