專利名稱:一種raid5的寫io優(yōu)化處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體涉及一種RAID5的寫IO優(yōu)化處理方法。
背景技術(shù):
磁盤陣列 RAID (Redundant Access Independent Disks,獨(dú)立冗余磁盤陣列)技術(shù)已經(jīng)作為一種成熟的技術(shù)廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)中。RAID技術(shù)具有從RAID O到6七種基本的RAID級(jí)別,不同RAID級(jí)別代表著不同的存儲(chǔ)性能、數(shù)據(jù)安全性和存儲(chǔ)成本。RAID包含N+P個(gè)存儲(chǔ)數(shù)據(jù)的硬盤,它以條帶為基礎(chǔ),在把文件數(shù)據(jù)分塊后寫進(jìn)一個(gè)數(shù)據(jù)盤的同時(shí),對(duì)其它數(shù)據(jù)盤內(nèi)與該數(shù)據(jù)塊相同盤內(nèi)位置的所有數(shù)據(jù)塊計(jì)算出它們的奇偶校驗(yàn)值(異或操作),最終形成一個(gè)由奇偶校驗(yàn)值組成的信息塊(校驗(yàn)塊),并將其寫入對(duì)應(yīng)位置的硬盤,這被稱為數(shù)據(jù)保護(hù)。它的好處是提供了容錯(cuò)能力,即這N+P個(gè)磁盤中任何一個(gè)或多個(gè)(小于P)出現(xiàn)故障,都不會(huì)造成丟失數(shù)據(jù)的問題。因?yàn)槠媾夹r?yàn)的對(duì)稱性,可以用剩下的N個(gè)磁盤的內(nèi)容,計(jì)算出存放在有故障磁盤中的正確的數(shù)據(jù)內(nèi)容,盡管這一計(jì)算比較費(fèi)時(shí)間。其中RAID4中校驗(yàn)數(shù)據(jù)存放在一個(gè)固定的硬盤上,這個(gè)硬盤成為整個(gè)RAID4系統(tǒng)的瓶頸。RAID5為解決這個(gè)瓶頸,將校驗(yàn)信息均勻分散到系統(tǒng)中所有的硬盤中,而RAID6則存放兩份校驗(yàn)數(shù)據(jù),從而可以容忍RAID系統(tǒng)中同時(shí)有兩塊磁盤失效。RAID系統(tǒng)提升安全性是以犧牲性能為代價(jià)的。在一個(gè)典型的RAID5系統(tǒng)中,如圖1所示,如果要修改Al的數(shù)據(jù),新數(shù)據(jù)為Al ',則需要將舊數(shù)據(jù)Al 101和舊校驗(yàn)P(A) 102讀出來,并用它們計(jì)算出A0+A2+A3的校驗(yàn)和P(A023) (X0R校驗(yàn)是對(duì)稱的),然后用P(A023)與Al'計(jì)算新校驗(yàn)P(A)丨,最后將Al'寫入101,P㈧丨寫入102。由此可知一個(gè)寫操作會(huì)衍生出兩次讀操作與兩次寫操作(這稱作寫放大效應(yīng)),這極大的降低了系統(tǒng)的有效性能。以此類推,RAID6比RAID5有更高的安全性,但有效性能更低。對(duì)于傳統(tǒng)的磁盤,IO操作的地址如果是隨機(jī)的,則其有效性能會(huì)降低上百倍。中國(guó)專利CN101566924A《一種磁盤陣列的數(shù)據(jù)讀寫方法》,通過在內(nèi)存中創(chuàng)建一個(gè)磁盤條帶狀態(tài)位圖記錄數(shù)據(jù)塊的寫操作頻度,對(duì)于寫操作頻率高的磁盤條帶,延遲更新檢驗(yàn)塊,以達(dá)到加快磁盤陣列讀寫處理效率的目的。中國(guó)專利CN101702113A《寫操作方法和裝置》,通過在內(nèi)存中建立一個(gè)寫操作請(qǐng)求列表,緩存寫操作請(qǐng)求,如果出現(xiàn)一個(gè)條帶上至少兩個(gè)寫操作請(qǐng)求時(shí)并行處理,以減少寫放大效應(yīng)。中國(guó)專利CN101526886《一種獨(dú)立磁盤冗余陣列的數(shù)據(jù)操作方法及裝置》,根據(jù)寫入數(shù)據(jù)的塊大小動(dòng)態(tài)調(diào)整條帶大小,以提高RAID的數(shù)據(jù)讀寫性能。中國(guó)專利CN102184079《一種RAID5級(jí)別磁盤陣列的寫性能優(yōu)化方法》,通過暫停校驗(yàn)位更新的方法為RAID5磁盤陣列提升寫負(fù)載請(qǐng)求聚發(fā)時(shí)系統(tǒng)的性能。中國(guó)專利CN102270102《一種RAID6磁盤陣列寫性能的優(yōu)化方法》,在RAID6磁盤陣列結(jié)構(gòu)外設(shè)置日志盤,用于記錄RAID6磁盤陣列中的數(shù)據(jù)塊對(duì)應(yīng)的日志記錄,針對(duì)寫請(qǐng)求根據(jù)條帶中被更新數(shù)據(jù)塊的頻度選擇寫入方式(讀改寫和重構(gòu)寫),以達(dá)到優(yōu)化寫性能的目的。文章《基于磁盤異或引擎的RAID5小寫性能優(yōu)化》,利用部分SCSI磁盤及光纖磁盤實(shí)現(xiàn)的異或引擎,新數(shù)據(jù)和舊數(shù)據(jù)的異或計(jì)算在磁盤中實(shí)現(xiàn),主機(jī)完成寫入操作,從而達(dá)到RAID5的小寫優(yōu)化目的。又有美國(guó)專利US6704837 B2《METHOD AND APPARATUS FOR INCREASING RAIDWRITE PERFORMANCE BY MAINTAINING A FULL TRACK WRITE COUNTER》,提出針對(duì)寫操作給每個(gè)磁道維護(hù)一個(gè)條帶寫計(jì)數(shù)器,分析寫請(qǐng)求的最后操作磁道的計(jì)數(shù)器值,判斷寫入數(shù)據(jù)是否為整個(gè)條帶,如果是則利用緩存中的條帶數(shù)據(jù)計(jì)算出新校驗(yàn),如果不是則按照讀舊校驗(yàn),讀舊數(shù)據(jù),計(jì)算新校驗(yàn),寫新數(shù)據(jù)的傳統(tǒng)方法進(jìn)行。該美國(guó)專利提供的方法通過減少在計(jì)算校驗(yàn)塊時(shí)系統(tǒng)讀舊數(shù)據(jù)、舊校驗(yàn)的次數(shù),在一定程度上減少了系統(tǒng)開銷,但當(dāng)寫操作的數(shù)據(jù)不是一個(gè)條帶時(shí),寫操作所引起的寫放大效應(yīng)沒有改變。以上專利可以看出,已有工作是通過不同的方法,如延遲寫數(shù)據(jù)、動(dòng)態(tài)調(diào)整條帶大小等方法來優(yōu)化寫性能,雖然對(duì)寫性能有一定的優(yōu)化,但都沒有從根本上解決RAID容錯(cuò)算法寫操作所引起的寫放大效應(yīng),并且存在數(shù)據(jù)無(wú)法恢復(fù)的風(fēng)險(xiǎn),如系統(tǒng)突然掉電后延遲寫數(shù)據(jù)丟失等。而動(dòng)態(tài)調(diào)整條帶大小、增加日志盤等方法,則需要額外的系統(tǒng)開銷,增加了系統(tǒng)負(fù)擔(dān)??梢姡F(xiàn)有技術(shù)還存在缺陷,有待改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的提出一種RAID5的寫IO優(yōu)化處理方法,采用一種優(yōu)化了的寫操作時(shí)數(shù)據(jù)塊的地址映射方法,RAID控制器為數(shù)據(jù)塊建立地址映射表,主機(jī)LBA地址不再固定的對(duì)應(yīng)到硬盤上,而是將主機(jī)的LBA地址按照特殊算法重新排列,從而將隨機(jī)地址的寫操作轉(zhuǎn)化成順序地址的寫操作,達(dá)到寫數(shù)據(jù)塊時(shí)無(wú)需讀出原數(shù)據(jù)塊和原校驗(yàn)塊,通過該方法大幅減少寫數(shù)據(jù)時(shí)校驗(yàn)盤的IO操作數(shù),有效消除校驗(yàn)盤的寫放大效應(yīng),解決現(xiàn)有RAID5級(jí)別磁盤陣列寫性能不高的問題,優(yōu)化磁盤陣列有效性能。本發(fā)明一種RAID5的寫IO優(yōu)化處理方法,包括如下步驟
1),存儲(chǔ)系統(tǒng)構(gòu)建;
2),數(shù)據(jù)讀寫操作;
3),失效數(shù)據(jù)塊回收.
所述的RAID系統(tǒng)構(gòu)建
(1.1)提供RAID系統(tǒng)
所述的RAID系統(tǒng)包括RAID控制器、存儲(chǔ)介質(zhì)陣列;
所述的存儲(chǔ)介質(zhì)陣列可以為磁盤列、固態(tài)盤列或閃存列等;
所述的RAID控制器,包括有地址 映射模塊,是用來存放地址映射表的邏輯功能與器件,可以是DRAM或固態(tài)盤等,映射表保存每一個(gè)LBA地址和PBA地址的映射信息。(1. 2)地址映射表主要包含以下字段信息1.“邏輯地址”字段(LBA地址),記錄數(shù)據(jù)塊的邏輯地址;
I1.“物理地址”字段(PBA地址),記錄數(shù)據(jù)塊的物理地址;
II1.“有效數(shù)據(jù)”字段,該字段包含三個(gè)狀態(tài),“有效”狀態(tài)表示對(duì)應(yīng)物理地址所存放的數(shù)據(jù)塊為最新數(shù)據(jù);“無(wú)效”狀態(tài)表示該物理地址數(shù)據(jù)塊已失效,可回收;“空閑”狀態(tài)表示該物理地址空間已回收;
IV.“校驗(yàn)塊”字段,記錄該數(shù)據(jù)塊是否為RAID5磁盤陣列中的校驗(yàn)值; V.“校驗(yàn)塊保護(hù)”字段,記錄該校驗(yàn)值保護(hù)的數(shù)據(jù)塊數(shù)是否小于一個(gè)條帶的數(shù)據(jù)塊,該字段主要用于保存當(dāng)磁盤陣列發(fā)生掉電時(shí),該條帶是否正常完成寫入操作;
(1. 3)地址映射表保存每一個(gè)LBA地址和PBA地址的映射信息,因此在存儲(chǔ)系統(tǒng)使用之前,需要對(duì)映射表進(jìn)行初始化,初始化時(shí),將“物理地址”、“校驗(yàn)塊”字段等設(shè)置為系統(tǒng)配置的初始值,其余字段設(shè)為有效。(2)讀寫IO操作的處理
該存儲(chǔ)系統(tǒng)同一般RAID5磁盤陣列相同,每一條帶的校驗(yàn)值均勻分布在每個(gè)硬盤或存儲(chǔ)介質(zhì)上。本發(fā)明的讀IO操作流程較簡(jiǎn)單,只需在地址映射表中查找LBA地址對(duì)應(yīng)的映射條目,獲取LBA地址對(duì)應(yīng)的PBA地址信息,然后向?qū)?yīng)的PBA地址的硬盤讀取數(shù)據(jù)。在處理寫IO操作上,RAID控制器為數(shù)據(jù)塊建立地址映射表并將主機(jī)的邏輯地址按照特殊方法重新排列,將隨機(jī)地址的寫操作轉(zhuǎn)換成順序地址的寫操作,無(wú)需讀取原數(shù)據(jù)塊和原校驗(yàn)塊,且無(wú)需反向計(jì)算校驗(yàn)信息。其主要步驟如下
(2.1)當(dāng)主機(jī)發(fā)送任意地址的數(shù)據(jù)塊寫請(qǐng)求時(shí),系統(tǒng)將該數(shù)據(jù)塊存入緩存,緩存以條帶為單位,包含N個(gè)數(shù)據(jù)塊和I個(gè)校驗(yàn)塊;同時(shí)將該數(shù)據(jù)塊與緩存中的校驗(yàn)值計(jì)算新校驗(yàn)并覆蓋原校驗(yàn)值進(jìn)行緩存。(2. 2)查找該數(shù)據(jù)塊的LBA地址在地址映射表中是否有相應(yīng)記錄,如果有對(duì)應(yīng)記錄,轉(zhuǎn)步驟(2. 3),否則轉(zhuǎn)(2.4);
(2. 3)說明該寫IO為改寫操作,在該數(shù)據(jù)塊在地址映射表中的對(duì)應(yīng)記錄中,將“有效數(shù)據(jù)”字段均標(biāo)識(shí)為無(wú)效。(2. 4)根據(jù)RAID管理模塊維護(hù)的地址映射表寫指針變量指向的記錄,得到該數(shù)據(jù)塊將寫入的新的PBA地址,將該數(shù)據(jù)塊的LBA地址寫入“邏輯地址”字段,并將該數(shù)據(jù)塊寫入物理地址對(duì)應(yīng)的硬盤及修改新的PBA地址對(duì)應(yīng)的“有效數(shù)據(jù)”設(shè)置為有效。(2.5)判斷寫指針變量是否對(duì)應(yīng)這一條帶的尾端,如果是,轉(zhuǎn)步驟(2. 6),否則轉(zhuǎn)步驟(2. 7);
(2. 6)根據(jù)校驗(yàn)塊地址變量的值,發(fā)送校驗(yàn)塊寫命令到相應(yīng)物理地址的硬盤,并將地址映射表寫指針變量順序遞增,且將緩存中校驗(yàn)值設(shè)置為O ;
(2. 7)判斷當(dāng)前地址映射表寫指針是否指向該條帶的校驗(yàn)塊應(yīng)存放的物理地址記錄,如果是,轉(zhuǎn)步驟(2.9);
(2.8)寫指針變量指向下一個(gè)PBA地址,本次寫操作結(jié)束;
(2. 9)將當(dāng)前PBA地址緩存至校驗(yàn)塊地址變量,并將地址映射表寫指針變量順序遞增,完成后,本次寫操作結(jié)束。(3)失效數(shù)據(jù)塊回收
地址映射表的記錄為PBA地址連續(xù)的數(shù)據(jù)塊,為保證存儲(chǔ)系統(tǒng)中總有一定量的空閑物理空間,RAID控制器定期進(jìn)行失效數(shù)據(jù)塊回收(Garbage Collection :GC),所謂回收,即在映射表中修改PBA地址對(duì)應(yīng)的信息即可,RAID管理模塊維護(hù)一個(gè)“地址回收”指針(GC指針),該指針用于指向正在進(jìn)行地址回收操作的地址映射表記錄,其在地址映射表的頭尾之間循環(huán)。其處理流程如下
(3.1)判斷系統(tǒng)的空閑物理空間百分比是否在設(shè)定的閥值內(nèi),如果是,則系統(tǒng)當(dāng)前不進(jìn)行地址回收操作,否則轉(zhuǎn)步驟(3. 2)。地址回收閥值可以根據(jù)系統(tǒng)的應(yīng)用需求在O. 2^0. 8之間進(jìn)行選取。(3.2)判斷系統(tǒng)是否第一次進(jìn)行地址回收操作,如果是,轉(zhuǎn)步驟(3. 3),否則轉(zhuǎn)步驟(3. 4);
(3. 3)初始化地址回收指針,將指針指向地址映射表頭。(3. 4)檢查地址映射表的“有效數(shù)據(jù)”字段,判斷如果為無(wú)效數(shù)據(jù),則將該字段改寫為空閑狀態(tài),并轉(zhuǎn)步驟(3.6)。否則轉(zhuǎn)步驟(3.5);
(3. 5)當(dāng)前地址映射表記錄為有效數(shù)據(jù),則調(diào)用寫IO操作步驟(2),將該數(shù)據(jù)塊作為新數(shù)據(jù)寫入當(dāng)前PBA地址,并將該記錄的“有效數(shù)據(jù)”字段設(shè)置為空閑狀態(tài)。(3. 6)地址回收指針指向下一條地址映射表記錄,判斷是否為表尾,如果是,轉(zhuǎn)步驟(3. 3),否則轉(zhuǎn)步驟(3. 2)。本發(fā)明一種RAID5的寫IO優(yōu)化處理方法的優(yōu)點(diǎn)可以有效降低RAID級(jí)別磁盤陣列的寫放大效應(yīng)。傳統(tǒng)的磁盤,順序?qū)懶阅苓h(yuǎn)遠(yuǎn)大于隨機(jī)寫性能,本發(fā)明提供的地址映射方法將隨機(jī)寫操作轉(zhuǎn)化成順序?qū)懖僮鳎行У陌l(fā)揮了磁盤的寫性能,降低了計(jì)算校驗(yàn)所需的IO操作,顯著提高了 RAID系統(tǒng)的響應(yīng)能力,同時(shí)降低了系統(tǒng)功耗。同時(shí),本發(fā)明應(yīng)用到固態(tài)存儲(chǔ)系統(tǒng)中,RAID控制器實(shí)現(xiàn)了地址映射表等相關(guān)功能,使得固態(tài)盤的控制器設(shè)計(jì)得到簡(jiǎn)化。最后,地址映射模塊可以靈活的選擇校驗(yàn)塊部署的位置和數(shù)量,因此本發(fā)明不限于RAID5級(jí)別的磁盤陣列的應(yīng)用,可以推廣到RAID4、RAID6級(jí)別的實(shí)現(xiàn)。
圖1為現(xiàn)有RAID5系統(tǒng)的拓?fù)浣Y(jié)構(gòu)示意 圖2為本發(fā)明系統(tǒng)的架構(gòu)示意 圖3為本發(fā)明所提供地址映射模塊工作示意 圖4為本發(fā)明所提供系統(tǒng)中的讀操作流程 圖5為本發(fā)明所提供系統(tǒng)中的寫操作地址映射示意 圖6為本發(fā)明所提供系統(tǒng)中的寫操作流程 圖7為本發(fā)明所提供系統(tǒng)中的地址回收流程圖。
具體實(shí)施例方式下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,所描述的實(shí)施例是本發(fā)明一部分實(shí)例,而不是全部的實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明提供RAID系統(tǒng)如圖2所示,包括RAID控制器、存儲(chǔ)介質(zhì)陣列等,存儲(chǔ)介質(zhì)陣列可以為磁盤列、固態(tài)盤列或閃存列等。RAID控制器的地址映射模塊負(fù)責(zé)LBA地址與PBA地址的映射,為數(shù)據(jù)塊建立地址映射表。地址映射表保存每一個(gè)LBA地址和PBA地址數(shù)據(jù)塊的相關(guān)信息,主要記錄了該數(shù)據(jù)塊對(duì)應(yīng)的邏輯地址、物理地址,有效數(shù)據(jù)、校驗(yàn)塊、校驗(yàn)塊保護(hù)等狀態(tài)信息。如圖3所示,RAID控制器的映射表模塊負(fù)責(zé)LBA地址與PBA地址的映射。在PBA地址空間中, 總是為寫操作保留一定的空間311,寫操作總是寫入到空閑的空間311中,當(dāng)前正在寫入的條帶為310,當(dāng)前條帶310使用完后,順序切換到下一個(gè)空閑條帶。步驟一初始化地址映射表
在存儲(chǔ)系統(tǒng)使用之前,需要對(duì)映射表進(jìn)行初始化。RAID系統(tǒng)使用之前,地址映射模塊對(duì)地址映射表進(jìn)行初始化,將“物理地址”、“校驗(yàn)塊”字段等設(shè)置為系統(tǒng)配置的初始值,其余字段設(shè)為有效。步驟二 RAID系統(tǒng)的讀寫操作
本發(fā)明的讀IO操作流程較簡(jiǎn)單,只需在地址映射表中查找LBA地址對(duì)應(yīng)的映射條目,獲取LBA地址對(duì)應(yīng)的PBA地址信息,然后向?qū)?yīng)的PBA地址的硬盤讀取數(shù)據(jù)。如圖4所示,步驟401,RAID控制器收到來自主機(jī)端的讀請(qǐng)求,并響應(yīng);步驟402,查找地址映射表,找到LBA對(duì)應(yīng)的PBA地址;步驟403,發(fā)送PBA讀命令到硬盤。步驟404,返回?cái)?shù)據(jù)到主機(jī)端。步驟405,讀操作結(jié)束。本發(fā)明的寫操作比較復(fù)雜,因?yàn)橐獙㈦S機(jī)的寫操作映射為連續(xù)的寫操作,需要將所有的寫操作映射到新的連續(xù)空間中去,如圖5所示為一個(gè)N+1 RAID5系統(tǒng)中,此處N為4僅為示意,即每4個(gè)數(shù)據(jù)塊對(duì)應(yīng)一個(gè)校驗(yàn)塊,校驗(yàn)塊均勻分布在5塊硬盤中。當(dāng)主機(jī)端發(fā)送任意地址的寫請(qǐng)求時(shí),映射表模塊總是將其映射到連續(xù)的物理地址上。具體步驟如下,例如主機(jī)發(fā)送LBAl地址寫請(qǐng)求501,系統(tǒng)將該數(shù)據(jù)塊存入緩存并計(jì)算新校驗(yàn)值,RAID管理模塊根據(jù)LBAl地址在映射表中查找對(duì)應(yīng)記錄條目,將這些記錄的“有效數(shù)據(jù)”字段設(shè)為無(wú)效,并根據(jù)地址映射模塊寫指針變量將LBAl地址映射到PBA14地址,更新PBA14的地址映射表?xiàng)l目并發(fā)送寫命令505將數(shù)據(jù)塊寫入PBA14地址對(duì)應(yīng)的硬盤中,寫指針增I指向下一條地址映射表記錄。按照上述步驟,依次處理LBA6地址寫請(qǐng)求502、LBA8地址寫請(qǐng)求503、LBAf地址寫請(qǐng)求504,分別映射到506、507、508,可以看出,被映射后的寫操作在物理地址上是連續(xù)的。在RAID控制器中,緩存模塊用于緩存最近寫入的數(shù)據(jù)和校驗(yàn)信息,在上述示例中,當(dāng)501數(shù)據(jù)到達(dá)后,被緩存模塊緩存,502數(shù)據(jù)到達(dá)后,將501數(shù)據(jù)與502數(shù)據(jù)計(jì)算校驗(yàn)并緩存,503數(shù)據(jù)到達(dá)后,與緩存的校驗(yàn)繼續(xù)計(jì)算校驗(yàn),并緩存,504數(shù)據(jù)到達(dá)后,與緩存的校驗(yàn)繼續(xù)計(jì)算校驗(yàn),并緩存,在該示例系統(tǒng)中N為4,因此每4個(gè)數(shù)據(jù)塊到達(dá)后,將其對(duì)應(yīng)的校驗(yàn)塊寫入物理地址PA5,緩存只需保存最近條帶的數(shù)據(jù)和校驗(yàn)信息。寫操作步驟流程如圖6所示。步驟三失效數(shù)據(jù)塊回收操作
從以上的寫過程可以看到,對(duì)同一個(gè)LBA地址的多次寫操作可能占用多個(gè)PBA地址,這樣會(huì)造成物理空間的重復(fù)使用。為保證系統(tǒng)中總有一定量的空閑物理空間供寫操作使用,RAID控制器根據(jù)設(shè)定值會(huì)定期進(jìn)行地址回收操作。地址回收即順序掃描地址映射表,將有效數(shù)據(jù)讀出來并作為新數(shù)據(jù)調(diào)用寫操作流程,無(wú)效數(shù)據(jù)對(duì)應(yīng)的PBA地址直接回收,即將“有效數(shù)據(jù)”設(shè)為空閑。這樣后面的寫操作,可以從這些空閑的PBA地址中分配地址空間。在實(shí)際實(shí)現(xiàn)過程中,為防止回收操作影響正常的寫操作,通常預(yù)留一部分物理空間專門給地址回收使用。可以看出,回收過程中,對(duì)硬盤的讀寫操作也都是順序地址的。對(duì)于硬盤來說,順序讀寫的有效性能可以達(dá)到隨機(jī)讀寫性能的100倍以上。地址回收操作流程如圖7所示。
權(quán)利要求
1.種RAID5的寫IO優(yōu)化處理方法,其特征在于包括如下步驟1)存儲(chǔ)系統(tǒng)構(gòu)建;2) 數(shù)據(jù)讀寫操作;3)失效數(shù)據(jù)塊回收。
2.如權(quán)利要求1所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于所述的RAID 系統(tǒng)構(gòu)建包括(1.1)提供RAID系統(tǒng)(1. 2)地址映射表主要包含字段信息(1. 3)地址映射表保存每一個(gè)LBA地址和PBA地址的映射信息,因此在存儲(chǔ)系統(tǒng)使用之前,需要對(duì)映射表進(jìn)行初始化,初始化時(shí),將“物理地址”、“校驗(yàn)塊”字段等設(shè)置為系統(tǒng)配置的初始值,其余字段設(shè)為有效。
3.如權(quán)利要求1所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于所述寫IO 操作的處理,包括(2.1)當(dāng)主機(jī)發(fā)送任意地址的數(shù)據(jù)塊寫請(qǐng)求時(shí),系統(tǒng)將該數(shù)據(jù)塊存入緩存,緩存以條帶為單位,包含N個(gè)數(shù)據(jù)塊和I個(gè)校驗(yàn)塊;同時(shí)將該數(shù)據(jù)塊與緩存中的校驗(yàn)值計(jì)算新校驗(yàn)并覆蓋原校驗(yàn)值進(jìn)行緩存;(2. 2)查找該數(shù)據(jù)塊的LBA地址在地址映射表中是否有相應(yīng)記錄,如果有對(duì)應(yīng)記錄,轉(zhuǎn)步驟(2. 3),否則轉(zhuǎn)(2.4) ; (2. 3)說明該寫IO為改寫操作,在該數(shù)據(jù)塊在地址映射表的對(duì)應(yīng)記錄中,將“有效數(shù)據(jù)”字段均標(biāo)識(shí)為無(wú)效;(2. 4)根據(jù) RAID管理模塊維護(hù)的地址映射表寫指針變量指向的記錄,得到該數(shù)據(jù)塊將寫入的新的PBA 地址,將該數(shù)據(jù)塊的LBA地址寫入“邏輯地址”字段,并將該數(shù)據(jù)塊寫入物理地址對(duì)應(yīng)的硬盤及修改新的PBA地址對(duì)應(yīng)的“有效數(shù)據(jù)”設(shè)置為有效;(2. 5)判斷寫指針變量是否對(duì)應(yīng)這一條帶的尾端,如果是,轉(zhuǎn)步驟(2. 6),否則轉(zhuǎn)步驟(2. 7) ; (2. 6)根據(jù)校驗(yàn)塊地址變量的值, 發(fā)送校驗(yàn)塊寫命令到相應(yīng)物理地址的硬盤,并將地址映射表寫指針變量順序遞增,且將緩存中校驗(yàn)值設(shè)置為O ; (2. 7)判斷當(dāng)前地址映射表寫指針是否指向該條帶的校驗(yàn)塊應(yīng)存放的物理地址記錄,如果是,轉(zhuǎn)步驟(2.9) ; (2. 8)地址映射表寫指針變量順序遞增指向下一個(gè)PBA地址,本次寫操作結(jié)束;(2. 9)將當(dāng)前PBA地址緩存至校驗(yàn)塊地址變量,并將地址映射表寫指針變量順序遞增,完成后,本次寫操作結(jié)束。
4.如權(quán)利要求1所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于所述的失效數(shù)據(jù)塊回收,包括(3.1)判斷系統(tǒng)的空閑物理空間百分比是否在設(shè)定的閥值內(nèi),如果是, 則系統(tǒng)當(dāng)前不進(jìn)行地址回收操作,否則轉(zhuǎn)步驟(3. 2),地址回收閥值可以根據(jù)系統(tǒng)的應(yīng)用需求在O. 2^0. 8之間進(jìn)行選??;(3. 2)判斷系統(tǒng)是否第一次進(jìn)行地址回收操作,如果是,轉(zhuǎn)步驟(3. 3),否則轉(zhuǎn)步驟(3. 4) ; (3. 3)初始化地址回收指針,將指針指向地址映射表頭;(3. 4) 檢查地址映射表的“有效數(shù)據(jù)”字段,判斷如果為無(wú)效數(shù)據(jù),則將該字段改寫為空閑狀態(tài),并轉(zhuǎn)步驟(3. 6),否則轉(zhuǎn)步驟(3.5) ; (3. 5)當(dāng)前地址映射表記錄為有效數(shù)據(jù),則調(diào)用寫IO操作步驟(2),將該數(shù)據(jù)塊作為新數(shù)據(jù)寫入當(dāng)前PBA地址,并將該記錄的“有效數(shù)據(jù)”字段設(shè)置為空閑狀態(tài);(3. 6)地址回收指針指向下一條地址映射表記錄,判斷是否為表尾,如果是, 轉(zhuǎn)步驟(3. 3),否則轉(zhuǎn)步驟(3. 2)。
5.如權(quán)利要求2所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于所述的RAID 系統(tǒng)包括RAID控制器、存儲(chǔ)介質(zhì)陣列。
6.如權(quán)利要求2所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于(1.2)地址映射表主要包含字段信息如下“邏輯地址”字段(LBA地址),記錄數(shù)據(jù)塊的邏輯地址LBA 地址;“物理地址”字段(PBA地址),記錄數(shù)據(jù)塊存儲(chǔ)的物理地址;“有效數(shù)據(jù)”字段,該字段包含三個(gè)狀態(tài),“有效”狀態(tài)表示對(duì)應(yīng)物理地址所存放的數(shù)據(jù)塊為最新數(shù)據(jù);“無(wú)效”狀態(tài)表示該物理地址數(shù)據(jù)塊已失效,可回收;“空閑”狀態(tài)表示該物理地址空間已回收;“校驗(yàn)塊”字段,記錄該數(shù)據(jù)塊是否為RAID5磁盤陣列中的校驗(yàn)值;“校驗(yàn)塊保護(hù)”字段,記錄該校驗(yàn)值保護(hù)的數(shù)據(jù)塊數(shù)是否小于一個(gè)條帶的數(shù)據(jù)塊,該字段主要用于保存當(dāng)磁盤陣列發(fā)生掉電時(shí),該條帶是否正常完成寫入操作。
7.如權(quán)利要求5所述的一種RAID5的寫IO優(yōu)化處理方法,其特征在于所述的存儲(chǔ)介質(zhì)陣列可以為磁盤列、固態(tài)盤列或閃存列等。
全文摘要
一種RAID5的寫IO優(yōu)化處理方法,包括如下步驟1),存儲(chǔ)系統(tǒng)構(gòu)建;2),數(shù)據(jù)讀寫操作;3),失效數(shù)據(jù)塊回收。其優(yōu)點(diǎn)可以有效降低RAID級(jí)別磁盤陣列的寫放大效應(yīng)。傳統(tǒng)的磁盤,順序?qū)懶阅苓h(yuǎn)遠(yuǎn)大于隨機(jī)寫性能,本發(fā)明提供的地址映射方法將隨機(jī)寫操作轉(zhuǎn)化成順序?qū)懖僮鳎行У陌l(fā)揮了磁盤的寫性能,降低了計(jì)算校驗(yàn)所需的IO操作,顯著提高了RAID系統(tǒng)的響應(yīng)能力,同時(shí)降低了系統(tǒng)功耗。最后,地址映射模塊可以靈活的選擇校驗(yàn)塊部署的位置和數(shù)量,因此本發(fā)明不限于RAID5級(jí)別的磁盤陣列的應(yīng)用,可以推廣到RAID4、RAID6級(jí)別的實(shí)現(xiàn)。
文檔編號(hào)G06F3/06GK103049222SQ201210582379
公開日2013年4月17日 申請(qǐng)日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者劉曉芳, 符才德, 周俊, 萬(wàn)寶琳 申請(qǐng)人:中國(guó)船舶重工集團(tuán)公司第七0九研究所