Linux (ZoL) 上的 ZFS 和实时复制

sho*_*hok 9 zfs replication zfsonlinux

我想了解在通过 10 GbE 链接连接的 Linux (ZoL) 机器上的两个 ZFS 之间进行实时复制的最佳解决方案是什么。目标是将它们用于虚拟机;一次只有一个机器会运行虚拟机和 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 足够稳定吗?

你觉得更好的方法是什么?谢谢。

eww*_*ite 5

我推荐集群双节点共享 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/