資源描述:
《Ceph架構(gòu)剖析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Ceph架構(gòu)剖析1.介紹云硬盤是IaaS云平臺(tái)的重要組成部分,云硬盤給虛擬機(jī)提供了持久的塊存儲(chǔ)設(shè)備。目前的AWS的EBS(ElasticBlockstore)給Amazon的EC2實(shí)例提供了高可用高可靠的塊級(jí)存儲(chǔ)卷,EBS適合于一些需要訪問塊設(shè)備的應(yīng)用,比如數(shù)據(jù)庫、文件系統(tǒng)等。在OpenStack中,可以使用Ceph、Sheepdog、GlusterFS作為云硬盤的開源解決方案,下面我們來了解Ceph的架構(gòu)。Ceph是統(tǒng)一存儲(chǔ)系統(tǒng),支持三種接口。1.Object:有原生的API,而且也兼容Swift
2、和S3的API2.Block:支持精簡(jiǎn)配置、快照、克隆3.File:Posix接口,支持快照Ceph也是分布式存儲(chǔ)系統(tǒng),它的特點(diǎn)是:高擴(kuò)展性:使用普通x86服務(wù)器,支持10~1000臺(tái)服務(wù)器,支持TB到PB級(jí)的擴(kuò)展。高可靠性:沒有單點(diǎn)故障,多數(shù)據(jù)副本,自動(dòng)管理,自動(dòng)修復(fù)。高性能:數(shù)據(jù)分布均衡,并行化度高。對(duì)于objectsstorage和blockstorage,不需要元數(shù)據(jù)服務(wù)器。2.背景目前Inktank公司掌控Ceph的開發(fā),但Ceph是開源的,遵循LGPL協(xié)議。Inktank還積極整合Cep
3、h和其他云計(jì)算和大數(shù)據(jù)平臺(tái),目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop等。當(dāng)前Ceph的最新穩(wěn)定版本0.67(Dumpling),它的objectsstorage和blockstorage已經(jīng)足夠穩(wěn)定,而且Ceph社區(qū)還在繼續(xù)開發(fā)新功能,包括跨機(jī)房部署和容災(zāi)、支持Erasureencoding等。Ceph具有完善的社區(qū)設(shè)施和發(fā)布流程[1](每三個(gè)月發(fā)布一個(gè)穩(wěn)定版本)。目前Ceph有很多用戶案列,這是2013.03月Inktank公司在郵件列表中做的調(diào)
4、查,共收到了81份有效反饋[2]。從調(diào)查中可以看到有26%的用戶在生產(chǎn)環(huán)境中使用Ceph,有37%的用戶在私有云中使用Ceph,還有有16%的用戶在公有云中使用Ceph。目前Ceph最大的用戶案例是Dreamhost的ObjectService,目前總?cè)萘渴?PB,可靠性達(dá)到99.99999%,數(shù)據(jù)存放采用三副本,它的價(jià)格比S3還便宜。下圖中,左邊是Inktank的合作伙伴,右邊是Inktank的用戶。3.架構(gòu)3.1組件Ceph的底層是RADOS,它的意思是“Areliable,autonomous
5、,distributedobjectstorage”。RADOS由兩個(gè)組件組成:1.OSD:ObjectStorageDevice,提供存儲(chǔ)資源。2.Monitor:維護(hù)整個(gè)Ceph集群的全局狀態(tài)。RADOS具有很強(qiáng)的擴(kuò)展性和可編程性,Ceph基于RADOS開發(fā)了ObjectStorage、BlockStorage、FileSystem。Ceph另外兩個(gè)組件是:1.MDS:用于保存CephFS的元數(shù)據(jù)。2.RADOSGateway:對(duì)外提供REST接口,兼容S3和Swift的API。3.2映射Cep
6、h的命名空間是(Pool,Object),每個(gè)Object都會(huì)映射到一組OSD中(由這組OSD保存這個(gè)Object):(Pool,Object)→(Pool,PG)→OSDset→DiskCeph中Pools的屬性有:1.Object的副本數(shù)2.PlacementGroups的數(shù)量3.所使用的CRUSHRuleset在Ceph中,Object先映射到PG(PlacementGroup),再由PG映射到OSDset。每個(gè)Pool有多個(gè)PG,每個(gè)Object通過計(jì)算hash值并取模得到它所對(duì)應(yīng)的PG。P
7、G再映射到一組OSD(OSD的個(gè)數(shù)由Pool的副本數(shù)決定),第一個(gè)OSD是Primary,剩下的都是Replicas。數(shù)據(jù)映射(DataPlacement)的方式?jīng)Q定了存儲(chǔ)系統(tǒng)的性能和擴(kuò)展性。(Pool,PG)→OSDset的映射由四個(gè)因素決定:1.CRUSH算法:一種偽隨機(jī)算法。2.OSDMAP:包含當(dāng)前所有Pool的狀態(tài)和所有OSD的狀態(tài)。3.CRUSHMAP:包含當(dāng)前磁盤、服務(wù)器、機(jī)架的層級(jí)結(jié)構(gòu)。4.CRUSHRules:數(shù)據(jù)映射的策略。這些策略可以靈活的設(shè)置object存放的區(qū)域。比如可以指
8、定pool1中所有objecst放置在機(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中得到CRUSHMAP、OSDMAP、CRUSHRuleset,然后使用CRUSH算法計(jì)算出Object所在的OSDset。所