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