文件

異質碼

MinIO 實作異質碼作為提供資料冗餘和可用性的核心元件。此頁面提供了 MinIO 異質碼的簡介。

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

異質碼基礎知識

注意

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

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

上述範例部署由 4 個節點組成,每個節點有 4 個磁碟機。MinIO 使用一個由所有四個節點上的所有 16 個磁碟機組成的單個異質集初始化。

MinIO 在初始化 伺服器池 時會決定異質集的最佳數量和大小。您無法在此初始設定後修改這些設定。

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

異質集條帶大小決定了部署的最大可能同位。決定要產生的資料和同位分片數量的公式為

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

上述範例部署有一個由 16 個磁碟機組成的異質集。這可以支援 EC:0 和異質集磁碟機的 1/2 之間的同位,或 EC:8

您可以將同位值設定為 0 到異質集大小的 1/2 之間。
Diagram of an object being sharded using MinIO's Reed-Solomon Erasure Coding algorithm.

MinIO 使用 Reed-Solomon 糾刪碼實作,並將物件分割以分佈在一個糾刪集中。上述範例部署的糾刪集大小為 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 正好是糾刪集大小的 1/2,則寫入仲裁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 個資料分片中的四個。由於該物件維持了讀取仲裁,MinIO 可以使用可用的同位分片修復那些遺失的資料分片。

使用 MinIO 糾刪碼計算器 來探索您規劃的拓撲結構可能使用的糾刪集大小和分佈。盡可能使用偶數個節點和每個節點的磁碟機,以簡化拓撲規劃和磁碟機/糾刪集分佈的概念化。

磁碟機的獨佔存取權

MinIO 要求對提供用於物件儲存的磁碟機或磁碟區具有獨佔存取權。其他任何程序、軟體、腳本或人員皆不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置在其中的物件或檔案執行任何操作。

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

糾刪同位檢查和儲存效率

設定部署的同位檢查是在可用性和總可用儲存空間之間取得平衡。較高的同位值會提高對磁碟機或節點故障的復原能力,但會犧牲可用儲存空間,而較低的同位值則提供最大的儲存空間,但對磁碟機/節點故障的容錯能力較低。使用 MinIO 糾刪碼計算器 來探索同位檢查對您規劃的叢集部署的影響。

下表列出在由 1 個節點和 16 個 1TB 磁碟機組成的 MinIO 部署中,不同的糾刪碼同位檢查層級的結果

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

同位檢查

總儲存空間

儲存比例

讀取操作的最小磁碟機數

寫入操作的最小磁碟機數

EC: 4(預設)

12 特位元組

0.750

12

12

EC: 6

10 特位元組

0.625

10

10

EC: 8

8 特位元組

0.500

8

9

位元衰減保護

位元衰減是指儲存媒體層級的隨機變更所造成的靜默資料損毀。對於資料磁碟機,這通常是表示資料的電荷或磁方向衰減所致。這些來源可能從斷電時的小電流尖峰,到導致位元翻轉的隨機宇宙射線不等。由此產生的「位元衰減」可能會導致資料媒體上出現細微的錯誤或損毀,而不會觸發監控工具或硬體。

MinIO 針對 HighwayHash 演算法的優化實作,可確保其即時擷取並修復損毀的物件。從應用程式、跨網路到記憶體或磁碟機,透過計算讀取的雜湊並在寫入時進行驗證,確保端到端的完整性。此實作專為速度而設計,且在 Intel CPU 單核上可實現超過 10 GB/秒的雜湊速度。