Ceph架構(gòu)剖析_第1頁(yè)
Ceph架構(gòu)剖析_第2頁(yè)
Ceph架構(gòu)剖析_第3頁(yè)
Ceph架構(gòu)剖析_第4頁(yè)
Ceph架構(gòu)剖析_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、云硬盤(pán)是IaaS云平臺(tái)的重要組成部分,云硬盤(pán)給虛擬機(jī)提供了持久的塊存儲(chǔ)設(shè)備。目前的AWS 的EBS(Elastic Block store)給Amazon的EC2實(shí)例提供了高可用高可靠的塊級(jí)存儲(chǔ)卷,EBS適合于一些需要訪問(wèn)塊設(shè)備的應(yīng)用,比如數(shù)據(jù)庫(kù)、文件系統(tǒng)等。 在OpenStack中,可以使用Ceph、Sheepdog、GlusterFS作為云硬盤(pán)的開(kāi)源解決方案,下面我們來(lái)了解Ceph的架構(gòu)。 Ceph是統(tǒng)一存儲(chǔ)系統(tǒng),支持三種接口。 Object:有原生的API,而且也兼容Swift和S3的API Block:支持精簡(jiǎn)配置、快照、克隆 File:Posix接口,支持快照 Ceph也是分布式存儲(chǔ)

2、系統(tǒng),它的特點(diǎn)是: 高擴(kuò)展性:使用普通x86服務(wù)器,支持101000臺(tái)服務(wù)器,支持TB到PB級(jí)的擴(kuò)展。 高可靠性:沒(méi)有單點(diǎn)故障,多數(shù)據(jù)副本,自動(dòng)管理,自動(dòng)修復(fù)。 高性能:數(shù)據(jù)分布均衡,并行化度高。對(duì)于objects storage和block storage,不需要元數(shù)據(jù)服務(wù)器。 目前Inktank公司掌控Ceph的開(kāi)發(fā),但Ceph是開(kāi)源的,遵循LGPL協(xié)議。Inktank還積極整合Ceph和其他云計(jì)算和大數(shù)據(jù)平臺(tái),目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop等。 當(dāng)前Ceph的最新穩(wěn)定版本0.67(Dumpling),它的objects sto

3、rage和block storage已經(jīng)足夠穩(wěn)定,而且Ceph社區(qū)還在繼續(xù)開(kāi)發(fā)新功能,包括跨機(jī)房部署和容災(zāi)、支持Erasure encoding等。Ceph具有完善的社區(qū)設(shè)施和發(fā)布流程1(每三個(gè)月發(fā)布一個(gè)穩(wěn)定版本) 。 目前Ceph有很多用戶案列,這是2013.03月Inktank公司在郵件列表中做的調(diào)查,共收到了81份有效反饋2。從調(diào)查中可以看到有26%的用戶在生產(chǎn)環(huán)境中使用Ceph,有37%的用戶在私有云中使用Ceph,還有有16%的用戶在公有云中使用Ceph。 目前Ceph最大的用戶案例是Dreamhost的Object Service,目前總?cè)萘渴?PB,可靠性達(dá)到99.99999%,

4、數(shù)據(jù)存放采用三副本,它的價(jià)格比S3還便宜。下圖中,左邊是Inktank的合作伙伴,右邊是Inktank的用戶。 3.1 組件 Ceph的底層是RADOS,它的意思是“A reliable, autonomous, distributed object storage”。 RADOS由兩個(gè)組件組成: OSD: Object Storage Device,提供存儲(chǔ)資源。 Monitor:維護(hù)整個(gè)Ceph集群的全局狀態(tài)。 RADOS具有很強(qiáng)的擴(kuò)展性和可編程性,Ceph基于RADOS開(kāi)發(fā)了Object Storage、Block Storage、FileSystem。Ceph另外兩個(gè)組件是: MDS:

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

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

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

8、60;object_name  obj_hash = hash(locator)  pg = obj_hash % num_pg  osds_for_pg = crush(pg)  # returns a list of osds  primary = osds_for_pg0  replicas = osd

9、s_for_pg1:這種數(shù)據(jù)映射的優(yōu)點(diǎn)是: 把Object分成組,這降低了需要追蹤和處理metadata的數(shù)量(在全局的層面上,我們不需要追蹤和處理每個(gè)object的metadata和placement,只需要管理PG的metadata就可以了。PG的數(shù)量級(jí)遠(yuǎn)遠(yuǎn)低于object的數(shù)量級(jí))。 增加PG的數(shù)量可以均衡每個(gè)OSD的負(fù)載,提高并行度。 分隔故障域,提高數(shù)據(jù)的可靠性。 3.3 強(qiáng)一致性 Ceph的讀寫(xiě)操作采用Primary-Replica模型,Client只向Object所對(duì)應(yīng)OSD set的Primary發(fā)起讀寫(xiě)請(qǐng)求,這保證了數(shù)據(jù)的強(qiáng)一致性。 由于每個(gè)Object都只有一個(gè)Primar

