1. 程式人生 > >ceph在品高雲中的實踐

ceph在品高雲中的實踐

集群擴容 load 邏輯關系 ast deep python 參數 了無 版本信息

ceph簡介

ceph是業界目前人氣最高的開源存儲項目之一,關於其定義在官網是這樣的:“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”

翻譯一下就是:Ceph是一種為優秀的性能、可靠性和可擴展性而設計的統一的、分布式的存儲系統。這裏面有兩個重點,一是分布式的,關於這點我的理解是指其無中心解構和無理論上限系統規模,體現著擴展性與大規模,早在2013年,其在Dreamhost公司最大部署規模已達3PB;二是統一的,關於存儲我們明白一般有三種功能即對象存儲、塊存儲和文件存儲,而這三種功能在ceph上都可以做統一的交付,所以它幾乎可以覆蓋了絕大部分企業對存儲的需求。

整體架構

技術分享

從下向上看,我們基本可以把ceph分為三個層次(不包括上層應用),分別是:

1)RADOS(Reliable, Autonomic, Distributed Object Store)即可靠的、自動化的、分布式的對象存儲,顧名思義,這是一個基礎的對象存儲系統,也就是說所有用戶寫入的數據最終是落在這裏的;

2)LIBRADOS 基礎庫,這一層可以理解是對RADOS進行封裝和抽象,並向上層直接提供API,以便用戶可以直接對RADOS進行開發,而其也支持多種開發語言,例如C/C++/Java/Python/Ruby和PHP等,需要說明的是因為RADOS是一個對象存儲系統,因此librados實現的API也只是針對對象存儲功能;

3)高層應用接口,這一層分為三個部分:RADOSGW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System),其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層接口,關於其介紹可以直接參見圖中介紹,總而言之這三者就是向外提供對象存儲、塊存儲和文件存儲三種存儲的接口.

RADOS運行說明

了解了基礎架構後我們不難發現,RADOS其實是ceph的核心,而RADOS其實有兩個重要組件分別是OSD和monitor,還有一個可選組件MDS,其中OSD數量一般很多(ceph官方推薦每個OSD對應一個SATA盤),是用來完成數據存儲和維護的,monitor則是若幹個負責完成系統狀態檢測和維護的組件。技術分享

這裏是一張對象寫入的過程圖,在圖中每個笑臉代表一個對象,在開始寫入時Client端會跟Monitors通信,獲取Cluster Maps信息,然後通過CRUSH算法算出每個Object存儲的OSD位置,直接與OSD通信,寫入Object數據。也就是說只要有當前集群的拓撲結構,ceph的客戶端就能直接計算出文件的存儲位置,直接跟OSD 通信獲取文件而不在需要詢問文件位置,從而避免了單點。另外ceph采用了無Master設計,對象的復制,集群的擴容,數據的遷移,故障的檢測和處理等功能由OSD提供, 既避免了單點失敗,又提升了集群擴展性,這也為ceph的穩定高質提供了底層條件。

三個特性

在開頭我們說“Ceph是一種為優秀的性能、可靠性和可擴展性而設計的統一的、分布式的存儲系統”,其實這裏面隱含了三個特性:

1)高擴展性:ceph可以針對OSD和Monitor集群的動態可擴容,每當有新的OSD加入後,Monitor集群會通過兩層Map機制(pool, object) -> (pool, PG) -> OSD set)來有效的隔離了集群擴容對上層client的影響,總之底層OSD的擴展對於上層client來說是完全明晰的;

2)高可靠性:針對安全問題,Ceph會在集群中存儲同一數據的多個副本,用戶也可以通過自定義副本數,來保證在某些設備故障後數據還可用,對於副本存儲的邏輯關系,可以在ceph中進行設置,達到不同主機、不同機架、甚至不同機房的互備效果,除此之外,Ceph能自動探測到OSD/Monitor的故障,並自行恢復,有效減少了單設備節點的穩定性對集群的影響。

3)高性能:Ceph中通過文件切分和CRUSH算法,保證數據chunk分布基本均衡,同時Ceph的無元數據信息的設計(CephFS除外),保證了Client可以根據cluster map,通過固定算法確定數據的位置信息,避免了單個元數據節點的性能瓶頸,可以提供非常高的並行化IO性能,其原因是Client端數據經過切分為Objects後,可以同時與多個OSDs交互,寫入數據。

ceph在品高雲中的實踐

ceph在品高雲是作為雲底層資源池分布式存儲的地位存在的,針對RADOSGW、 RBD和Ceph FS 三種都會有很好的支持,而就目前技術成熟度來看,其中塊存儲RBD是最為成熟的並且也是使用率最高的,以下是ceph作為一個存儲類型在品高雲中的使用截圖技術分享

在詳情中可以針對名稱、Monitor、存儲調度標記等進行修改,並且可以將雲平臺的用戶同步到ceph RADOSGW的用戶接口中;技術分享

當我們需要創建一個實例或者存儲卷的時候,可以直接選擇將其創建在ceph存儲上,這裏使用的其實就是ceph的RBD塊存儲服務;技術分享技術分享

當然,對於ceph FS的使用則是可以將一個文件目錄直接進行掛載,然後可以在其中存儲文件,以下是在一臺品高雲主機中部署ceph FS的截圖;技術分享

ceph調優

Ceph是一個復雜的系統,官方的默認配置能保證系統基本運行,但不一定能貼合用戶實際需求,達到最大化用戶物理系統性能的要求,所幸Ceph提供了很多的配置參數來允許用戶訂制自己的分布式存儲系統,這意味著在賦予用戶這個便利性的同時,用戶可以自行調優。

我們對ceph物理機的配置建議大致如下:

1). 200G+內存(保證良好的系統運行狀態)

2). 32核Intel Xeon處理器(保證良好的系統運行狀態)

3). 1:5的SSD和SATA配比,SSD分區做Journal,SATA盤做OSD(實踐產生的最高性價比)

3). PCIE的存儲卡提供超高性能存儲Pool (性能更高)

4). 萬兆網卡提供Ceph的Cluster Network通信(滿足分布式存儲之間的通信需求)

5). 千兆網卡提供Ceph的Public Network通信(保證性能同時降低成本)

並且結合我們的研發測試與實踐,形成了適合品高雲的ceph調優經驗,基本有以下幾個方面:

1). BIOS設置

2). Linux及磁盤參數調優

3). XFS相關參數調優

4). filestore調整

5). journal性能優化

6). osd相關參數調優

7). crushmap優化,給osd劃分合理的pools,故障域切分,降低數據丟失概率

8). RADOSGW的接口功能增加,適應雲平臺需求

ceph監控

ceph是一個具備自我修復功能的高穩定平臺,但這不能降低其作為一個完善的存儲系統監控的必要性,因為我們不能長期依靠人工來發現問題,所以針對ceph品高雲也有一套完善的監控系統。

首頁有針對存儲狀態、容量、版本信息、同步狀況、存儲讀寫的監控信息;技術分享

並且可以針對Monitor、osd、MDS、POOL以及PG等進程組件進行監控,一旦發現問題,可以及時排查處理。技術分享

技術分享技術分享

總而言之,ceph是一個大型分布式存儲系統,品高雲對其的研究優化將是一個持續的過程,借助在眾多客戶中的部署實踐和需求改善,ceph在品高雲的運行狀態將會越來越完善。

ceph在品高雲中的實踐