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

?

基于工作負(fù)載感知的固態(tài)硬盤(pán)陣列系統(tǒng)的架構(gòu)設(shè)計(jì)與研究

2019-04-18 05:14許胤龍李永坤
關(guān)鍵詞:扇區(qū)條帶固態(tài)

張 強(qiáng) 梁 杰 許胤龍,2 李永坤,2

1(中國(guó)科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 合肥 230026)2 (安徽省高性能計(jì)算重點(diǎn)實(shí)驗(yàn)室(中國(guó)科學(xué)技術(shù)大學(xué)) 合肥 230026)

大數(shù)據(jù)時(shí)代,應(yīng)對(duì)海量數(shù)據(jù)的存儲(chǔ)分析,基于固態(tài)硬盤(pán)的容錯(cuò)陣列系統(tǒng)能夠很好地解決海量數(shù)據(jù)的可靠存儲(chǔ)和高效訪(fǎng)問(wèn)的困難.原因有2方面:1)容錯(cuò)陣列系統(tǒng)既能通過(guò)多盤(pán)I/O提供數(shù)據(jù)的高并發(fā)性,又能通過(guò)存儲(chǔ)冗余信息保障數(shù)據(jù)的可靠性;2)固態(tài)硬盤(pán)相比機(jī)械硬盤(pán),因其具有更高訪(fǎng)問(wèn)性能、更低能耗和更強(qiáng)抗震性等特點(diǎn),進(jìn)一步提升容錯(cuò)陣列系統(tǒng)的性能.

多塊固態(tài)硬盤(pán)組成的容錯(cuò)陣列系統(tǒng),往往按照輪轉(zhuǎn)(round-robin)的順序,并行地在各個(gè)固態(tài)硬盤(pán)上讀寫(xiě)數(shù)據(jù)(即每塊盤(pán)的地位相同).由于數(shù)據(jù)本身具有時(shí)間局部性及空間局部性的特點(diǎn),易造成局部盤(pán)成為熱點(diǎn)盤(pán),進(jìn)而會(huì)造成整個(gè)固態(tài)硬盤(pán)陣列的性能出現(xiàn)瓶頸(極端情況下會(huì)出現(xiàn)單盤(pán)熱點(diǎn)),又由于固態(tài)盤(pán)有壽命限制,對(duì)某些盤(pán)的過(guò)多寫(xiě)易造成固態(tài)盤(pán)故障等問(wèn)題,也會(huì)對(duì)整個(gè)陣列可靠性造成影響.本文在由8個(gè)固態(tài)硬盤(pán)(solid state drive, SSD)構(gòu)成的RAID -0(redundant array of independent disks 0)陣列系統(tǒng)中測(cè)試不同企業(yè)級(jí)工作負(fù)載,均發(fā)現(xiàn)熱點(diǎn)盤(pán)的現(xiàn)象.

如何保證陣列系統(tǒng)級(jí)的負(fù)載和磨損均衡以及如何區(qū)分各個(gè)固態(tài)硬盤(pán)在陣列中的角色,設(shè)計(jì)合理的固態(tài)硬盤(pán)陣列系統(tǒng)架構(gòu),對(duì)提升固態(tài)硬盤(pán)陣列系統(tǒng)整體性能及可靠性都有很重要的意義.

本文的主要貢獻(xiàn)有2個(gè)方面:

1) 利用工作負(fù)載感知特性,在RAID -0陣列中設(shè)計(jì)了一種基于冷熱數(shù)據(jù)分離存儲(chǔ)的固態(tài)硬盤(pán)陣列系統(tǒng)架構(gòu)HA-RAID(hotness aware RAID),并結(jié)合滑動(dòng)窗口技術(shù)進(jìn)行性能優(yōu)化.實(shí)驗(yàn)結(jié)果表明,HA-RAID可將熱數(shù)據(jù)相對(duì)均勻地存儲(chǔ)到各個(gè)盤(pán)上,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載和磨損均衡,從而將陣列中熱點(diǎn)盤(pán)出現(xiàn)的比例降低到幾乎為0.

2) 在真實(shí)的企業(yè)級(jí)工作負(fù)載下,相比傳統(tǒng)RAID -0,HA-RAID可減少12.01%~41.06%的平均響應(yīng)時(shí)間,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的I/O性能提升.

1 相關(guān)研究工作

近年來(lái),國(guó)內(nèi)外開(kāi)展了大量針對(duì)固態(tài)硬盤(pán)的相關(guān)研究.其中,許多工作關(guān)注固態(tài)硬盤(pán)本身的內(nèi)部結(jié)構(gòu),進(jìn)而分析并設(shè)計(jì)高效的垃圾回收機(jī)制,以提升固態(tài)硬盤(pán)的讀寫(xiě)性能、延長(zhǎng)使用壽命;另外,還有不少工作關(guān)注多塊固態(tài)硬盤(pán)構(gòu)成的存儲(chǔ)陣列系統(tǒng),利用數(shù)據(jù)冗余提髙數(shù)據(jù)的可靠性、延長(zhǎng)固態(tài)硬盤(pán)陣列系統(tǒng)壽命并提升陣列系統(tǒng)性能,這些工作可以分別被概括為2方面:

