一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明涉及磁盤(pán)陣列數(shù)據(jù)分布與重建方法和系統(tǒng),該磁盤(pán)陣列包括磁盤(pán)陣列控制器、正常盤(pán)、熱備盤(pán),其中磁盤(pán)陣列控制器負(fù)責(zé)管理數(shù)據(jù)在正常盤(pán)上的分布、某一個(gè)或多個(gè)磁盤(pán)故障后的磁盤(pán)陣列重建,某一個(gè)或多個(gè)磁盤(pán)故障后,磁盤(pán)陣列控制器即選擇熱備盤(pán)進(jìn)行重建;熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;主磁盤(pán)中存儲(chǔ)讀出I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),該數(shù)據(jù)經(jīng)過(guò)異或運(yùn)算后,運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,在完成一次重建操作中,熱備盤(pán)上I/O的磁頭尋道距離減少,磁盤(pán)陣列重建速度加快。
【專(zhuān)利說(shuō)明】一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及所屬的【技術(shù)領(lǐng)域】是:信息存儲(chǔ)領(lǐng)域,尤其涉及一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法及系統(tǒng)。
【背景技術(shù)】
[0002]磁盤(pán)陣列是將多個(gè)物理磁盤(pán)通過(guò)一定的數(shù)據(jù)分布方式組織起來(lái)通過(guò)并發(fā)I/O提供數(shù)據(jù)讀寫(xiě)服務(wù)的一種存儲(chǔ)系統(tǒng)。磁盤(pán)是機(jī)械組件,其失效概率非常高。當(dāng)磁盤(pán)陣列中一個(gè)磁盤(pán)失效之后,磁盤(pán)陣列進(jìn)入降級(jí)模式,磁盤(pán)陣列的并發(fā)吞吐量降低,讀寫(xiě)I/o的平均響應(yīng)時(shí)間升高。因此,如何在磁盤(pán)陣列中一個(gè)磁盤(pán)失效后在盡可能短的時(shí)間內(nèi)將數(shù)據(jù)重建到熱備盤(pán)上,是一個(gè)非常重要的,亟待解決的問(wèn)題。特別是隨著磁盤(pán)容量的迅速增加而磁盤(pán)轉(zhuǎn)速卻基本沒(méi)有提升的情況下,將大容量、低帶寬的磁盤(pán)上的數(shù)據(jù)重建到熱備盤(pán)所需的時(shí)間非常長(zhǎng),導(dǎo)致另一塊磁盤(pán)故障進(jìn)而導(dǎo)致數(shù)據(jù)丟失的概率非常高。
[0003]針對(duì)磁盤(pán)陣列重建這個(gè)問(wèn)題,已有部分研究成果。
[0004]面向條帶的重建算法SOR (Striped Oriented Reconstruction)通過(guò)創(chuàng)建多個(gè)并發(fā)的線(xiàn)程,每個(gè)線(xiàn)程對(duì)應(yīng)一個(gè)條帶單元Stripe,挖掘多個(gè)Stripe重建的并行性來(lái)提升重建速度。SOR的優(yōu)點(diǎn)是相對(duì)單條帶串行重建,多個(gè)條帶通過(guò)并行重建,使得多個(gè)條帶可以并行進(jìn)行,可以提升重建速度;其缺點(diǎn)是仍然存在單條帶重建線(xiàn)程的性能問(wèn)題,即同一個(gè)條帶跨越多個(gè)磁盤(pán),而多個(gè)磁盤(pán)的I/O會(huì)彼此等待,性能受限;同時(shí),多個(gè)重建線(xiàn)程如對(duì)磁盤(pán)上不同區(qū)域的條帶進(jìn)行重建,會(huì)帶來(lái)較長(zhǎng)距離的磁盤(pán)尋道,從而限制了重建速度。
[0005]面向磁盤(pán)的重建算法D0R(Disk Oriented Reconstruction)通過(guò)為每個(gè)磁盤(pán)創(chuàng)建一個(gè)線(xiàn)程,充分挖掘磁盤(pán)帶寬從而提升重建速度。DOR的優(yōu)點(diǎn)是較為充分的利用磁盤(pán)帶寬,提升重建速度;其缺點(diǎn)是對(duì)磁盤(pán)帶寬的激進(jìn)使用會(huì)對(duì)前端1/0的響應(yīng)時(shí)間和帶寬有一定的影響,多個(gè)線(xiàn)程獨(dú)立挖掘磁盤(pán)帶寬,容易造成緩沖中存在大量的不足滿(mǎn)條帶的數(shù)據(jù)片,另外該方案沒(méi)有充分結(jié)合負(fù)載特征進(jìn)行優(yōu)化。
[0006]基于熱度的多線(xiàn)程重建優(yōu)化算法PRO (Popularity Based Mult1-threadReconstruction Optimization)通過(guò)充分挖掘Web類(lèi)負(fù)載局部性強(qiáng)的特性,對(duì)不同的存儲(chǔ)區(qū)域的數(shù)據(jù)賦予不同的重建優(yōu)先級(jí),存儲(chǔ)區(qū)域內(nèi)的數(shù)據(jù)的訪(fǎng)問(wèn)熱度越高,存儲(chǔ)區(qū)域的重建優(yōu)先級(jí)越高。PRO是對(duì)SOR和DOR的改進(jìn)方案。PRO的優(yōu)點(diǎn)是存儲(chǔ)區(qū)域內(nèi)的數(shù)據(jù)訪(fǎng)問(wèn)熱度越高,存儲(chǔ)區(qū)域重建優(yōu)先級(jí)越高;其缺點(diǎn)是PRO僅僅適用于網(wǎng)頁(yè)Web類(lèi)只讀類(lèi)型的負(fù)載的場(chǎng)景,對(duì)于寫(xiě)負(fù)載和讀負(fù)載均表現(xiàn)出局部性的場(chǎng)景,同樣會(huì)導(dǎo)致磁頭的長(zhǎng)距離尋道。
[0007]負(fù)載重定向WorkOut (Workload Outsourcing)通過(guò)將熱點(diǎn)數(shù)據(jù)和所有寫(xiě)數(shù)據(jù)重定向到另外一個(gè)磁盤(pán)陣列上來(lái)加速降低磁盤(pán)陣列的重建。WorkOut的主要缺點(diǎn)是失效磁盤(pán)陣列的重建依賴(lài)于另外一個(gè)磁盤(pán)陣列。
[0008]圖1為現(xiàn)有技術(shù)的磁盤(pán)陣列重建原理圖。
[0009]10為當(dāng)前正在重建區(qū)域?qū)?yīng)的主磁盤(pán)組中的數(shù)據(jù)區(qū),40為對(duì)應(yīng)10的熱備盤(pán)中的“重建數(shù)據(jù)區(qū)”;20為當(dāng)前非正在重建區(qū)域?qū)?yīng)的前端1/0讀請(qǐng)求在主磁盤(pán)組中的讀數(shù)據(jù)區(qū),50為對(duì)應(yīng)20的熱備盤(pán)中的“讀順便重建數(shù)據(jù)區(qū)”;30為當(dāng)前非正在重建區(qū)域?qū)?yīng)的前端I/O寫(xiě)請(qǐng)求在主磁盤(pán)組中的寫(xiě)數(shù)據(jù)區(qū),60為對(duì)應(yīng)30的熱備盤(pán)中的“寫(xiě)順便重建數(shù)據(jù)區(qū)”。
[0010]現(xiàn)有技術(shù)的磁盤(pán)陣列重建過(guò)程為:
[0011]步驟1、將熱備盤(pán)劃分為多個(gè)重建區(qū)域40、50、60。
[0012]步驟2、周期性統(tǒng)計(jì)每個(gè)重建區(qū)域的前端I/O訪(fǎng)問(wèn)熱度。
[0013]步驟3、選擇前端I/O訪(fǎng)問(wèn)熱度最高的重建區(qū)域10,為其對(duì)應(yīng)的重建線(xiàn)程分配定長(zhǎng)的時(shí)間片資源,啟動(dòng)其重建過(guò)程,對(duì)數(shù)據(jù)區(qū)40進(jìn)行重建。
[0014]步驟4、如果前端I/O讀請(qǐng)求將數(shù)據(jù)區(qū)20的整個(gè)條帶的數(shù)據(jù)讀入緩存,則在熱備盤(pán)上順便重建相應(yīng)的數(shù)據(jù)區(qū)50。
[0015]步驟5、如果前端I/O寫(xiě)請(qǐng)求將數(shù)據(jù)區(qū)30的整個(gè)條帶的數(shù)據(jù)寫(xiě)入磁盤(pán)陣列,則在熱備盤(pán)上順便重建相應(yīng)的數(shù)據(jù)區(qū)60。
[0016]現(xiàn)有技術(shù)磁盤(pán)陣列重建過(guò)程存在如下的問(wèn)題:在讀寫(xiě)混合負(fù)載場(chǎng)景下,熱備盤(pán)的磁頭將在“重建數(shù)據(jù)區(qū)”、“讀順便重建數(shù)據(jù)區(qū)”和“寫(xiě)順便重建數(shù)據(jù)區(qū)”之間移動(dòng),頻繁的磁頭尋道操作將大大降低熱備盤(pán)的重建帶寬,從而延長(zhǎng)磁盤(pán)陣列重建時(shí)間,導(dǎo)致數(shù)據(jù)丟失的可能性增大。
【發(fā)明內(nèi)容】
[0017]為了解決上述問(wèn)題,本發(fā)明的目的在于提出一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法及系統(tǒng),通過(guò)將空閑存儲(chǔ)空間散布在熱備盤(pán),縮短讀寫(xiě)混合負(fù)載場(chǎng)景下熱備盤(pán)磁頭在“重建數(shù)據(jù)區(qū)”、“讀順便重建數(shù)據(jù)區(qū)”和“寫(xiě)順便重建數(shù)據(jù)區(qū)”之間尋道距離的方法及系統(tǒng),提升磁盤(pán)陣列的重建速度。
[0018]具體地講,本發(fā)明公開(kāi)了 一種磁盤(pán)陣列數(shù)據(jù)分布與重建系統(tǒng),該系統(tǒng)包括磁盤(pán)陣列控制器、正常盤(pán)、熱備盤(pán),其中磁盤(pán)陣列控制器負(fù)責(zé)管理數(shù)據(jù)在正常盤(pán)上的分布、某一個(gè)或多個(gè)磁盤(pán)故障后的磁盤(pán)陣列重建,某一個(gè)或多個(gè)磁盤(pán)故障后,磁盤(pán)陣列控制器即選擇熱備盤(pán)進(jìn)行重建;熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;主磁盤(pán)中存儲(chǔ)讀出I/o熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),該數(shù)據(jù)經(jīng)過(guò)異或運(yùn)算后,運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,從而完成一次重建操作。
[0019]該磁盤(pán)陣列控制器包括:
[0020]重建模塊,用于選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建;
[0021]讀請(qǐng)求處理模塊,用于處理前端應(yīng)用的I/O讀請(qǐng)求;
[0022]寫(xiě)請(qǐng)求處理模塊,用于處理前端應(yīng)用I/O寫(xiě)請(qǐng)求。
[0023]本發(fā)明還公開(kāi)了一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法,包括如下步驟:
[0024]步驟1、將熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;
[0025]步驟2、從主磁盤(pán)中讀出I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),經(jīng)過(guò)異或運(yùn)算后,將運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,完成一次重建操作。
[0026]包括:
[0027]步驟21、選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建;具體包括:
[0028]如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)未在緩存中命中,則向主磁盤(pán)發(fā)送讀I/O請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存;[0029]如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)在緩存中命中,則將緩存中對(duì)應(yīng)的主磁盤(pán)上四份數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算得到的結(jié)果數(shù)據(jù)寫(xiě)入熱備盤(pán)上重建數(shù)據(jù)區(qū)。
[0030]步驟22、處理前端應(yīng)用的I/O讀請(qǐng)求;具體包括:
[0031]將前端應(yīng)用I/O讀請(qǐng)求分裂為多個(gè)子I/O讀請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存;
[0032]如果前端應(yīng)用I/O讀請(qǐng)求對(duì)應(yīng)的條帶的所有數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果數(shù)據(jù)寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
[0033]步驟23、處理前端應(yīng)用I/O寫(xiě)請(qǐng)求。具體包括:
[0034]將前端應(yīng)用I/O寫(xiě)請(qǐng)求分裂為多個(gè)子I/O寫(xiě)請(qǐng)求。
[0035]如果前端應(yīng)用I/O寫(xiě)請(qǐng)求對(duì)應(yīng)的條帶的所有最新版本的數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
[0036]本發(fā)明的技術(shù)效果:
[0037]熱備盤(pán)的存儲(chǔ)空間被分為“數(shù)據(jù)空間”和“空閑空間”且交替分布的技術(shù)效果是可以將不同類(lèi)型的I/o在熱備盤(pán)上聚集。
[0038]對(duì)于熱備盤(pán)上的1/0,將“讀順便重建數(shù)據(jù)區(qū)”和“寫(xiě)順便重建數(shù)據(jù)區(qū)”對(duì)應(yīng)的I/O重定向到“重建數(shù)據(jù)區(qū)”臨近的“空閑空間”,其技術(shù)效果是熱備盤(pán)上I/o的磁頭尋道距離減少,磁盤(pán)陣列重建速度加快。
[0039]總的技術(shù)效果:縮短磁頭尋道距離,加快磁盤(pán)陣列重建,降低數(shù)據(jù)丟失概率。成本低,開(kāi)銷(xiāo)小。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0040]圖1為現(xiàn)有技術(shù)的磁盤(pán)陣列重建原理圖;
[0041]圖2為本發(fā)明的磁盤(pán)陣列重建原理圖。
【具體實(shí)施方式】
[0042]磁盤(pán)陣列(RedundantArrays of Inexpensive Disks,RAID),由磁盤(pán)陣列控制器、正常盤(pán)、熱備盤(pán)組成。
[0043]磁盤(pán)陣列(RAID)技術(shù)主要包含RAIDO?RAID7等數(shù)個(gè)規(guī)范。RAID5僅容單盤(pán)錯(cuò),RAID6可容雙盤(pán)錯(cuò)。在RAID5磁盤(pán)陣列中,配置一塊熱備盤(pán),在RAID6磁盤(pán)陣列中,配置兩塊熱備盤(pán)。當(dāng)RAID5中的一個(gè)正常盤(pán)發(fā)生故障后,利用熱備盤(pán)開(kāi)始磁盤(pán)陣列重建。當(dāng)RAID5中磁盤(pán)陣列重建過(guò)程中另一個(gè)正常盤(pán)故障、或RAID5中同時(shí)有兩塊或兩塊以上磁盤(pán)故障,則數(shù)據(jù)丟失,無(wú)法進(jìn)行重建。當(dāng)RAID6中的一個(gè)正常盤(pán)發(fā)生故障后,利用兩塊熱備盤(pán)中的任意一個(gè)開(kāi)始磁盤(pán)陣列重建,當(dāng)RAID6種的兩塊正常盤(pán)發(fā)生故障后,利用兩塊熱備盤(pán)開(kāi)始磁盤(pán)陣列重建。當(dāng)RAID6重建過(guò)程中第三塊磁盤(pán)故障、或RAID6中同時(shí)有三塊或三塊以上磁盤(pán)故障,則數(shù)據(jù)丟失,無(wú)法進(jìn)行重建。
[0044]磁盤(pán)陣列控制器負(fù)責(zé)管理數(shù)據(jù)在正常盤(pán)上的分布、某一個(gè)或多個(gè)磁盤(pán)故障后的磁盤(pán)陣列重建。某一個(gè)或多個(gè)磁盤(pán)故障后,磁盤(pán)陣列控制器即選擇熱備盤(pán)進(jìn)行重建。該磁盤(pán)陣列控制器包括三個(gè)模塊:重建模塊,用于選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建;讀請(qǐng)求處理模塊,用于處理前端應(yīng)用的I/o讀請(qǐng)求;寫(xiě)請(qǐng)求處理模塊,用于處理前端應(yīng)用I/o寫(xiě)請(qǐng)求。熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;主磁盤(pán)中存儲(chǔ)讀出I/o熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),該數(shù)據(jù)經(jīng)過(guò)異或運(yùn)算后,運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,從而完成一次重建操作。
[0045]磁盤(pán)陣列數(shù)據(jù)分布與重建方法,包括如下步驟:
[0046]步驟1、將熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;
[0047]步驟2、從主磁盤(pán)中讀出I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),經(jīng)過(guò)異或運(yùn)算后,將運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,完成一次重建操作。
[0048]步驟2具體包括如下步驟:
[0049]步驟21、選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建;
[0050]步驟22、處理前端應(yīng)用的I/O讀請(qǐng)求;
[0051]步驟23、處理前端應(yīng)用I/O寫(xiě)請(qǐng)求。
[0052]步驟21具體包括如下步驟:
[0053]步驟31、如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)未在緩存中命中,則向主磁盤(pán)發(fā)送讀I/O請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存;
[0054]步驟32、如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)在緩存中命中,則將緩存中對(duì)應(yīng)的主磁盤(pán)上四份數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算得到的結(jié)果數(shù)據(jù)寫(xiě)入熱備盤(pán)上重建數(shù)據(jù)區(qū)。
[0055]步驟22具體包括如下步驟:
[0056]步驟41、將前端應(yīng)用I/O讀請(qǐng)求分裂為多個(gè)子I/O讀請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存;
[0057]步驟42、如果前端應(yīng)用I/O讀請(qǐng)求對(duì)應(yīng)的條帶的所有數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果數(shù)據(jù)寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
[0058]步驟23具體包括如下步驟:
[0059]步驟51、將前端應(yīng)用I/O寫(xiě)請(qǐng)求分裂為多個(gè)子I/O寫(xiě)請(qǐng)求。
[0060]步驟52、如果前端應(yīng)用I/O寫(xiě)請(qǐng)求對(duì)應(yīng)的條帶的所有最新版本的數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
[0061]下面通過(guò)圖2實(shí)施例具體說(shuō)明重建的過(guò)程。
[0062]圖2中所示的“主磁盤(pán)1”、“主磁盤(pán)2”、“主磁盤(pán)3”、“主磁盤(pán)4”為處于正常狀態(tài)的磁盤(pán),“故障盤(pán)6”為故障盤(pán)。“故障盤(pán)6”發(fā)生故障之后,用“熱備盤(pán)5”替換,開(kāi)始重建。
[0063]首先將熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的“數(shù)據(jù)空間”和“空閑空間”?!皵?shù)據(jù)空間”如圖2中“熱備盤(pán)5”上R2、R4、R6和R8所示,“空閑空間”如圖2中“熱備盤(pán)5”上R1、R3、R5和R7所示。其中R代表Region。設(shè)定I/O熱度統(tǒng)計(jì)周期T和I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小S。I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)的大小S同時(shí)也是磁盤(pán)陣列重建的基本單位,即每一次重建操作均從主磁盤(pán)中讀出S大小的數(shù)據(jù),經(jīng)過(guò)異或運(yùn)算之后,將運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)。[0064]將熱備盤(pán)的存儲(chǔ)空間分成交替分布的“數(shù)據(jù)空間”R2、R4、R6和R8和“空閑空間” R1、R3、R5和R7之后,本發(fā)明的磁盤(pán)陣列重建方法有如下步驟:
[0065]步驟1、選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建,同時(shí)接收前端應(yīng)用發(fā)送到磁盤(pán)陣列的I/o讀請(qǐng)求和I/O寫(xiě)請(qǐng)求。如果是重建請(qǐng)求,跳轉(zhuǎn)至步驟2 ;否則,如果是前端應(yīng)用的I/O讀請(qǐng)求或I/O寫(xiě)請(qǐng)求,跳轉(zhuǎn)至步驟6。
[0066]步驟2、依此判斷對(duì)應(yīng)主磁盤(pán)1、主磁盤(pán)2、主磁盤(pán)3、主磁盤(pán)4上的四份數(shù)據(jù)是否在緩存中命中。如果是,跳轉(zhuǎn)至步驟4;否則,跳轉(zhuǎn)至步驟3。
[0067]步驟3、向主磁盤(pán)發(fā)送讀I/O請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存。
[0068]步驟4、將緩存中對(duì)應(yīng)主磁盤(pán)1、主磁盤(pán)2、主磁盤(pán)3、主磁盤(pán)4上的四份數(shù)據(jù)進(jìn)行異或運(yùn)算。
[0069]步驟5、將異或運(yùn)算得到的結(jié)果數(shù)據(jù)寫(xiě)入熱備盤(pán)上“重建數(shù)據(jù)區(qū)” R2。
[0070]步驟6、如果是前端應(yīng)用I/O讀請(qǐng)求,跳轉(zhuǎn)至步驟7 ;否則,如果是前端應(yīng)用I/O寫(xiě)請(qǐng)求,跳轉(zhuǎn)至步驟10。
[0071]步驟7、將前端應(yīng)用I/O讀請(qǐng)求分裂為多個(gè)子I/O讀請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存。
[0072]步驟8、如果前端應(yīng)用I/O讀請(qǐng)求對(duì)應(yīng)的條帶的所有數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算。
[0073]步驟9、將異或運(yùn)算的結(jié)果數(shù)據(jù)寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前“重建數(shù)據(jù)區(qū)” R2最近的空閑空間R3中50的位置,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
[0074]步驟10、將前端應(yīng)用I/O寫(xiě)請(qǐng)求分裂為多個(gè)子I/O寫(xiě)請(qǐng)求。
[0075]步驟11、如果前端應(yīng)用I/O寫(xiě)請(qǐng)求對(duì)應(yīng)的條帶的所有最新版本的數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算。
[0076]步驟12、將異或運(yùn)算的結(jié)果寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前“重建數(shù)據(jù)區(qū)” R2最近的空閑空間R3中60的位置,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
【權(quán)利要求】
1.一種磁盤(pán)陣列數(shù)據(jù)分布與重建方法,其特征在于,包括如下步驟: 步驟1、將熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間; 步驟2、從主磁盤(pán)中讀出I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),經(jīng)過(guò)異或運(yùn)算后,將運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,完成一次重建操作。
2.如權(quán)利要求1所述的磁盤(pán)陣列數(shù)據(jù)分布與重建方法,其特征在于,所述步驟2具體包括如下步驟: 步驟21、選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建; 步驟22、處理前端應(yīng)用的I/O讀請(qǐng)求; 步驟23、處理前端應(yīng)用I/O寫(xiě)請(qǐng)求。
3.如權(quán)利要求2所述的磁盤(pán)陣列數(shù)據(jù)分布與重建方法,其特征在于,所述步驟21具體包括如下步驟: 步驟31、如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)未在緩存中命中,則向主磁盤(pán)發(fā)送讀I/O請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存; 步驟32、如果對(duì)應(yīng)的主磁盤(pán)上的數(shù)據(jù)在緩存中命中,則將緩存中對(duì)應(yīng)的主磁盤(pán)上四份數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算得到的結(jié)果數(shù)據(jù)寫(xiě)入熱備盤(pán)上重建數(shù)據(jù)區(qū)。
4.如權(quán)利要求2所述的磁盤(pán)陣列數(shù)據(jù)分布與重建方法,其特征在于,所述步驟22具體包括如下步驟: 步驟41、將前端應(yīng)用I/O讀請(qǐng)求分裂為多個(gè)子I/O讀請(qǐng)求,讀取未在緩存中命中的數(shù)據(jù),并置于緩存; 步驟42、如果前端應(yīng)用I/O讀請(qǐng)求對(duì)應(yīng)的條帶的所有數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果數(shù)據(jù)寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
5.如權(quán)利要求2所述的磁盤(pán)陣列數(shù)據(jù)分布與重建方法,其特征在于,所述步驟23具體包括如下步驟: 步驟51、將前端應(yīng)用I/O寫(xiě)請(qǐng)求分裂為多個(gè)子I/O寫(xiě)請(qǐng)求。 步驟52、如果前端應(yīng)用I/O寫(xiě)請(qǐng)求對(duì)應(yīng)的條帶的所有最新版本的數(shù)據(jù)全部在緩存中,則將條帶對(duì)應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將異或運(yùn)算的結(jié)果寫(xiě)入并重定向到熱備盤(pán)上距離當(dāng)前重建數(shù)據(jù)區(qū)最近的空閑空間中,并記錄被重定向的數(shù)據(jù)的目標(biāo)位置和被重定向之后的位置。
6.一種磁盤(pán)陣列數(shù)據(jù)分布與重建系統(tǒng),其特征在于,該磁盤(pán)陣列包括磁盤(pán)陣列控制器、正常盤(pán)、熱備盤(pán),其中磁盤(pán)陣列控制器負(fù)責(zé)管理數(shù)據(jù)在正常盤(pán)上的分布、某一個(gè)或多個(gè)磁盤(pán)故障后的磁盤(pán)陣列重建,某一個(gè)或多個(gè)磁盤(pán)故障后,磁盤(pán)陣列控制器即選擇熱備盤(pán)進(jìn)行重建;熱備盤(pán)的存儲(chǔ)空間劃分成交替分布的數(shù)據(jù)空間和空閑空間;主磁盤(pán)中存儲(chǔ)讀出I/O熱度統(tǒng)計(jì)存儲(chǔ)區(qū)大小的數(shù)據(jù),該數(shù)據(jù)經(jīng)過(guò)異或運(yùn)算后,運(yùn)算結(jié)果寫(xiě)入熱備盤(pán)的數(shù)據(jù)空間,從而完成一次重建操作。
7.如權(quán)利要求6所述的磁盤(pán)陣列數(shù)據(jù)分布與重建系統(tǒng),其特征在于,該磁盤(pán)陣列控制器包括: 重建模塊,用于選擇磁盤(pán)陣列的起始地址對(duì)應(yīng)的重建單元開(kāi)始重建; 讀請(qǐng)求處理模塊,用于處理前端應(yīng)用的I/O讀請(qǐng)求;寫(xiě)請(qǐng)求處理模塊,用于處理前 端應(yīng)用I/O寫(xiě)請(qǐng)求。
【文檔編號(hào)】G06F12/08GK103699336SQ201310641681
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
【發(fā)明者】岳銀亮, 熊勁, 賈士博, 陳明宇, 張立新 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所