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

常見開源分散式儲存系統

對比說明

/檔案系統

TFS

FastDFS

MogileFS

MooseFS

GlusterFS

Ceph

開發語言

C++

C

Perl

C

C

C++

開源協議

GPL V2

GPL V3

GPL

GPL V3

GPL V3

LGPL

資料儲存方式

檔案/Trunk

檔案

檔案/塊

物件/檔案/塊

叢集節點通訊協議

私有協議(TCP)

私有協議(TCP)

HTTP

私有協議(TCP)

私有協議(TCP)/ RDAM(遠端直接訪問記憶體)

私有協議(TCP)

專用元資料儲存點

佔用NS

佔用DB

佔用MFS

佔用MDS

線上擴容

支援

支援

支援

支援

支援

支援

冗餘備份

支援

支援

-

支援

支援

支援

單點故障

存在

不存在

存在

存在

不存在

存在

跨叢集同步

支援

部分支援

-

-

支援

不適用

易用性

安裝複雜,官方文件少

安裝簡單,社群相對活躍

-

安裝簡單,官方文件多

安裝簡單,官方文件專業化

安裝簡單,官方文件專業化

適用場景

跨叢集的小檔案

單叢集的中小檔案

-

單叢集的大中檔案

跨叢集雲端儲存

單叢集的大中小檔案

開源協議說明

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年資料)

§ 安裝及使用

·   安裝指導

 參考

 

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個組)

§參考

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)中、大型檔案

§參考

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:最終轉換後的檔案系統卷。

§參考

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級別

§參考

MogileFS

§開發語言:perl

§開源協議:GPL

§依賴資料庫

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

§Database:儲存源資料(預設mysql)

§Storage:檔案儲存

§除了API,可以通過與nginx整合,對外提供下載服務