01.20 目前流行開源分佈式存儲系統的優劣對比分析

我們在選型開源分佈式存儲系統框架之前需要對不同的框架進行調研。

所有的開源存儲系統介紹鏈接(https://www.oschina.net/project/tag/104/storage)

存儲系統對比

目前比較熱門的分佈式文件系統有如下幾種:

Ceph,GlusterFS,Sheepdog,Lustre,Swift,Cinder,TFS,HDFS,MooseFS,FastDFS,MogileFS等

開源協議說明

GPL:不允許修改後和衍生的代碼做為閉源的商業軟件發佈和銷售,修改後該軟件產品必須也採用GPL協議;

GPL V2:修改文本的整體就必須按照GPL流通,不僅該修改文本的源碼必須向社會公開,而且對於這種修改文本的流通不准許附加修改者自己作出的限制;

GPL V3:要求用戶公佈修改的源代碼,還要求公佈相關硬件;

LGPL:更寬鬆的GPL

目前流行開源分佈式存儲系統的優劣對比分析

目前流行開源分佈式存儲系統的優劣對比分析

選型時一定要考慮技術的熱門程度,否則招不到人,找不到一起弄得同伴。

我們的需求是支持NFS掛載的,就是可以當作本地文件系統一樣的路徑訪問。

滿足這個需求的存儲系統看看上表是否支持fuse掛載即可。

目前流行開源分佈式存儲系統的優劣對比分析

目前流行開源分佈式存儲系統的優劣對比分析

目前流行開源分佈式存儲系統的優劣對比分析

目前流行開源分佈式存儲系統的優劣對比分析

目前流行開源分佈式存儲系統的優劣對比分析

OpenStack Swift 和Ceph對比

我們知道,在當前的開源對象存儲項目中,OpenStack Swift 和Ceph無疑是佼佼者。OpenStack Swift通過大肆宣傳,在市場上知名度很高。而Ceph是作為開源對象存儲競爭產品出現的,以其豐富的功能和卓越的性能見長。兩者都是開源的,但都有其短板。Ceph和Swift,哪種更好?在這個問題上大家爭論不休,選擇Swift還是Ceph這是一個問題!

  網友qfxhz:” Ceph雖然也有一些缺點問題,但是瑕不掩瑜,還是感覺Ceph更好一點, Ceph存儲集成了對象存儲和塊存儲,而Swift系統只能處理對象存儲,不支持塊存儲和文件存儲。“

  網友momo: “還是選擇Swift吧。Ceph很重要的一個短板就是安全性。雲計算節點上的RADOS客戶端直接與RADOS服務器交互所使用的網絡與Ceph用於未加密複製流量的網絡相同。如果某個Ceph客戶端節點被入侵,攻擊者便能得到存儲網絡的所有流量。“

  網友yehuafeilang:“ceph畢竟不是一個專門的對象存儲系統,其對象存儲服務其實是在block服務上模擬出來的,所以和專門的對象存儲swift比起來,在部署規模,使用成本上會有比較大的差距;但是,因為不是所有的雲都需要大規模的對象存儲,考慮到跨地域場景時,swift的部署也很複雜,所以在剛開始搭建openstack雲服務時,或者是對象存儲業務量不是很大時,為了節省系統搭建時間,使用ceph提供S3服務也是個不錯的選擇。“

  網友fatelyliang:存儲不像服務器,它承載的內容是企業最重要的數據和信息,對他的可靠性、完整性、可用性、安全性、運行性能、與企業中的雲計算平臺關係、存儲特徵的可定義性等各部分的要求都應該是企業信息化基礎架構中最重要的一個判斷。存儲設備的損壞、更換等都是對企業影響非常大的一個事情!除非系統可以輕易停機!因此,在目前的狀態下,開源的存儲我會更建議應用在開發測試環境、容災環境等重要性級別相對稍低的地方,充分驗證在以上幾個判斷依據的結論之後,結合企業的實際指標判斷應該選取那一個!

  Ceph這樣的系統一般不支持跨機房,跨地域的大規模部署。如果部署只在單一地域,沒有計劃擴展到多個地域時,Ceph會是很好的選擇。但是,如果要考慮大規模部署的話,Swift可能更為適合。因為它的多地域能力會勝過 Ceph。從安全角度來看,Swift封閉的複製網絡更為安全,但是,如果雲基礎架構本身已經很安全,存儲安全性優先級便會降低,這時可能Ceph更適合。其實,在同一個雲基礎架構裡同時擁有這兩種選擇也是可行的。比如說,可以使用Ceph作為本地高性能存儲,而Swift則作為多地域Glance後臺,但是,擁有這兩種選擇的解決方案花費必然更多,對於資金雄厚的企業來說為了避免長時間糾結,可以一試。 對於中小企業來講還是得悉心衡量利弊以及自身的需求,做好整體把控為妙。關於Swift和Ceph二者的選擇,更重要的是要從兩者的架構角度分析各自的優缺點,並且需要結合自身的應用場景、技術實力、運營實力來進行評估,具體問題具體分析,不必糾結,正所謂寸有所長,尺有所短,選擇最合適的才是最好的。

Ceph用C++編寫而Swift用Python編寫,性能上應當是Ceph佔優。但是與Ceph不同,Swift專注於對象存儲,作為OpenStack組件之一經過大量生產實踐的驗證,與OpenStack結合很好,目前不少人使用Ceph為OpenStack提供塊存儲,但仍舊使用Swift提供對象存儲。

Ceph與HDFS對比

Ceph對比HDFS優勢在於易擴展,無單點。HDFS是專門為Hadoop這樣的雲計算而生,在離線批量處理大數據上有先天的優勢,而Ceph是一個通用的實時存儲系統。雖然Hadoop可以利用Ceph作為存儲後端(根據Ceph官方的教程死活整合不了,自己寫了個簡潔的步驟: http://www.kai-zhang.com/cloud-computing/Running-Hadoop-on-CEPH/), 但執行計算任務上性能還是略遜於HDFS(時間上慢30%左右 Haceph: Scalable Meta- data Management for Hadoop using Ceph)。

存儲系統簡介

TFS

TFS(Taobao File System)是由淘寶開發的一個分佈式文件系統,其內部經過特殊的優化處理,適用於海量的小文件存儲,目前已經對外開源;

TFS採用自有的文件系統格式存儲,因此需要專用的API接口去訪問,目前官方提供的客戶端版本有:C++/JAVA/PHP。

特性

1)在TFS文件系統中,NameServer負責管理文件元數據,通過HA機制實現主備熱切換,由於所有元數據都是在內存中,其處理效率非常高效,系統架構也非常簡單,管理也很方便;

2)TFS的DataServer作為分部署數據存儲節點,同時也具備負載均衡和冗餘備份的功能,由於採用自有的文件系統,對小文件會採取合併策略,減少數據碎片,從而提升IO性能;

