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