10、y OSD,因此對(duì)Object的更新都是順序的,不存在同步問(wèn)題。 當(dāng)Primary收到Object的寫(xiě)請(qǐng)求時(shí),它負(fù)責(zé)把數(shù)據(jù)發(fā)送給其他Replicas,只要這個(gè)數(shù)據(jù)被保存在所有的OSD上時(shí),Primary才應(yīng)答Object的寫(xiě)請(qǐng)求,這保證了副本的一致性。 3.4 容錯(cuò)性 在分布式系統(tǒng)中,常見(jiàn)的故障有網(wǎng)絡(luò)中斷、掉電、服務(wù)器宕機(jī)、硬盤(pán)故障等,Ceph能夠容忍這些故障,并進(jìn)行自動(dòng)修復(fù),保證數(shù)據(jù)的可靠性和系統(tǒng)可用性。 Monitors是Ceph管家,維護(hù)著Ceph的全局狀態(tài)。Monitors的功能和zookeeper類似,它們使用Quorum和Paxos算法去建立全局狀態(tài)的共識(shí)。 OSDs可以進(jìn)行自動(dòng)修

11、復(fù),而且是并行修復(fù)。 故障檢測(cè): OSD之間有心跳檢測(cè),當(dāng)OSD A檢測(cè)到OSD B沒(méi)有回應(yīng)時(shí),會(huì)報(bào)告給Monitors說(shuō)OSD B無(wú)法連接,則Monitors給OSD B標(biāo)記為down狀態(tài),并更新OSD Map。當(dāng)過(guò)了M秒之后還是無(wú)法連接到OSD B,則Monitors給OSD B標(biāo)記為out狀態(tài)(表明OSD B不能工作),并更新OSD Map。 備注:可以在Ceph中配置M的值。 故障恢復(fù): 當(dāng)某個(gè)PG對(duì)應(yīng)的OSD set中有一個(gè)OSD被標(biāo)記為down時(shí)(假如是Primary被標(biāo)記為down,則某個(gè)Replica會(huì)成為新的Primary,并處理所有讀寫(xiě) object請(qǐng)求),則該P(yáng)G處于ac

12、tive+degraded狀態(tài),也就是當(dāng)前PG有效的副本數(shù)是N-1。 過(guò)了M秒之后,假如還是無(wú)法連接該OSD,則它被標(biāo)記為out,Ceph會(huì)重新計(jì)算PG到OSD set的映射(當(dāng)有新的OSD加入到集群時(shí),也會(huì)重新計(jì)算所有PG到OSD set的映射),以此保證PG的有效副本數(shù)是N。 新OSD set的Primary先從舊的OSD set中收集PG log,得到一份Authoritative History(完整的、全序的操作序列),并讓其他Replicas同意這份Authoritative History(也就是其他Replicas對(duì)PG的所有objects的狀態(tài)達(dá)成一致),這個(gè)過(guò)程叫做Peer

13、ing。 當(dāng)Peering過(guò)程完成之后,PG進(jìn) 入active+recoverying狀態(tài),Primary會(huì)遷移和同步那些降級(jí)的objects到所有的replicas上,保證這些objects 的副本數(shù)為N。 4.1 高性能 Client和Server直接通信,不需要代理和轉(zhuǎn)發(fā) 多個(gè)OSD帶來(lái)的高并發(fā)度。objects是分布在所有OSD上。 負(fù)載均衡。每個(gè)OSD都有權(quán)重值(現(xiàn)在以容量為權(quán)重)。 client不需要負(fù)責(zé)副本的復(fù)制(由primary負(fù)責(zé)),這降低了client的網(wǎng)絡(luò)消耗。 4.2 高可靠性 數(shù)據(jù)多副本??膳渲玫膒er-pool副本策略和故障域布局,支持強(qiáng)一致性。 沒(méi)有單點(diǎn)故障??梢?/p>

