常見的開源分佈式存儲系統

系統整體對比

在這裏插入圖片描述

開源協議說明
GPL:不允許修改後和衍生的代碼做爲閉源的商業軟件發佈和銷售,修改後該軟件產品必須也採用GPL協議;
GPLV2:修改文本的整體就必須按照GPL流通,不僅該修改文本的源碼必須向社 會公開,而且對於這種修改文本的流通不准許附加修改者自己作出的限制;
GPLV3:要求用戶公佈修改的源代碼,還要求公佈相關硬件;LGPL:更寬鬆的GPL
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)不支持斷點續傳,對大文件將是噩夢(FastDFS不適合大文件存儲)
2)不支持POSIX通用接口訪問,通用性較低
3)對跨公網的文件同步,存在較大延遲,需要應用做相應的容錯策略
4)同步機制不支持文件正確性校驗,降低了系統的可用性
5)通過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管理,爲了提高整個系統的可用性,MetadataBackup 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冗餘模式下,文件支持斷點續傳、異步傳輸及增量傳送等特點

§優點
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/CEPHFS方式訪問底層的存儲系統,如下圖所示
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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章