3)TFS將元數據信息(BlockID、FileID)直接映射至文件名中,這一設計大大降低了存儲元數據的內存空間;

優點

1)針對小文件量身定做,隨機IO性能比較高;

2)支持在線擴容機制,增強系統的可擴展性;

3)實現了軟RAID,增強系統的併發處理能力及數據容錯恢復能力;

4)支持主備熱倒換,提升系統的可用性;

5)支持主從集群部署,其中從集群主要提供讀/備功能;

缺點

1)TFS只對小文件做優化,不適合大文件的存儲;

2)不支持POSIX通用接口訪問,通用性較低;

3)不支持自定義目錄結構,及文件權限控制;

4)通過API下載,存在單點的性能瓶頸;

5)官方文檔非常少,學習成本高;

應用場景

1)多集群部署的應用

2)存儲後基本不做改動

3)海量小型文件

根據目前官方提供的材料,對單個集群節點,存儲節點在1000臺以內可以良好工作,如存儲節點擴大可能會出現NameServer的性能瓶頸,目前淘寶線上部署容量已達到1800TB規模(2009年數據)

安裝及使用

安裝指導

TFS_配置使用

源代碼路徑:http://code.taobao.org/p/tfs/src/

參考

http://rdc.taobao.com/blog/cs/?p=128

http://elf8848.iteye.com/blog/1724423

http://baike.baidu.com/view/1030880.htm

http://blog.yunnotes.net/index.php/install_document_for_tfs/

FastDFS

FastDFS是國人開發的一款分佈式文件系統,目前社區比較活躍。如上圖所示系統中存在三種節點:Client、Tracker、Storage,在底層存儲上通過邏輯的分組概念,使得通過在同組內配置多個Storage,從而實現軟RAID10,提升併發IO的性能、簡單負載均衡及數據的冗餘備份;同時通過線性的添加新的邏輯存儲組,從容實現存儲容量的線性擴容。