1) 對(duì)于單個(gè)固態(tài)硬盤(pán)的研究.關(guān)注固態(tài)硬盤(pán)的內(nèi)部結(jié)構(gòu),如文獻(xiàn)[1]探索了固態(tài)硬盤(pán)的內(nèi)部組成以及并行化等,同時(shí)實(shí)現(xiàn)相應(yīng)的固態(tài)硬盤(pán)模擬器.關(guān)注固態(tài)硬盤(pán)邏輯地址到物理地址的映射方式,如文獻(xiàn)[2-3]通過(guò)探索在不同的應(yīng)用場(chǎng)景采用不同的地址映射方式來(lái)優(yōu)化固態(tài)硬盤(pán)的性能.此外,還有關(guān)注固態(tài)硬盤(pán)的垃圾回收過(guò)程,如文獻(xiàn)[4]通過(guò)建立分析模型探究了不同垃圾回收算法在垃圾回收開(kāi)銷(xiāo)和擦寫(xiě)均衡性之間的權(quán)衡關(guān)系,提出了可以根據(jù)需求調(diào)整的d-choice垃圾回收算法;文獻(xiàn)[5-6]通過(guò)建立理論模型分析了固態(tài)硬盤(pán)垃圾回收開(kāi)銷(xiāo)與工作負(fù)載之間的關(guān)系,證明了將冷熱數(shù)據(jù)分離存儲(chǔ)在固態(tài)硬盤(pán)中能夠大大改善垃圾回收性能;文獻(xiàn)[7-8]提出了不同的熱數(shù)據(jù)識(shí)別方法,以部署到固態(tài)硬盤(pán)中改善其讀寫(xiě)性能、減少其垃圾回收開(kāi)銷(xiāo)等.

2) 對(duì)于固態(tài)硬盤(pán)陣列系統(tǒng)的研究.文獻(xiàn)[9]研究了由多塊固態(tài)硬盤(pán)構(gòu)成的陣列系統(tǒng),通過(guò)在多塊固態(tài)硬盤(pán)之間引入冗余數(shù)據(jù),進(jìn)一步提高了系統(tǒng)的可靠性;文獻(xiàn)[10]針對(duì)于固態(tài)硬盤(pán)的特點(diǎn),構(gòu)建了新型的適用于固態(tài)硬盤(pán)的文件系統(tǒng);文獻(xiàn)[11-12]通過(guò)構(gòu)建可靠性分析模型對(duì)基于固態(tài)硬盤(pán)陣列系統(tǒng)進(jìn)行了可靠性評(píng)估;文獻(xiàn)[13]通過(guò)引入彈性條帶機(jī)制解決了傳統(tǒng)磁盤(pán)校驗(yàn)塊更新方式不適用于固態(tài)硬盤(pán)陣列的問(wèn)題等.

綜合海量存儲(chǔ)的背景和國(guó)內(nèi)外研究現(xiàn)狀可知,將固態(tài)硬盤(pán)應(yīng)用于大規(guī)模存儲(chǔ)系統(tǒng)(例如陣列系統(tǒng))已經(jīng)成為了當(dāng)前的趨勢(shì)和熱點(diǎn).盡管已經(jīng)有很多針對(duì)于固態(tài)硬盤(pán)及其陣列系統(tǒng)的性能優(yōu)化研究,但是其中仍然存在著很多的不足,特別是從感知工作負(fù)載的角度來(lái)優(yōu)化固態(tài)硬盤(pán)及其陣列系統(tǒng)的性能方面,仍有著進(jìn)一步的改善空間.如在固態(tài)硬盤(pán)中部署冷熱數(shù)據(jù)識(shí)別方法用于冷熱數(shù)據(jù)分離存儲(chǔ),以減少熱點(diǎn)盤(pán)出現(xiàn)的概率,實(shí)現(xiàn)陣列級(jí)負(fù)載和磨損均衡,已有的熱數(shù)據(jù)方法并不能很好地適應(yīng)工作負(fù)載的變化.

2 陣列系統(tǒng)原始架構(gòu)

在Linux內(nèi)核的MD模塊,固態(tài)硬盤(pán)陣列系統(tǒng)以條帶的形式對(duì)陣列的存儲(chǔ)空間進(jìn)行統(tǒng)一編址.每個(gè)請(qǐng)求數(shù)據(jù)的邏輯地址根據(jù)陣列系統(tǒng)的編址方式,映射到某塊盤(pán)上的固定邏輯地址(固態(tài)盤(pán)內(nèi)部閃存轉(zhuǎn)換層會(huì)進(jìn)一步對(duì)該邏輯地址映射為固態(tài)盤(pán)上真實(shí)物理地址,該映射方式限定在單個(gè)固態(tài)盤(pán)內(nèi)部映射,并不影響數(shù)據(jù)在陣列級(jí)別的分布).由4塊固態(tài)盤(pán)組成RAID -0陣列系統(tǒng)如圖1所示.圖1中數(shù)字0…7, 8…15,分別代表扇區(qū)(sector,大小為512 B)0到7以及扇區(qū)8到15;1個(gè)頁(yè)(page,大小為4 KB)包含8個(gè)扇區(qū),如圖1中,page 0包含扇區(qū)0到7;1個(gè)塊(chunk)包含2個(gè)頁(yè),圖1中的扇區(qū)0到15構(gòu)成1個(gè)塊;1個(gè)條帶(stripe)包含4個(gè)塊,條帶大小可表示為

stripe_size=4×chunk_size=4×2 page=
4×2×8 sector=64 sector.

如果請(qǐng)求的數(shù)據(jù)(扇區(qū)編號(hào)為32~39)為熱數(shù)據(jù),根據(jù)陣列存儲(chǔ)空間的編址方式,計(jì)算得到扇區(qū)編號(hào)為32~39的數(shù)據(jù)存放的物理地址:

