使用糾刪碼 (Erasure Code) 儲存池所需的 Ceph OSD 主機最少數量是多少?
使用 Ceph 儲存的最佳做法,是將儲存池的故障域(failure domain)設定為大於「主機(host)」的層級。當資料儲存池以 host 作為故障域時,Ceph 會將資料區塊分散寫入不同的主機,以確保當某台主機上的資料區塊遺失時,仍可以從其他健康的備用主機進行復原。使用者也可以將故障域設定為「硬碟(disk drive)」,這類似於傳統的磁碟陣列(disk array),專門針對單一硬碟故障提供資料保護。
以下是使用糾刪碼儲存池所需最少主機數量的建議 :
最佳配置 : 伺服器數量 ≧ K + M +1
- 此配置可讓 Ceph 將每個糾刪碼區塊 (EC chunk) 分散儲存到 K+M 台不同的主機上。
- 當其中一台主機故障時,您仍有足夠的主機來復原遺失的區塊。
次佳配置 : 伺服器數量 = K + M
- 此配置允許每個糾刪碼區塊 (EC chunk) 被分散到 K+M 個主機上。
- 當其中一台主機故障時,你將沒有其他主機可用來復原遺失的糾刪碼區塊 (EC chunk) 。因此,迅速進行修復以盡快將系統恢復至健康狀態至關重要。
預算有限的配置 :伺服器數量 ≧ (K + M) / M
此配置指示 Ceph 將多個糾刪碼 (EC) 區塊分散到指定數量的主機上。當其中一台主機故障時,一個物件最多只會遺失 M 個區塊。
此配置允許
- 在單一主機上,任何數量的硬碟都可能同時發生故障。
- 或者叢集最多可以損失一台主機。
- 或在 M 個主機中,每個主機只有一個硬碟可以同時發生故障。
以 K+M=4+2 為例,最少需要的主機數量為 6÷2=3 台。在此配置下,您最多只能承受一台主機的故障,但故障後,叢集中將沒有足夠的健康主機來修復遺失的區塊。