Ceph技術架構介紹_第1頁
Ceph技術架構介紹_第2頁
Ceph技術架構介紹_第3頁
Ceph技術架構介紹_第4頁
Ceph技術架構介紹_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 Ceph技術架構介紹目錄 TOC o 1-3 h z u HYPERLINK l _Toc502660390 1 介紹 PAGEREF _Toc502660390 h 3 HYPERLINK l _Toc502660391 2架構 PAGEREF _Toc502660391 h 4 HYPERLINK l _Toc502660392 1.1 組件 PAGEREF _Toc502660392 h 4 HYPERLINK l _Toc502660393 2.2 映射 PAGEREF _Toc502660393 h 5 HYPERLINK l _Toc502660394 2.3 強一致性 PAGE

2、REF _Toc502660394 h 8 HYPERLINK l _Toc502660395 2.4 容錯性 PAGEREF _Toc502660395 h 9 HYPERLINK l _Toc502660396 2.5 數(shù)據(jù)遷移 PAGEREF _Toc502660396 h 10 HYPERLINK l _Toc502660397 2.6 狀態(tài)同步 PAGEREF _Toc502660397 h 10 HYPERLINK l _Toc502660398 2.7 數(shù)據(jù)修復 PAGEREF _Toc502660398 h 11 HYPERLINK l _Toc502660399 3優(yōu)點 PA

3、GEREF _Toc502660399 h 11 HYPERLINK l _Toc502660400 3.1 高性能 PAGEREF _Toc502660400 h 11 HYPERLINK l _Toc502660401 3.2 高可靠性 PAGEREF _Toc502660401 h 12 HYPERLINK l _Toc502660402 3.3高擴展性 PAGEREF _Toc502660402 h 13 HYPERLINK l _Toc502660403 4 與cassandra的比較 PAGEREF _Toc502660403 h 131 介紹云硬盤是IaaS云平臺的重要組成部分,

4、云硬盤給虛擬機提供了持久的塊存儲設備。目前的AWS 的EBS(Elastic Block store)給Amazon的EC2實例提供了高可用高可靠的塊級存儲卷,EBS適合于一些需要訪問塊設備的應用,比如數(shù)據(jù)庫、文件系統(tǒng)等。在OpenStack中,可以使用Ceph、Sheepdog、GlusterFS作為云硬盤的開源解決方案。Ceph是統(tǒng)一存儲系統(tǒng),支持三種接口。Object:有原生的API,而且也兼容Swift和S3的APIBlock:支持快照、克隆File:Posix接口,支持快照Ceph也是分布式存儲系統(tǒng),它的特點是:高擴展性:使用普通x86服務器,支持101000臺服務器,支持TB到PB

5、級的擴展。高可靠性:沒有單點故障,多數(shù)據(jù)副本,自動管理,自動修復。高性能:數(shù)據(jù)分布均衡,并行化度高。對于objects storage和block storage,不需要元數(shù)據(jù)服務器。2架構1.1 組件Ceph的底層是RADOS,它的意思是“A reliable, autonomous, distributed object storage”。 RADOS由兩個組件組成:OSD: Object Storage Device,提供存儲資源。Monitor:維護整個Ceph集群的全局狀態(tài)。Ceph基于RADOS開發(fā)了Object Storage、Block Storage、FileSystem。C

6、eph另外兩個組件是:MDS:用于保存CephFS的元數(shù)據(jù)。RADOS Gateway:對外提供REST接口,兼容S3和Swift的API。2.2 映射Ceph的命名空間是 (Pool, Object),每個Object都會映射到一組OSD中(由這組OSD保存這個Object):(Pool, Object) (Pool, PG) OSD set DiskCeph中Pools的屬性有:Object的副本數(shù)Placement Groups的數(shù)量所使用的CRUSH Ruleset在Ceph中,Object先映射到PG(Placement Group),再由PG映射到OSD set。每個Pool有多個

