文件

Erasure Coding

MinIO 實作 Erasure Coding 作為提供資料冗餘和可用性的核心組件。本頁介紹 MinIO Erasure Coding。

請參閱 可用性和彈性部署架構,以取得有關 MinIO 如何在生產部署中使用 erasure coding 的更多資訊。

Erasure Coding 基礎知識

注意

本節中的圖表和內容呈現了 MinIO erasure coding 操作的簡化視圖,並非旨在表示 MinIO 完整 erasure coding 實作的複雜性。

MinIO 將每個 伺服器集區 中的磁碟機分組為一個或多個大小相同的 Erasure Set
Diagram of erasure set covering 4 nodes and 16 drives

上述範例部署包含 4 個節點,每個節點有 4 個磁碟機。MinIO 初始化時,會建立一個包含所有四個節點上所有 16 個磁碟機的 erasure set。

MinIO 在初始化 伺服器集區 時,會判斷 erasure set 的最佳數量和大小。在此初始設定之後,您無法修改這些設定。

對於每個寫入操作,MinIO 會將物件分割成資料同位分片。

Erasure set 條紋大小決定了部署的最大可能 同位。用於判斷要產生之資料和同位分片數量的公式為

N (ERASURE SET SIZE) = K (DATA) + M (PARITY)
Diagram of possible erasure set parity settings

上述範例部署的 erasure set 有 16 個磁碟機。這可以支援介於 EC:0 和 1/2 erasure set 磁碟機之間(即 EC:8)的同位。

您可以設定介於 0 和 1/2 erasure set 大小之間的同位值。
Diagram of an object being sharded using MinIO's Reed-Solomon Erasure Coding algorithm.

MinIO 使用 Reed-Solomon erasure coding 實作,並將物件分割以在 erasure set 中進行分配。上述範例部署的 erasure set 大小為 16,同位為 EC:4

如果您稍後變更同位值,以給定的同位設定寫入的物件不會自動更新。

MinIO 至少需要 K 個任何類型的分片,才能讀取物件。

此處的 K 值構成部署的讀取仲裁。因此,抹除集必須至少有 K 個運作正常的磁碟機,才能支援讀取操作。

Diagram of a 4-node 16-drive deployment with one node offline.

此部署有一個離線節點,導致只剩下 12 個運作正常的磁碟機。該物件以 EC:4 寫入,讀取仲裁為 K=12。因此,此物件維持讀取仲裁,MinIO 可以重建它以進行讀取操作。

MinIO 無法重建已失去讀取仲裁的物件。此類物件可以透過其他方式恢復,例如 複寫重新同步

MinIO 至少需要 K 個抹除集磁碟機,才能寫入物件。

此處的 K 值構成部署的寫入仲裁。因此,抹除集必須至少有 K 個可用的線上磁碟機,才能支援寫入操作。

Diagram of a 4-node 16-drive deployment where one node is offline.

此部署有一個離線節點,導致只剩下 12 個運作正常的磁碟機。用戶端以 EC:4 同位設定寫入物件,其中抹除集的寫入仲裁為 K=12。此抹除集維持寫入仲裁,MinIO 可以將其用於寫入操作。

如果同位 EC:M 恰好是抹除集大小的一半,則寫入仲裁K+1

這可以防止出現腦裂類型的情況,例如網路問題將抹除集磁碟機的一半與另一半隔離的情況。

Diagram of an erasure set with where Parity ``EC:M`` is 1/2 the set size

此部署由於暫時性的網路故障而有兩個節點離線。用戶端以 EC:8 同位設定寫入物件,其中抹除集的寫入仲裁為 K=9。此抹除集已失去寫入仲裁,MinIO 無法將其用於寫入操作。

K+1 邏輯可確保用戶端不會可能將同一個物件寫入兩次,一次寫入抹除集的「一半」。

對於維持讀取仲裁的物件,MinIO 可以使用任何資料或同位分片來修復損壞的分片。
Diagram of MinIO using parity shards to heal lost data shards on a node.

一個 EC:4 的物件由於磁碟機故障而遺失了 12 個資料分片中的 4 個。由於該物件維持了讀取仲裁,因此 MinIO 可以使用可用的同位分片來修復那些遺失的資料分片。

使用 MinIO Erasure Coding Calculator 來探索您計畫的拓撲可能有的抹除集大小和分佈。在可能的情況下,請使用偶數個節點和每個節點的磁碟機,以簡化拓撲規劃和磁碟機/抹除集分佈的概念化。

對磁碟機的獨佔存取權

MinIO 要求對提供給物件儲存的磁碟機或磁碟區進行獨佔存取。任何其他處理程序、軟體、腳本或人員都不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置在其上的物件或檔案執行任何動作。

除非 MinIO 工程部指示,否則請勿使用腳本或工具來直接修改、刪除或移動所提供磁碟機上的任何資料分片、同位分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個。此類操作很可能會導致廣泛的損壞和資料遺失,超出 MinIO 的修復能力。

抹除同位和儲存效率

設定部署的同位是在可用性和總可用儲存空間之間取得平衡。較高的同位值會增加對磁碟機或節點故障的復原能力,但會犧牲可用儲存空間,而較低的同位值則提供最大的儲存空間,但對磁碟機/節點故障的容忍度較低。使用 MinIO Erasure Code Calculator 來探索同位對您計畫的叢集部署的影響。

下表列出在包含 1 個節點和 16 個 1TB 磁碟機的 MinIO 部署中,不同抹除碼同位等級的結果

16 個磁碟機 MinIO 叢集同位設定的結果

同位

總儲存空間

儲存比例

讀取操作的最小磁碟機數量

寫入操作的最小磁碟機數量

EC: 4(預設)

12 Tebibytes

0.750

12

12

EC: 6

10 Tebibytes

0.625

10

10

EC: 8

8 Tebibytes

0.500

8

9

位元衰減保護

位元衰減是指儲存媒體層級隨機變更而導致的靜默資料損壞。對於資料磁碟機,它通常是代表資料的電荷或磁性方向衰減的結果。這些來源可能包括斷電時的小電流突波,或是導致位元翻轉的隨機宇宙射線。產生的「位元衰減」可能會在資料媒體上造成細微的錯誤或損壞,而不會觸發監控工具或硬體。

MinIO 對 HighwayHash 演算法的優化實作,可確保它即時捕獲和修復損壞的物件。藉由計算 READ 上的雜湊,並在從應用程式、跨網路以及到記憶體或磁碟機的 WRITE 上驗證雜湊,來確保端對端的完整性。該實作旨在提高速度,並且在 Intel CPU 的單核心上可以達到每秒超過 10 GB 的雜湊速度。