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