云存儲是在云計算(Cloud Computing)概念上延伸和發(fā)展出來的一個新的概念,是指通過集群應用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡中大量各種不同類型的存儲設備通過應用軟件集合起來協(xié)同工作,協(xié)同對外提供數(shù)據(jù)存儲和業(yè)務訪問功能的一個系統(tǒng)。分布式文件系統(tǒng)是常規(guī)的分時系統(tǒng)中文件系統(tǒng)的分布式實現(xiàn),支持物理上分散的多個用戶共享文件和存儲數(shù)據(jù)。它包含兩個方面的含義,從客戶使用的角度來看,它是一個標準的文件系統(tǒng),提供了一系列API,由此進行文件或目錄的創(chuàng)建、移動、刪除以及對文件的讀寫等操作。從內(nèi)部實現(xiàn)來看,分布式的系統(tǒng)則不再和普通文件系統(tǒng)一樣負責管理本地磁盤,它的文件內(nèi)容和目錄結(jié)構(gòu)都不是存儲在本地磁盤上,而是通過網(wǎng)絡傳輸?shù)竭h端系統(tǒng)上。并且,同一個文件存儲不只是在一臺機器上,而是在一簇機器上分布式存儲,協(xié)同提供服務。
分布式文件系統(tǒng)是一個比較活躍的研究方向,國內(nèi)外很多大學、研究機構(gòu)和企業(yè)著手開發(fā)自己的分布式文件系統(tǒng),如中科院計算所的藍鯨分布式文件系統(tǒng)(BWFS)、電子科技大學的分布式文件系統(tǒng)(DPFS)、IBM的GPFS、Sun的Lustre等,這些系統(tǒng)支持I/O密集型應用,通常用于高性能計算或大型數(shù)據(jù)中心,對硬件設施要求較高;Google的GFS及其開源實現(xiàn)HDFS通常用于提供海量數(shù)據(jù)的存儲和訪問能力;還有一些常用的比較輕量級的分布式文件系統(tǒng),如MogileFS和FastDFS主要用于存儲Web應用的資源文件。但同時也存在一些問題需要進一步研究,如HDFS和MooseFS存在單元數(shù)據(jù)服務器依賴,如何改進元數(shù)據(jù)管理系統(tǒng)或者增加元數(shù)據(jù)管理服務器;MogileFS和FastDFS的管理節(jié)點包含多個調(diào)度服務器,如何使多個調(diào)度服務器達到負載均衡;GFS和Lustre通過鎖服務來保證數(shù)據(jù)一致性,但同一時間不允許多個用戶對文件的同一部分進行寫操作;分布式文件系統(tǒng)的可靠性也是一個大問題,現(xiàn)有的容錯機制通過備份日志恢復元數(shù)據(jù)管理服務器,增加備用元數(shù)據(jù)管理服務器,采用磁盤陣列以及備份文件等,都有一定的局限性。將來,通用分布式文件系統(tǒng)和專用分布式文件系統(tǒng)的分工將越來越明顯,通用分布式文件系統(tǒng)提供標準API接口,不需要開發(fā)者修改上層應用就能使用,而且支持用戶空間文件系統(tǒng)(Filesystem in Userspace,F(xiàn)USE),用戶管理共享的分布式文件系統(tǒng)如同管理本地文件系統(tǒng)一樣方便,還將向大型化發(fā)展,提供更廉價的存儲服務,云存儲就是一個很好的代表;與此相反,專用分布式文件系統(tǒng)提供專有API,對開發(fā)者要求熟悉掌握其API,但其系統(tǒng)復雜度較低,而且提供較高的性能,在Web應用、高性能計算等方面有較大的需求,這兩種分布式文件系統(tǒng)是未來的發(fā)展趨勢。開源社區(qū)也開發(fā)出了一批基于Linux/Unix操作系統(tǒng)的分布式文件系統(tǒng),正是這些開源項目大大促進了分布式文件系統(tǒng)的發(fā)展和應用。
1、分布式文件系統(tǒng)
分布式文件系統(tǒng)是指文件系統(tǒng)管理的物理存儲資源不一定直接存儲在本地節(jié)點上,而是通過計算機網(wǎng)絡與節(jié)點相連,支持多個用戶共享文件和存儲資源。可以分為通用分布式文件系統(tǒng)和專業(yè)分布式文件系統(tǒng),相比起來通用分布式文件系統(tǒng)對開發(fā)者來說具有友好性強的優(yōu)勢,系統(tǒng)復雜性相對較高,性能一般;而專用分布式文件系統(tǒng)的開發(fā)者友好性較差,系統(tǒng)復雜性較低,性能較高。因此,根據(jù)專用性和通用性的原則,在選擇分布式系統(tǒng)的時候需要考慮有關分布式系統(tǒng)的應用環(huán)境。
1.1 HDFS分布式文件系統(tǒng)
HDFS是一種基于Java的適用于海量數(shù)據(jù)存儲的開源分布式文件系統(tǒng)。它可以部署在低成本的硬件上,能夠高容錯、可靠地存儲PB級的數(shù)據(jù),還可以與MapReduce編程模型很好地結(jié)合,為應用程序提供高吞吐量的數(shù)據(jù)訪問。HDFS的架構(gòu)如圖1所示。
HDFS主要用于保存大文件,用戶通過API訪問文件系統(tǒng)。存儲文件時,每個文件被分成若干個數(shù)據(jù)塊,塊大小默認是64MB,先把數(shù)據(jù)塊緩存在本地,大小累積到64MB時才聯(lián)系NameNode,寫人到DataNode,同時,在其他節(jié)點采用流水線方式備份文件,默認是3份。文件刪除時,移動到回收站,在配置的時間內(nèi)可以迅速恢復。HDFS提出的自動均衡方案,可以自動地將數(shù)據(jù)從一個數(shù)據(jù)節(jié)點移動到空閑的數(shù)據(jù)節(jié)點。而且,HDFS提供的接口可以很容易地將數(shù)據(jù)從一個平臺移動到另外一個平臺。
HDFS只有單個管理服務器,所有對文件的請求都要經(jīng)過它,當請求過多時,肯定會有延時,所以HDFS不太適合于那些要求低延時訪問的應用程序。
由于管理服務器把文件系統(tǒng)的元數(shù)據(jù)放置在內(nèi)存中,文件系統(tǒng)所能容納的文件數(shù)目是由管理服務器的內(nèi)存大小來決定,所以HDFS不太適合處理大量小文件。而且Hadoop只支持單用戶寫,不支持并發(fā)多用戶寫。
1.2 Lustre分布式文件系統(tǒng)
Lustre是首個基于對象存儲的開源分布式文件系統(tǒng),用來解決海量存儲問題,最多可支持10000個客戶端,PB級的存儲量,IOOGB/S的傳輸速度,具有完美的安全性和可管理性。Lustre文件系統(tǒng)一般運行在高性能計算機系統(tǒng)之上,其性能優(yōu)越,被越來越廣泛地應用。Lustre架構(gòu)如圖2所示。
Lustre是一個全局文件系統(tǒng),用戶訪問文件系統(tǒng)的文件數(shù)據(jù)時,通過客戶端提供的標準POSIX(Portable Operating System Interface,可移植操作系統(tǒng)接口)接口先訪問MDS,獲取相關的元數(shù)據(jù)信息,然后直接與相應的OSS通信,取得文件的實際數(shù)據(jù),這和HDFS非常相似。OST上的文件數(shù)據(jù)是以分條形式保存的,這和傳統(tǒng)的基于塊的存儲方式有所不同。在Lustre文件系統(tǒng)中,MDS可以有兩個,采用Active StandBy容錯方式,當一個MDS不能正常工作時,另外一個MDS啟動服務。Lustre還實現(xiàn)了部分文件鎖,可以使多個客戶端在同一時間寫同一文件的不同區(qū)域,極大地提高了多用戶對同一文件并發(fā)訪問時系統(tǒng)的性能。
Lustre文件系統(tǒng)的性能和可擴展性都不錯,但硬件設備要求比較高,而且Lustre目前還沒實現(xiàn)MDS集群管理,雖然相比于HDFS的單主節(jié)點,Lustre的雙MDS在可用性上提高了不少,但當系統(tǒng)達到一定規(guī)模時,MDS會成為Lustre系統(tǒng)的瓶頸。
1.3 FastDFS分布式文件系統(tǒng)
FastDFS是一個輕量級的開源分布式文件系統(tǒng),主要用來解決大容量的文件存儲和高并發(fā)訪問的問題,特別適合大中型網(wǎng)站使用,用來存儲資源文件,如圖片、文檔、音頻、視頻等。FastDFS采用了分組存儲方式,一個組由多臺存儲服務器組成,同組存儲服務器上的文件是完全一致的,文件上傳、刪除等操作可以在任意一臺Storage Server上進行,同組內(nèi)的Storage Server之間采用推送技術(shù)PUSH方式進行同步。
Tracker Server在內(nèi)存中記錄分組和Storage Server的狀態(tài)等信息,不記錄文件索引信息,占用的內(nèi)存量很少。FastDFS不對文件進行分塊存儲,更加簡潔高效,并且完全能滿足絕大多數(shù)互聯(lián)網(wǎng)應用的實際需要。FastDFS把簡潔和高效做到了極致,比如一個分組的存儲服務器訪問壓力較大時,可以在該組增加存儲服務器來擴充服務能力。當系統(tǒng)容量不足時,可以增加組來擴充存儲容量。由于同組的Storage Server上的文件是完全一致的,所以一個組的存儲容量為該組內(nèi)存儲服務器容量最小的那個。
1.4 MogileFS分布式文件系統(tǒng)
MogileFS是一個開源的分布式文件系統(tǒng),可支持文件自動備份的功能,提供高可用性和高可擴展性,適合存儲靜態(tài)文件,就是一次保存,多次讀取的資源。MogileFS系統(tǒng)的組件都可以運行在多個機器上,所以不存在單點失敗。MogileFS可以根據(jù)不同的文件類型,復制滿足這個類別的最少要求,如果數(shù)據(jù)丟失了,可以重新建立遺失的拷貝數(shù),這樣可以節(jié)約磁盤。MogileFS提供全局的命名空間,文件通過給定的Key來確定,客戶端通過專有API訪問MogileFS系統(tǒng),對整個文件系統(tǒng)進行讀寫操作。
由于MogileFS系統(tǒng)不支持對一個文件的隨機讀寫,因此只適合做一部分應用,如圖片文件,靜態(tài)HTML文件,只提供下載的文件,即文件寫入后基本上不需要修改的應用,當然也可以生成一個新的文件覆蓋原文件。
1.5 MooseFS分布式文件系統(tǒng)
MooseFS是一個具有容錯功能的,高可用、可擴展的海量級分布式文件系統(tǒng)。MooseFS分布式文件系統(tǒng)支持FUSE,客戶端通過FUSE內(nèi)核接口掛接遠程管理服務器上所管理的數(shù)據(jù)存儲服務器,管理共享的文件系統(tǒng)如同管理本地文件系統(tǒng)一樣。MooseFS可動態(tài)隨時增加機器或者磁盤,提供回收站功能,可回收在指定時間內(nèi)刪除的文件,還可以對整個文件甚至正在寫入的文件創(chuàng)建文件的快照。
MooseFS把文件系統(tǒng)的結(jié)構(gòu)緩存到Master的內(nèi)存中,文件越多,Master的內(nèi)存消耗越大。當元數(shù)據(jù)服務器數(shù)據(jù)丟失或者損毀時,可從日志服務器恢復。與MogileFS相比,寫操作時,同樣備份數(shù)的情況下,MooseFS要慢較多。讀操作時,當并發(fā)加大時,請求的成功率MooseFS比MogileFS要低,MooseFS的反應時間也比MogileFS要慢很多。
2、改進的HDFS
2.1 HDFS存在的問題
因為Namenode把文件系統(tǒng)的元數(shù)據(jù)放置在內(nèi)存中,所以文件系統(tǒng)所能容納的文件數(shù)目是由Name.Node的內(nèi)存大小來決定。一般來說,每一個文件、文件夾和Block需要占據(jù)150byte左右的空間,所以,如果有100萬個文件,每一個占據(jù)一個Block,就至少需要300MB內(nèi)存;當擴展到數(shù)十億時,對于當前的硬件水平來說就沒法實現(xiàn)了,這樣NameNode內(nèi)存容量嚴重制約了集群的擴展。HDFS最初是為流式訪問大文件開發(fā)的,如果訪問大量小文件,需要不斷從一個DataNode跳到另一個DataNode,處理大量小文件速度遠遠小于處理同等大小的大文件的速度,嚴重影響性能。其次,每一個小文件要占用一個Task,而Task啟動將耗費大量時間甚至大部分時間都耗費在啟動Task和釋放Task上。還有一個問題就是,因為MapTask的數(shù)量是由Splits來決定的,所以用MR處理大量的小文件時,就會產(chǎn)生過多的Map Task,線程管理開銷將會增加作業(yè)時間。舉個例子,處理10000M的文件,若每個Sprit為1M,那就會有10000個MapTasks,會有很大的線程開銷;若每個Split為100M,則只有100個Map Tasks,每個Map Task將會有更多的事情做,而線程的管理開銷也將減小很多。
2.2 HDFS改進
本文將多個小文件打包成一個歸檔文件,這樣在減少NameNode內(nèi)存使用的同時,仍然允許對文件進行透明的訪問。當一個文件到達時,判斷該文件是否屬于小文件,如果是,則交給小文件處理模塊處理,否則,交給通用文件處理模塊處理。小文件處理模塊的設計思想是,先將很多小文件合并成一個大文件,然后為這些小文件建立索引,以便進行快速存取和訪問。小文件處理模塊的流程如圖3所示。
(1)小文件的歸檔管理主要由周期性執(zhí)行的MapReduce任務完成。有以下幾個處理流程:掃描元數(shù)據(jù)信息表,統(tǒng)計未歸檔的對象信息,包括在HDFS中的URI(Uniform Resource Identifier,通用資源標志符)、對象大小等;根據(jù)配置的歸檔文件大小限制,對統(tǒng)計所得的對象進行分組;將每個分組中的對象文件合并到一個歸檔文件中;更新相關對象元數(shù)據(jù)信息表中的數(shù)據(jù)位置描述項;刪除舊的對象文件。
(2)歸檔文件的壓縮主要有以下幾個處理流程:掃描已刪除對象表,統(tǒng)計無效對象信息;對于未歸檔的無效對象文件,直接刪除;將已歸檔的無效對象按照歸檔文件分組;統(tǒng)計涉及的歸檔文件的空間利用率;統(tǒng)計利用率低于閾值的每個歸檔文件中所有有效對象信息;將歸檔文件中的有效對象數(shù)據(jù)合并到一個新的歸檔文件中;更新相關對象元數(shù)據(jù)信息表中的數(shù)據(jù)位置描述項;刪除舊的歸檔文件。
(3)歸檔文件的再歸檔主要有以下幾個處理流程:掃描歸檔文件列表,統(tǒng)計占用磁盤空間低于閾值的歸檔文件;根據(jù)歸檔文件大小配置參數(shù),將統(tǒng)計所得歸檔文件分組;統(tǒng)計各分組歸檔文件涉及的對象;將每個分組中的歸檔文件合并到一個歸檔文件;將歸檔文件中的有效對象數(shù)據(jù)合并到一個新的歸檔文件中;更新相關對象元數(shù)據(jù)信息表中的數(shù)據(jù)位置描述項;刪除舊的歸檔文件。
3、分布式文件系統(tǒng)對比
3.1實驗環(huán)境
實驗采用操作系統(tǒng)為CentOS5.4(Red Hat EntERPrise Linux 4.1.2)系統(tǒng),文件系統(tǒng)軟件分別為Hadoop-0.19.2、Lustre-1.47、FastDFS-1.23、MogileFS-2.44、MooseFS.1.6.13,內(nèi)存和I/O性能測試軟件分別為Ubench和IOzone。使用8臺PC搭建環(huán)境,硬件實驗平臺中電腦CPU為Intel Core 2.66GHz,Memory為2G/4G,240G硬盤,通過100Mbps交換機局域網(wǎng)連接。數(shù)據(jù)集為1億個1kB,2000萬個5kB,200萬個50kB,100萬個200kB,20萬個1MB,2萬個10MB,1千個100MB文件。
3.2性能對比
現(xiàn)有的各種各樣分布式文件系統(tǒng)具有不同的性能特點,它們的功能也不盡相同。為了在具體領域更好地掌握和應用適合的分布式文件系統(tǒng),本文從文件系統(tǒng)的幾個主要方面進行了詳細的比較分析。分析結(jié)果如表1所示。
從表1中,可以清楚地看到分布式文件系統(tǒng)各自的特點。在支持操作系統(tǒng)方面,各個系統(tǒng)都支持Linux操作系統(tǒng),部分系統(tǒng)還支持Unix操作系統(tǒng);在系統(tǒng)類型方面,HDFS等專用分布式文件系統(tǒng)具有較好的性能和較低的復雜度,而通用分布式文件系統(tǒng)在訪問方式上提供標準API,還支持FUSE,可以管理分布式文件系統(tǒng)如同管理本地文件系統(tǒng)一樣;在容錯方面,Lustre在存儲服務器上使用磁盤陣列,啟用備用元數(shù)據(jù)管理服務器;HDFS和MooseFS在存儲服務器上備份文件,在元數(shù)據(jù)日志服務器上備份日志,用于恢復元數(shù)據(jù)服務器;FastDFS和MogilesFS也在存儲服務器上備份數(shù)據(jù),在多個調(diào)度服務器上采用負載均衡策略。它們也有很多相似的地方,比如都支持在Linux操作系統(tǒng)上部署,都采用全局的命名空間,都有很好的可擴展性等。
在元數(shù)據(jù)管理節(jié)點方面,F(xiàn)astDFS和MogileFS有多個調(diào)度服務器,并發(fā)訪問能力比較突出,Lustre有兩個元數(shù)據(jù)管理服務器,其中一個是活動服務器宕機后自動啟動的后備服務器,有效地解決了單點依賴問題,而HDFS、MooseFS和改進HDFS只有一個元數(shù)據(jù)管理服務器,存在單點依賴問題,而且元數(shù)據(jù)都保存在內(nèi)存中,當文件數(shù)量超過一定范圍時,還會遇到內(nèi)存瓶頸;在元數(shù)據(jù)占用內(nèi)存方面,HDFS每個文件元數(shù)據(jù)占用內(nèi)存大約150~200Byte之間,MooseFS每個元數(shù)據(jù)大約300Byte,而且隨著文件數(shù)量增加內(nèi)存占用也越大;Lustre元數(shù)據(jù)只占用4Byte左右,當文件數(shù)量超過2000萬,內(nèi)存占用也隨之增大;改進HDFS內(nèi)存占用與文件數(shù)量關系不大,隨著文件數(shù)據(jù)增大稍微增長,當文件數(shù)量達到6000萬,內(nèi)存性能與Lustre持平。元數(shù)據(jù)內(nèi)存占用情況如圖4所示。
在文件存取方面,HDFS和MogileFS通常用來存儲靜態(tài)大文件,而MooseFS和改進HDFS可以存儲各種文件,存儲的文件一般不需要修改,只提供下載服務;FastDFS一般用于存儲音頻、視頻和文檔等,文件比較小,所以不分塊存儲文件,以文件為單位來存儲;而Lustre以分條的方式存儲文件,主要存儲密集型數(shù)據(jù),進行高性能計算;相對于HDFS,改進的HDFS平均讀寫速度增加了一倍左右,讀速度略高于Lustre,但寫速度略遜于Lustre。文件系統(tǒng)讀寫平均速度如圖5所示。
4、結(jié)束語
云存儲是近年來被廣泛應用的新技術(shù),可以廣泛應用于一些重要的領域,如氣象領域、視頻分享網(wǎng)站等,因此分布式文件系統(tǒng)也引來了更多的關注,在學術(shù)界和工業(yè)界都有很多的分布式文件系統(tǒng)。如何選擇合適的分布式文件系統(tǒng)是一個大問題,本文在架構(gòu)、訪問方式、文件存儲方式等方面進行了詳細的對比,并對HDFS在I/O性能方面進行了改進,根據(jù)這些信息,用戶可以合理地選擇分布式文件系統(tǒng)。雖然各個分布式文件系統(tǒng)有各自的優(yōu)勢和特點,但還有一些亟待解決的問題,下一步將進一步解決單元數(shù)據(jù)管理服務器依賴問題、多調(diào)度服務器負載均衡問題、系統(tǒng)容錯機制和并發(fā)讀寫等。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://m.vmgcyvh.cn/
本文標題:云存儲文件系統(tǒng)對比
本文網(wǎng)址:http://m.vmgcyvh.cn/html/support/11121511639.html