Raid磁盤陣列重新恢復(fù)冗余的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)存儲技術(shù)領(lǐng)域,尤其涉及一種RAID磁盤陣列重新恢復(fù)冗余的方法。
【背景技術(shù)】
[0002]目前的RAID磁盤發(fā)生故障時(shí),需要重構(gòu)熱備盤,一般采用從RAID磁盤起始位置至RAID磁盤結(jié)尾位置依次重建,該設(shè)計(jì)方案比較簡單,但是在重建的過程中將RAID磁盤上從來沒有寫過的數(shù)據(jù)也進(jìn)行了重建,延長了整個(gè)RAID陣列重建的時(shí)間。綜上所述,現(xiàn)有技術(shù)中對RAID磁盤進(jìn)行重建的過程中將沒有寫過的數(shù)據(jù)或已經(jīng)刪除的數(shù)據(jù)條帶也進(jìn)行重建導(dǎo)致重建時(shí)間過長的問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種RAID磁盤陣列重新恢復(fù)冗余的方法,旨在解決針對現(xiàn)有技術(shù)中對RAID磁盤進(jìn)行重建的過程中將沒有寫過的數(shù)據(jù)或已經(jīng)刪除的數(shù)據(jù)條帶也進(jìn)行重建導(dǎo)致重建時(shí)間過長的問題。
[0004]本發(fā)明是這樣實(shí)現(xiàn)的,第一方面提供一種RAID磁盤陣列重新恢復(fù)冗余的方法,所述方法包括以下步驟:
[0005]A.在所述RAID磁盤陣列讀寫數(shù)據(jù)的過程中,將沒有數(shù)據(jù)的條帶標(biāo)記為無效條帶,將有數(shù)據(jù)的條帶標(biāo)記為有效數(shù)據(jù)條帶;
[0006]B.判斷RAID磁盤是否發(fā)生故障,是,則執(zhí)行步驟C,否則返回執(zhí)行步驟A;
[0007]C.重建所述有效數(shù)據(jù)條帶;
[0008]D.同步所述RAID磁盤陣列中的所述無效數(shù)據(jù)條帶。
[0009]結(jié)合第一方面,在第一方面的第一種實(shí)施方式中,所述步驟A中將沒有數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶的步驟具體為:
[0010]將沒有寫入數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶。
[0011]結(jié)合第一方面,在第一方面的第二種實(shí)施方式中,所述步驟A中將沒有數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶的步驟具體為:
[0012]當(dāng)有效數(shù)據(jù)條帶的數(shù)據(jù)全部被刪除或被回收后,將其標(biāo)記為無效數(shù)據(jù)條帶。
[0013]結(jié)合第一方面,在第一方面的第三種實(shí)施方式中,所述步驟D具體為:
[0014]將重建過的條帶的校驗(yàn)碼設(shè)置第一校驗(yàn)碼,并將未重建的條帶的校驗(yàn)碼設(shè)置為第二校驗(yàn)碼;
[0015]對校驗(yàn)碼為第二校驗(yàn)碼的條帶進(jìn)行同步。
[0016]結(jié)合第一方面,在第一方面的第五種實(shí)施方式中,所述步驟A之前還包括以下步驟:
[0017]將所有條帶初始化為無效條帶。
[0018]本發(fā)明提供一種RAID磁盤陣列重新恢復(fù)冗余的方法,在重新恢復(fù)冗余RAID磁盤陣列時(shí),掃描整個(gè)位圖,若位圖標(biāo)記是有效數(shù)據(jù)條帶,則對應(yīng)的區(qū)塊執(zhí)行重建操作,若位圖標(biāo)記是無效數(shù)據(jù)條帶,則位圖對應(yīng)的區(qū)塊不執(zhí)行重建操作,而是通過啟動(dòng)同步來達(dá)到校驗(yàn)和的一致,通過這種方案,在重建的過程中,僅需要恢復(fù)RAID磁盤陣列中的有效數(shù)據(jù),可以使重建速度有效的得到提升,特別是在有效數(shù)據(jù)只是有了一小部分的情況下更加顯著,減少了重建時(shí)間,同時(shí)減少了發(fā)生二次磁盤故障帶來的丟失數(shù)據(jù)風(fēng)險(xiǎn),并且,對無效數(shù)據(jù)條帶進(jìn)行同步恢復(fù)冗余,可以在后續(xù)寫該條帶時(shí)提高隨機(jī)寫性能,即由重構(gòu)寫變成讀至修改至寫的過程。
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1是本發(fā)明一種實(shí)施例提供的一種RAID磁盤陣列重新恢復(fù)冗余的方法的流程圖。
【具體實(shí)施方式】
[0021]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0022]為了說明本發(fā)明的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。
[0023]本發(fā)明一種實(shí)施例提供一種RAID磁盤陣列重新恢復(fù)冗余的方法,如圖1所示,RAID磁盤陣列重新恢復(fù)冗余的方法包括以下步驟:
[0024]步驟SlOl.在所述RAID磁盤陣列讀寫數(shù)據(jù)的過程中,將沒有數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶,將有數(shù)據(jù)的區(qū)域標(biāo)記為有效數(shù)據(jù)條帶。
[0025]在本步驟中,具體的,首先將RAID磁盤陣列的數(shù)據(jù)空間劃分為大小相等的區(qū)塊,然后使用位圖記錄這些區(qū)塊的使用狀態(tài);在發(fā)生數(shù)據(jù)寫入時(shí),將寫入位置對應(yīng)的位圖標(biāo)記為有效數(shù)據(jù)條帶。
[0026]其中,本專利的條帶指陣列中的邏輯條帶,對應(yīng)陣列中一個(gè)或多個(gè)物理?xiàng)l帶組成。
[0027]其中,對于無效數(shù)據(jù)條帶,在一種實(shí)施方式中,將沒有數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶的步驟具體為:將沒有寫入數(shù)據(jù)的條帶標(biāo)記為無效數(shù)據(jù)條帶。
[0028]在另一種實(shí)施方式中,將沒有數(shù)據(jù)的區(qū)域標(biāo)記為無效區(qū)域的步驟具體為:
[0029]當(dāng)有效數(shù)據(jù)條帶的數(shù)據(jù)全部被刪除或被回收后,將其標(biāo)記為無效數(shù)據(jù)條帶。
[0030]步驟S102.判斷RAID磁盤是否發(fā)生故障,是,則執(zhí)行步驟S103,否則返回執(zhí)行步驟SlOlo
[0031]在本步驟中,具體的,RAID磁盤陣列的某一塊磁盤發(fā)生損壞后,此時(shí)RAID磁盤發(fā)生故障,系統(tǒng)自動(dòng)使用備用磁盤替換損壞的成員盤,執(zhí)行步驟S103。
[0032]步驟S103.重建RAID磁盤陣列中的有效數(shù)據(jù)條帶。
[0033]在本步驟中,具體的,在RAID磁盤陣列重建有效區(qū)域的過程中,僅需要恢復(fù)RAID磁盤陣列中的有效數(shù)據(jù)。
[0034]步驟S104.同步無效區(qū)域。
[0035]在本步驟中,具體的,步驟S104具體包括:
[0036]步驟S1041.將重建過的有效數(shù)據(jù)條帶的校驗(yàn)碼設(shè)置第一校驗(yàn)碼,并將未重建的條帶的校驗(yàn)碼設(shè)置為第二校驗(yàn)碼。
[0037]步驟S1042.對校驗(yàn)碼為第二校驗(yàn)碼的條帶進(jìn)行同步。
[0038]在步驟S1041和步驟S1042中,具體的,對重建過的有效區(qū)域置1,其余區(qū)域全部置0,對置O的區(qū)域進(jìn)行同步。
[0039]進(jìn)一步的,步驟S1041中將重建過的有效區(qū)域的校驗(yàn)碼設(shè)置第一校驗(yàn)碼之前還包括:
[0040]初始化校驗(yàn)碼和位圖。
[0041]進(jìn)一步的,步驟SlOl之前還包括以下步驟:
[0042]將所有區(qū)域初始化為無效數(shù)據(jù)條帶。
[0043 ] 步驟S103和步驟S104之間還包括以下步驟:
[0044]判斷是否重建完成有效數(shù)據(jù)條帶,是,則執(zhí)行步驟S104,否,則執(zhí)行步驟S103。
[0045]在本發(fā)