Replication
Linux 上的 ZFS (ZoL) 和實時複製
我想了解通過 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/