1. 程式人生 > >常見的開源分散式儲存系統

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

系統整體對比

在這裡插入圖片描述

開源協議說明
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