對比說明 /文件系統 | 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年數據)
§?安裝及使用
·???安裝指導
·???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
?