stripe_num=32/stripe_size=32/64=0,
chunk_num=32/chunk_size=32/16=2,
dd_idx=chunk_num%disk_num=2%4=2,
chunk_offset=32%chunk_size=32%16=0,
sector_num=stripe_num×chunk_size+
chunk_offset=0×16+0=0.

因此,扇區(qū)編號(hào)為32~39的熱數(shù)據(jù)存放在2號(hào)盤(pán)上,并且盤(pán)上的起始物理扇區(qū)號(hào)為0.各應(yīng)用系統(tǒng)請(qǐng)求的數(shù)據(jù)具有時(shí)間及空間局部性原理,對(duì)某些數(shù)據(jù)的過(guò)多訪(fǎng)問(wèn)會(huì)造成對(duì)部分盤(pán)的過(guò)多讀寫(xiě),從而導(dǎo)致熱點(diǎn)盤(pán)的出現(xiàn).例如,對(duì)扇區(qū)編號(hào)32~39的熱數(shù)據(jù)頻繁訪(fǎng)問(wèn),將導(dǎo)致對(duì)2號(hào)盤(pán)的過(guò)度讀寫(xiě),從而使2號(hào)盤(pán)變?yōu)闊狳c(diǎn)盤(pán).如果大部分I/O請(qǐng)求集中在2號(hào)盤(pán),則不能充分發(fā)揮RAID陣列高并發(fā)的優(yōu)勢(shì),進(jìn)而造成整個(gè)陣列系統(tǒng)的I/O性能出現(xiàn)瓶頸.固態(tài)盤(pán)有擦寫(xiě)次數(shù)壽命限制,對(duì)某些盤(pán)的過(guò)多寫(xiě),也會(huì)對(duì)整個(gè)陣列可靠性造成影響.

3 數(shù)據(jù)冷熱區(qū)分算法

為避免第2節(jié)中提到的熱點(diǎn)盤(pán)出現(xiàn)的問(wèn)題,需對(duì)數(shù)據(jù)進(jìn)行冷熱區(qū)分,并對(duì)區(qū)分過(guò)的數(shù)據(jù)進(jìn)行分別處理.設(shè)計(jì)冷熱數(shù)據(jù)區(qū)分算法,首先要求其識(shí)別結(jié)果的有效性,否則不能達(dá)到冷熱數(shù)據(jù)分離存儲(chǔ)對(duì)存儲(chǔ)系統(tǒng)性能的優(yōu)化;其次要求算法識(shí)別過(guò)程的計(jì)算開(kāi)銷(xiāo)要盡可能小,以免降低存儲(chǔ)系統(tǒng)的請(qǐng)求處理吞吐量.

先前的研究者們已經(jīng)提出了很多有效的冷熱數(shù)據(jù)區(qū)分算法,其中比較典型的冷熱數(shù)據(jù)區(qū)分算法分別是:基于訪(fǎng)問(wèn)頻次的算法DAMS[14]、基于緩存替換的算法Two-level LRU list[15]、基于訪(fǎng)問(wèn)頻次和LRU分組的算法GLRU[16]、基于訪(fǎng)問(wèn)頻率和最近信息的算法MBF[14-17]、基于采樣技術(shù)的算法HotDataTrap[17-18].

DAMS假定可用的內(nèi)存空間無(wú)限大,采用直接地址寫(xiě)次數(shù)統(tǒng)計(jì)方法,為每個(gè)邏輯塊地址(logical block address, LBA)設(shè)立一個(gè)計(jì)數(shù)器,記錄其寫(xiě)統(tǒng)計(jì)次數(shù),圖2為其算法流程.一個(gè)LBA請(qǐng)求頁(yè)被識(shí)別為熱數(shù)據(jù),當(dāng)且僅當(dāng)其寫(xiě)統(tǒng)計(jì)次數(shù)大于等于預(yù)定義的閾值.

不同的工作負(fù)載一般表現(xiàn)出不同的訪(fǎng)問(wèn)特征,為了能夠精確地捕獲各種工作負(fù)載的訪(fǎng)問(wèn)特征,保證冷熱數(shù)據(jù)劃分的合理性,采取以下方法:統(tǒng)計(jì)最近訪(fǎng)問(wèn)數(shù)據(jù)的修改頻率來(lái)動(dòng)態(tài)調(diào)整熱度閾值,并對(duì)每個(gè)邏輯地址的計(jì)數(shù)器值進(jìn)行定期減半的衰退操作以反映工作負(fù)載的動(dòng)態(tài)性.實(shí)驗(yàn)結(jié)果證明該方法能準(zhǔn)確地識(shí)別出熱數(shù)據(jù),從而很好地實(shí)現(xiàn)了陣列系統(tǒng)的負(fù)載均衡.

考慮到計(jì)算開(kāi)銷(xiāo)對(duì)存儲(chǔ)系統(tǒng)的請(qǐng)求響應(yīng)時(shí)間的影響,因此本文在設(shè)計(jì)和實(shí)現(xiàn)固態(tài)硬盤(pán)陣列系統(tǒng)架構(gòu)時(shí)采用最理想的DAMS作為冷熱數(shù)據(jù)區(qū)分算法,DAMS只需很小的計(jì)算開(kāi)銷(xiāo),但需要較大的內(nèi)存開(kāi)銷(xiāo)來(lái)記錄訪(fǎng)問(wèn)頻次,4.3節(jié)會(huì)進(jìn)一步討論如何對(duì)內(nèi)存開(kāi)銷(xiāo)進(jìn)行優(yōu)化.

