Storage

使 ceph 最小化文件部分在 OSD 上的傳播

  • November 27, 2015

我正在考慮選擇 ceph 作為我自製 MAID(大量空閒驅動器)的分佈式文件系統。

據我了解,Ceph 面向集群使用,並將數據均勻地分佈在 OSD 上(相對於 CRUSH 映射),並嘗試利用不同節點上讀取操作的並行性。

在我的情況下,我不需要最大化傳播和吞吐量,在理想情況下,它應該填充前 N 個 OSD(其中 N 是複制因子),然後才開始填充下一個 OSD,以最小化相鄰數據檢索所需的活動驅動器數量.

我可以通過調整歸置組計數和 CRUSH 映射以某種方式實現這種行為嗎?或者,如果不可能,我至少可以讓 ceph 停止將文件分成多個塊嗎?

我認為 ceph 不可能實現類似於您想要實現的目標。據我了解,ceph 是一個分佈式文件系統,它通過使用複制來確保高容錯性。在這裡閱讀:

Ceph 的主要目標是完全分佈式,沒有單點故障,可擴展到 EB 級別,並且免費提供。

ceph 的強大之處在於它的可擴展性和高可用性:

可擴展性和高可用性

在傳統架構中,客戶端與一個集中式組件(例如,網關、代理、API、外觀等)對話,該組件充當複雜子系統的單一入口點。這對性能和可擴展性都施加了限制,同時引入了單點故障(即,如果集中式組件出現故障,整個系統也會出現故障)。

Ceph 消除了集中式網關,使客戶端能夠直接與 Ceph OSD 守護程序互動。Ceph OSD 守護程序在其他 Ceph 節點上創建對象副本,以確保數據安全和高可用性。Ceph 還使用一組監視器來確保高可用性。為了消除中心化,Ceph 使用了一種稱為 CRUSH 的算法。

我想指出的是,ceph 是為了在集群環境中處理物理磁碟的使用,以確保更高的彈性、高可用性和透明度。不要安靜你正在尋找的東西。

如果您擔心性能或磁碟 I/O,可以使用名為Primary Affinity的選項,例如將 SAAS 磁碟優先於 SATA。在此處此處閱讀更多資訊。

主要親和力

當 Ceph 客戶端讀取或寫入數據時,它總是聯繫代理集中的主 OSD。對於設置

$$ 2, 3, 4 $$, osd.2 是主要的。與其他 OSD 相比,有時一個 OSD 不太適合充當主 OSD(例如,它有一個慢速磁碟或慢速控制器)。為了防止性能瓶頸(尤其是在讀取操作上),同時最大限度地利用硬體,您可以設置 Ceph OSD 的主要親和性,以便 CRUSH 不太可能將 OSD 用作代理集中的主要 OSD。

ceph osd primary-affinity <osd-id> <weight>

Primary affinity 預設為 1(即,一個 OSD 可以作為主要)。您可以將 OSD 主範圍設置為 0-1,其中 0 表示該 OSD 不能用作主,1 表示 OSD 可以用作主。當權重小於 1 時,CRUSH 不太可能選擇 Ceph OSD 守護程序作為主節點。

我知道這並不能完全回答您的所有問題,但可能會提供一些思考。

在此處查看詳細資訊:http: //docs.ceph.com/docs/master/rados/operations/crush-map/#primary-affinity

這是一個很好的部落格解釋了 ceph 集群。

引用自:https://serverfault.com/questions/736824