High-Availability

廉價的、基於商品硬體的、高可用的分佈式文件系統

  • July 3, 2020

我有兩台執行 linux 的 PC,每台 2 TB 磁碟和一個小型千兆交換機。為了以便宜的方式建構一個高度可用的系統,我使用了這個堆棧:

  1. 在兩台 PC 上使用帶有 ZFS 和 DRBD9 的自定義 5.6 核心。
  2. 每台 PC 的每個本地磁碟的分區中都有一個 zvol - 啟用壓縮,禁用重複數據刪除(嘗試啟用壓縮,一切都掛了)
  3. 雙主 DRBD9 在它們之間進行鏡像
  4. 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,它們是分佈式文件系統中的高端選項。

我強烈建議您盡可能保持簡單,即使面對或可用性降低(除非您真的需要它):儲存管理是一項複雜的任務,需要對所有活動元件有深刻的了解,以免燙傷自己(和吃你的數據)。

注意:您可以在此處閱讀補充資訊

引用自:https://serverfault.com/questions/1021480