4 基于熱度感知的陣列系統(tǒng)架構(gòu)設(shè)計(jì)研究

本節(jié)我們利用工作負(fù)載感知特性,在RAID -0陣列中設(shè)計(jì)了一種基于冷熱數(shù)據(jù)分離存儲(chǔ)和滑動(dòng)窗口的固態(tài)硬盤(pán)陣列系統(tǒng)架構(gòu),以此來(lái)減少熱點(diǎn)盤(pán)出現(xiàn)的概率,使陣列系統(tǒng)達(dá)到負(fù)載和磨損均衡.

4.1 架構(gòu)設(shè)計(jì)

利用第3節(jié)介紹的冷熱數(shù)據(jù)識(shí)別方案,我們?cè)O(shè)計(jì)了基于冷熱數(shù)據(jù)分離存儲(chǔ)和滑動(dòng)窗口的HA-RAID陣列系統(tǒng)架構(gòu),如圖3所示.

基于冷熱數(shù)據(jù)分離存儲(chǔ)和滑動(dòng)窗口的HA-RAID陣列系統(tǒng)架構(gòu)由4個(gè)模塊組成:

1) 冷熱數(shù)據(jù)識(shí)別模塊.用于對(duì)到來(lái)的請(qǐng)求數(shù)據(jù)進(jìn)行冷熱識(shí)別,以用于在固態(tài)硬盤(pán)陣列系統(tǒng)中進(jìn)行冷熱數(shù)據(jù)的分離存儲(chǔ).該模塊用第3節(jié)介紹的典型的冷熱數(shù)據(jù)區(qū)分算法來(lái)實(shí)現(xiàn).

2) 滑動(dòng)窗口模塊.該模塊用來(lái)變換各個(gè)盤(pán)的角色,使每個(gè)盤(pán)都有機(jī)會(huì)成為熱點(diǎn)盤(pán),從而達(dá)到將熱數(shù)據(jù)均勻放置在每個(gè)盤(pán)上的目的,實(shí)現(xiàn)陣列水平的磨損均衡.如圖3所示,設(shè)定滑動(dòng)窗口大小為4,初始窗口位置為1~4號(hào)盤(pán).當(dāng)處理一定數(shù)量的連續(xù)請(qǐng)求后(本文設(shè)置的滑動(dòng)閾值是1 000),窗口以輪轉(zhuǎn)的方式向右滑動(dòng)1個(gè)位置,移出窗口的盤(pán)由普通盤(pán)變?yōu)闊狳c(diǎn)盤(pán),移入窗口的盤(pán)由熱點(diǎn)盤(pán)變?yōu)槠胀ūP(pán).對(duì)于識(shí)別為熱的數(shù)據(jù),將其存儲(chǔ)到熱點(diǎn)盤(pán),普通數(shù)據(jù)存儲(chǔ)到普通盤(pán).

3) 映射表模塊.該模塊用來(lái)記錄請(qǐng)求的邏輯地址到陣列中物理地址的映射關(guān)系,由于固態(tài)硬盤(pán)讀寫(xiě)的最小單位為頁(yè)(4 KB),并且本文所用工作負(fù)載全部4 KB對(duì)齊,因此映射表中只需記錄數(shù)據(jù)起始地址除以8后的值即可.本文用數(shù)據(jù)結(jié)構(gòu)(LBA,SSDN,PSN)來(lái)實(shí)現(xiàn)該映射表,其中LBA表示請(qǐng)求數(shù)據(jù)塊的起始邏輯地址(起始邏輯扇區(qū)號(hào))除以8后的值,SSDN表示請(qǐng)求數(shù)據(jù)塊在SSD陣列中被存儲(chǔ)的盤(pán)號(hào),PSN表示請(qǐng)求數(shù)據(jù)塊被存儲(chǔ)的起始物理地址(起始物理扇區(qū)號(hào)) 除以8后的值.

4) 編址模塊.不同于原始架構(gòu)以條帶的形式對(duì)陣列進(jìn)行地址空間的編排,我們?cè)O(shè)計(jì)的架構(gòu)中根據(jù)冷熱數(shù)據(jù)識(shí)別結(jié)果對(duì)請(qǐng)求數(shù)據(jù)的邏輯地址在陣列中亂序編址,數(shù)據(jù)在每塊盤(pán)上順序存放,當(dāng)有數(shù)據(jù)需要存儲(chǔ)到盤(pán)上時(shí),以順序的方式為其分配物理地址,并更新映射表模塊對(duì)應(yīng)的表項(xiàng).如圖3所示,下半部分的編址空間中,扇區(qū)0…7,存儲(chǔ)于Disk3的2號(hào)物理位置,而右上角處的映射表模塊的表項(xiàng)0,

Fig. 3 HA-RAID architecture based on coldhot data separation and sliding window圖3 基于冷熱數(shù)據(jù)區(qū)分和滑動(dòng)窗口的HA-RAID系統(tǒng)架構(gòu)

Fig. 4 The I/O flow chat of HA-RAID圖4 HA-RAID的I/O處理流程

即page 0(對(duì)應(yīng)扇區(qū)0…7),記錄SSDN為3號(hào)盤(pán),且PSN=2.

4.2 處理流程

