午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng)的制作方法

文檔序號(hào):10724492閱讀:493來(lái)源:國(guó)知局
一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),其方法包括如下步驟:將磁盤(pán)陣列空間劃分成多個(gè)條帶組,通過(guò)地址映射表和條帶信息表對(duì)條帶的元數(shù)據(jù)進(jìn)行更新,通過(guò)寫(xiě)操作請(qǐng)求觸發(fā)前臺(tái)垃圾回收,或者在系統(tǒng)空閑時(shí)段啟動(dòng)后臺(tái)垃圾回收,進(jìn)行寫(xiě)緩存管理;通過(guò)將瓦記錄磁盤(pán)陣列與動(dòng)態(tài)可變長(zhǎng)的數(shù)據(jù)條帶相結(jié)合,消除瓦記錄寫(xiě)覆蓋造成的寫(xiě)放大問(wèn)題;實(shí)現(xiàn)對(duì)動(dòng)態(tài)條帶的元數(shù)據(jù)進(jìn)行維護(hù),對(duì)邏輯地址和物理地址進(jìn)行轉(zhuǎn)換以管理?xiàng)l帶信息,通過(guò)條帶組鏈表管理緩存,保證最近被訪問(wèn)或訪問(wèn)頻度高的數(shù)據(jù)存儲(chǔ)在緩存中而將訪問(wèn)頻率低的數(shù)據(jù)存儲(chǔ)在磁盤(pán)中,具有提高緩存命中率的效果。
【專(zhuān)利說(shuō)明】
一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于信息存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng)。
【背景技術(shù)】
[0002]磁盤(pán)與固態(tài)盤(pán)的混合存儲(chǔ)陣列使用高性能的固態(tài)盤(pán)存儲(chǔ)經(jīng)常被訪問(wèn)的數(shù)據(jù),使用低速的磁盤(pán)存儲(chǔ)絕大多數(shù)冷數(shù)據(jù),這為瓦記錄磁盤(pán)的廣泛應(yīng)用提供了良好的機(jī)會(huì)。大容量瓦記錄磁盤(pán)主要用于云數(shù)據(jù)中心和冷數(shù)據(jù)存儲(chǔ)。
[0003]RAID5(獨(dú)立冗余磁盤(pán)陣列,Redundant Arrays of Independent Disks)米用廉價(jià)的磁盤(pán)作為存儲(chǔ)介質(zhì),采用分條技術(shù)把數(shù)據(jù)和校驗(yàn)塊并行存儲(chǔ)在不同的磁盤(pán)上,既具有高性能和高可靠性,又具有低存儲(chǔ)成本的優(yōu)勢(shì);將瓦記錄磁盤(pán)與RAID5結(jié)合,可將兩者的優(yōu)勢(shì)發(fā)揮到最大;但是傳統(tǒng)的RAID5并沒(méi)有考慮到瓦記錄磁盤(pán)的讀寫(xiě)特性,傳統(tǒng)的RAID5技術(shù)用于瓦記錄磁盤(pán)有以下局限性:
[0004](I)無(wú)論是使用讀改寫(xiě)還是構(gòu)造寫(xiě),在計(jì)算新的校驗(yàn)信息之前,都必須先讀取舊數(shù)據(jù),引入了大量的磁盤(pán)讀寫(xiě)操作;
[0005](2)瓦記錄不能覆蓋寫(xiě)的特點(diǎn),極大的加劇了 RAID5的小寫(xiě)問(wèn)題;RAID5的小寫(xiě)引入額外的寫(xiě)操作,而瓦記錄磁盤(pán)不能進(jìn)行覆蓋寫(xiě),導(dǎo)致寫(xiě)放大的問(wèn)題;
[0006](3)傳統(tǒng)的RAID5以滿條帶的形式寫(xiě)入到磁盤(pán),給系統(tǒng)的可靠性增加了風(fēng)險(xiǎn)。

【發(fā)明內(nèi)容】

