国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種海量小文件對(duì)象存儲(chǔ)優(yōu)化方案

2019-08-22 09:26屠雪真黃震江
關(guān)鍵詞:磁盤粒度海量

屠雪真,黃震江

(1.河南大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,河南 開封 475001;2.南京中興新軟件公司,江蘇 南京 210012)

0 引 言

隨著移動(dòng)互聯(lián)網(wǎng)和云計(jì)算技術(shù)的迅速發(fā)展,數(shù)字化信息呈爆炸式增長(zhǎng),特別是科學(xué)計(jì)算、高性能計(jì)算、Web服務(wù)等應(yīng)用領(lǐng)域中圖片、郵件、文本、互聯(lián)網(wǎng)檔案、小視頻等小文件正以指數(shù)級(jí)速度增長(zhǎng),使得存儲(chǔ)系統(tǒng)面臨著巨大挑戰(zhàn)。

傳統(tǒng)的分布式文件系統(tǒng)是面向大文件數(shù)據(jù)存儲(chǔ)與訪問(wèn)而設(shè)計(jì)的,在對(duì)海量小文件存儲(chǔ)與訪問(wèn)時(shí),存在元數(shù)據(jù)結(jié)構(gòu)效率低、元數(shù)據(jù)服務(wù)器性能瓶頸、磁盤I/O效率低、磁盤空間利用率低和網(wǎng)絡(luò)通信延時(shí)高等一系列問(wèn)題[1]。究其原因,主要是由元數(shù)據(jù)和數(shù)據(jù)兩個(gè)方面造成的。(1)元數(shù)據(jù)占比高、訪問(wèn)頻率高、耗時(shí)開銷大。由元數(shù)據(jù)結(jié)構(gòu)效率公式Pm=Sm/(Sm+Sd),其中Sm為元數(shù)據(jù)大小,Sd為有效數(shù)據(jù)大小,每個(gè)文件不論大小其元數(shù)據(jù)大小相同。顯然,文件越小,元數(shù)據(jù)占比就越高,有效數(shù)據(jù)率就低。而且,依照pNFS的訪問(wèn)規(guī)則,讀訪問(wèn)一個(gè)小文件會(huì)經(jīng)歷readdir、Open、layoutget、read和close五個(gè)步驟。其中read為數(shù)據(jù)訪問(wèn),其余4個(gè)步驟均為元數(shù)據(jù)訪問(wèn)[2]。可見(jiàn),當(dāng)小文件數(shù)量巨大時(shí),元數(shù)據(jù)處理就是系統(tǒng)性能瓶頸和存儲(chǔ)效率低下的根本所在。(2)數(shù)據(jù)訪問(wèn)隨機(jī)性強(qiáng)、I/O粒度小導(dǎo)致磁盤吞吐量低。磁盤仍是當(dāng)前最主要的存儲(chǔ)介質(zhì),由于磁盤訪址的物理特性使得磁盤“善于順序讀,不善于隨機(jī)讀”和“善于大粒度IO,不善于小粒度IO”,這與海量小文件訪問(wèn)“大量隨機(jī)小粒度I/O”的特點(diǎn)相對(duì)立,導(dǎo)致磁盤吞吐量低。雖然近年來(lái)SSD發(fā)展迅速,但是海量小文件場(chǎng)景的“大量隨機(jī)小粒度I/O”依然會(huì)影響SSD的性能和壽命。

因此,對(duì)海量小文件進(jìn)行高效存儲(chǔ)與訪問(wèn)支持,是存儲(chǔ)系統(tǒng)必須面對(duì)的現(xiàn)實(shí)問(wèn)題。文中介紹了近年來(lái)有關(guān)小文件優(yōu)化的研究和系統(tǒng)實(shí)現(xiàn),對(duì)基于對(duì)象文件系統(tǒng)的海量小文件優(yōu)化方案的關(guān)鍵技術(shù)展開討論,并給出實(shí)際運(yùn)行結(jié)果及分析。

1 相關(guān)工作