基于冷熱數(shù)據(jù)分離存儲(chǔ)和滑動(dòng)窗口的HA-RAID陣列系統(tǒng)架構(gòu),對(duì)I/O請(qǐng)求的基本處理流程如圖4所示.首先對(duì)陣列中的滑動(dòng)窗口進(jìn)行初始化(如滑動(dòng)窗口大小、滑動(dòng)窗口初始位置、滑動(dòng)窗口滑動(dòng)周期等),然后開(kāi)始處理文件系統(tǒng)層下發(fā)的請(qǐng)求.

對(duì)于文件系統(tǒng)層下發(fā)的請(qǐng)求LBA,首先判斷它是讀請(qǐng)求還是寫(xiě)請(qǐng)求,如果為讀請(qǐng)求,則根據(jù)維護(hù)的地址映射表得到其物理地址(盤(pán)號(hào)和扇區(qū)號(hào)),然后在底層盤(pán)上讀取數(shù)據(jù),完成此次I/O請(qǐng)求;如果為寫(xiě)請(qǐng)求,則利用冷熱數(shù)據(jù)識(shí)別模塊對(duì)其進(jìn)行冷熱識(shí)別:

1) 如果該請(qǐng)求LBA被識(shí)別為熱數(shù)據(jù),則將其以輪轉(zhuǎn)的方式存儲(chǔ)到熱點(diǎn)盤(pán)中(數(shù)據(jù)在盤(pán)中根據(jù)請(qǐng)求先后順序,順序編址并存放),然后更新地址映射表中對(duì)應(yīng)的物理地址,完成此次I/O請(qǐng)求.

Fig. 5 The hierarchy diagram of Linux kernel block devices for read and write requests圖5 Linux內(nèi)核塊設(shè)備讀寫(xiě)請(qǐng)求的層次結(jié)構(gòu)圖

2) 如果該請(qǐng)求LBA被識(shí)別為冷數(shù)據(jù),則將其以輪轉(zhuǎn)的方式存儲(chǔ)到普通盤(pán)中(數(shù)據(jù)在盤(pán)中根據(jù)請(qǐng)求先后順序,順序編址并存放),然后更新地址映射表中對(duì)應(yīng)的物理地址,完成此次I/O請(qǐng)求.

最后判斷連續(xù)請(qǐng)求的數(shù)量是否超過(guò)滑動(dòng)窗口的滑動(dòng)閾值,如果超過(guò),則將滑動(dòng)窗口向右滑動(dòng)1個(gè)盤(pán)的距離,繼續(xù)處理下一個(gè)I/O請(qǐng)求;否則,結(jié)束此次I/O請(qǐng)求并開(kāi)始處理下一個(gè)I/O請(qǐng)求.

4.3 實(shí)現(xiàn)細(xì)節(jié)

本文在Linux內(nèi)核MD模塊下的RAID -0中用C語(yǔ)言實(shí)現(xiàn)SSD陣列系統(tǒng)架構(gòu),這里將詳細(xì)介紹SSD陣列系統(tǒng)架構(gòu)實(shí)現(xiàn)過(guò)程中的一些實(shí)現(xiàn)細(xì)節(jié),如Linux內(nèi)核MD模塊的層次結(jié)構(gòu)圖,實(shí)現(xiàn)邏輯地址到物理地址轉(zhuǎn)換的映射表的構(gòu)造與管理,處理請(qǐng)求過(guò)程中的數(shù)據(jù)對(duì)齊.

1) MD模塊層次結(jié)構(gòu).Linux內(nèi)核響應(yīng)塊設(shè)備讀寫(xiě)請(qǐng)求的層次結(jié)構(gòu),主要由系統(tǒng)調(diào)用層、文件系統(tǒng)層、塊I/O子系統(tǒng)、SCSI(small computer system interface)/SATA(serial advanced technology attach-ment)子系統(tǒng)和底層存儲(chǔ)設(shè)備組成.本文通過(guò)修改圖5中塊設(shè)備驅(qū)動(dòng)層的MD驅(qū)動(dòng)下的RAID -0源碼來(lái)實(shí)現(xiàn)冷熱數(shù)據(jù)區(qū)分算法和基于冷熱數(shù)據(jù)分離存儲(chǔ)的SSD陣列系統(tǒng)架構(gòu),以實(shí)現(xiàn)底層設(shè)備陣列中各盤(pán)的負(fù)載和磨損均衡.

2) 映射表的構(gòu)造與管理.由于在本文設(shè)計(jì)的系統(tǒng)架構(gòu)中,同一個(gè)寫(xiě)請(qǐng)求不是固定寫(xiě)到一塊盤(pán)的固定物理地址上,而是每次都寫(xiě)到不同盤(pán)的不同物理地址上,以實(shí)現(xiàn)負(fù)載和磨損均衡.因此需要構(gòu)造與管理一張映射表來(lái)實(shí)時(shí)記錄請(qǐng)求數(shù)據(jù)塊的邏輯地址到SSD盤(pán)號(hào)和該盤(pán)上物理地址的映射關(guān)系.用數(shù)據(jù)結(jié)構(gòu) (LBA,SSDN,PSN) 來(lái)實(shí)現(xiàn)該映射表,如圖6所示,其中LBA表示請(qǐng)求數(shù)據(jù)塊的起始邏輯地址(起始邏輯扇區(qū)號(hào)) 除以8后的值,SSDN表示請(qǐng)求數(shù)據(jù)塊在SSD陣列中被存儲(chǔ)的盤(pán)號(hào),PSN表示請(qǐng)求數(shù)據(jù)塊被存儲(chǔ)的起始物理地址 (起始物理扇區(qū)號(hào)) 除以8后的值.使用雙數(shù)組進(jìn)行陣列系統(tǒng)中映射表的管理.