[0007]針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),其目的在于減少磁盤(pán)的讀寫(xiě)次數(shù)。
[0008]為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,具體包括如下步驟:
[0009](I)將磁盤(pán)陣列空間劃分成多個(gè)條帶組,一個(gè)條帶組由多個(gè)動(dòng)態(tài)生成的條帶構(gòu)成;其中,陣列中所有磁盤(pán)的同一個(gè)段劃分在一個(gè)條帶組內(nèi);條帶組內(nèi)的條帶可以存儲(chǔ)在條帶組內(nèi)的任意位置;
[0010](2)通過(guò)地址映射表和條帶信息表對(duì)條帶的元數(shù)據(jù)進(jìn)行更新;
[0011]其中,地址映射表(AMT,Adress Mapping Table)存儲(chǔ)條帶元數(shù)據(jù)的地址映射信息,條帶信息表(SIT,Stripe Informat1n Table)存儲(chǔ)條帶存儲(chǔ)信息;地址映射表用于將邏輯塊號(hào)轉(zhuǎn)化成物理塊號(hào),條帶信息表用于記錄陣列中存儲(chǔ)了哪些條帶;
[0012](3)通過(guò)寫(xiě)操作請(qǐng)求觸發(fā)前臺(tái)垃圾回收,或者在系統(tǒng)空閑時(shí)段啟動(dòng)后臺(tái)垃圾回收。
[0013]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其后臺(tái)垃圾回收包括如下子步驟:
[0014](I)選擇在磁盤(pán)上的待回收條帶組;
[0015](II)將上述待回收條帶組中的有效數(shù)據(jù)存儲(chǔ)到緩存中;
[0016](III)將緩存中與待回收條待組對(duì)應(yīng)的數(shù)據(jù)跟上述有效數(shù)據(jù)合并,獲得可用數(shù)據(jù);
[0017](IV)刪除磁盤(pán)上的待回收條帶組內(nèi)的數(shù)據(jù);并更新所述待回收條帶組的地址映射表和條帶信息表;
[0018](V)將上述可用數(shù)據(jù)按照滿條帶或者部分條帶的方式存儲(chǔ)到已清空的待回收條待組內(nèi)。
[0019]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,選擇待回收條帶組的方法包括:
[0020](a)將有效數(shù)據(jù)塊最少的條帶組作為待回收條帶組;可以獲得最多的空閑空間;
[0021]或(b)將被訪問(wèn)最頻繁的條帶組作為待回收條帶組;
[0022]或(C)將最近被訪問(wèn)的條帶組作為待回收條帶組。
[0023]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其前臺(tái)垃圾回收包括如下子步驟:
[0024](i)將磁盤(pán)上空閑空間不足的條帶組作為待回收條帶組;其中,空閑空間不足是指沒(méi)有足夠的空間存儲(chǔ)新寫(xiě)入的條帶;
[0025](ii)將待回收條帶組與該條帶組在緩存中對(duì)應(yīng)的條帶組數(shù)據(jù)進(jìn)行合并,獲得更新后的可用數(shù)據(jù);
[0026](iii)刪除磁盤(pán)上待回收條帶組內(nèi)的數(shù)據(jù),并更新該待回收條帶組對(duì)應(yīng)的地址映射表和條帶信息表;
[0027](iv)將上述可用數(shù)據(jù)按照滿條帶或者部分條帶的方式存儲(chǔ)到磁盤(pán)上已清空的待回收條待組內(nèi);
[0028]在往某個(gè)條帶組寫(xiě)入條帶,而該條帶組沒(méi)有足夠的空間容納擬寫(xiě)入的條帶時(shí)觸發(fā)前臺(tái)垃圾回收;因此前臺(tái)垃圾回收沒(méi)有選擇待回收條帶組的步驟;前臺(tái)垃圾回收需要一定的時(shí)間,而且不會(huì)被前臺(tái)讀寫(xiě)操作中斷,因此會(huì)導(dǎo)致前臺(tái)的讀寫(xiě)請(qǐng)求操作的延時(shí),影響系統(tǒng)的性能。
[0029]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其步驟(3)之后,還包括寫(xiě)緩存管理的步驟(4):
[0030](4)將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái),形成條帶組鏈表;并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;寫(xiě)入條帶組鏈表中的條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部;
[0031 ]當(dāng)最近被訪問(wèn)的條帶組鏈表已滿,而有新的條帶組欲寫(xiě)入條帶組鏈表時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目淘汰,存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表;
[0032]當(dāng)最不常訪問(wèn)的條帶組鏈表已滿,則將最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán)。
[0033]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其步驟(4)中,周期性的將條帶組鏈表的引用計(jì)數(shù)器的值設(shè)置為當(dāng)前值的一半;以防止過(guò)去時(shí)段內(nèi)經(jīng)常被訪問(wèn)而將來(lái)時(shí)段未被訪問(wèn)的條帶不能從最不常訪問(wèn)的條帶組鏈表中被替換出來(lái);
[0034]若某條帶組在過(guò)去一段時(shí)間內(nèi)經(jīng)常被訪問(wèn),那么引用計(jì)數(shù)器的值就會(huì)很大,因此,即使在將來(lái)的一段時(shí)間內(nèi)它沒(méi)有被訪問(wèn),它也不會(huì)被替換出最不常訪問(wèn)的條帶組鏈表,周期性的將引用計(jì)數(shù)器的值減半的方法,可以防止這種情況的發(fā)生。
[0035]優(yōu)選地,上述動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其步驟(4)包括如下子步驟:
[0036](4-1)將數(shù)據(jù)塊C存儲(chǔ)到條帶組G中,并判斷條帶組G是否在緩存中,若是,則進(jìn)入步驟(4-2);若否,則進(jìn)入步驟(4-3);
[0037](4-2)在緩存中為數(shù)據(jù)塊C分配存儲(chǔ)空間,并將數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表中;
[0038](4-3)在緩存中為條帶組G分配存儲(chǔ)空間;并將條帶組G插入到最近被訪問(wèn)的條帶組鏈表(SSG LRU List)的頭部,把數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表(Chunk LRU List)中,進(jìn)入步驟(4-4);
[0039](4-4)將數(shù)據(jù)塊C的最近訪問(wèn)標(biāo)志位設(shè)為I,并將引用計(jì)數(shù)器加I,并把條帶組G移到條帶組鏈表的頭部,進(jìn)入步驟(4-5);
[0040](4-5)判斷條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-6);
[0041](4-6)將最近被訪問(wèn)的條帶組鏈表尾部的條帶組移到最不常訪問(wèn)的條帶組鏈表的頭部,進(jìn)入步驟(4-7);
[0042](4-7)判斷最不常訪問(wèn)的條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-8);
[0043](4-8)把最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán),結(jié)束。
[0044]為實(shí)現(xiàn)本發(fā)明目的,按照本發(fā)明的另一個(gè)方面,提供了一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建系統(tǒng),包括:
[0045](I)第一模塊,用于將陣列空間分成條帶組;一個(gè)條帶組由多個(gè)動(dòng)態(tài)生成的條帶構(gòu)成,條帶可存儲(chǔ)在條帶組內(nèi)的任意位置;
[0046]由于基于段結(jié)構(gòu)的瓦記錄本身就把整個(gè)磁盤(pán)分成了段,在本發(fā)明的這種構(gòu)建系統(tǒng)中,將陣列中所有磁盤(pán)的同一個(gè)段組成一個(gè)條帶組;基于段結(jié)構(gòu)的瓦記錄中,條帶組與段具有相同的編號(hào);
[0047](2)第二模塊,用于條帶元數(shù)據(jù)的維護(hù);
[0048]由于條帶是動(dòng)態(tài)的,因此需要維護(hù)條帶的元數(shù)據(jù);條帶元數(shù)據(jù)包括AMT和SIT;通過(guò)存儲(chǔ)地址映射信息的AMT進(jìn)行地址轉(zhuǎn)換,獲得數(shù)據(jù)的存儲(chǔ)位置;通過(guò)SIT記錄磁盤(pán)中存儲(chǔ)的段,以及段中數(shù)據(jù)塊的有效性;
[0049](3)第三模塊,用于進(jìn)行動(dòng)態(tài)可變長(zhǎng)條帶中的垃圾回收;
[0050]動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列采用異地更新方式,新產(chǎn)生的條帶總是以追加的形式寫(xiě)到條帶組,不覆蓋原來(lái)的數(shù)據(jù);因此必須有足夠的空間來(lái)存儲(chǔ)新產(chǎn)生的條帶;
[0051]若當(dāng)前沒(méi)有足夠空間來(lái)容納新產(chǎn)生的條帶,則通過(guò)第三模塊進(jìn)行垃圾回收,包括前臺(tái)垃圾回收和后臺(tái)垃圾回收;
[0052]前臺(tái)垃圾回收被寫(xiě)操作觸發(fā),當(dāng)寫(xiě)入時(shí)空間不夠,被動(dòng)的進(jìn)行垃圾回收;后臺(tái)垃圾回收在系統(tǒng)空閑時(shí)觸發(fā),在預(yù)設(shè)的時(shí)間間隔內(nèi),若系統(tǒng)處于空閑狀態(tài),則觸發(fā)后臺(tái)垃圾回收;后臺(tái)垃圾回收總是在系統(tǒng)空閑的時(shí)候進(jìn)行,因此可以提高系統(tǒng)的性能;
[0053](4)第四模塊,用于寫(xiě)緩存管理;將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái),形成條帶組鏈表;
[0054]條帶組鏈表中的每個(gè)條目都有一個(gè)最近訪問(wèn)標(biāo)志位和一個(gè)引用計(jì)數(shù)器;最近訪問(wèn)標(biāo)志位用于指示該條目最近是否被訪問(wèn)過(guò),而引用計(jì)數(shù)器用于記錄條目被訪問(wèn)的次數(shù);
[0055]條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;最近被訪問(wèn)的條帶組鏈表中存儲(chǔ)著最近被訪問(wèn)的條帶,其中的條目按照LRU算法的順序排列;當(dāng)條帶組鏈表中的任意條目被訪問(wèn)時(shí),該條目都會(huì)被插入到最近被訪問(wèn)的條帶組鏈表的頭部,且將其最近訪問(wèn)標(biāo)志位成I,引用計(jì)數(shù)器加I;
[0056]當(dāng)最近被訪問(wèn)的條帶組鏈表滿后,而有新的條帶組欲寫(xiě)入時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目淘汰,存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表,并將被淘汰條目的最近訪問(wèn)標(biāo)志位置成O;
[0057]最不常訪問(wèn)的條帶組鏈表存儲(chǔ)最近未被訪問(wèn)條帶組,其中的條目以LFU算法的順序排列,即按照條帶組的引用計(jì)數(shù)排序;當(dāng)緩存的使用率達(dá)到閾值,將最不常訪問(wèn)的條帶組鏈表尾部的條帶組從緩存移到磁盤(pán)中;最不常訪問(wèn)的條帶組鏈表尾部存儲(chǔ)的條帶組是最近未被訪問(wèn)的、且訪問(wèn)次數(shù)最少的。
[0058]該模塊以段結(jié)構(gòu)的條帶組為單位對(duì)寫(xiě)緩存進(jìn)行管理;當(dāng)數(shù)據(jù)被替換出緩存,以條帶組的形式寫(xiě)回到磁盤(pán)中時(shí),多個(gè)地址相鄰的數(shù)據(jù)塊被一起寫(xiě)到磁盤(pán),可減少對(duì)磁盤(pán)的訪問(wèn)次數(shù),以條帶組為單位管理寫(xiě)緩存可以有效的利用數(shù)據(jù)的空間局部性。
[0059]總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
[0060](I)本發(fā)明提供的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),在現(xiàn)有的瓦記錄磁盤(pán)上加入動(dòng)態(tài)可變長(zhǎng)條帶,將現(xiàn)有的瓦記錄磁盤(pán)分成基于段結(jié)構(gòu)的瓦記錄,由此將更新的粒度控制在一個(gè)段組之內(nèi),以追加的方式為新數(shù)據(jù)塊構(gòu)造一個(gè)新的條帶,減少讀寫(xiě)次數(shù),由此消除原有瓦記錄磁盤(pán)中寫(xiě)覆蓋造成的寫(xiě)放大問(wèn)題;
[0061](2)本發(fā)明提供的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),將新數(shù)據(jù)存儲(chǔ)在磁盤(pán)控制器的緩存中,以便合并;將舊數(shù)據(jù)存儲(chǔ)在以段為結(jié)構(gòu)的瓦記錄磁盤(pán)上,以方便數(shù)據(jù)的更新;
[0062]通過(guò)地址映射表將邏輯塊號(hào)轉(zhuǎn)換成物理塊號(hào);通過(guò)條帶信息表記錄陣列中存儲(chǔ)了哪些條帶,以及條帶中的數(shù)據(jù)塊是否為有效,以方便垃圾回收,減少了磁盤(pán)讀寫(xiě)開(kāi)銷(xiāo),提高讀與性能;
[0063](3)本發(fā)明提供的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),緩存里面的條帶組可能來(lái)自磁盤(pán)上的幾個(gè)條帶組,是動(dòng)態(tài)可變的;垃圾回收時(shí),在緩存中將緩存的條帶組數(shù)據(jù)與其在磁盤(pán)上對(duì)應(yīng)的條帶組數(shù)據(jù)進(jìn)行合并,將合并獲得的有效數(shù)據(jù)寫(xiě)回到磁盤(pán)上選定的條帶組位置;該垃圾回收機(jī)制可以有效利用磁盤(pán)的空間,提供通信速度;并將垃圾回收分為由用戶數(shù)據(jù)的插入引起的前臺(tái)回收和在系統(tǒng)空閑時(shí)進(jìn)行的后臺(tái)回收兩種方式;前臺(tái)回收可以及時(shí)更新用戶的新數(shù)據(jù),后臺(tái)回收不占用系統(tǒng)的資源,減小系統(tǒng)的開(kāi)銷(xiāo);
[0064](4)本發(fā)明提供的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法及系統(tǒng),其寫(xiě)緩存管理的方法,將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái),形成條帶組鏈表;并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;寫(xiě)入條帶組鏈表中的條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部;由此將最近被訪問(wèn)的數(shù)據(jù)放在里面,將被訪問(wèn)頻率最低的數(shù)據(jù)淘汰出來(lái),保證緩存中總是保留著最熱的那部分?jǐn)?shù)據(jù),提高了緩存的命中率,減少了磁盤(pán)的讀寫(xiě)次數(shù)。
【附圖說(shuō)明】
[0065]圖1本發(fā)明實(shí)施例中動(dòng)態(tài)可變長(zhǎng)條帶磁盤(pán)陣列的數(shù)據(jù)組織示意圖;
[0066]圖2是本發(fā)明實(shí)施例中更新時(shí)構(gòu)造的虛擬條帶示意圖;
[0067]圖3是本發(fā)明實(shí)施例中寫(xiě)緩存管理的示意圖;
[0068]圖4是本發(fā)明實(shí)施例中寫(xiě)緩存管理方法的流程圖。
【具體實(shí)施方式】
[0069]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0070]本發(fā)明的整體思路在于,將動(dòng)態(tài)可變長(zhǎng)的條帶與瓦記錄磁盤(pán)技術(shù)相結(jié)合,在提高磁盤(pán)空間利用率的同時(shí)減少磁盤(pán)讀寫(xiě)次數(shù);通過(guò)在緩存中進(jìn)行條帶合并將數(shù)據(jù)重組,并將重復(fù)的數(shù)據(jù)刪除以避免寫(xiě)放大問(wèn)題;并通過(guò)動(dòng)態(tài)可變長(zhǎng)條帶瓦記錄磁盤(pán)陣列的緩存管理方法,根據(jù)數(shù)據(jù)的訪問(wèn)熱度對(duì)數(shù)據(jù)進(jìn)行淘汰,起到提高磁盤(pán)緩存的命中率,提高整體性能的作用。
[0071]實(shí)施例中提供的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,具體包括如下步驟:
[0072](I)將磁盤(pán)陣列空間劃分成多個(gè)條帶組,一個(gè)條帶組由多個(gè)動(dòng)態(tài)生成的條帶構(gòu)成;其中,陣列中所有磁盤(pán)的同一個(gè)段劃分在一個(gè)條帶組內(nèi);條帶組內(nèi)的條帶可以存儲(chǔ)在條帶組內(nèi)的任意位置;
[0073 ] (2)通過(guò)地址映射表和條帶信息表對(duì)條帶的元數(shù)據(jù)進(jìn)行更新;
[0074]其中,地址映射表存儲(chǔ)條帶元數(shù)據(jù)的地址映射信息,條帶信息表存儲(chǔ)條帶存儲(chǔ)信息;地址映射表用于將邏輯塊號(hào)轉(zhuǎn)化成物理塊號(hào),條帶信息表用于記錄陣列中存儲(chǔ)了哪些條帶;
[0075](3)通過(guò)寫(xiě)操作請(qǐng)求觸發(fā)前臺(tái)垃圾回收,或者在系統(tǒng)空閑時(shí)段啟動(dòng)后臺(tái)垃圾回收;
[0076](4)將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái),形成條帶組鏈表;并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;寫(xiě)入條帶組鏈表中的條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部;
[0077]當(dāng)最近被訪問(wèn)的條帶組鏈表已滿,而有新的條帶組欲寫(xiě)入條帶組鏈表時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目淘汰,存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表;
[0078]當(dāng)最不常訪問(wèn)的條帶組鏈表已滿,則將最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán)。
[0079]圖1所示,是本發(fā)明實(shí)施例中構(gòu)建的動(dòng)態(tài)可變長(zhǎng)條帶磁盤(pán)陣列的數(shù)據(jù)組織示意圖;圖中顯示了一個(gè)由5個(gè)磁盤(pán)組組成了磁盤(pán)陣列;在組SSGO中,數(shù)據(jù)D0-D19,與傳統(tǒng)的RAID5—樣分布在各個(gè)磁盤(pán)中,其中Di表示第i個(gè)數(shù)據(jù)塊,Pi表示第i個(gè)校驗(yàn)塊。數(shù)據(jù)塊DO,D1,D2,D3和檢驗(yàn)塊PO組成條帶O (Stripe O),數(shù)據(jù)塊D4,D5,D6,D7和檢驗(yàn)塊Pl組成條帶I (Stripe I),數(shù)據(jù)塊D,8,D9,D10,D11和檢驗(yàn)塊P2組成條帶2(Stripe 2),數(shù)據(jù)塊D12,D13,D14,D15和檢驗(yàn)塊P3組成條帶3(Stripe 3),數(shù)據(jù)塊D16,D17,D18,D19和檢驗(yàn)塊P4組成條帶4(Stripe 4)。
[0080]以圖1中帶組SSGl中數(shù)據(jù)的組織來(lái)說(shuō)明實(shí)施例所構(gòu)建的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列;初始時(shí),陣列中只存在數(shù)據(jù)塊D0-D7;用數(shù)據(jù)塊D0-D7構(gòu)造條帶O和條帶I;當(dāng)數(shù)據(jù)塊D2-D5被修改;若采用傳統(tǒng)的RAID5,那么控制器需要把舊數(shù)據(jù)D2-D5、P0和Pl讀出來(lái),然后與新數(shù)據(jù)塊D2’-D5’進(jìn)行計(jì)算,得到新的PO’和P1’,再把這些新的數(shù)據(jù)寫(xiě)回到原來(lái)的位置,這樣導(dǎo)致了很多的額外的磁盤(pán)訪問(wèn),降低了系統(tǒng)的性能。
[0081]而采用本發(fā)明所構(gòu)建的動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列,并不覆蓋原來(lái)的數(shù)據(jù),而是為新數(shù)據(jù)塊D2 ’-D5 ’構(gòu)造一個(gè)新的條帶,然后寫(xiě)到磁盤(pán);本方法中,沒(méi)有讀取任何舊數(shù)據(jù),因此極大地減少了磁盤(pán)的訪問(wèn)。
[0082 ]在新的條帶被寫(xiě)入到磁盤(pán)以后,動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列給I日數(shù)據(jù)做一個(gè)標(biāo)記,表示這個(gè)數(shù)據(jù)塊是過(guò)時(shí)的,不是最新的;但并簡(jiǎn)單的將舊數(shù)據(jù)刪除掉,因?yàn)榕f數(shù)據(jù)還要用來(lái)保護(hù)它們所在條帶的數(shù)據(jù)一致性和可靠性;譬如,當(dāng)磁盤(pán)0(Disk O)損壞,可以通過(guò)讀取D1、P1和舊數(shù)據(jù)D2、D3進(jìn)行異或運(yùn)算獲取數(shù)據(jù)塊D0;舊數(shù)據(jù)作為一種隱性的冗余信息,用來(lái)防止磁盤(pán)的失效。
[0083]圖2所示,是本發(fā)明實(shí)施例中更新時(shí)構(gòu)造的虛擬條帶示意圖;從圖中可以看出,重新構(gòu)造的條帶不一定來(lái)自于同一個(gè)條帶,它們只是邏輯上的條帶關(guān)系;本發(fā)明采用地址映射表來(lái)存儲(chǔ)這種邏輯地址到物理地址的關(guān)系;其有益效果在于不同條帶之間的更新合并避免了小寫(xiě)問(wèn)題,同時(shí)采用的是異地更新,避免了寫(xiě)覆蓋問(wèn)題;由于在瓦記錄磁盤(pán)中的寫(xiě)覆蓋會(huì)引起寫(xiě)放大的問(wèn)題;因此該方法通過(guò)避免寫(xiě)覆蓋達(dá)到避免寫(xiě)放大的目的。
[0084]圖3所示,是本發(fā)明實(shí)施例中寫(xiě)緩存管理方法的示意圖;以段結(jié)構(gòu)的條帶組為單位管理寫(xiě)緩存,以條帶組為單位管理寫(xiě)可以有效的利用數(shù)據(jù)的空間局部性;當(dāng)數(shù)據(jù)被替換出緩存以條帶組的形式寫(xiě)回到磁盤(pán)中時(shí),多個(gè)地址相鄰的數(shù)據(jù)塊會(huì)被一起寫(xiě)入到磁盤(pán)減少對(duì)磁盤(pán)的訪問(wèn)次數(shù)。
[0085]圖4所示,是本發(fā)明實(shí)施例中寫(xiě)緩存管理中的寫(xiě)流程示意圖,具體包括以下子步驟:
[0086](4-1)將數(shù)據(jù)塊C存儲(chǔ)到條帶組G中,并判斷條帶組G是否在緩存中,若是,則進(jìn)入步驟(4-2);若否,則進(jìn)入步驟(4-3);
[0087](4-2)在緩存中為數(shù)據(jù)塊C分配存儲(chǔ)空間,并將數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表中;
[0088](4-3)在緩存中為條帶組G分配存儲(chǔ)空間;并將條帶組G插入到最近被訪問(wèn)的條帶組鏈表(SSG LRU List)的頭部,把數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表(Chunk LRU List)中,進(jìn)入步驟(4-4);
[0089](4-4)將數(shù)據(jù)塊C的最近訪問(wèn)標(biāo)志位設(shè)為I,并將引用計(jì)數(shù)器加I,并把條帶組G移到條帶組鏈表的頭部,進(jìn)入步驟(4-5);
[0090](4-5)判斷條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-6);
[0091](4-6)將最近被訪問(wèn)的條帶組鏈表尾部的條帶組移到最不常訪問(wèn)的條帶組鏈表的頭部,進(jìn)入步驟(4-7);
[0092](4-7)判斷最不常訪問(wèn)的條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-8);
[0093](4-8)把最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán),結(jié)束。
[0094]通過(guò)將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái)形成條帶組鏈表;并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;寫(xiě)入條帶組鏈表中的條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部;
[0095]當(dāng)最近被訪問(wèn)的條帶組鏈表已滿,而有新的條帶組欲寫(xiě)入條帶組鏈表時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表;當(dāng)最不常訪問(wèn)的條帶組鏈表已滿,則將最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán);以條帶組的形式把數(shù)據(jù)寫(xiě)回到磁盤(pán),可以讓多個(gè)數(shù)據(jù)塊連續(xù)的被寫(xiě)到磁盤(pán)中,以有效的利用數(shù)據(jù)的空間局部性。
[0096]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,包括如下步驟: (1)將磁盤(pán)陣列劃分成多個(gè)條帶組;每個(gè)所述條帶組由多個(gè)動(dòng)態(tài)生成的條帶構(gòu)成,條帶存儲(chǔ)在條帶組的任意位置; (2)通過(guò)地址映射表和條帶信息表對(duì)條帶的元數(shù)據(jù)進(jìn)行更新; 所述地址映射表存儲(chǔ)條帶元數(shù)據(jù)的地址映射信息,用于將邏輯塊號(hào)轉(zhuǎn)化成物理塊號(hào);條帶信息表存儲(chǔ)條帶存儲(chǔ)信息,用于記錄陣列中存儲(chǔ)了哪些條帶; (3)通過(guò)寫(xiě)操作請(qǐng)求觸發(fā)前臺(tái)垃圾回收,或者在系統(tǒng)空閑時(shí)段啟動(dòng)后臺(tái)垃圾回收。2.如權(quán)利要求1所述的瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,后臺(tái)垃圾回收包括如下子步驟: (I)在磁盤(pán)上選擇待回收條帶組; (II)將所述待回收條帶組中的有效數(shù)據(jù)存儲(chǔ)到緩存中; (III)將緩存中與所述待回收條待組對(duì)應(yīng)的數(shù)據(jù)跟所述有效數(shù)據(jù)合并,獲得可用數(shù)據(jù); (IV)刪除磁盤(pán)上待回收條帶組內(nèi)的數(shù)據(jù),并更新所述待回收條帶組的地址映射表和條帶信息表; (V)將所述可用數(shù)據(jù)按照滿條帶或者部分條帶的方式存儲(chǔ)到磁盤(pán)上已清空的待回收條待組內(nèi)。3.如權(quán)利要求2所述瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,選擇待回收條帶組的方法為: (a)將有效數(shù)據(jù)塊最少的條帶組作為待回收條帶組; 或(b)將被訪問(wèn)最頻繁的條帶組作為待回收條帶組; 或(C)將最近被訪問(wèn)的條帶組作為待回收條帶組。4.如權(quán)利要求1所述瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,前臺(tái)垃圾回收包括如下子步驟: (i)將磁盤(pán)上空閑空間不足的條帶組作為待回收條帶組; (ii)將待回收條帶組與該條帶組在緩存中對(duì)應(yīng)的條帶組數(shù)據(jù)進(jìn)行合并,獲得更新后的可用數(shù)據(jù); (iii)刪除磁盤(pán)上待回收條帶組內(nèi)的數(shù)據(jù),并更新所述待回收條帶組對(duì)應(yīng)的地址映射表和條帶信息表; (iv)將所述可用數(shù)據(jù)按照滿條帶或者部分條帶的方式存儲(chǔ)到磁盤(pán)上已清空的待回收條待組內(nèi)。5.如權(quán)利要求1所述瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,所述步驟(3)之后,還包括寫(xiě)緩存管理的步驟(4): (4)將緩存中的數(shù)據(jù)以條帶組為單位鏈接起來(lái),形成條帶組鏈表;并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;寫(xiě)入條帶組鏈表中的條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部; 當(dāng)最近被訪問(wèn)的條帶組鏈表已滿,而有新的條帶組欲寫(xiě)入條帶組鏈表時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目淘汰,存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表; 當(dāng)最不常訪問(wèn)的條帶組鏈表已滿,則將最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán)。6.如權(quán)利要求5所述瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,所述步驟(4)包括如下子步驟: (4-1)將數(shù)據(jù)塊C存儲(chǔ)到條帶組G中,并判斷條帶組G是否在緩存中,若是,則進(jìn)入步驟(4-2);若否,則進(jìn)入步驟(4-3); (4-2)在緩存中為數(shù)據(jù)塊C分配存儲(chǔ)空間,并將數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表中; (4-3)在緩存中為條帶組G分配存儲(chǔ)空間;并將條帶組G插入到最近被訪問(wèn)的條帶組鏈表頭部,把數(shù)據(jù)塊C插入到條帶組G對(duì)應(yīng)的最不常訪問(wèn)的條帶組鏈表中,進(jìn)入步驟(4-4); (4-4)將數(shù)據(jù)塊C的最近訪問(wèn)標(biāo)志位設(shè)為I,將條帶組鏈表的引用計(jì)數(shù)器加I,并把條帶組G移到條帶組鏈表的頭部,進(jìn)入步驟(4-5); (4-5)判斷條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-6); (4-6)將最近被訪問(wèn)的條帶組鏈表尾部的條帶組移到最不常訪問(wèn)的條帶組鏈表的頭部,進(jìn)入步驟(4-7); (4-7)判斷最不常訪問(wèn)的條帶組鏈表是否為滿,若否,則結(jié)束;若是,則進(jìn)入步驟(4-8); (4-8)把最不常訪問(wèn)的條帶組鏈表尾部的條帶組存儲(chǔ)到磁盤(pán)。7.如權(quán)利要求6所述瓦記錄磁盤(pán)陣列構(gòu)建方法,其特征在于,在所述步驟(4)中,周期性的將條帶組鏈表的引用計(jì)數(shù)器的值設(shè)置為當(dāng)前值的一半;以防止過(guò)去時(shí)段內(nèi)經(jīng)常被訪問(wèn)而將來(lái)時(shí)段未被訪問(wèn)的條帶不能從最不常訪問(wèn)的條帶組鏈表中被替換出來(lái)。8.一種動(dòng)態(tài)可變長(zhǎng)條帶的瓦記錄磁盤(pán)陣列構(gòu)建系統(tǒng),其特征在于,包括: (1)第一模塊,用于將陣列空間分成條帶組;一個(gè)條帶組由多個(gè)動(dòng)態(tài)生成的條帶構(gòu)成,條帶可存儲(chǔ)在條帶組內(nèi)的任意位置; (2)第二模塊,用于條帶元數(shù)據(jù)的維護(hù); 條帶元數(shù)據(jù)包括地址映射表和條帶信息表;通過(guò)地址映射表進(jìn)行地址轉(zhuǎn)換,獲得數(shù)據(jù)的存儲(chǔ)位置;通過(guò)條帶信息表記錄磁盤(pán)中存儲(chǔ)的段,以及段中數(shù)據(jù)塊的有效性; (3)第三模塊,用于進(jìn)行動(dòng)態(tài)可變長(zhǎng)條帶中的垃圾回收; 若當(dāng)前空間不夠容納新產(chǎn)生的條帶,則通過(guò)第三模塊進(jìn)行垃圾回收; (4)第四模塊,用于寫(xiě)緩存管理; 將緩存中的數(shù)據(jù)以條帶組為單位鏈接形成條帶組鏈表;條帶組鏈表中的每個(gè)條目都有一個(gè)最近訪問(wèn)標(biāo)志位和一個(gè)引用計(jì)數(shù)器; 并將條帶組鏈表分成最近被訪問(wèn)的條帶組鏈表和最不常訪問(wèn)的條帶組鏈表兩段;最近被訪問(wèn)的條帶組鏈表中存儲(chǔ)最近被訪問(wèn)的條帶,當(dāng)條帶組鏈表中的任意條目被訪問(wèn)時(shí),該條目被插入到最近被訪問(wèn)的條帶組鏈表的頭部,且將其最近訪問(wèn)標(biāo)志位成I,引用計(jì)數(shù)器加I; 當(dāng)最近被訪問(wèn)的條帶組鏈表滿后,而有新的條帶組欲寫(xiě)入時(shí),則將最近被訪問(wèn)的條帶組鏈表尾部的條目淘汰,存儲(chǔ)到最不常訪問(wèn)的條帶組鏈表,并將被淘汰條目的最近訪問(wèn)標(biāo)志位置成O; 最不常訪問(wèn)的條帶組鏈表存儲(chǔ)最近未被訪問(wèn)條帶組,當(dāng)緩存使用率達(dá)到閾值,將最不常訪問(wèn)的條帶組鏈表尾部的條帶組從緩存移到磁盤(pán)中。
【文檔編號(hào)】G06F3/06GK106095342SQ201610425055
【公開(kāi)日】2016年11月9日
【申請(qǐng)日】2016年6月15日
【發(fā)明人】萬(wàn)繼光, 張鈺彪, 羅旦, 譚志虎, 謝長(zhǎng)生, 李大平, 瞿曉陽(yáng)
【申請(qǐng)人】華中科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1