文件下載上,除了支持通過API方式,目前還提供了apache和nginx的插件支持,同時也可以不使用對應的插件,直接以Web靜態資源方式對外提供下載。

目前FastDFS(V4.x)代碼量大概6w多行,內部的網絡模型使用比較成熟的libevent三方庫,具備高併發的處理能力。

特性

1)在上述介紹中Tracker服務器是整個系統的核心樞紐,其完成了訪問調度(負載均衡),監控管理Storage服務器,由此可見Tracker的作用至關重要,也就增加了系統的單點故障,為此FastDFS支持多個備用的Tracker,雖然實際測試發現備用Tracker運行不是非常完美,但還是能保證系統可用。

2)在文件同步上,只有同組的Storage才做同步,由文件所在的源Storage服務器push至其它Storage服務器,目前同步是採用Binlog方式實現,由於目前底層對同步後的文件不做正確性校驗,因此這種同步方式僅適用單個集群點的局部內部網絡,如果在公網上使用,肯定會出現損壞文件的情況,需要自行添加文件校驗機制。

3)支持主從文件,非常適合存在關聯關係的圖片,在存儲方式上,FastDFS在主從文件ID上做取巧,完成了關聯關係的存儲。

優點

1)系統無需支持POSIX(可移植操作系統),降低了系統的複雜度,處理效率更高

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的併發處理能力及數據容錯恢復能力

4)支持主從文件,支持自定義擴展名

5)主備Tracker服務,增強系統的可用性

缺點

1)不支持POSIX通用接口訪問,通用性較低

2)對跨公網的文件同步,存在較大延遲,需要應用做相應的容錯策略

3)同步機制不支持文件正確性校驗,降低了系統的可用性

4)通過API下載,存在單點的性能瓶頸

應用場景

1)單集群部署的應用

2)存儲後基本不做改動

3)小中型文件根據

目前官方提供的材料,現有的使用FastDFS系統存儲容量已經達到900T,物理機器已經達到100臺(50個組)

安裝指導_FastDFS

源碼路徑:https://github.com/happyfish100/fastdfs

參考

https://code.google.com/p/fastdfs/

http://bbs.chinaunix.net/forum-240-1.html

http://portal.ucweb.local/docz/spec/platform/datastore/fastdfs

MooseFS

MooseFS是一個高可用的故障容錯分佈式文件系統,它支持通過FUSE方式將文件掛載操作,同時其提供的web管理界面非常方便查看當前的文件存儲狀態。

特性

1)從下圖中我們可以看到MooseFS文件系統由四部分組成:Managing Server 、Data Server 、Metadata Backup Server 及Client

2)其中所有的元數據都是由Managing Server管理,為了提高整個系統的可用性,Metadata Backup Server記錄文件元數據操作日誌,用於數據的及時恢復

3)Data Server可以分佈式部署,存儲的數據是以塊的方式分佈至各存儲節點的,因此提升了系統的整體性能,同時Data Server提供了冗餘備份的能力,提升系統的可靠性

4)Client通過FUSE方式掛載,提供了類似POSIX的訪問方式,從而降低了Client端的開發難度,增強系統的通用性

元數據服務器(master):負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復

元數據日誌服務器(metalogger):負責備份master服務器的變化日誌文件,以便於在master server出問題的時候接替其進行工作

數據存儲服務器(chunkserver):數據實際存儲的地方,由多個物理服務器組成,負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併為客戶提供數據傳輸;多節點拷貝;在數據存儲目錄,看不見實際的數據

優點

1)部署安裝非常簡單,管理方便

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的 併發處理能力及數據容錯恢復能力

4)數據恢復比較容易,增強系統的可用性5)有回收站功能,方便業務定製

缺點

1)存在單點性能瓶頸及單點故障

2)MFS Master節點很消耗內存

3)對於小於64KB的文件,存儲利用率較低

應用場景

1)單集群部署的應用

2)中、大型文件

參考

http://portal.ucweb.local/docz/spec/platform/datastore/moosefsh

http://www.moosefs.org/

http://sourceforge.net/projects/moosefs/?source=directory

GlusterFS

GlusterFS是Red Hat旗下的一款開源分佈式文件系統,它具備高擴展、高可用及高性能等特性,由於其無元數據服務器的設計,使其真正實現了線性的擴展能力,使存儲總容量可 輕鬆達到PB級別,支持數千客戶端併發訪問;對跨集群,其強大的Geo-Replication可以實現集群間數據鏡像,而且是支持鏈式複製,這非常適用 於垮集群的應用場景

