Erasure Coding
MinIO 實作 Erasure Coding 作為提供資料冗餘和可用性的核心組件。本頁介紹 MinIO Erasure Coding。
請參閱 可用性和彈性 和 部署架構,以取得有關 MinIO 如何在生產部署中使用 erasure coding 的更多資訊。
Erasure Coding 基礎知識
注意
本節中的圖表和內容呈現了 MinIO erasure coding 操作的簡化視圖,並非旨在表示 MinIO 完整 erasure coding 實作的複雜性。
- MinIO 將每個 伺服器集區 中的磁碟機分組為一個或多個大小相同的 Erasure Set。
上述範例部署包含 4 個節點,每個節點有 4 個磁碟機。MinIO 初始化時,會建立一個包含所有四個節點上所有 16 個磁碟機的 erasure set。
MinIO 在初始化 伺服器集區 時,會判斷 erasure set 的最佳數量和大小。在此初始設定之後,您無法修改這些設定。
- 對於每個寫入操作,MinIO 會將物件分割成資料和同位分片。
Erasure set 條紋大小決定了部署的最大可能 同位。用於判斷要產生之資料和同位分片數量的公式為
N (ERASURE SET SIZE) = K (DATA) + M (PARITY)
上述範例部署的 erasure set 有 16 個磁碟機。這可以支援介於
EC:0
和 1/2 erasure set 磁碟機之間(即EC:8
)的同位。- 您可以設定介於 0 和 1/2 erasure set 大小之間的同位值。
MinIO 使用 Reed-Solomon erasure coding 實作,並將物件分割以在 erasure set 中進行分配。上述範例部署的 erasure set 大小為 16,同位為
EC:4
。如果您稍後變更同位值,以給定的同位設定寫入的物件不會自動更新。
- MinIO 至少需要
K
個任何類型的分片,才能讀取物件。 此處的
K
值構成部署的讀取仲裁。因此,抹除集必須至少有K
個運作正常的磁碟機,才能支援讀取操作。此部署有一個離線節點,導致只剩下 12 個運作正常的磁碟機。該物件以
EC:4
寫入,讀取仲裁為K=12
。因此,此物件維持讀取仲裁,MinIO 可以重建它以進行讀取操作。MinIO 無法重建已失去讀取仲裁的物件。此類物件可以透過其他方式恢復,例如 複寫重新同步。
- MinIO 至少需要
K
個抹除集磁碟機,才能寫入物件。 此處的
K
值構成部署的寫入仲裁。因此,抹除集必須至少有K
個可用的線上磁碟機,才能支援寫入操作。此部署有一個離線節點,導致只剩下 12 個運作正常的磁碟機。用戶端以
EC:4
同位設定寫入物件,其中抹除集的寫入仲裁為K=12
。此抹除集維持寫入仲裁,MinIO 可以將其用於寫入操作。- 如果同位
EC:M
恰好是抹除集大小的一半,則寫入仲裁為K+1
。 這可以防止出現腦裂類型的情況,例如網路問題將抹除集磁碟機的一半與另一半隔離的情況。
此部署由於暫時性的網路故障而有兩個節點離線。用戶端以
EC:8
同位設定寫入物件,其中抹除集的寫入仲裁為K=9
。此抹除集已失去寫入仲裁,MinIO 無法將其用於寫入操作。K+1
邏輯可確保用戶端不會可能將同一個物件寫入兩次,一次寫入抹除集的「一半」。- 對於維持讀取仲裁的物件,MinIO 可以使用任何資料或同位分片來修復損壞的分片。
一個
EC:4
的物件由於磁碟機故障而遺失了 12 個資料分片中的 4 個。由於該物件維持了讀取仲裁,因此 MinIO 可以使用可用的同位分片來修復那些遺失的資料分片。
使用 MinIO Erasure Coding Calculator 來探索您計畫的拓撲可能有的抹除集大小和分佈。在可能的情況下,請使用偶數個節點和每個節點的磁碟機,以簡化拓撲規劃和磁碟機/抹除集分佈的概念化。
對磁碟機的獨佔存取權
MinIO 要求對提供給物件儲存的磁碟機或磁碟區進行獨佔存取。任何其他處理程序、軟體、腳本或人員都不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置在其上的物件或檔案執行任何動作。
除非 MinIO 工程部指示,否則請勿使用腳本或工具來直接修改、刪除或移動所提供磁碟機上的任何資料分片、同位分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個。此類操作很可能會導致廣泛的損壞和資料遺失,超出 MinIO 的修復能力。
抹除同位和儲存效率
設定部署的同位是在可用性和總可用儲存空間之間取得平衡。較高的同位值會增加對磁碟機或節點故障的復原能力,但會犧牲可用儲存空間,而較低的同位值則提供最大的儲存空間,但對磁碟機/節點故障的容忍度較低。使用 MinIO Erasure Code Calculator 來探索同位對您計畫的叢集部署的影響。
下表列出在包含 1 個節點和 16 個 1TB 磁碟機的 MinIO 部署中,不同抹除碼同位等級的結果
同位 |
總儲存空間 |
儲存比例 |
讀取操作的最小磁碟機數量 |
寫入操作的最小磁碟機數量 |
---|---|---|---|---|
|
12 Tebibytes |
0.750 |
12 |
12 |
|
10 Tebibytes |
0.625 |
10 |
10 |
|
8 Tebibytes |
0.500 |
8 |
9 |
位元衰減保護
位元衰減是指儲存媒體層級隨機變更而導致的靜默資料損壞。對於資料磁碟機,它通常是代表資料的電荷或磁性方向衰減的結果。這些來源可能包括斷電時的小電流突波,或是導致位元翻轉的隨機宇宙射線。產生的「位元衰減」可能會在資料媒體上造成細微的錯誤或損壞,而不會觸發監控工具或硬體。
MinIO 對 HighwayHash 演算法的優化實作,可確保它即時捕獲和修復損壞的物件。藉由計算 READ 上的雜湊,並在從應用程式、跨網路以及到記憶體或磁碟機的 WRITE 上驗證雜湊,來確保端對端的完整性。該實作旨在提高速度,並且在 Intel CPU 的單核心上可以達到每秒超過 10 GB 的雜湊速度。