相信很多公司和我們一樣,本就不充足的研發(fā)隊(duì)伍,由于種種歷史和政治原因,在同一個(gè)領(lǐng)域里充斥了大量類似的開源項(xiàng)目,在我們的分布式存儲(chǔ)系統(tǒng)里,目前就采用了HDFS,Gluster,Swift和Ceph四種系統(tǒng)。今天就憑著印象,聊一聊這四種分布式存儲(chǔ)的不同。
1.HDFS
其實(shí)在真正搞過分布式文件系統(tǒng)的人看來,HDFS不能算得上是真正的文件系統(tǒng)。因?yàn)樗麑?shí)在太簡(jiǎn)單,太粗糙。甚至連搞個(gè)append接口都搞了老半天,到現(xiàn)在應(yīng)該還不支持隨機(jī)讀寫之類的文件系統(tǒng)最基本的功能。他最大的優(yōu)勢(shì)是借助hadoop這個(gè)生態(tài)系統(tǒng)得以比較穩(wěn)定。另外還有一個(gè)優(yōu)勢(shì)就是他是用 java寫的,這樣一幫java程序員也可以號(hào)稱自己在搞文件系統(tǒng)了。
HDFS到現(xiàn)在應(yīng)該還是不是真正意義上的分布式,他的nameode的federation相當(dāng)于靜態(tài)目錄,雖然共享存儲(chǔ)池,但是namespace是不共享的。
2.Gluster
Gluster最大的優(yōu)勢(shì)在于他繼承了傳統(tǒng)文件系統(tǒng)的posix接口,而且表現(xiàn)比較穩(wěn)定。雖然他的元數(shù)據(jù)的分布式hash帶來很多性能上的問題,但如果非要用文件系統(tǒng)接口的似乎也沒有更好的選擇。
但是Gluster用的是c/c++,對(duì)于很多只想拿來就用不想踩坑的同學(xué)無疑是個(gè)負(fù)擔(dān),萬(wàn)一出了問題不是很容易解決。
3.Swift
Swift的流行得益于openstack,它應(yīng)該是目前最流行的對(duì)象存儲(chǔ)系統(tǒng),印象中有在生產(chǎn)環(huán)節(jié)跑到上百PB的case。但總感覺這玩意用python寫的,有點(diǎn)粗糙,似乎就是一堆腳本的拼湊。
4.Ceph
最后不得不談一下筆者的最愛,Ceph。初次接觸他是在2012年初。它最大的優(yōu)勢(shì)就是同時(shí)支持三種存儲(chǔ)接口,是真正意義上的融合存儲(chǔ)。但它 mds的設(shè)計(jì)過于學(xué)術(shù),似乎很難有穩(wěn)定下來的一天。Ceph真正大火也是得益于跟opestack的結(jié)合,現(xiàn)在它已經(jīng)是openstack快存儲(chǔ)的不二之選。它的對(duì)象存儲(chǔ)也還算穩(wěn)定,dreamhost,CERN包括最近的yahoo都有PB級(jí)的生產(chǎn)級(jí)別使用。
總結(jié)下來HDFS如果不是離線的大數(shù)據(jù)計(jì)算,應(yīng)該是最沒吸引力的。如果是非要用文件系統(tǒng)接口,那只能是gluster。如果單純的對(duì)象存儲(chǔ)推薦swift。如果考慮更好的兼容S3或者跟openstack相結(jié)合,當(dāng)然是ceph。
Gluster和Ceph都是c/c++,對(duì)于java和pyhon大行其道的今天,選擇要慎重。但如果有點(diǎn)情懷特別是追求底層的性能,可以挑戰(zhàn)一下ceph。