14、忍受許多種故障場(chǎng)景;防止腦裂;單個(gè)組件可以滾動(dòng)升級(jí)并在線替換。 所有故障的檢測(cè)和自動(dòng)恢復(fù)?;謴?fù)不需要人工介入,在恢復(fù)期間,可以保持正常的數(shù)據(jù)訪問(wèn)。 并行恢復(fù)。并行的恢復(fù)機(jī)制極大的降低了數(shù)據(jù)恢復(fù)時(shí)間,提高數(shù)據(jù)的可靠性。 4.2 高擴(kuò)展性 高度并行。沒(méi)有單個(gè)中心控制組件。所有負(fù)載都能動(dòng)態(tài)的劃分到各個(gè)服務(wù)器上。把更多的功能放到OSD上,讓OSD更智能。 自管理。容易擴(kuò)展、升級(jí)、替換。當(dāng)組件發(fā)生故障時(shí),自動(dòng)進(jìn)行數(shù)據(jù)的重新復(fù)制。當(dāng)組件發(fā)生變化時(shí)(添加/刪除),自動(dòng)進(jìn)行數(shù)據(jù)的重分布。 使用fio測(cè)試RBD的IOPS,使用dd測(cè)試RBD的吞吐率,下面是測(cè)試的參數(shù): fio的參數(shù):bs=4K, ioengin

15、e=libaio, iodepth=32, numjobs=16, direct=1 dd的參數(shù):bs=512M,oflag=direct 我們的測(cè)試服務(wù)器是AWS上最強(qiáng)的實(shí)例: 117GB內(nèi)存 雙路 E5-2650,共16核 24 * 2TB 硬盤(pán) 服務(wù)器上的操作系統(tǒng)是Ubuntu 13.04,安裝Ceph Cuttlefish 0.61版,副本數(shù)設(shè)置為2,RBD中的塊大小設(shè)置為1M。為了對(duì)比,同時(shí)還對(duì)軟件RAID10進(jìn)行了測(cè)試。下面表格中的性能比是Ceph與RAID10性能之間的比較。 5.1 注意 因?yàn)槭褂玫氖茿WS上的虛擬機(jī),所以它(Xen)掛載的磁盤(pán)都是設(shè)置了Cache的。因此下面測(cè)

16、試的數(shù)據(jù)并不能真實(shí)反應(yīng)物理磁盤(pán)的真實(shí)性能,僅供與RAID10進(jìn)行對(duì)比。 5.2 IOPS 磁盤(pán)數(shù) 隨機(jī)寫(xiě) 隨機(jī)讀 Ceph RAID10 性能比 Ceph RAID10 性能比 24 1075 3772 28% 6045 4679 129% 12 665 1633 40% 2939 4340 67% 6 413 832 49% 909 1445 62% 4 328 559 58% 666 815 81% 2 120 273 43% 319 503 63% 5.3 吞吐率 磁盤(pán)數(shù) 順序?qū)?MB/s) 順序讀(MB/s) Ceph RAID10 性能比 Ceph RAID10 性能比 24 299

17、 879 33% 617 1843 33% 12 212 703 30% 445 1126 39% 6 81 308 26% 233 709 32% 4 67 284 23% 170 469 36% 2 34 153 22% 90 240 37% 5.4 結(jié)果分析 從測(cè)試結(jié)果中,我們看到在單機(jī)情況下,RBD的性能不如RAID10,這是為什么?我們可以通過(guò)三種方法找到原因: 閱讀Ceph源碼,查看I/O路徑 使用blktrace查看I/O操作的執(zhí)行 使用iostat觀察硬盤(pán)的讀寫(xiě)情況 RBD的I/O路徑很長(zhǎng),要經(jīng)過(guò)網(wǎng)絡(luò)、文件系統(tǒng)、磁盤(pán): Librbd -> networking ->

18、 OSD -> FileSystem -> Disk Client的每個(gè)寫(xiě)操作在OSD中要經(jīng)過(guò)8種線程,寫(xiě)操作下發(fā)到OSD之后,會(huì)產(chǎn)生23個(gè)磁盤(pán)seek操作: 把寫(xiě)操作記錄到OSD的Journal文件上(Journal是為了保證寫(xiě)操作的原子性)。 把寫(xiě)操作更新到Object對(duì)應(yīng)的文件上。 把寫(xiě)操作記錄到PG Log文件上。 我使用fio向RBD不斷寫(xiě)入數(shù)據(jù),然后使用iostat觀察磁盤(pán)的讀寫(xiě)情況。在1分鐘之內(nèi),fio向RBD寫(xiě)入了3667 MB的數(shù)據(jù),24塊硬盤(pán)則被寫(xiě)入了16084 MB的數(shù)據(jù),被讀取了288 MB的數(shù)據(jù)。 向RBD寫(xiě)入1MB數(shù)據(jù) = 向硬盤(pán)寫(xiě)入4.39MB數(shù)據(jù) + 讀取0.08MB數(shù)據(jù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論