分布式文件系统对比与选型参考
一、分布式文件系統(tǒng)
分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。分布式文件系統(tǒng)的設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式。一個(gè)典型的網(wǎng)絡(luò)可能包括多個(gè)供多用戶訪問(wèn)的服務(wù)器。另外,對(duì)等特性允許一些系統(tǒng)扮演客戶機(jī)和服務(wù)器的雙重角色。例如,用戶可以“發(fā)表”一個(gè)允許其他客戶機(jī)訪問(wèn)的目錄,一旦被訪問(wèn),這個(gè)目錄對(duì)客戶機(jī)來(lái)說(shuō)就像使用本地驅(qū)動(dòng)器一樣。
判斷一個(gè)分布式文件系統(tǒng)是否優(yōu)秀,取決于以下三個(gè)因素:
二、主流分布式文件系統(tǒng)介紹
目前主流的分布式文件系統(tǒng)有:GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等。
1. GFS(Google File System)
Google公司為了滿足本公司需求而開(kāi)發(fā)的基于Linux的專有分布式文件系統(tǒng)。盡管Google公布了該系統(tǒng)的一些技術(shù)細(xì)節(jié),但Google并沒(méi)有將該系統(tǒng)的軟件部分作為開(kāi)源軟件發(fā)布。
2. HDFS(Hadoop Distributed File System)
Hadoop 實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng),簡(jiǎn)稱HDFS。Hadoop是Apache Lucene創(chuàng)始人Doug Cutting開(kāi)發(fā)的使用廣泛的文本搜索庫(kù)。它起源于Apache Nutch,后者是一個(gè)開(kāi)源的網(wǎng)絡(luò)搜索引擎,本身也是Luene項(xiàng)目的一部分。Aapche Hadoop架構(gòu)是MapReduce算法的一種開(kāi)源應(yīng)用,是Google開(kāi)創(chuàng)其帝國(guó)的重要基石。
參考鏈接:
http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
3. Ceph
是加州大學(xué)圣克魯茲分校的Sage Weil攻讀博士時(shí)開(kāi)發(fā)的分布式文件系統(tǒng)。并使用Ceph完成了他的論文。
由于 ceph 使用 btrfs 文件系統(tǒng), 而btrfs 文件系統(tǒng)需要 Linux 2.6.34 以上的內(nèi)核才支持。ceph目前還不足夠成熟,它基于的btrfs本身也不成熟,它的官方網(wǎng)站上也明確指出不要把ceph用在生產(chǎn)環(huán)境中。
參考鏈接:
https://github.com/ceph/ceph
https://ceph.com
4. Lustre
Lustre是一個(gè)大規(guī)模的、安全可靠的,具備高可用性的集群文件系統(tǒng),它是由SUN公司開(kāi)發(fā)和維護(hù)的。該項(xiàng)目主要的目的就是開(kāi)發(fā)下一代的集群文件系統(tǒng),可以支持超過(guò)10000個(gè)節(jié)點(diǎn),數(shù)以PB的數(shù)據(jù)量存儲(chǔ)系統(tǒng)。目前Lustre已經(jīng)運(yùn)用在一些領(lǐng)域,例如HP SFS產(chǎn)品等。
參考鏈接:
http://lustre.org/
5. MooseFS
支持FUSE,相對(duì)比較輕量級(jí),對(duì)master服務(wù)器有單點(diǎn)依賴,用perl編寫(xiě),性能相對(duì)較差,國(guó)內(nèi)用的人比較多。
參考鏈接:
https://moosefs.com
https://sourceforge.net/projects/moosefs/?source=directory
https://www.cnblogs.com/hjc4025/p/9956988.html
6. MogileFS
由memcahed的開(kāi)發(fā)公司danga一款perl開(kāi)發(fā)的產(chǎn)品,目前國(guó)內(nèi)使用mogielFS的有圖片托管網(wǎng)站yupoo等。MogileFS是一套高效的文件自動(dòng)備份組件,由Six Apart開(kāi)發(fā),廣泛應(yīng)用在包括LiveJournal等web2.0站點(diǎn)上。
參考鏈接:
https://github.com/mogilefs
7. FastDFS
是一款類似Google FS的開(kāi)源分布式文件系統(tǒng),是純C語(yǔ)言開(kāi)發(fā)的。FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
參考鏈接:
https://github.com/happyfish100/fastdfs
https://www.cnblogs.com/shenxm/p/8459292.html
8. GlusterFS
開(kāi)源分布式橫向擴(kuò)展文件系統(tǒng),可以根據(jù)存儲(chǔ)需求快速調(diào)配存儲(chǔ),內(nèi)含豐富的自動(dòng)故障轉(zhuǎn)移功能,且擯棄集中元數(shù)據(jù)服務(wù)器的思想。適用于數(shù)據(jù)密集型任務(wù)的可擴(kuò)展網(wǎng)絡(luò)文件系統(tǒng),具有可擴(kuò)展性、高性能、高可用性等特點(diǎn)。gluster于2011年10月7日被red hat收購(gòu)。
參考鏈接:
http://www.gluster.org
https://blog.csdn.net/liuaigui/article/details/6284551
9. TFS(Taobao File System)
TFS是一個(gè)高可擴(kuò)展、高可用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),主要針對(duì)海量的非結(jié)構(gòu)化數(shù)據(jù),它構(gòu)筑在普通的Linux機(jī)器 集群上,可為外部提供高可靠和高并發(fā)的存儲(chǔ)訪問(wèn)。TFS為淘寶提供海量小文件存儲(chǔ),通常文件大小不超過(guò)1M,滿足了淘寶對(duì)小文件存儲(chǔ)的需求,被廣泛地應(yīng)用 在淘寶各項(xiàng)應(yīng)用中。它采用了HA架構(gòu)和平滑擴(kuò)容,保證了整個(gè)文件系統(tǒng)的可用性和擴(kuò)展性。同時(shí)扁平化的數(shù)據(jù)組織結(jié)構(gòu),可將文件名映射到文件的物理地址,簡(jiǎn)化 了文件的訪問(wèn)流程,一定程度上為TFS提供了良好的讀寫(xiě)性能。
參考鏈接:
http://code.taobao.org/p/tfs/src/
10. GridFS
MongoDB是一種知名的NoSql數(shù)據(jù)庫(kù),GridFS是MongoDB的一個(gè)內(nèi)置功能,它提供一組文件操作的API以利用MongoDB存儲(chǔ)文件,GridFS的基本原理是將文件保存在兩個(gè)Collection中,一個(gè)保存文件索引,一個(gè)保存文件內(nèi)容,文件內(nèi)容按一定大小分成若干塊,每一塊存在一個(gè)Document中,這種方法不僅提供了文件存儲(chǔ),還提供了對(duì)文件相關(guān)的一些附加屬性(比如MD5值,文件名等等)的存儲(chǔ)。文件在GridFS中會(huì)按4MB為單位進(jìn)行分塊存儲(chǔ)。
參考鏈接:
https://docs.mongodb.com/manual/core/gridfs
三、分布式文件系統(tǒng)的對(duì)比
1. 綜合性對(duì)比
| GFS | 不開(kāi)源 | ||||||
| HDFS | Apache | Java | Apache | 安裝簡(jiǎn)單,官方文檔專業(yè)化 | 存儲(chǔ)非常大的文件 | 大數(shù)據(jù)批量讀寫(xiě),吞吐量高;一次寫(xiě)入,多次讀取,順序讀寫(xiě) | 難以滿足毫秒級(jí)別的低延時(shí)數(shù)據(jù)訪問(wèn);不支持多用戶并發(fā)寫(xiě)相同文件;不適用于大量小文件 |
| Ceph | 加州大學(xué)圣克魯茲分校Sage Weil | C++ | LGPL | 安裝簡(jiǎn)單,官方文檔專業(yè)化 | 單集群的大中小文件 | 分布式,沒(méi)有單點(diǎn)依賴,用C編寫(xiě),性能較好 | 基于不成熟的btrfs,自身也不夠成熟穩(wěn)定,不推薦在生產(chǎn)環(huán)境使用 |
| Lustre | SUN | C | GPL | 復(fù)雜,而且嚴(yán)重依賴內(nèi)核,需要重新編譯內(nèi)核 | 大文件讀寫(xiě) | 企業(yè)級(jí)產(chǎn)品,非常龐大,對(duì)內(nèi)核和ext3深度依賴 | |
| MooseFS | Core Sp. z o.o. | C | GPL V3 | 安裝簡(jiǎn)單,官方文檔多,且提供Web界面的方式進(jìn)行管理與監(jiān)控 | 大量小文件讀寫(xiě) | 比較輕量級(jí),用perl編寫(xiě),國(guó)內(nèi)用的人比較多 | 對(duì)master服務(wù)器有單點(diǎn)依賴,性能相對(duì)較差 |
| MogileFS | Danga Interactive | Perl | GPL | 主要用在web領(lǐng)域處理海量小圖片 | key-value型元文件系統(tǒng);效率相比mooseFS高很多 | 不支持FUSE | |
| FastDFS | 國(guó)內(nèi)開(kāi)發(fā)者余慶 | C | GPL V3 | 安裝簡(jiǎn)單,社區(qū)相對(duì)活躍 | 單集群的中小文件 | 系統(tǒng)無(wú)需支持POSIX,降低了系統(tǒng)的復(fù)雜度,處理效率更高;實(shí)現(xiàn)了軟RAID,增強(qiáng)系統(tǒng)的并發(fā)處理能力及數(shù)據(jù)容錯(cuò)恢復(fù)能力;支持主從文件,支持自定義擴(kuò)展名;主備Tracker服務(wù),增強(qiáng)系統(tǒng)的可用性 | 不支持?jǐn)帱c(diǎn)續(xù)傳,不適合大文件存儲(chǔ);不支持POSIX,通用性較低;對(duì)跨公網(wǎng)的文件同步,存在較大延遲,需要應(yīng)用做相應(yīng)的容錯(cuò)策略;同步機(jī)制不支持文件正確性校驗(yàn);通過(guò)API下載,存在單點(diǎn)的性能瓶頸 |
| GlusterFS | Z RESEARCH | C | GPL V3 | 安裝簡(jiǎn)單,官方文檔專業(yè)化 | 適合大文件,小文件性能還存在很大優(yōu)化空間 | 無(wú)元數(shù)據(jù)服務(wù)器,堆棧式架構(gòu)(基本功能模塊可以進(jìn)行堆棧式組合,實(shí)現(xiàn)強(qiáng)大功能),具有線性橫向擴(kuò)展能力;比mooseFS龐大 | 由于沒(méi)有元數(shù)據(jù)服務(wù)器,因此增加了客戶端的負(fù)載,占用相當(dāng)?shù)腃PU和內(nèi)存;但遍歷文件目錄時(shí),則實(shí)現(xiàn)較為復(fù)雜和低效,需要搜索所有的存儲(chǔ)節(jié)點(diǎn),不建議使用較深的路徑 |
| TFS | Alibaba | C++ | GPL V2 | 安裝復(fù)雜,官方文檔少 | 跨集群的小文件 | 針對(duì)小文件量身定做,隨機(jī)IO性能比較高;實(shí)現(xiàn)了軟RAID,增強(qiáng)系統(tǒng)的并發(fā)處理能力及數(shù)據(jù)容錯(cuò)恢復(fù)能力;支持主備熱倒換,提升系統(tǒng)的可用性;支持主從集群部署,從集群主要提供讀/備功能 | 不適合大文件的存儲(chǔ);不支持POSIX,通用性較低;不支持自定義目錄結(jié)構(gòu)與文件權(quán)限控制;通過(guò)API下載,存在單點(diǎn)的性能瓶頸;官方文檔少,學(xué)習(xí)成本高 |
| GridFS | MongoDB | C++ | 安裝簡(jiǎn)單 | 通常用來(lái)處理大文件(超過(guò)16M) | 可以訪問(wèn)部分文件,而不用向內(nèi)存中加載全部文件,從而保持高性能;文件和元數(shù)據(jù)自動(dòng)同步 |
2. 特性對(duì)比
| HDFS | 文件 | 私有協(xié)議(TCP) | 占用MDS | 支持 | 存在 | 不支持 | 支持 | 不支持POSIX | |
| Ceph | 對(duì)象/文件/塊 | 私有協(xié)議(TCP) | 占用MDS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |
| Lustre | 對(duì)象 | 私有協(xié)議(TCP)/ RDAM(遠(yuǎn)程直接訪問(wèn)內(nèi)存) | 雙MDS | 支持 | 不支持 | 存在 | 未知 | 支持 | POSIX/MPI |
| MooseFS | 塊 | 私有協(xié)議(TCP) | 占用MFS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |
| MogileFS | 文件 | HTTP | 占用DB | 支持 | 不支持 | 存在 | 不支持 | 不支持 | 不支持POSIX |
| FastDFS | 文件/塊 | 私有協(xié)議(TCP) | 無(wú) | 支持 | 支持 | 不存在 | 部分支持 | 不支持 | 不支持POSIX |
| GlusterFS | 文件/塊 | 私有協(xié)議(TCP)/RDAM(遠(yuǎn)程直接訪問(wèn)內(nèi)存) | 無(wú) | 支持 | 支持 | 不存在 | 支持 | 支持 | POSIX |
| TFS | 文件 | 私有協(xié)議(TCP) | 占用NS | 支持 | 支持 | 存在 | 支持 | 未知 | 不支持POSIX |
什么是POSIX?
POSIX表示可移植操作系統(tǒng)接口(Portable Operating System Interface of UNIX,縮寫(xiě)為 POSIX ),也就是Unix下應(yīng)用程序共同遵循的一種規(guī)范。支持POSIX的應(yīng)用程序意味著在各個(gè)Unix系統(tǒng)間提供了跨平臺(tái)運(yùn)行的支持。
四、選型參考
1. 按特性分類
適合做通用文件系統(tǒng)的有:Ceph,Lustre,MooseFS,GlusterFS;
適合做小文件存儲(chǔ)的文件系統(tǒng)有:Ceph,MooseFS,MogileFS,FastDFS,TFS;
適合做大文件存儲(chǔ)的文件系統(tǒng)有:HDFS,Ceph,Lustre,GlusterFS,GridFS;
輕量級(jí)文件系統(tǒng)有:MooseFS,FastDFS;
簡(jiǎn)單易用,用戶數(shù)量活躍的文件系統(tǒng)有:MooseFS,MogileFS,FastDFS,GlusterFS;
支持FUSE掛載的文件系統(tǒng)有:HDFS,Ceph,Lustre,MooseFS,GlusterFS。
2. 初步篩選
考慮到GFS不開(kāi)源,學(xué)習(xí)成本高,且相關(guān)特性資料不全面的情況下,暫時(shí)先不考慮使用GFS;
Ceph目前不夠成熟穩(wěn)定,很少有使用在生產(chǎn)環(huán)境的案例,暫時(shí)排除;
Lustre對(duì)內(nèi)核依賴程度過(guò)重,且不易安裝使用,暫時(shí)排除;
TFS安裝復(fù)雜,且官方文檔少,不利于以后的學(xué)習(xí)使用,暫時(shí)先排除;
經(jīng)初步篩選剩下的文件系統(tǒng)有:HDFS、MooseFS、MogileFS、FastDFS、GlusterFS、GridFS。
3. 根據(jù)需求分析進(jìn)一步篩選
需求:
- 需要搭建一部管理原始憑證的文件系統(tǒng),原始憑證的文件類型主要是小圖片,寫(xiě)操作量少,讀操作量大,且對(duì)安全性要求較高。
- 隨著系統(tǒng)在使用過(guò)程中數(shù)據(jù)量逐步龐大,圖片的量會(huì)變得繁多,對(duì)圖片讀取速率要求盡可能高但不追求極致(無(wú)需到毫秒級(jí))。
- 文件系統(tǒng)需要有較完善的冗余備份與容錯(cuò)機(jī)制,功能盡量精簡(jiǎn)耐用,安裝配置應(yīng)簡(jiǎn)單且適合于國(guó)產(chǎn)環(huán)境部署。
分析:
總結(jié):
MooseFS功能較為全面,支持在線擴(kuò)容、冗余備份、FUSE掛載和POSIX訪問(wèn)接口,不支持跨集群同步,存在單點(diǎn)故障,性能相對(duì)較差。
FastDFS功能精簡(jiǎn),支持在線擴(kuò)容、冗余備份,部分支持跨集群同步,不支持FUSE掛載和POSIX訪問(wèn)接口,不存在單點(diǎn)故障,性能較好。
提供的建議選型參考為FastDFS或MooseFS,可根據(jù)需求的細(xì)化進(jìn)一步分析選取。
備注:此選型參考提供的是分布式文件系統(tǒng)的選型建議,根據(jù)系統(tǒng)需求也可選擇NFS等其他更合適的文件系統(tǒng)類型;此選型參考僅局限于分析范圍內(nèi)的文件系統(tǒng),仍然有其他類型的文件系統(tǒng)可能是更好的選擇;此選型參考中沒(méi)有確切的性能測(cè)試數(shù)據(jù)作為對(duì)比,無(wú)法提供性能方面的精確比較。
五、參考文獻(xiàn)
開(kāi)源分布式存儲(chǔ)系統(tǒng)的對(duì)比 [http://my.525.life/article?id=1510739742054]
分布式文件系統(tǒng)MFS、Ceph、GlusterFS、Lustre的對(duì)比 [https://www.cnblogs.com/zhiguo/p/3334993.html]
使用 FUSE 開(kāi)發(fā)自己的文件系統(tǒng) [https://www.ibm.com/developerworks/cn/linux/l-fuse]
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的分布式文件系统对比与选型参考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 第四范式天枢入选毕马威首届“领先消费科技
- 下一篇: java信息管理系统总结_java实现科