可用性與彈性
此頁面從生產的角度概述 MinIO 的可用性和彈性設計與功能。
注意
此頁面的內容旨在作為盡力而為的指南,以了解 MinIO 的預期設計以及可用性和彈性背後的理念。它無法取代 MinIO SUBNET 的功能,該功能允許在規劃 MinIO 部署時與 MinIO 工程部門協調。
社群使用者可以在 MinIO 社群 Slack 上尋求支援。社群支援僅盡力而為,並且沒有關於響應速度的 SLA。
分散式 MinIO 部署
- MinIO 實作 抹除編碼 作為在磁碟機或節點層級故障事件期間提供可用性和彈性的核心元件。
MinIO 將每個物件分割為資料和 同位 分片,並將這些分片分散到單個 抹除集 中。
這個小型單節點部署在一個抹除集中有 16 個磁碟機。假設預設 同位 為
EC:4
,MinIO 將物件分割為 4 (四) 個同位分片和 12 (十二) 個資料分片。MinIO 將這些分片均勻分散到抹除集中的每個磁碟機上。- MinIO 使用確定性演算法為給定的物件選擇抹除集。
對於每個唯一的物件命名空間
BUCKET/PREFIX/[PREFIX/...]/OBJECT.EXTENSION
,MinIO 始終為讀/寫操作選擇相同的抹除集。這包括同一個物件的所有版本。- MinIO 需要 讀取和寫入仲裁,才能對 Erasure Set 執行讀取和寫入操作。
仲裁取決於部署時設定的同位檢查。讀取仲裁始終等於設定的同位檢查,因此 MinIO 可以對任何遺失的磁碟機數量不超過同位檢查的 Erasure Set 執行讀取操作。
在預設的同位檢查
EC:4
下,部署可以容忍每個 Erasure Set 遺失 4 (四) 個磁碟機,並且仍然可以執行讀取操作。- 寫入仲裁取決於設定的同位檢查和 Erasure Set 的大小。
如果同位檢查小於 Erasure Set 磁碟機數量的一半 (1/2),則寫入仲裁等於同位檢查,其功能與讀取仲裁類似。
MinIO 會自動增加寫入降級 Erasure Set 的物件的同位檢查,以確保物件可以達到與健康 Erasure Set 中物件相同的 SLA。同位檢查升級行為提供額外的風險緩解層級,但無法取代修復或更換損壞磁碟機以使 Erasure Set 回復到完全健康狀態的長期解決方案。
在預設的同位檢查
EC:4
下,部署可以容忍每個 Erasure Set 遺失 4 個磁碟機,並且仍然可以執行寫入操作。- 如果同位檢查等於 Erasure Set 磁碟機數量的一半 (1/2),則寫入仲裁等於同位檢查 + 1 (一),以避免因「裂腦」情況而導致資料不一致。
例如,如果 Erasure Set 中剛好一半的磁碟機因網路故障而隔離,則 MinIO 會認為仲裁遺失,因為它無法建立用於寫入操作的 N+1 個磁碟機群組。
此節點有 50% 的磁碟機故障。如果同位檢查為
EC:8
,則此 Erasure Set 無法滿足寫入仲裁,而 MinIO 會拒絕對該 Set 的寫入操作。由於 Erasure Set 仍然維持讀取仲裁,因此對現有物件的讀取操作仍然可以成功。- 永久遺失的磁碟機數量超過設定的同位檢查的 Erasure Set 已發生資料遺失。
對於最大的同位檢查組態,如果遺失的磁碟機數量等於同位檢查,則 Erasure Set 會進入「唯讀」模式。對於 16 的最大 Erasure Set 大小和 8 的最大同位檢查,這需要遺失 9 個磁碟機才會發生資料遺失。
此 Erasure Set 遺失的磁碟機數量超過設定的同位檢查
EC:4
,因此已遺失讀取和寫入仲裁。MinIO 無法復原儲存在此 Erasure Set 上的任何資料。暫時性的磁碟機故障,例如由於儲存控制器或連接硬體故障而導致的故障,可能會在 Erasure Set 內回復到正常運作狀態。
- MinIO 進一步透過在集區中每個節點上「條紋化」Erasure Set 磁碟機,來降低 Erasure Set 故障的風險。
MinIO 會根據節點和磁碟機的數量自動計算最佳的 Erasure Set 大小,其中最大 Set 大小為 16 (十六)。然後,它會為每個 Erasure Set 選擇每個節點上的其中一個磁碟機,並在 Erasure Set 條紋大小大於節點數量時繞過集區。此拓樸結構可針對單一節點或該節點上的儲存控制器遺失提供復原能力。
在此 16 x 8 的部署中,MinIO 會計算 8 個每個都有 16 個磁碟機的 Erasure Set。它會在可用的節點中配置每個節點的一個磁碟機,以填滿每個 Erasure Set。如果有 8 個節點,MinIO 則需要為每個 Erasure Set 選擇每個節點 2 個磁碟機。
在上述拓樸結構中,集區具有 8 個每個都有 16 個磁碟機的 Erasure Set,這些磁碟機條紋化在 16 個節點上。每個節點會為每個 Erasure Set 配置一個磁碟機。雖然遺失一個節點在技術上會導致遺失 8 個磁碟機,但每個 Erasure Set 只會遺失一個磁碟機。這可以維持仲裁,而不會造成節點停機。
- 每個 Erasure Set 都獨立於同一集區中的所有其他 Erasure Set。
如果一個 Erasure Set 完全降級,MinIO 仍然可以對其他 Erasure Set 執行讀取/寫入操作。
一個集區具有降級的 Erasure Set。雖然 MinIO 無法再對該 Erasure Set 提供讀取/寫入操作,但它可以繼續對該集區中健康的 Erasure Set 提供操作。
但是,遺失的資料仍然可能會影響依賴 100% 資料可用性假設的工作負載。此外,每個 Erasure Set 都完全獨立於其他 Erasure Set,因此您無法使用其他 Erasure Set 將資料還原到完全降級的 Erasure Set。您必須使用 站點 或 儲存貯體 複寫,才能建立 BC/DR-就緒的遠端部署,以復原遺失的資料。
- 對於多個集區的 MinIO 部署,每個集區至少需要一個維持讀取/寫入仲裁的 Erasure Set,才能繼續執行操作。
如果一個集區遺失所有 Erasure Set,則 MinIO 無法再判斷指定的讀取/寫入操作是否會路由至該集區。因此,MinIO 會停止對部署的所有 I/O,即使其他集區仍然在運作也一樣。
此部署中的一個集區已完全失敗。MinIO 無法再判斷要將 I/O 路由至哪個集區或 Erasure Set。繼續操作可能會產生不一致的狀態,導致物件和/或其版本駐留在不同的 Erasure Set 中。因此,MinIO 會暫停部署中的所有 I/O,直到集區復原。
若要還原對部署的存取權,管理員必須將集區還原到正常運作狀態。這可能需要格式化磁碟、更換硬體或更換節點,具體取決於故障的嚴重程度。請參閱 硬體故障後復原,以取得更完整的說明文件。
使用複寫的遠端裝置,將遺失的資料還原到部署。儲存在健康集區上的所有資料在磁碟上保持安全。
對磁碟機的獨佔存取權
MinIO **需要** 對提供的用於物件儲存的磁碟機或磁碟區有*獨佔*存取權。其他程序、軟體、指令碼或人員都不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置在其上的物件或檔案執行*任何*動作。
除非 MinIO 工程部門指示,否則請勿使用指令碼或工具直接修改、刪除或移動提供的磁碟機上的任何資料分片、同位檢查分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個磁碟機或節點。此類操作很可能會導致廣泛的損壞和資料遺失,超出 MinIO 的修復能力。
複寫的 MinIO 部署
- 在 MinIO 部署中,MinIO 會實作 站點複寫 作為主要措施,以確保在 MinIO 部署中發生小型和大型資料遺失時的業務持續性和災害復原 (BC/DR)。
每個對等站點都會部署到獨立的資料中心,以防止發生大規模故障或災害。如果一個資料中心完全離線,用戶端可以容錯移轉到另一個站點。
- MinIO 複寫可以自動 修復 因暫時性或持續性停機而導致部分或全部資料遺失的站點。
資料中心 2 已關閉,且站點 B 需要重新同步。負載平衡器會處理將操作路由至資料中心 1 中的站點 A。站點 A 會持續將資料複寫到站點 B。
一旦所有資料同步,您就可以還原該站點的正常連線能力。根據複寫延遲、站點之間的延遲和整體工作負載 I/O 的量,您可能需要暫時停止寫入操作,才能讓站點完全趕上。
如果對等站點完全失敗,您可以從組態中完全移除該站點。負載平衡器組態也應移除該站點,以避免將用戶端要求路由至離線站點。
然後,您可以透過 將其加回站點複寫組態,在修復原始硬體或完全更換硬體之後還原對等站點。MinIO 會在持續複寫新資料的同時自動開始重新同步現有資料。
- 站點可以在重新同步期間繼續處理操作,方法是將
GET/HEAD
要求 Proxy 至健全的對等站點 站點 B 沒有請求的物件,這可能是因為複寫延遲所致。它會將
GET
要求 Proxy 至站點 A。站點 A 會傳回物件,然後站點 B 會將物件傳回給請求的用戶端。用戶端會收到第一個傳回所請求物件*任何*版本的對等站點的結果。
PUT
和DELETE
操作會使用一般的複寫程序進行同步。LIST
操作不會進行 Proxy,且要求用戶端專門針對健全的對等發出操作。