7、PG,每個Object通過計算hash值并取模得到它所對應的PG。PG再映射到一組OSD(OSD的個數(shù)由Pool 的副本數(shù)決定),第一個OSD是Primary,剩下的都是Replicas。數(shù)據(jù)映射(Data Placement)的方式?jīng)Q定了存儲系統(tǒng)的性能和擴展性。(Pool, PG) OSD set 的映射由四個因素決定:CRUSH算法:一種偽隨機算法。OSD MAP:包含當前所有Pool的狀態(tài)和所有OSD的狀態(tài)。CRUSH MAP:包含當前磁盤、服務器、機架的層級結構。CRUSH Rules:數(shù)據(jù)映射的策略。這些策略可以靈活的設置object存放的區(qū)域。比如可以指定 pool1中所有obje

8、cts放置在機架1上,所有objects的第1個副本放置在機架1上的服務器A上,第2個副本分布在機架1上的服務器B上。 pool2中所有的object分布在機架2、3、4上,所有Object的第1個副本分布在機架2的服務器上,第2個副本分布在機架3的服器上,第3個副本分布在機架4的服務器上。Client從Monitors中得到CRUSH MAP、OSD MAP、CRUSH Ruleset,然后使用CRUSH算法計算出Object所在的OSD set。所以Ceph不需要Name服務器,Client直接和OSD進行通信。偽代碼如下所示:locator = object_nameobj_hash =

9、 hash(locator)pg = obj_hash % num_pgosds_for_pg = crush(pg) # returns a list of osdsprimary = osds_for_pg0replicas = osds_for_pg1:這種數(shù)據(jù)映射的優(yōu)點是:把Object分成組,這降低了需要維護的metadata的數(shù)量(在全局的層面上,我們不需要追蹤和處理每個object的metadata,只需要管理PG的metadata就可以了。PG的數(shù)量級遠遠低于object的數(shù)量級)。增加PG的數(shù)量可以均衡每個OSD的負載,提高并行度。2.3 強一致性Ceph的讀寫操作采用Pri

10、mary-Replica模型,Client可以通過只向Object所對應OSD set的Primary發(fā)起讀寫請求,來保證數(shù)據(jù)的強一致性。當然,client讀也可配置為向Replica發(fā)起,但寫一定是向Primary發(fā)起。由于每個Object都只有一個Primary OSD,因此對Object的更新都是順序的,不存在同步問題。當Primary收到Object的寫請求時,它負責把數(shù)據(jù)發(fā)送給其他Replicas,只要這個數(shù)據(jù)被保存在所有的OSD上時,Primary才應答Object的寫請求,這保證了副本的一致性。2.4 容錯性在分布式系統(tǒng)中,常見的故障有網(wǎng)絡中斷、掉電、服務器宕機、硬盤故障等,Ce

11、ph能夠容忍這些故障,并進行自動修復,保證數(shù)據(jù)的可靠性和系統(tǒng)可用性。Monitors是Ceph管家,維護著Ceph的全局狀態(tài)。Monitors的功能和zookeeper類似,它們使用Paxos算法去建立全局狀態(tài)的共識。OSDs可以進行自動修復,而且是并行修復。故障檢測:OSD之間有心跳檢測,當OSD A檢測到OSD B沒有回應時,會報告給Monitors說OSD B無法連接,則Monitors給OSD B標記為down狀態(tài),并更新OSD Map。當過了M秒之后還是無法連接到OSD B,則Monitors給OSD B標記為out狀態(tài)(表明OSD B不能工作),并更新OSD Map。備注:可以在C

12、eph中配置M的值。故障恢復:當某個PG對應的OSD set中有一個OSD被標記為down時(假如是Primary被標記為down,則某個Replica會成為新的Primary,并處理所有讀寫 object請求),則該PG處于active+degraded狀態(tài),也就是當前PG有效的副本數(shù)是N-1。過了M秒之后,假如還是無法連接該OSD,則它被標記為out,Ceph會重新計算PG到OSD set的映射(當有新的OSD加入到集群時,也會重新計算所有PG到OSD set的映射),以此保證PG的有效副本數(shù)是N。新OSD set的Primary先從舊的OSD set中收集PG log,得到一份Autho

