我想了解通过 10 GbE 链路连接的两个 ZFS on Linux (ZoL) 盒之间的实时复制的最佳解决方案是什么。目标是将它们用于虚拟机;一次只有一个盒运行虚拟机和 ZFS 文件系统本身。第一个(活动)盒上需要有快照。我计划使用企业级/近线级 SATA 磁盘,因此双端口 SAS 磁盘不在考虑范围内。
我想到以下几种可能性:
- 使用 iSCSI 导出远程磁盘并在本地机器的 ZFS 磁盘和远程 iSCSI 磁盘之间创建镜像。此解决方案的最大吸引力在于它的简单性,因为它使用 ZFS 自己的镜像。另一方面,ZFS 不会优先考虑本地磁盘而不是远程磁盘,这可能会导致一些性能下降(我想在 10 GbE 网络上几乎不相关)。此外,更大的担忧是,如果两个机器之间的网络链路丢失,ZFS 将如何表现。当远程机器可用时,它会重新同步阵列吗,还是需要手动干预?
- 使用 DRBD 同步两个 ZVOLS,并将 ZFS 置于 DRBD 设备之上换句话说,我说的是堆叠的 ZVOL + DRBD + ZFS 解决方案。这似乎对我来说这是首选方法,因为 DRBD 8.4 非常稳定且经过验证。但是,这里涉及许多 I/O 层,性能可能会受到影响。
- 使用普通的 ZFS + GlusterFS。从 ZFS 的角度来看,这是更简单/更好的解决方案,因为所有复制流量都委托给 GlusterFS。您觉得 GlusterFS 足够稳定吗?
您认为哪种方法更好?谢谢。
答案1
我推荐集群双节点共享 SAS 设置或者连续异步复制以 15 秒或 30 秒为间隔。后者有利于保持连续性,而后者提供了一种获得地理分离的方法。它们可以一起使用。
但是,如果您想实验,您可以使用 Infiniband SRP 或 100GbE RDMA 在两个节点之间创建 ZFS 镜像。
例如,节点 1 和节点 2 各自都有本地磁盘(假设是硬件 RAID),并通过 SRP 提供该本地存储。每次只有一个节点控制 zpool,该池由节点 1 的本地磁盘和节点 2 的远程磁盘组成。
您的镜像是同步的,因为它是 ZFS 镜像。故障转移和一致性由正常的重新同步行为处理。Zpool 导入/所有权/导出由 Pacemaker 和标准集群实用程序处理...
或者你可以使用商业解决方案效果相同。参见:
http://www.zeta.systems/blog/2016/10/11/High-Availability-Storage-On-Dell-PowerEdge-&-HP-ProLiant/