業(yè)界對(duì)解決小文件存儲(chǔ)訪問(wèn)的問(wèn)題進(jìn)行了大量研究,將小文件聚合成大文件再進(jìn)行存儲(chǔ)訪問(wèn)是主要思路。研究者也提出了其他一些優(yōu)化小文件存儲(chǔ)訪問(wèn)的技術(shù),例如通過(guò)簡(jiǎn)化元數(shù)據(jù)結(jié)構(gòu)減少元數(shù)據(jù)服務(wù)器負(fù)荷,利用緩存提高磁盤I/O效率并降低網(wǎng)絡(luò)時(shí)延等。

這些研究可分為兩類:一類是針對(duì)特定問(wèn)題的解決方案,根據(jù)特定的應(yīng)用環(huán)境和存儲(chǔ)需求,針對(duì)小文件帶來(lái)的某個(gè)或某幾個(gè)問(wèn)題進(jìn)行優(yōu)化,側(cè)重點(diǎn)各不相同,不具有通用性。例如Facebook的Haystacke[3]、淘寶的TFS(Taobao File-System)[4]等。另一類是通用解決方案,其中最廣泛的就是文件合并技術(shù)。例如基于HDFS研制的海量小文件系統(tǒng)SMDFS[5],提供了基于目錄聚合以及針對(duì)地理柵格數(shù)據(jù)金字塔結(jié)構(gòu)局部?jī)?yōu)化的海量小文件存儲(chǔ)方法。

隨著非結(jié)構(gòu)化數(shù)據(jù)日益增長(zhǎng),具有高擴(kuò)展性、數(shù)據(jù)存儲(chǔ)位置靈活的基于對(duì)象接口的分布式文件系統(tǒng)(簡(jiǎn)稱對(duì)象文件系統(tǒng))應(yīng)運(yùn)而生。它以對(duì)象作為數(shù)據(jù)存儲(chǔ)單元,將所有對(duì)象以扁平方式進(jìn)行存儲(chǔ),元數(shù)據(jù)和數(shù)據(jù)一起下放至OSD(object storage device)管理,POSIX接口所涉及的元數(shù)據(jù)仍由MDS管理。對(duì)象文件系統(tǒng)摒棄了傳統(tǒng)的集中式存儲(chǔ)元數(shù)據(jù)尋址的方案,客戶端只需通過(guò)哈希計(jì)算的方式即可完成oid到對(duì)象存儲(chǔ)設(shè)備物理位置的映射。元數(shù)據(jù)服務(wù)器的功能被弱化,客戶端更多地與均衡分布的OSD集群交互。

典型的對(duì)象文件系統(tǒng)有:Inktank公司的Ceph系統(tǒng)[6]、Cluster File Systems公司的Lustre系統(tǒng)[7-8]、Rackspace公司的Swift系統(tǒng)等。其中,Ceph因其在數(shù)據(jù)訪問(wèn)和信息存儲(chǔ)方面的靈活性以及得益于OpenStack的青睞,成為了當(dāng)前最炙手可熱的分布式存儲(chǔ)系統(tǒng)。

對(duì)象文件系統(tǒng)雖然解決了元數(shù)據(jù)訪問(wèn)瓶頸的問(wèn)題,但是對(duì)小文件的支持仍是短板。例如,大小為128 KB的8個(gè)小文件,每個(gè)小文件所占用的存儲(chǔ)空間為一個(gè)對(duì)象,假設(shè)對(duì)象大小為4 MB,總量1 MB的數(shù)據(jù)實(shí)際共占用了32 MB的存儲(chǔ)空間。這樣,整個(gè)系統(tǒng)的存儲(chǔ)空間利用率非常低,對(duì)象內(nèi)大塊的“碎片”空間沒(méi)有得到有效使用。

CephFS支持元數(shù)據(jù)和數(shù)據(jù)分離存儲(chǔ),但是對(duì)小文件的優(yōu)化仍然局限在元數(shù)據(jù)層面。如果上層應(yīng)用允許,優(yōu)選RGW對(duì)象接口,對(duì)象接口天然具備更少的元數(shù)據(jù),能支撐更大的容量。雖然CRUSH算法機(jī)制解決了元數(shù)據(jù)的問(wèn)題,但是Ceph對(duì)于海量小文件帶來(lái)的第二個(gè)問(wèn)題尚不能很好地解決。Ceph社區(qū)曾對(duì)此問(wèn)題進(jìn)行了描述并提出了一種基于rgw的方案,不過(guò)在最新代碼中,一直未找到方案的實(shí)現(xiàn)[9-10]。

許艷艷等通過(guò)修改Ceph實(shí)現(xiàn)了一個(gè)基于可變長(zhǎng)分塊的文件系統(tǒng)VarFS[11],一個(gè)對(duì)象可以被多個(gè)文件包含。但是合并在同一對(duì)象中的小文件沒(méi)有關(guān)聯(lián),不能發(fā)揮數(shù)據(jù)“預(yù)取”的優(yōu)勢(shì);且VarFS額外的對(duì)象元數(shù)據(jù)服務(wù)器增加了內(nèi)部消息交互負(fù)擔(dān)和系統(tǒng)復(fù)雜性,新增的文件接口和Ceph原生接口不兼容。

從這些研究來(lái)看,聚合后的小文件沒(méi)有避開從聚合結(jié)構(gòu)到具體文件的二次映射問(wèn)題,無(wú)論是采用全局索引目錄方式,還是聚合結(jié)構(gòu)中的局部索引方式,都是屬于“查表檢索”的傳統(tǒng)理念[12]。而“無(wú)中心結(jié)構(gòu)”的對(duì)象存儲(chǔ)系統(tǒng)更青睞于“計(jì)算檢索”的設(shè)計(jì)理念,因此需要一種與對(duì)象存儲(chǔ)系統(tǒng)設(shè)計(jì)理念相一致的小文件優(yōu)化存儲(chǔ)與訪問(wèn)方式。

2 基于對(duì)象的海量小文件存儲(chǔ)優(yōu)化方案

針對(duì)上述問(wèn)題,文中提出了一種基于對(duì)象文件系統(tǒng)的海量小文件存儲(chǔ)優(yōu)化方案。采用“特征聚合、計(jì)算定位”的方法獲得對(duì)象存儲(chǔ)位置,根本改變?cè)獢?shù)據(jù)的查表索引方式,在客戶端采用小文件數(shù)據(jù)大粒度預(yù)讀技術(shù)將物理上和邏輯上連續(xù)的小文件數(shù)據(jù)批量預(yù)讀到本地緩存,聚合小粒度I/O為大粒度I/O,提升了磁盤效率,并使用頁(yè)面熱緩存和溫緩存兩級(jí)隊(duì)列管理和識(shí)別熱數(shù)據(jù),充分利用文件的局部特征提升后續(xù)讀訪問(wèn)時(shí)緩存命中,降低訪問(wèn)時(shí)延。

如圖1所示,該系統(tǒng)由客戶端、元數(shù)據(jù)服務(wù)器、對(duì)象存儲(chǔ)集群三部分組成。

圖1 基于對(duì)象的海量小文件存儲(chǔ)優(yōu)化方案架構(gòu)

(1)客戶端模塊。該模塊為上層應(yīng)用提供對(duì)象存儲(chǔ)接口,實(shí)現(xiàn)了讀寫處理函數(shù),并處理與文件元數(shù)據(jù)服務(wù)器、對(duì)象存儲(chǔ)集群之間的通訊。在讀寫數(shù)據(jù)時(shí),首先需到MDS獲取對(duì)應(yīng)文件的元數(shù)據(jù),主要包括ino和ono。ino用于全局標(biāo)識(shí)每一個(gè)文件,ono是文件分片的編號(hào),用于標(biāo)識(shí)該文件所處的對(duì)象。然后通過(guò)計(jì)算的方式獲得該文件的物理位置,即oid。最后直接讀寫訪問(wèn)OSD,并在讀寫結(jié)束后更新MDS中的元數(shù)據(jù)。

(2)元數(shù)據(jù)服務(wù)器。該模塊為文件接口提供元數(shù)據(jù)服務(wù),管理的元數(shù)據(jù)信息主要包括訪問(wèn)權(quán)限信息和邏輯視圖信息,如ino、ono、最后修改時(shí)間、訪問(wèn)權(quán)限、文件大小等。只有在需要提供Posix等文件接口時(shí),才需要配置MDS模塊。

(3)對(duì)象存儲(chǔ)集群。負(fù)責(zé)集群中所有數(shù)據(jù)與對(duì)象的存儲(chǔ),處理集群數(shù)據(jù)的復(fù)制、恢復(fù)、再均衡,監(jiān)控集群狀態(tài)并保證集群數(shù)據(jù)的一致性。對(duì)象的大小一般配置為2 MB或4 MB。每個(gè)對(duì)象對(duì)應(yīng)一個(gè)Oid,由ino和ono根據(jù)算法生成。大文件和小文件的界限也可配置,本方案中設(shè)為1 MB。在處理文件讀寫操作時(shí),首先判斷文件的大小。若該文件為小文件,則交由小文件聚合模塊處理。若不是小文件,則繼續(xù)判斷文件是否小于一個(gè)對(duì)象大小,是則由ino直接計(jì)算oid,否則將該文件進(jìn)行切片處理。編號(hào)為ino的大文件的第ono個(gè)對(duì)象的編號(hào)oid計(jì)算公式為:

Oid=(ino?32)|ono

(1)

小文件聚合模塊負(fù)責(zé)小文件的特征聚合和計(jì)算定位管理。小文件寫操作時(shí),計(jì)算文件之間的局部性特征,并根據(jù)特征選取若干小文件聚合為文件組,將聚合后的文件組作為一個(gè)對(duì)象發(fā)起存儲(chǔ)請(qǐng)求;文件讀操作時(shí),通過(guò)ino和ono計(jì)算出小文件所在的對(duì)象以及小文件在對(duì)象內(nèi)的區(qū)域。

2.1 小文件聚合管理

文中小文件聚合算法的核心思想為“特征聚合,計(jì)算定位”,根據(jù)文件局部性特征將小文件聚合為文件組,通過(guò)條帶化規(guī)則將一個(gè)文件組聚合在一個(gè)對(duì)象中,通過(guò)計(jì)算方式高效率地定位對(duì)象存儲(chǔ)位置,而非低效的查表索引方式,同時(shí)能優(yōu)化數(shù)據(jù)布局。被聚合的小文件同時(shí)擁有良好的時(shí)間局部性和空間局部性,使得系統(tǒng)讀性能顯著提升。

根據(jù)對(duì)多個(gè)應(yīng)用場(chǎng)景的統(tǒng)計(jì)分析,在應(yīng)用的全生命周期內(nèi),小文件訪問(wèn)在整體上呈現(xiàn)出極強(qiáng)的規(guī)律性[13]。不僅不同用戶的操作概率很不均衡,而且各操作之間也具有很強(qiáng)的相關(guān)性。表現(xiàn)為:剛剛被訪問(wèn)過(guò)的文件,極有可能在不久之后再次被訪問(wèn)到,即時(shí)間局部性[14];將被訪問(wèn)的下一個(gè)文件,極有可能就處于之前被訪問(wèn)過(guò)的某個(gè)文件的附近,即空間局部性。有的應(yīng)用場(chǎng)景也可根據(jù)業(yè)務(wù)特征確定文件的相關(guān)性(例如,同一主題的郵件,本郵件的上一個(gè)郵件和下一個(gè)郵件,相互關(guān)聯(lián)的圖片文件,OTT視頻文件的切片,同一文件夾的文件等等)。

所以可以利用文件的空間局部性和時(shí)間局部性特征,將小文件聚合緩沖區(qū)中的文件,分別置于鄰近時(shí)間特征隊(duì)列和鄰近空間特征隊(duì)列中,可以根據(jù)特定應(yīng)用場(chǎng)景特征來(lái)設(shè)置新的文件關(guān)聯(lián)特征隊(duì)列,并可調(diào)整各特征隊(duì)列的權(quán)重。

在小文件合并過(guò)程中,綜合利用文件之間的空間局部性、時(shí)間局部性以及其他關(guān)聯(lián)特征,盡量將可能連續(xù)訪問(wèn)的小文件聚合為文件組,一個(gè)文件組中各個(gè)文件的元數(shù)據(jù)和數(shù)據(jù)聚合在一個(gè)對(duì)象中連續(xù)存儲(chǔ),增強(qiáng)了小文件之間的數(shù)據(jù)局部性和聚合后存儲(chǔ)對(duì)象內(nèi)部的數(shù)據(jù)局部性。這又把磁盤上的隨機(jī)I/O轉(zhuǎn)換成了順序I/O,提高了磁盤I/O效率,并為下一步的小文件數(shù)據(jù)大粒度預(yù)讀提供了條件。

本算法擴(kuò)展了對(duì)象存儲(chǔ)系統(tǒng)中ono的定義:當(dāng)ono為正數(shù),表明該文件不是小文件,其絕對(duì)值是ino對(duì)應(yīng)的文件被切片之后的順序編號(hào);當(dāng)ono為負(fù)數(shù),則表明該文件是小文件,其絕對(duì)值表示小文件聚合為文件組后,該小文件在文件組存儲(chǔ)的對(duì)象內(nèi)的區(qū)域編號(hào)。

本算法采用的對(duì)象條帶化規(guī)則為,每個(gè)小文件在聚合后的對(duì)象中單獨(dú)占用1 MB,單個(gè)對(duì)象最多可聚合的文件數(shù)量為:對(duì)象大小/小文件界限大小。其中對(duì)象大小、小文件界限大小都是可配置的。編號(hào)為ino的小文件被聚合于對(duì)象的Oid計(jì)算公式為:

Oid=((ino+ono+1)?32)|1

(2)

該小文件在該對(duì)象的第-ono個(gè)區(qū)域中。這樣,本算法可以將若干小文件聚合在同一個(gè)對(duì)象中,并通過(guò)計(jì)算獲得讀寫位置。

如圖2所示,小文件寫聚合流程包括以下步驟:

(1)客戶端C1發(fā)起文件寫請(qǐng)求。

·客戶端C1判斷是否是小文件,是則放入小文件聚合緩存隊(duì)列,否則進(jìn)入正常文件處理流程。

圖2 小文件寫聚合流程

·按照規(guī)則根據(jù)聚合特征選取小文件組,閾值到,則客戶端C1向元數(shù)據(jù)服務(wù)器MDS發(fā)出創(chuàng)建文件組內(nèi)各小文件(B、C、D、E),(F、G、H、I)元數(shù)據(jù)的請(qǐng)求。

(2)MDS按規(guī)則為小文件分配ino和ono,并創(chuàng)建相關(guān)元數(shù)據(jù)。

·MDS按遞增原則為文件組內(nèi)各小文件逐一分配全局唯一編號(hào)ino,相連文件組內(nèi)各小文件(B、C、D、E),(F、G、H、I)被分配的ino連續(xù)遞增。

·MDS為文件組內(nèi)各小文件分配ono,規(guī)則為:B為-1,C為-2,D為-3,E為-4;F為-1,G為-2,H為-3,I為-4。

·元數(shù)據(jù)服務(wù)器逐一為上述小文件創(chuàng)建其他元數(shù)據(jù),如文件創(chuàng)建時(shí)間、訪問(wèn)權(quán)限等。

·元數(shù)據(jù)服務(wù)器將上述小文件的ino和ono回傳給客戶端C1。

(3)客戶端C1計(jì)算小文件聚合后對(duì)象存儲(chǔ)的位置,并向該OSD的小文件聚合模塊發(fā)起處理請(qǐng)求。

·客戶端C1收到元數(shù)據(jù)服務(wù)器傳來(lái)的ino和ono。

·客戶端C1根據(jù)式2逐個(gè)計(jì)算出小文件將寫入到的對(duì)象編號(hào)oid。

·客戶端C1根據(jù)對(duì)象編號(hào)計(jì)算該對(duì)象所處的OSD。OSD編號(hào)的計(jì)算公式為:

OSD_num=HASH(oid)

(3)

HASH包括但不限于:平方取中間值、模運(yùn)算取余、DHT算法、CRUSH算法。

·客戶端C1根據(jù)OSD_num向?qū)ο蟠鎯?chǔ)設(shè)備發(fā)出小文件聚合寫請(qǐng)求。

(4)小文件聚合模塊將小文件組(B、C、D、E),(F、G、H、I)分別聚合寫入到相應(yīng)對(duì)象中,OSD向客戶端C1和MSD返回結(jié)果。

·小文件聚合模塊根據(jù)ono判定是否為小文件聚合寫操作,非負(fù)數(shù)則報(bào)錯(cuò)。

·小文件聚合模塊將各文件組的小文件聚合寫入同一對(duì)象中。每個(gè)小文件存放在相同大小的區(qū)域中,對(duì)象的第K個(gè)區(qū)域存放ono為-K的小文件。

·通知客戶端C1寫入完成,通知MDS更新上述小文件的元數(shù)據(jù)信息,如最后訪問(wèn)時(shí)間等。

如圖3所示,讀取小文件的流程包括以下步驟:

(1)客戶端C2發(fā)起請(qǐng)求讀取單個(gè)小文件或者批量讀取小文件。

(2)客戶端C2檢查當(dāng)前讀取文件的數(shù)據(jù)是否存在于緩存。如果是,則在緩存中將數(shù)據(jù)返回給應(yīng)用,進(jìn)入步驟6;如果否,則C2向MDS發(fā)起請(qǐng)求獲取待讀取小文件的元數(shù)據(jù)。

(3)MDS將當(dāng)前待讀取文件的ino和ono發(fā)送給客戶端C2。

·客戶端C2向MDS獲取待讀取文件的元數(shù)據(jù)。

·MDS判斷訪問(wèn)權(quán)限。合法訪問(wèn)則MDS將當(dāng)前讀取文件的ino和ono返回給客戶端C2。

(4)客戶端計(jì)算小文件聚合位置,交由小文件聚合模塊處理。

·客戶端C2通過(guò)式2由ino和ono計(jì)算當(dāng)前待讀取小文件所在的對(duì)象編號(hào)oid。

·客戶端C2通過(guò)式3由oid計(jì)算該對(duì)象所存儲(chǔ)于OSD的編號(hào)OSD_num。

·客戶端C2向OSD發(fā)出讀請(qǐng)求。

(5)小文件聚合模塊將編號(hào)為oid的對(duì)象中的數(shù)據(jù)返回給客戶端C2??蛻舳薈2根據(jù)ono,將相應(yīng)數(shù)據(jù)返回給上層應(yīng)用。將該對(duì)象中其他區(qū)域的數(shù)據(jù)內(nèi)容保存在緩存中,后續(xù)訪問(wèn)若在緩存命中,則省去了同步讀取的時(shí)間開銷。

·小文件聚合模塊將編號(hào)為oid的對(duì)象中的全部數(shù)據(jù)發(fā)送給客戶端C2,同時(shí)通知MDS更新該文件的元數(shù)據(jù),如最后訪問(wèn)時(shí)間等。

·客戶端C2收到該對(duì)象的數(shù)據(jù)。將第-ono個(gè)區(qū)域的數(shù)據(jù)從對(duì)象中取出,返回給上層應(yīng)用。

·客戶端C2將該對(duì)象中的其他數(shù)據(jù)保存在緩存中。

(6)客戶端C2檢查是否讀取完畢,如果否,則讀取下一個(gè)文件,進(jìn)入步驟2;如果是,則結(jié)束。

綜上所述,與現(xiàn)有技術(shù)相比,文中提出的小文件聚合方法節(jié)省了“查表索引”的開銷,根據(jù)特征聚合的文件組也提高了小文件間的關(guān)聯(lián)性,可顯著提升小文件的讀寫性能。

2.2 小文件數(shù)據(jù)大粒度預(yù)讀技術(shù)

在小文件數(shù)據(jù)讀取訪問(wèn)中,由于數(shù)據(jù)讀取粒度小并且不同小文件之間的數(shù)據(jù)訪問(wèn)空間連續(xù)性差,難以發(fā)揮磁盤的大粒度順序訪問(wèn)的性能優(yōu)勢(shì),導(dǎo)致小文件的訪問(wèn)性能遠(yuǎn)遠(yuǎn)低于大文件的訪問(wèn)性能。

預(yù)讀是提升小文件讀取訪問(wèn)性能的一個(gè)主要方法。針對(duì)數(shù)據(jù)訪問(wèn)時(shí)IO粒度小,磁盤吞吐量低的問(wèn)題,文中采取一種客戶端小文件數(shù)據(jù)大粒度預(yù)讀技術(shù)。通過(guò)把將要訪問(wèn)的數(shù)據(jù)預(yù)先讀取到客戶端緩存,后續(xù)客戶端訪問(wèn)時(shí)可以在緩存中獲取數(shù)據(jù),節(jié)省了同步從磁盤讀取數(shù)據(jù)的開銷。

小文件數(shù)據(jù)大粒度預(yù)讀通過(guò)頁(yè)面熱緩存、頁(yè)面溫緩存、同步預(yù)讀、異步預(yù)讀等技術(shù)來(lái)實(shí)現(xiàn)。

頁(yè)面熱緩存:將空間連續(xù)的大粒度數(shù)據(jù)從磁盤預(yù)讀到客戶端緩存后,對(duì)于已經(jīng)與具體要訪問(wèn)的文件相關(guān)聯(lián)的頁(yè)面直接放到頁(yè)面熱緩存中管理。

頁(yè)面溫緩存:對(duì)于暫未關(guān)聯(lián)到任何文件的數(shù)據(jù)頁(yè),記為匿名頁(yè),放入頁(yè)面溫緩存管理,每一個(gè)匿名頁(yè)記錄著該數(shù)據(jù)頁(yè)面在磁盤中的物理位置標(biāo)識(shí)。通過(guò)雙向鏈表的方式組織在匿名頁(yè)面,磁盤中位置連續(xù)的數(shù)據(jù)頁(yè)面使用同一個(gè)匿名頁(yè)鏈表管理,并在鏈表中記錄該鏈表中頁(yè)面的起始、數(shù)量、使用情況等信息。當(dāng)后續(xù)訪問(wèn)發(fā)起讀盤操作前,先檢查頁(yè)面溫緩存,如果命中這個(gè)物理位置標(biāo)識(shí),則將該匿名頁(yè)直接返回,同時(shí)把該頁(yè)面從頁(yè)面溫緩存中摘除并放入到頁(yè)面熱緩存。

異步預(yù)讀:在訪問(wèn)過(guò)程中,隨著匿名頁(yè)面緩沖區(qū)的頁(yè)面減少到一定程度,使用率達(dá)到異步預(yù)讀觸發(fā)點(diǎn),則可認(rèn)為該鏈表的預(yù)讀頁(yè)面使用情況好,訪問(wèn)局部性強(qiáng),此時(shí)觸發(fā)異步預(yù)讀。異步預(yù)讀技術(shù)使得數(shù)據(jù)在被使用前盡可能地準(zhǔn)備好,大幅提升緩存命中率,減少同步IO等待的時(shí)延。

同步預(yù)讀:在客戶端讀取單個(gè)小文件時(shí),不僅獲取該小文件所需的小粒度數(shù)據(jù),而且還把與該小文件數(shù)據(jù)空間連續(xù)的大粒度數(shù)據(jù)從磁盤預(yù)讀到緩存。當(dāng)后續(xù)訪問(wèn)其他小文件時(shí),如果所需數(shù)據(jù)已存在于緩存,則避免了從磁盤再次讀取的開銷。采用“讀則預(yù)讀”的原則,預(yù)讀的觸發(fā)點(diǎn)固化在單一的頁(yè)面中。優(yōu)點(diǎn)是簡(jiǎn)單易行,缺點(diǎn)是過(guò)于死板,沒(méi)有訪問(wèn)到該頁(yè)面即便擁有良好的訪問(wèn)局部性也不會(huì)觸發(fā)預(yù)讀。

客戶端讀取文件的流程如圖4所示。

圖4 小文件數(shù)據(jù)大粒度預(yù)讀流程

先檢查文件數(shù)據(jù)是否在本地頁(yè)面緩存中,如果是則讀取頁(yè)面緩存并返回。否則檢查是否在預(yù)讀頁(yè)面緩存中命中,如果是則將該匿名頁(yè)放入到頁(yè)面緩沖區(qū),并檢查匿名頁(yè)使用率是否觸發(fā)異步預(yù)讀條件,是則觸發(fā)異步預(yù)讀,否則返回。如果沒(méi)有在預(yù)讀頁(yè)面緩存中命中,則觸發(fā)同步預(yù)讀,從磁盤上讀出文件所在對(duì)象的數(shù)據(jù),并更新頁(yè)面緩存和預(yù)讀緩存。

3 實(shí)驗(yàn)及應(yīng)用

本節(jié)將統(tǒng)一存儲(chǔ)系統(tǒng)ZXDFS采用文中技術(shù)優(yōu)化前后進(jìn)行測(cè)試對(duì)比。測(cè)試環(huán)境配置為:CPU英特爾E5606 2.13 GHz雙路16核/內(nèi)存8 GB*7/SSD英特爾s3500 220 GB/萬(wàn)兆網(wǎng)卡,操作系統(tǒng)Suse11sp3 V3.0.76。采用四種典型應(yīng)用場(chǎng)景的現(xiàn)網(wǎng)數(shù)據(jù),如表1所示。