Fig. 6 The mapping table圖6 映射表示意圖

LBA用于雙數(shù)組中的索引,無(wú)需存儲(chǔ);SSDN使用1 B存儲(chǔ),能夠存儲(chǔ)最多256塊盤(pán);PSN使用4 B存儲(chǔ),能夠存儲(chǔ)的扇區(qū)號(hào)最多為4 294 967 296,滿(mǎn)足120 GB固態(tài)硬盤(pán)的容量要求.這樣僅用5 B就足夠記錄1個(gè)數(shù)據(jù)塊的映射關(guān)系,對(duì)于固態(tài)硬盤(pán)陣列1 TB的數(shù)據(jù)空間僅僅需要的映射表空間為1.25 GB.

3) 數(shù)據(jù)對(duì)齊.在系統(tǒng)架構(gòu)實(shí)現(xiàn)中,設(shè)定系統(tǒng)的讀寫(xiě)單位為一個(gè)特定大小4 KB的數(shù)據(jù)塊chunk.為了實(shí)現(xiàn)讀寫(xiě)請(qǐng)求的數(shù)據(jù)對(duì)齊,當(dāng)一個(gè)到來(lái)的請(qǐng)求不能與設(shè)定的chunk對(duì)齊,若小于chunk大小,則將其補(bǔ)充到chunk大小;若大于chunk大小,則將其補(bǔ)充到chunk的整數(shù)倍.這樣做是因?yàn)楣虘B(tài)硬盤(pán)的讀寫(xiě)基本單位為4 KB,并且實(shí)驗(yàn)中設(shè)置chunk大小為4 KB,為了讓一次chunk大小的請(qǐng)求集中在1個(gè)塊,而不是操作多個(gè)塊 (比如未對(duì)齊時(shí),1個(gè)chunk大小的請(qǐng)求可能會(huì)操作2個(gè)塊,寫(xiě)入數(shù)據(jù)時(shí)需要讀-擦-寫(xiě),造成性能下降;對(duì)齊時(shí),1個(gè)chunk大小的請(qǐng)求只會(huì)操作1個(gè)塊,從而提升固態(tài)硬盤(pán)性能).

5 實(shí)驗(yàn)與結(jié)果

為了進(jìn)行評(píng)估,本文將設(shè)計(jì)的系統(tǒng)架構(gòu)部署到由多個(gè)商用固態(tài)硬盤(pán)組成的陣列系統(tǒng)上,并在系統(tǒng)中使用了4個(gè)真實(shí)的企業(yè)級(jí)工作負(fù)載.由于本文的方案是在原始RAID -0陣列系統(tǒng)上進(jìn)行的改進(jìn),故將原始RAID -0用作本文的實(shí)驗(yàn)基準(zhǔn),并從2個(gè)方面對(duì)RAID -0和HA-RAID進(jìn)行對(duì)比,即固態(tài)硬盤(pán)陣列系統(tǒng)的負(fù)載均衡以及請(qǐng)求的平均響應(yīng)時(shí)間.

5.1 實(shí)驗(yàn)設(shè)置

1) 工作負(fù)載.實(shí)驗(yàn)中使用了企業(yè)數(shù)據(jù)中心的塊級(jí)traces工作負(fù)載,分別為寫(xiě)占主導(dǎo)的hm_0,src2_0,usr_0和stg_0.其中,hm_0代表硬件監(jiān)控服務(wù)器上的負(fù)載,src2_0代表源控制服務(wù)器上的負(fù)載,usr_0代表用戶(hù)主目錄服務(wù)器上的負(fù)載,stg_0代表Web分段服務(wù)器上的負(fù)載[19].

我們?cè)趯?shí)驗(yàn)中對(duì)工作負(fù)載進(jìn)行了預(yù)先處理,即數(shù)據(jù)4 KB對(duì)齊.所有工作負(fù)載的工作集總大小在10 GB到20 GB之間;與此同時(shí),所有的工作負(fù)載具有很強(qiáng)的訪(fǎng)問(wèn)傾斜性和很高的訪(fǎng)問(wèn)局部性.例如在后3個(gè)工作負(fù)載中,大部分寫(xiě)請(qǐng)求集中在2%~4%的地址空間,而第1個(gè)工作負(fù)載中,大部分的寫(xiě)請(qǐng)求集中在10%的地址空間.各工作負(fù)載的統(tǒng)計(jì)數(shù)據(jù)如表1所示.

2) 實(shí)驗(yàn)環(huán)境.本文將HA-RAID陣列系統(tǒng)架構(gòu)在物理機(jī)器上加以實(shí)現(xiàn).實(shí)驗(yàn)硬件配置為:戴爾PowerEdge T620服務(wù)器 (配有4個(gè)2.40 GHz Intel Xeon CPU和8 GB物理內(nèi)存空間) ,1個(gè)Intel 530系列固態(tài)硬盤(pán)用作系統(tǒng)盤(pán),8個(gè)Intel 530系列固態(tài)硬盤(pán)用于構(gòu)建一個(gè)固態(tài)硬盤(pán)陣列,每個(gè)盤(pán)的容量120 GB,SATA3接口,MLC(multi-level commission)類(lèi)型.陣列設(shè)置數(shù)據(jù)塊chunk的大小為4 KB.使用FIO工具測(cè)試了固態(tài)硬盤(pán)的隨機(jī)讀寫(xiě)延時(shí) (50%讀,50%寫(xiě),I/O大小4 KB,隊(duì)列深度設(shè)置為1,單線(xiàn)程,并且繞過(guò)磁盤(pán)緩存),測(cè)試結(jié)果如表2所示.