特性

1)目前GlusterFS支持FUSE方式掛載,可以通過標準的NFS/SMB/CIFS協議像訪問本體文件一樣訪問文件系統,同時其也支持HTTP/FTP/GlusterFS訪問,同時最新版本支持接入Amazon的AWS系統

2)GlusterFS系統通過基於SSH的命令行管理界面,可以遠程添加、刪除存儲節點,也可以監控當前存儲節點的使用狀態

3)GlusterFS支持集群節點中存儲虛擬卷的擴容動態擴容;同時在分佈式冗餘模式下,具備自愈管理功能,在Geo冗餘模式下,文件支持斷點續傳、異步傳輸及增量傳送等特點

Yuyj GlusterFS.png

優點

1)系統支持POSIX(可移植操作系統),支持FUSE掛載通過多種協議訪問,通用性比較高

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的 併發處理能力及數據容錯恢復能力

4)強大的命令行管理,降低學習、部署成本

5)支持整個集群鏡像拷貝,方便根據業務壓力,增加集群節點

6)官方資料文檔專業化,該文件系統由Red Hat企業級做維護,版本質量有保障

缺點

1)通用性越強,其跨越的層次就越多,影響其IO處理效率

2)頻繁讀寫下,會產生垃圾文件,佔用磁盤空間

應用場景

1)多集群部署的應用

2)中大型文件根據目前官方提供的材料,現有的使用GlusterFS系統存儲容量可輕鬆達到PB

術語:

brick:分配到捲上的文件系統塊;

client:掛載卷,並對外提供服務;

server:實際文件存儲的地方;

subvolume:被轉換過的文件系統塊;

volume:最終轉換後的文件系統卷。

參考

http://www.gluster.org/

http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Administration_Guide-en-US.pdf

http://blog.csdn.net/liuben/article/details/6284551

Ceph

Ceph是一個可以按對象/塊/文件方式存儲的開源分佈式文件系統,其設計之初,就將單點故障作為首先要解決的問題,因此該系統具備高可用性、高性能及可 擴展等特點。該文件系統支持目前還處於試驗階段的高性能文件系統BTRFS(B-Tree文件系統),同時支持按OSD方式存儲,因此其性能是很卓越的, 因為該系統處於試商用階段,需謹慎引入到生產環境

特性

1)Ceph底層存儲是基於RADOS(可靠的、自動的分佈式對象存儲),它提供了LIBRADOS/RADOSGW/RBD/CEPH FS方式訪問底層的存儲系統,如下圖所示

2)通過FUSE,Ceph支持類似的POSIX訪問方式;Ceph分佈式系統中最關鍵的MDS節點是可以部署多臺,無單點故障的問題,且處理性能大大提升

3)Ceph通過使用CRUSH算法動態完成文件inode number到object number的轉換,從而避免再存儲文件metadata信息,增強系統的靈活性

優點

1)支持對象存儲(OSD)集群,通過CRUSH算法,完成文件動態定位, 處理效率更高

2)支持通過FUSE方式掛載,降低客戶端的開發成本,通用性高

3)支持分佈式的MDS/MON,無單點故障

4)強大的容錯處理和自愈能力5)支持在線擴容和冗餘備份,增強系統的可靠性

缺點

1)目前處於試驗階段,系統穩定性有待考究

應用場景

1)全網分佈式部署的應用

2)對實時性、可靠性要求比較高官方宣傳,存儲容量可輕鬆達到PB級別

源碼路徑:https://github.com/ceph/ceph

參考

http://ceph.com/

MogileFS

開發語言:perl

開源協議:GPL

依賴數據庫

Trackers(控制中心):負責讀寫數據庫,作為代理複製storage間同步的數據

Database:存儲源數據(默認mysql)

Storage:文件存儲

除了API,可以通過與nginx集成,對外提供下載服務

源碼路徑:https://github.com/mogilefs

參考

https://code.google.com/p/mogilefs/wiki/Start?tm=6

其它參考

http://blog.csdn.net/qiangweiloveforever/ariticle/details/7566779

http://weiruoyu.blog.51cto.com/951650/786607

http://m.blog.csdn.net/blog/junefsh/18079733


專注於技術熱點大數據,人工智能,JAVA、Python、 C 、GO、Javascript等語言最新前言技術,及業務痛點問題分析,請關注【編程我最懂】共同交流學習。


分享到:


相關文章: