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