Table 1 Statistical Data of Different Workloads表1 不同工作負(fù)載的統(tǒng)計(jì)數(shù)據(jù)

3) 冷熱區(qū)分算法參數(shù)設(shè)置.由于本文重點(diǎn)研究陣列系統(tǒng)的磨損均衡和性能提升,并不對(duì)冷熱數(shù)據(jù)區(qū)分算法做深入研究,留在以后再探究.因此在實(shí)驗(yàn)中使用計(jì)算時(shí)間開(kāi)銷(xiāo)最少的DAMS作為本文設(shè)計(jì)的陣列系統(tǒng)架構(gòu)中的冷熱數(shù)據(jù)區(qū)分算法.不同工作負(fù)載下DAMS算法的參數(shù)設(shè)置如表3所示.

Table 2 Performance Indicators of Intel 530 Series SSD

Fig. 8 Read/write ratio of each disk in RAID -0 and HA-RAID under hm_0圖8 負(fù)載hm_0下RAID -0與HA-RAID陣列中各盤(pán)上的讀寫(xiě)比例

Table 3 Parameter Setting of DAMS Algorithm Under

Note:Under various workloads, the parameters of DAMS algorithm are experimentally tested and the best value is taken.

5.2 系統(tǒng)請(qǐng)求平均響應(yīng)時(shí)間評(píng)估

實(shí)驗(yàn)中,通過(guò)記錄每個(gè)請(qǐng)求的響應(yīng)時(shí)間和系統(tǒng)處理請(qǐng)求的總個(gè)數(shù),計(jì)算得到每個(gè)請(qǐng)求的平均響應(yīng)時(shí)間,實(shí)驗(yàn)結(jié)果展示在圖7中.

Fig. 7 The average response time of I/O requests圖7 不同工作負(fù)載下系統(tǒng)請(qǐng)求的平均響應(yīng)時(shí)間

通過(guò)圖7可知,采用陣列系統(tǒng)架構(gòu)HA-RAID,相比于原始架構(gòu)RAID -0,部署在實(shí)際系統(tǒng)上時(shí),極大地減少了請(qǐng)求的平均響應(yīng)時(shí)間.實(shí)驗(yàn)結(jié)果驗(yàn)證了區(qū)分?jǐn)?shù)據(jù)冷熱的有效性,因?yàn)樵技軜?gòu)會(huì)因?yàn)槔錈釘?shù)據(jù)的混合存儲(chǔ)而導(dǎo)致熱點(diǎn)盤(pán)的出現(xiàn),從而不能發(fā)揮RAID陣列高并發(fā)的優(yōu)勢(shì),進(jìn)而會(huì)一定程度上延遲用戶(hù)的訪(fǎng)問(wèn)請(qǐng)求,造成整個(gè)陣列系統(tǒng)的I/O性能出現(xiàn)瓶頸.對(duì)比原始架構(gòu)RAID -0,本文設(shè)計(jì)的陣列系統(tǒng)架構(gòu)HA-RAID部署在系統(tǒng)上時(shí),對(duì)請(qǐng)求的平均響應(yīng)時(shí)間減少了12.01%~41.06%,有效提高固態(tài)硬盤(pán)陣列系統(tǒng)的I/O性能.

5.3 系統(tǒng)負(fù)載均衡評(píng)估

固態(tài)硬盤(pán)容錯(cuò)陣列系統(tǒng)的負(fù)載和磨損不均衡,都容易降低系統(tǒng)的可靠性,造成數(shù)據(jù)的遺失.因此,本文實(shí)驗(yàn)統(tǒng)計(jì)了各種工作負(fù)載下陣列系統(tǒng)中各個(gè)盤(pán)的負(fù)載和磨損情況,統(tǒng)計(jì)結(jié)果如圖8~11所示.

由圖8所示可知,工作負(fù)載為hm_0時(shí),對(duì)于原始架構(gòu)RAID -0,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都有較大差異,且波動(dòng)幅度較大;對(duì)于熱度感知架構(gòu)HA-RAID,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都差異不大,主要集中在0.1~0.15,且波動(dòng)幅度很小,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載均衡.

由圖9所示可知,工作負(fù)載為src2_0時(shí),對(duì)于原始架構(gòu)RAID -0,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都有較大差異,且波動(dòng)幅度較大;對(duì)于熱度感知架構(gòu)HA-RAID,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都差異不大,主要集中在0.1~0.15,且波動(dòng)幅度很小,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載均衡.

Fig. 9 Read/write ratio of each disk in RAID -0 and HA-RAID under src2_0圖9 負(fù)載src2_0下RAID -0與HA-RAID陣列中各盤(pán)上的讀寫(xiě)比例

Fig. 10 Read/write ratio of each disk in RAID -0 and HA-RAID under usr_0圖10 負(fù)載usr_0下RAID -0與HA-RAID陣列中各盤(pán)上的讀寫(xiě)比例

Fig. 11 Read/write ratio of each disk in RAID -0 and HA-RAID under stg_0圖11 負(fù)載stg_0下RAID -0與HA-RAID陣列中各盤(pán)上的讀寫(xiě)比例

由圖10所示可知,工作負(fù)載為usr_0時(shí),對(duì)于原始架構(gòu)RAID -0,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都有較大差異,且波動(dòng)幅度較大;對(duì)于熱度感知架構(gòu)HA-RAID,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都差異不大,主要集中在0.1~0.15,且波動(dòng)幅度很小,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載均衡.