表1 測(cè)試應(yīng)用案例

對(duì)每種類型的應(yīng)用場(chǎng)景,在相同的測(cè)試預(yù)置條件下,對(duì)比ZXDFS在優(yōu)化前和優(yōu)化后的性能指標(biāo),優(yōu)化后是指采用文中所述技術(shù)優(yōu)化后的ZXDFS系統(tǒng)。采用文件讀寫訪問(wèn)的時(shí)間延遲作為性能評(píng)價(jià)指標(biāo)。為保證實(shí)驗(yàn)結(jié)果可靠,每種類型應(yīng)用場(chǎng)景重復(fù)實(shí)驗(yàn)14次,去掉最小的2個(gè)值,去掉最大的2個(gè)值,對(duì)中間的10個(gè)值取平均。

性能測(cè)試結(jié)果對(duì)比如圖5所示。

圖5 性能測(cè)試結(jié)果對(duì)比

在測(cè)試的四種應(yīng)用場(chǎng)景中,場(chǎng)景3性能提升的效果最佳,達(dá)到51%。場(chǎng)景1性能提升的效果最不明顯,僅為3%。其他場(chǎng)景性能提升比例介于22%~30%之間,與各場(chǎng)景的平均性能提升水平26%較接近。場(chǎng)景1性能提升不明顯,是由于該場(chǎng)景下文件比較大,并且主要是順序讀訪問(wèn),文中優(yōu)化方案難以發(fā)揮效果。場(chǎng)景3性能提升較大的原因是海量小文件訪問(wèn),文件之間具有較強(qiáng)的局部性特征,優(yōu)化效果得以充分發(fā)揮。

4 結(jié)束語(yǔ)

在面對(duì)海量小文件場(chǎng)景時(shí),傳統(tǒng)分布式文件系統(tǒng)存在著“元數(shù)據(jù)結(jié)構(gòu)效率低,訪問(wèn)頻率高且開銷大”和“IO粒度小、磁盤吞吐量低”的難題。業(yè)界現(xiàn)有的小文件聚合方法不符合分布式系統(tǒng)的“通過(guò)計(jì)算檢索”的設(shè)計(jì)理念。因此,文中提出了一種基于對(duì)象文件系統(tǒng)的小文件存儲(chǔ)優(yōu)化方法,核心設(shè)計(jì)思想概括為“特征聚合、計(jì)算定位、客戶端預(yù)讀”,解決了元數(shù)據(jù)“查表檢索”的難題,提升了磁盤I/O效率和緩存命中率。在小文件的典型應(yīng)用場(chǎng)景中,總體性能提升50%以上。但是,該方案在使用簡(jiǎn)單對(duì)象條帶化策略時(shí),可能有存儲(chǔ)空間浪費(fèi)、刪除文件操作無(wú)法立即回收存儲(chǔ)空間的局限。對(duì)于存在大量刪除和修改操作的應(yīng)用場(chǎng)景還需進(jìn)一步優(yōu)化。

猜你喜歡
磁盤粒度海量
一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
超重力場(chǎng)中煤泥顆粒沉降規(guī)律研究①
海量GNSS數(shù)據(jù)產(chǎn)品的一站式快速獲取方法
關(guān)于粒度重要性公式的改進(jìn)
動(dòng)態(tài)更新屬性值變化時(shí)的最優(yōu)粒度
它的好 它的壞 詳解動(dòng)態(tài)磁盤
解決Windows磁盤簽名沖突
海量快遞垃圾正在“圍城”——“綠色快遞”勢(shì)在必行
Windows系統(tǒng)下動(dòng)態(tài)磁盤卷的分析與研究
情感粒度
海南省| 盱眙县| 林芝县| 普陀区| 临猗县| 阳原县| 沙洋县| 南阳市| 屏边| 东安县| 柏乡县| 祁阳县| 陵川县| 中江县| 岳普湖县| 奉节县| 牙克石市| 随州市| 纳雍县| 新营市| 城市| 密云县| 东城区| 尖扎县| 永春县| 准格尔旗| 宁安市| 仙居县| 行唐县| 开平市| 阿尔山市| 都安| 屏山县| 平湖市| 盐源县| 讷河市| 合江县| 长武县| 无极县| 房产| 甘南县|