新聞中心
比較swift與HDFS 話Ceph本質(zhì)
作者:張華 2015-05-15 10:52:45
云計(jì)算 Ceph是一個(gè)支持大量小文件和隨機(jī)讀寫的分布式文件系統(tǒng),在維護(hù) POSIX 兼容性的同時(shí)加入了復(fù)制和容錯(cuò)功能。目前Ceph已經(jīng)被加到了Linux內(nèi)核之中,雖然可能還不適用于生產(chǎn)環(huán)境。它也想實(shí)現(xiàn)統(tǒng)一存儲(chǔ)的目標(biāo)。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、三門峽網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、三門峽網(wǎng)絡(luò)營(yíng)銷、三門峽企業(yè)策劃、三門峽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供三門峽建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
先溫習(xí)一下之前作者曾發(fā)表在openstack中國(guó)社區(qū)的一篇理論文章(http://www.openstack.cn/p276.html),復(fù)制如下:
Ceph是一個(gè)支持大量小文件和隨機(jī)讀寫的分布式文件系統(tǒng),在維護(hù) POSIX 兼容性的同時(shí)加入了復(fù)制和容錯(cuò)功能。目前Ceph已經(jīng)被加到了Linux內(nèi)核之中,雖然可能還不適用于生產(chǎn)環(huán)境。它也想實(shí)現(xiàn)統(tǒng)一存儲(chǔ)的目標(biāo),即:
對(duì)象系統(tǒng),類似Swift, 這里是RADOS, Reliable Autonomic Distributed Object Store, 可靠的自主分布式對(duì)象存儲(chǔ)。在每臺(tái)host上都要運(yùn)行OSD(Object Storage Daemon)進(jìn)程,當(dāng)然,如果已經(jīng)用RAID, LVM或btrf,xfs(最好別用ext4)將每臺(tái)host上的硬盤都做成一個(gè)池了的話,運(yùn)行一個(gè)OSD就可以了。OSD會(huì)默認(rèn)創(chuàng)建三個(gè)池:data, metada與RBD 。同時(shí),在每臺(tái)host上還要運(yùn)行MON (Monitor)進(jìn)程。
文件存儲(chǔ),類似Hadoop中的HDFS,但HDFS是流式存儲(chǔ),即一次寫多次讀。想使用Ceph文件存儲(chǔ)的話,那還在每臺(tái)host上還要運(yùn)行MDS(Meta-Data Server)進(jìn)程。MDS是在對(duì)象系統(tǒng)的基礎(chǔ)之上為Ceph客戶端又提供的一層POSIX文件系統(tǒng)抽象實(shí)現(xiàn)。
塊存儲(chǔ), 類似Cinder
這樣說(shuō)來(lái),至少有下列幾種方式可以訪問(wèn)Ceph中的對(duì)象:
RADOS方式,RADOS是Ceph的基礎(chǔ),即使對(duì)于Ceph文件存儲(chǔ),底層也是使用RADOS,RADOS本來(lái)提供一個(gè)librados庫(kù)來(lái)訪問(wèn)對(duì)象,這個(gè)庫(kù)支持php, java, python, c/c++。還通過(guò)RADOS Gateway來(lái)提供和Swift與Amazon-S3兼容的REST接口。
RBD(rados block device)與QEMU-RBD,前面說(shuō)了,Ceph已經(jīng)加到內(nèi)核了,所以可以使用內(nèi)核的RBD驅(qū)動(dòng)來(lái)訪問(wèn)對(duì)象,它也和QEMU-RBD兼容。
CephFS, 上述MDS提供的POSIX兼容的文件系統(tǒng)。在生產(chǎn)系統(tǒng)中,建議用以上三種方式,不建議這種。
一個(gè)數(shù)據(jù)塊具體存放在哪些host上需要有元數(shù)據(jù)來(lái)描述,HDFS是在一臺(tái)機(jī)器上集中存儲(chǔ)元數(shù)據(jù)的(HA可以通過(guò)配置主備實(shí)現(xiàn)),Swift則完全是分布式的,一個(gè)數(shù)據(jù)塊具體存放在哪些host(在Ceph中稱OSD, OSD是在host上維護(hù)數(shù)據(jù)塊的一個(gè)進(jìn)程)上由一致性哈希算法決定,元數(shù)據(jù)使用rsync命令同步分布在每一個(gè)host上,所以需要分級(jí)來(lái)減小元數(shù)據(jù)的大小,所以也就有了Accounts, Containers, Objects這三級(jí)RING。對(duì)應(yīng)在RADOS中,有兩級(jí)映射,先經(jīng)過(guò)哈希把key映射到PG (Placement Group),再通過(guò)一致性哈希函數(shù)CRUSH從PGID映射到實(shí)際存儲(chǔ)數(shù)據(jù)的host (OSD)。Swift使用的一致性哈希算法使用flat的host列表,但是CRUSH這種一致性哈希算法使用的host列表具有層次結(jié)構(gòu)(shelves, racks, rows),并且能允許用戶通過(guò)指定policies把復(fù)制存放在不同的機(jī)架。剩下的事和Swift類似,CRUSH會(huì)生成在RING上產(chǎn)生副本信息,第一個(gè)副本是主,其它是從,主負(fù)責(zé)接收來(lái)自客戶端的寫,及協(xié)調(diào)多個(gè)客戶端的寫,主再將數(shù)據(jù)寫給從,待主返回結(jié)果后,主才告訴用戶寫成功,所以副本是強(qiáng)一致性的,這點(diǎn)和AWS dynamo這些最終一致性的做法有些區(qū)別。當(dāng)新增機(jī)器或發(fā)生宕機(jī)時(shí),和swift也類似,CRUSH一致性哈希算法也會(huì)保證數(shù)據(jù)的抖動(dòng)性最小(即轉(zhuǎn)移的數(shù)據(jù)塊最少)。
除了存儲(chǔ)節(jié)點(diǎn)外,還有一些監(jiān)控節(jié)點(diǎn)組成的小集群,負(fù)責(zé)監(jiān)控存儲(chǔ)節(jié)點(diǎn)的運(yùn)行狀態(tài),它們通過(guò)Paxos協(xié)議達(dá)到一致和保持?jǐn)?shù)據(jù)冗余,Paxos和ZooKeeper中用到的領(lǐng)導(dǎo)者選擇算法Zap協(xié)議類似,只要保證這些host中的大多數(shù)host不出故障就行,并且我們一般選擇奇數(shù)臺(tái)host,舉個(gè)例子,在5個(gè)host的監(jiān)控集群中,任何兩臺(tái)機(jī)器故障的情況下服務(wù)都能繼續(xù)運(yùn)行。
在一致性保證方面,在ZooKeeper中,領(lǐng)導(dǎo)者與跟隨者非常聰明,跟隨者通過(guò)更新號(hào)(唯一的全局標(biāo)識(shí)叫zxid, ZooKeeper Transaction ID)來(lái)滯后領(lǐng)導(dǎo)者,這樣大部分host確認(rèn)更新之后,寫操作就能被提交了。Ceph換湯不換藥,這個(gè)全局標(biāo)識(shí)改了個(gè)名叫epoch序號(hào),所以Monitor節(jié)點(diǎn)記錄的是epoch序號(hào)和一些全局狀態(tài)(如存儲(chǔ)節(jié)點(diǎn)是否在線,地址端口等),非常輕量,每個(gè)監(jiān)測(cè)到存儲(chǔ)節(jié)點(diǎn)發(fā)生變更時(shí),如存儲(chǔ)節(jié)點(diǎn)上線或下線,將epoch序號(hào)增加以區(qū)別先前的狀態(tài)。總之,Monitor節(jié)點(diǎn)維護(hù)了這些集群狀態(tài)映射對(duì)象ClusterMap,包括:monitor map, OSD map, placement group (PG) map, CRUSH map, epoch map。例如當(dāng)存儲(chǔ)節(jié)點(diǎn)宕機(jī)時(shí),監(jiān)控節(jié)點(diǎn)發(fā)現(xiàn)后更新epoch和ClusterMap,然后通過(guò)gossip p2p方式推送給存儲(chǔ)節(jié)點(diǎn)(這種p2p通知和存儲(chǔ)節(jié)點(diǎn)自主復(fù)制和HDFS中的master-slave模型是有區(qū)別的),存儲(chǔ)節(jié)點(diǎn)再重新計(jì)算CRUSH決定將宕機(jī)機(jī)器丟失副本補(bǔ)上,由于一致性哈希的特性,發(fā)生變更的PG不會(huì)很多,也就是說(shuō)抖動(dòng)性不會(huì)很大。
通過(guò)將Ceph與現(xiàn)有的Swift, Hadoop等現(xiàn)有技術(shù)一坐標(biāo)映射,到了這一步,筆者也就清楚Ceph是做什么的了。有機(jī)會(huì)再看看OpenStack是怎樣用它的,以及它是怎樣具體安裝部署的。
參考文獻(xiàn):
http://ceph.com/docs/next/architecture/
http://blog.csdn.net/quqi99/article/details/7438258
ceph學(xué)習(xí)筆記--對(duì)象存儲(chǔ)
http://www.sebastien-han.fr/blog/2012/06/10/introducing-ceph-to-openstack/
博文出處:http://m.blog.csdn.net/blog/quqi99/32939509
文章名稱:比較Swift與HDFS話Ceph本質(zhì)
轉(zhuǎn)載注明:http://m.jiaoqi3.com/article/dpjedid.html


咨詢
建站咨詢