由圖11所示可知,工作負(fù)載為stg_0時(shí),對(duì)于原始架構(gòu)RAID -0,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都有較大差異,且波動(dòng)幅度較大;對(duì)于熱度感知架構(gòu)HA-RAID,各盤(pán)上的讀寫(xiě)比例在每個(gè)時(shí)間點(diǎn)都差異不大,主要集中在0.1~0.15,且波動(dòng)幅度很小,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載均衡.

Fig. 12 HA-RAID architecture extended to RAID -5 array圖12 擴(kuò)展至RAID -5陣列上的HA-RAID系統(tǒng)架構(gòu)

6 HA-RAID擴(kuò)展至RAID -56

基于RAID -0設(shè)計(jì)的系統(tǒng)架構(gòu)HA-RAID 很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載均衡和磨損均衡,從而延長(zhǎng)整個(gè)陣列的使用壽命并提升I/O性能.但RAID -0陣列沒(méi)有引入任何冗余數(shù)據(jù),無(wú)法保證數(shù)據(jù)的可靠性.而數(shù)據(jù)可靠性保證在實(shí)際應(yīng)用中又非常重要,企業(yè)的核心數(shù)據(jù)一旦丟失,損失將是無(wú)法估量的.因此,我們將基于RAID -0設(shè)計(jì)的HA-RAID系統(tǒng)架構(gòu)擴(kuò)展至RAID -5陣列,主要設(shè)計(jì)思路如圖12所示.

對(duì)基于RAID -0的HA-RAID系統(tǒng)架構(gòu),將其擴(kuò)展至RAID -5陣列,需要做3個(gè)方面的修改:

1) RAID -5陣列需要對(duì)寫(xiě)入內(nèi)存中的數(shù)據(jù)以條帶形式組織,并使用與陣列盤(pán)上對(duì)應(yīng)的滑動(dòng)窗口將條帶劃分為熱區(qū)域和冷區(qū)域,條帶中的熱區(qū)域存放識(shí)別出的熱數(shù)據(jù),冷區(qū)域存放普通數(shù)據(jù).

2) 對(duì)于LBA讀請(qǐng)求,根據(jù)地址映射表得到其物理地址(盤(pán)號(hào)和條帶號(hào)),然后在底層盤(pán)上讀數(shù)據(jù).

3) 對(duì)于LBA寫(xiě)請(qǐng)求,在內(nèi)存以條帶的組織形式對(duì)其進(jìn)行緩存:①如果該LBA被識(shí)別為熱數(shù)據(jù),則將其存儲(chǔ)到條帶的熱區(qū)域(滑動(dòng)窗口內(nèi)); ②如果該LBA被識(shí)別為冷數(shù)據(jù),則將其存儲(chǔ)到條帶的冷區(qū)域(滑動(dòng)窗口外).當(dāng)一個(gè)條帶上數(shù)據(jù)存滿(mǎn),則計(jì)算產(chǎn)生該條帶的校驗(yàn)信息P,然后將條帶數(shù)據(jù)和校驗(yàn)數(shù)據(jù)以條帶形式追加寫(xiě)入陣列(校驗(yàn)數(shù)據(jù)以輪轉(zhuǎn)的方式存儲(chǔ)到普通盤(pán)上),并更新地址映射表中對(duì)應(yīng)的物理地址.

RAID -6陣列上的實(shí)現(xiàn)方法與RAID -5陣列類(lèi)似,只是增加了計(jì)算開(kāi)銷(xiāo)和額外校驗(yàn)數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)可靠性更高,這里不再贅述.

7 總 結(jié)

本文在RAID -0陣列中設(shè)計(jì)了一種基于冷熱數(shù)據(jù)分離存儲(chǔ)的固態(tài)硬盤(pán)陣列系統(tǒng)架構(gòu)HA-RAID,并結(jié)合滑動(dòng)窗口技術(shù)進(jìn)行優(yōu)化.相比原始RAID -0陣列架構(gòu),HA-RAID可以將熱數(shù)據(jù)相對(duì)均勻地存儲(chǔ)到各個(gè)盤(pán)上并減少12.01%~41.06%的平均響應(yīng)時(shí)間,很好地實(shí)現(xiàn)了陣列系統(tǒng)級(jí)的負(fù)載和磨損均衡及陣列系統(tǒng)的I/O性能提升.

猜你喜歡
扇區(qū)條帶固態(tài)
PCle 4.0平臺(tái)的性?xún)r(jià)比之選!WD_BLACK SN770固態(tài)硬盤(pán)
文本圖像條帶污染去除的0稀疏模型與算法
分階段調(diào)整增加扇區(qū)通行能力策略
水驅(qū)油藏高含水期耗水條帶表征指標(biāo)及分級(jí)方法
受災(zāi)區(qū)域衛(wèi)星遙感監(jiān)測(cè)的條帶分解方法研究
固態(tài)陶瓷氚增殖劑釋氚實(shí)驗(yàn)研究綜述
巧用廢舊條幅輔助“蹲踞式起跑”教學(xué)
基于復(fù)雜網(wǎng)絡(luò)理論的空域扇區(qū)網(wǎng)絡(luò)特性及抗毀性分析
Sn摻雜石榴石型Li7La3Zr2O12固態(tài)電解質(zhì)的制備
透明陶瓷在固態(tài)照明中的應(yīng)用進(jìn)展