13、ritative History(完整的、全序的操作序列),并讓其他Replicas同意這份Authoritative History(也就是其他Replicas對PG的所有objects的狀態(tài)達成一致),這個過程叫做Peering。當Peering過程完成之后,PG進入active+recoverying狀態(tài),Primary會遷移和同步那些降級的objects,保證這些objects 的副本數(shù)為N。2.5 數(shù)據(jù)遷移當有節(jié)點加入或退出集群時,OSDMap發(fā)生改變。這時,會觸發(fā)PG的重分配。通過backfilling機制完成數(shù)據(jù)的遷移。簡單舉例如下:原始:PG_A OSD.0 OSD.1 OSD

14、.2擴容加入新節(jié)點后:PG_A OSD.3 OSD.1 OSD.2此時會生成:PG_A_TEMP OSD.1 OSD.2 OSD.3PG_A_TEMP代替PG_A提供在線讀寫,同時OSD.1會負責同步所有object到OSD.3. 這個過程就是backfilling,當同步完成后。OSD.3會代替OSD.1成為primary節(jié)點。PG_A重新提供在線讀寫。PG_A_TEMP刪除。2.6 狀態(tài)同步OSDMap是Ceph集群中所有 OSD 的信息,所有 OSD 節(jié)點的改變?nèi)邕M程退出,節(jié)點的加入和退出或者節(jié)點權重的變化都會反映到這張 Map 上。這張 Map 不僅會被 Monitor 掌握,OSD

15、節(jié)點和 Client 也會從 Monitor 得到這張表。如一個新的 OSD 加入會導致一些 PG 的遷移,那么這些 PG 的 OSD 會得到通知。除此之外,Monitor 也會隨機的挑選一些 OSD 發(fā)送OSDMap。Monitor 掌握了整個集群的 OSD 狀態(tài)和 PG 狀態(tài),每個PG都是一部分 Object 的擁有者,維護 Object 的信息是每個 PG 的責任,Monitor 不會掌握 Object Level 的信息。因此每個PG都需要維護 PG 的狀態(tài)來保證 Object 的一致性。但是每個 PG 的數(shù)據(jù)和相關故障恢復、遷移所必須的記錄都是由每個 PG 自己維護,也就是存在于每個

16、 PG 所在的 OSD 上。上述的peering過程就是PG維護Object一致性的過程,在OSD狀態(tài)發(fā)生變化時觸發(fā)。2.7 數(shù)據(jù)修復數(shù)據(jù)修復是以PG為單位進行的。Scrub: primary node發(fā)起,掃描各副本的object meta數(shù)據(jù),對比修復。默認每天一次??膳?。Deep scrub: primary node發(fā)起,掃描各副本的object的meta和實際數(shù)據(jù),bit to bit的對比修復。默認一周進行一次??膳洹?優(yōu)點3.1 高性能Client和Server直接通信,不需要代理和轉發(fā)多個OSD帶來的高并發(fā)度。objects是分布在所有OSD上??蛻舳说腟trip功能,可以支持并行上傳和下載負載均衡。每個OSD都有權重值(可以以容量為權重)。client不需要負責副本的復制(由primary負責),這降低了client的網(wǎng)絡消耗。3.2 高可靠性數(shù)據(jù)多副本??膳渲玫膒er-pool副本策略和故障域布局,支持強一致性。沒有單點故障??梢匀淌茉S多種故障場景;單個組件可以滾動升級并在線替換。所有故障的自動檢測和恢復?;謴鸵话悴恍枰斯そ槿?,在恢復期間,可以保持正常的數(shù)據(jù)訪問。并行恢復。并行的恢復機制極大的降低了數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論