關(guān)于Openstack的分布式存儲,我關(guān)注Ceph,swift,hdfs的功能實(shí)現(xiàn)和優(yōu)缺點(diǎn),適用場景。
1.存儲文件大小
HDFS、HBase、Hive不太適合存文檔、圖片大小的文件,HDFS適用于存大文件。
SWIFT:處理幾個G的大文件性能上可能會比HDFS差,因?yàn)闆]有條帶化。但遇到很多幾兆、幾十兆的,這些文件的存儲,HDFS就不如SWIFT。所以對于日常文件的單獨(dú)處理用SWIFT,集中處理如果達(dá)到G級用HDFS。
2.存儲類型:塊存儲和對象存儲
如果你只需要用塊存儲,那當(dāng)然是Ceph,如果只需要用對象存儲,那當(dāng)然是SWIFT。各自有各自擅長的地方,不過現(xiàn)在因?yàn)镃eph也支持對象存儲,SWIFT和Ceph又是OpenStack社區(qū)非常頻繁提到的兩種存儲形式,所以,有很多人會把SWIFT和Ceph在一起比較。
如果只要用對象存儲,就選擇SWIFT;如果只要用塊存儲,那就Ceph;即要用對象存儲又要用塊存儲的場合,是用SWIFT還是Ceph呢?我們一般是這樣推薦的:
1)如果節(jié)點(diǎn)數(shù)量很大,推薦用Ceph單獨(dú)做塊,用SWIFT做對象存儲,因?yàn)樵诠?jié)點(diǎn)數(shù)量較大時,Ceph的維護(hù)成本比SWIFT要高得多,大多數(shù)場景實(shí)際應(yīng)用的時候會發(fā)現(xiàn),大部分?jǐn)?shù)據(jù)都可以放到對象存儲上(這一點(diǎn)如果有疑問,歡迎隨時討論);
2)如果節(jié)點(diǎn)數(shù)量少,那就用Ceph統(tǒng)一搞定,因?yàn)橐话阏J(rèn)為生產(chǎn)環(huán)境中最小的分布式存儲應(yīng)當(dāng)有五個節(jié)點(diǎn),所以,如果節(jié)點(diǎn)數(shù)量少于十個或者剛到十來個,那構(gòu)建兩個分布式存儲顯然是不理想的(考慮到空間劃分問題);
3)如果團(tuán)隊(duì)里有牛人能輕松解決Ceph大規(guī)模部署問題,那就果斷用Ceph;
4)如果希望對象存儲能夠和OpenStack其他項(xiàng)目無縫結(jié)合,如果希望實(shí)現(xiàn)多租戶,果斷用SWIFT來實(shí)現(xiàn)對象存儲。
3.對象存儲概念:
RESTful接口和扁平的數(shù)據(jù)組織形式。
4.對象存儲和文件系統(tǒng)存儲區(qū)別:
所謂文件系統(tǒng)的本質(zhì)是POSIX接口,“對象”這個名詞是做對象存儲的人為了把自己做的東西和文件系統(tǒng)區(qū)分開而用的術(shù)語,把存在對象存儲里的文件叫做“對象”,所以選擇文件系統(tǒng)還是對象存儲,跟你把這堆數(shù)據(jù)稱作對象還是文件并沒有直接關(guān)系,而是要看你是需要POSIX還是RESTful HTTP接口,是需要目錄結(jié)構(gòu)還是適用扁平數(shù)據(jù)管理結(jié)構(gòu)。
GlusterFS,它的優(yōu)點(diǎn)在于如果你需要使用POSIX接口,那GlusterFS是一個很好的選擇,但是Gluster在文件數(shù)量、目錄數(shù)量太大的情況下會出現(xiàn)性能衰減,這是文件系統(tǒng)本身的特點(diǎn)決定的,不論是哪種POSIX兼容的文件系統(tǒng),都存在類似的問題。
博文出處:http://blog.chinaunix.net/uid-7374279-id-4732346.html