本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種基于可變條帶的RAID維護(hù)方法及系統(tǒng)。
背景技術(shù):
當(dāng)前,隨著互聯(lián)網(wǎng)、云計(jì)算和物聯(lián)網(wǎng)等技術(shù)的發(fā)展,數(shù)據(jù)存儲(chǔ)方面的相關(guān)技術(shù)也得到了快速的發(fā)展。其中,固態(tài)硬盤(pán)作為新一代的存儲(chǔ)設(shè)備,已經(jīng)廣泛地應(yīng)用于多個(gè)領(lǐng)域。
由于固態(tài)硬盤(pán)中NAND閃存的擦寫(xiě)次數(shù)有限制,因此為了能夠保障數(shù)據(jù)的完整性,現(xiàn)有的固態(tài)硬盤(pán)通過(guò)實(shí)現(xiàn)RAID(即Redundant Arrays of Independent Disks)的方式,來(lái)保證能夠通過(guò)冗余校驗(yàn)數(shù)據(jù)將遭到損壞的數(shù)據(jù)恢復(fù)出來(lái)。從而保證數(shù)據(jù)的完整性。
固態(tài)硬盤(pán)的RAID磁盤(pán)陣列中通常包括多個(gè)RAID條帶,其中,每個(gè)RAID條帶內(nèi)包括多個(gè)超級(jí)塊,而每個(gè)超級(jí)塊則包括多組數(shù)據(jù)塊,超級(jí)塊中數(shù)據(jù)塊的組數(shù)即為該超級(jí)塊所對(duì)應(yīng)的條帶長(zhǎng)度,通常情況下,每個(gè)超級(jí)塊中數(shù)據(jù)塊的總組數(shù)與固態(tài)硬盤(pán)的通道數(shù)是相同的,也即,每個(gè)超級(jí)塊中的每組數(shù)據(jù)塊對(duì)應(yīng)于固態(tài)硬盤(pán)的一個(gè)通道,每個(gè)超級(jí)塊的條帶長(zhǎng)度與固態(tài)硬盤(pán)的通道數(shù)相同。
傳統(tǒng)的固態(tài)硬盤(pán)是基于固定的條帶長(zhǎng)度來(lái)實(shí)現(xiàn)RAID的。這種實(shí)現(xiàn)RAID的方式使得,當(dāng)往某個(gè)超級(jí)塊中的某個(gè)數(shù)據(jù)塊寫(xiě)入數(shù)據(jù)時(shí)出現(xiàn)寫(xiě)入失敗的情況,這個(gè)時(shí)候?yàn)榱耸乖摮?jí)塊的條帶長(zhǎng)度保持穩(wěn)定以確保能夠繼續(xù)在該超級(jí)塊上實(shí)現(xiàn)RAID,則需要從其他地方選出一個(gè)好的數(shù)據(jù)塊來(lái)替換上述壞的數(shù)據(jù)塊,并對(duì)超級(jí)塊與數(shù)據(jù)塊之間的映射關(guān)系進(jìn)行相應(yīng)的動(dòng)態(tài)更新。可見(jiàn),上述RAID的維護(hù)過(guò)程需要?jiǎng)討B(tài)維護(hù)超級(jí)塊和數(shù)據(jù)塊之間的映射表,復(fù)雜性較高。
綜上所述可以看出,如何降低RAID維護(hù)過(guò)程的復(fù)雜性是目前有待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于可變條帶的RAID維護(hù)方法及系統(tǒng),降低了RAID維護(hù)過(guò)程的復(fù)雜性。其具體方案如下:
一種基于可變條帶的RAID維護(hù)方法,包括:
在將目標(biāo)數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)塊的過(guò)程中,對(duì)相應(yīng)的寫(xiě)入操作進(jìn)行實(shí)時(shí)監(jiān)視,其中,所述第一數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第一超級(jí)塊上的任一數(shù)據(jù)塊;
若監(jiān)視到所述寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則將所述目標(biāo)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)塊,并在預(yù)設(shè)映射文件中將所述第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以相應(yīng)地使所述第一超級(jí)塊上的條帶長(zhǎng)度減1;其中,所述第二數(shù)據(jù)塊為位于所述目標(biāo)RAID條帶的第二超級(jí)塊上的任一數(shù)據(jù)塊,所述預(yù)設(shè)映射文件為預(yù)先記錄的超級(jí)塊與數(shù)據(jù)塊之間映射關(guān)系的文件;
若當(dāng)前所述第一超級(jí)塊上的條帶長(zhǎng)度大于或等于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前所述第一超級(jí)塊上重新實(shí)現(xiàn)RAID,其中,所述預(yù)設(shè)最短長(zhǎng)度為能允許在超級(jí)塊上實(shí)現(xiàn)RAID的最短條帶長(zhǎng)度。
優(yōu)選的,所述預(yù)設(shè)映射文件為基于bitmap方式進(jìn)行構(gòu)建的映射文件。
優(yōu)選的,所述在當(dāng)前所述第一超級(jí)塊上重新實(shí)現(xiàn)RAID的過(guò)程之前,還包括:
將所述第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊。
優(yōu)選的,在將所述第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊之后,還包括:
若當(dāng)前所述第一超級(jí)塊上的條帶長(zhǎng)度小于所述預(yù)設(shè)最短長(zhǎng)度,則將當(dāng)前所述第一超級(jí)塊上的所有完好數(shù)據(jù)塊回收至預(yù)設(shè)回收庫(kù)中。
優(yōu)選的,所述RAID維護(hù)方法,還包括:
當(dāng)所述預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊的總數(shù)量大于或等于預(yù)設(shè)數(shù)量,則將所述預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊構(gòu)建成一個(gè)新的超級(jí)塊。
本發(fā)明還公開(kāi)了一種基于可變條帶的RAID維護(hù)系統(tǒng),包括:
寫(xiě)入操作監(jiān)視模塊,用于在將目標(biāo)數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)塊的過(guò)程中,對(duì)相應(yīng)的寫(xiě)入操作進(jìn)行實(shí)時(shí)監(jiān)視,其中,所述第一數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第一超級(jí)塊上的任一數(shù)據(jù)塊;
數(shù)據(jù)重寫(xiě)模塊,用于當(dāng)所述寫(xiě)入操作監(jiān)視模塊監(jiān)視到所述寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則將所述目標(biāo)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)塊,所述第二數(shù)據(jù)塊為位于所述目標(biāo)RAID條帶的第二超級(jí)塊上的任一數(shù)據(jù)塊;
數(shù)據(jù)塊標(biāo)記模塊,用于當(dāng)所述寫(xiě)入操作監(jiān)視模塊監(jiān)視到所述寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則在預(yù)設(shè)映射文件中將所述第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以相應(yīng)地使所述第一超級(jí)塊上的條帶長(zhǎng)度減1,所述預(yù)設(shè)映射文件為預(yù)先記錄的超級(jí)塊與數(shù)據(jù)塊之間映射關(guān)系的文件;
RAID實(shí)現(xiàn)模塊,用于在所述數(shù)據(jù)塊標(biāo)記模塊進(jìn)行標(biāo)記處理后,若當(dāng)前所述第一超級(jí)塊上的條帶長(zhǎng)度大于或等于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前所述第一超級(jí)塊上重新實(shí)現(xiàn)RAID,所述預(yù)設(shè)最短長(zhǎng)度為能允許在超級(jí)塊上實(shí)現(xiàn)RAID的最短條帶長(zhǎng)度。
優(yōu)選的,所述預(yù)設(shè)映射文件為基于bitmap方式進(jìn)行構(gòu)建的映射文件。
優(yōu)選的,所述RAID維護(hù)系統(tǒng),還包括:
數(shù)據(jù)遷移模塊,用于在所述RAID實(shí)現(xiàn)模塊重新實(shí)現(xiàn)RAID之前,將所述第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊。
優(yōu)選的,所述RAID維護(hù)系統(tǒng),還包括:
數(shù)據(jù)塊回收模塊,用于在所述數(shù)據(jù)遷移模塊將所述第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊之后,若當(dāng)前所述第一超級(jí)塊上的條帶長(zhǎng)度小于所述預(yù)設(shè)最短長(zhǎng)度,則將當(dāng)前所述第一超級(jí)塊上的所有完好數(shù)據(jù)塊回收至預(yù)設(shè)回收庫(kù)中。
優(yōu)選的,所述RAID維護(hù)系統(tǒng),還包括:
超級(jí)塊構(gòu)建模塊,用于當(dāng)所述預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊的總數(shù)量大于或等于預(yù)設(shè)數(shù)量,則將所述預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊構(gòu)建成一個(gè)新的超級(jí)塊。
本發(fā)明中,RAID維護(hù)方法,包括:在將目標(biāo)數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)塊的過(guò)程中,對(duì)相應(yīng)的寫(xiě)入操作進(jìn)行實(shí)時(shí)監(jiān)視,其中,第一數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第一超級(jí)塊上的任一數(shù)據(jù)塊;若監(jiān)視到寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則將目標(biāo)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)塊,并在預(yù)設(shè)映射文件中將第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以相應(yīng)地使第一超級(jí)塊上的條帶長(zhǎng)度減1;其中,第二數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第二超級(jí)塊上的任一數(shù)據(jù)塊,預(yù)設(shè)映射文件為預(yù)先記錄的超級(jí)塊與數(shù)據(jù)塊之間映射關(guān)系的文件;若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度大于或等于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)塊上重新實(shí)現(xiàn)RAID。
可見(jiàn),本發(fā)明中,當(dāng)超級(jí)塊中的第一數(shù)據(jù)塊出現(xiàn)寫(xiě)入錯(cuò)誤時(shí),則將相應(yīng)的數(shù)據(jù)寫(xiě)入另一個(gè)超級(jí)塊上,并將上述第一數(shù)據(jù)塊的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),由此使得第一超級(jí)塊上的條帶長(zhǎng)度減少1;并且,在上述超級(jí)塊的條帶長(zhǎng)度減少了1的情況下,若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度不小于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)快上重新實(shí)現(xiàn)RAID。相較于現(xiàn)有技術(shù)的RAID維護(hù)方式,本發(fā)明只需將損壞的數(shù)據(jù)塊進(jìn)行相應(yīng)地標(biāo)記,然后在條帶長(zhǎng)度減少了1的超級(jí)塊上重新實(shí)現(xiàn)RAID,而無(wú)需利用好的數(shù)據(jù)塊來(lái)替換壞的數(shù)據(jù)塊以維持超級(jí)塊條帶長(zhǎng)度的穩(wěn)定性,從而避免了現(xiàn)有技術(shù)中由于需要對(duì)超級(jí)塊和數(shù)據(jù)塊之間的映射表進(jìn)行動(dòng)態(tài)維護(hù)所帶來(lái)的復(fù)雜性,也即,本發(fā)明降低了RAID維護(hù)過(guò)程的復(fù)雜性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開(kāi)的一種基于可變條帶的RAID維護(hù)方法流程圖;
圖2為本發(fā)明實(shí)施例公開(kāi)的一種基于可變條帶的RAID維護(hù)系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例公開(kāi)了一種基于可變條帶的RAID維護(hù)方法,參見(jiàn)圖1所示,該方法包括:
步驟S11:在將目標(biāo)數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)塊的過(guò)程中,對(duì)相應(yīng)的寫(xiě)入操作進(jìn)行實(shí)時(shí)監(jiān)視,其中,第一數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第一超級(jí)塊上的任一數(shù)據(jù)塊。
需要說(shuō)明的是,本發(fā)明實(shí)施例是應(yīng)用在固態(tài)硬盤(pán)的RAID磁盤(pán)陣列,其中,RAID磁盤(pán)陣列包括至少一個(gè)RAID條帶,每個(gè)RAID條帶內(nèi)包括至少兩個(gè)超級(jí)塊,每個(gè)超級(jí)塊包括多組數(shù)據(jù)塊,每個(gè)超級(jí)塊中數(shù)據(jù)塊的組數(shù)即為該超級(jí)塊所對(duì)應(yīng)的條帶長(zhǎng)度。本發(fā)明實(shí)施例中,每個(gè)超級(jí)塊中數(shù)據(jù)塊的總組數(shù)小于或等于固態(tài)硬盤(pán)的通道數(shù),每個(gè)超級(jí)塊中的每組數(shù)據(jù)塊均獨(dú)立地對(duì)應(yīng)于固態(tài)硬盤(pán)的一個(gè)通道。
步驟S12:若監(jiān)視到寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則將目標(biāo)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)塊,并在預(yù)設(shè)映射文件中將第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以相應(yīng)地使第一超級(jí)塊上的條帶長(zhǎng)度減1;其中,第二數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第二超級(jí)塊上的任一數(shù)據(jù)塊,預(yù)設(shè)映射文件為預(yù)先記錄的超級(jí)塊與數(shù)據(jù)塊之間映射關(guān)系的文件。
也即,在上述第一數(shù)據(jù)塊出現(xiàn)寫(xiě)入錯(cuò)誤事件后,則將相應(yīng)的目標(biāo)數(shù)據(jù)寫(xiě)到同一RAID條帶的另一超級(jí)塊中,并在預(yù)設(shè)映射文件中將上述第一數(shù)據(jù)塊的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以使上述第一數(shù)據(jù)塊所在的一組數(shù)據(jù)塊處于被隔離的無(wú)效狀態(tài),也即使得上述第一超級(jí)塊上的條帶長(zhǎng)度減1。
例如,假設(shè)某個(gè)超級(jí)塊原本擁有的數(shù)據(jù)塊的組數(shù)為5組,也即,該超級(jí)塊的條帶長(zhǎng)度為5;若超級(jí)塊中的某個(gè)數(shù)據(jù)塊出現(xiàn)了寫(xiě)錯(cuò)誤事件,則將該數(shù)據(jù)塊標(biāo)記為不可寫(xiě)數(shù)據(jù)塊,以將該數(shù)據(jù)塊所在的一組數(shù)據(jù)塊隔離出來(lái),從而使得該超級(jí)塊的條帶長(zhǎng)度變成4。
步驟S13:若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度大于或等于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)塊上重新實(shí)現(xiàn)RAID,其中,預(yù)設(shè)最短長(zhǎng)度為能允許在超級(jí)塊上實(shí)現(xiàn)RAID的最短條帶長(zhǎng)度。
可以理解的是,在超級(jí)塊上實(shí)現(xiàn)RAID時(shí),對(duì)超級(jí)塊的條帶長(zhǎng)度是有最低要求的。而這個(gè)最低要求便是上述所謂的預(yù)設(shè)最短長(zhǎng)度。
本實(shí)施例中,當(dāng)某個(gè)超級(jí)塊由于內(nèi)部的數(shù)據(jù)塊出現(xiàn)寫(xiě)入錯(cuò)誤而導(dǎo)致條帶長(zhǎng)度減少后,若當(dāng)前該超級(jí)塊的條帶長(zhǎng)度依然不小于上述預(yù)設(shè)最短長(zhǎng)度,則可在該超級(jí)塊上重新實(shí)現(xiàn)RAID。
可見(jiàn),本發(fā)明實(shí)施例中,當(dāng)超級(jí)塊中的第一數(shù)據(jù)塊出現(xiàn)寫(xiě)入錯(cuò)誤時(shí),則將相應(yīng)的數(shù)據(jù)寫(xiě)入另一個(gè)超級(jí)塊上,并將上述第一數(shù)據(jù)塊的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),由此使得第一超級(jí)塊上的條帶長(zhǎng)度減少1;并且,在上述超級(jí)塊的條帶長(zhǎng)度減少了1的情況下,若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度不小于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)快上重新實(shí)現(xiàn)RAID。相較于現(xiàn)有技術(shù)的RAID維護(hù)方式,本發(fā)明實(shí)施例只需將損壞的數(shù)據(jù)塊進(jìn)行相應(yīng)地標(biāo)記,然后在條帶長(zhǎng)度減少了1的超級(jí)塊上重新實(shí)現(xiàn)RAID,而無(wú)需利用好的數(shù)據(jù)塊來(lái)替換壞的數(shù)據(jù)塊以維持超級(jí)塊條帶長(zhǎng)度的穩(wěn)定性,從而避免了現(xiàn)有技術(shù)中由于需要對(duì)超級(jí)塊和數(shù)據(jù)塊之間的映射表進(jìn)行動(dòng)態(tài)維護(hù)所帶來(lái)的復(fù)雜性,也即,本發(fā)明實(shí)施例降低了RAID維護(hù)過(guò)程的復(fù)雜性。
本發(fā)明實(shí)施例公開(kāi)了一種具體的基于可變條帶的RAID維護(hù)方法,相對(duì)于上一實(shí)施例,本實(shí)施例對(duì)技術(shù)方案作了進(jìn)一步的說(shuō)明和優(yōu)化。具體的:
上一實(shí)施例步驟S12中,當(dāng)監(jiān)視到寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則在預(yù)設(shè)映射文件中將第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài)。具體的,上述預(yù)設(shè)映射文件可以是基于bitmap方式進(jìn)行構(gòu)建的映射文件,當(dāng)然,也可以采用現(xiàn)有的其他映射文件構(gòu)建方式來(lái)構(gòu)建上述預(yù)設(shè)映射文件。
另外,上一實(shí)施例步驟S13中,在第一超級(jí)塊上的條帶長(zhǎng)度減1后,若當(dāng)前第一超級(jí)塊的條帶長(zhǎng)度不小于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)快上重新實(shí)現(xiàn)RAID。當(dāng)然,為了避免丟失第一超級(jí)塊中已有的有效數(shù)據(jù),本發(fā)明實(shí)施例中,在當(dāng)前第一超級(jí)塊上重新實(shí)現(xiàn)RAID的過(guò)程之前,還可以進(jìn)一步包括:將第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊。例如,可以在重新實(shí)現(xiàn)RAID之前,將第一超級(jí)塊中的所有有效數(shù)據(jù)遷移至其他RAID條帶中的超級(jí)塊中,也可以遷移至同一RAID條帶中的超級(jí)塊。
本發(fā)明實(shí)施例中,在將所述第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊之后,還可以進(jìn)一步包括:若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度小于上述預(yù)設(shè)最短長(zhǎng)度,則將當(dāng)前第一超級(jí)塊上的所有完好數(shù)據(jù)塊回收至預(yù)設(shè)回收庫(kù)中。
進(jìn)一步的,本發(fā)明實(shí)施例中的RAID維護(hù)方法,還可以包括:當(dāng)上述預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊的總數(shù)量大于或等于預(yù)設(shè)數(shù)量,則將預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊構(gòu)建成一個(gè)新的超級(jí)塊??梢岳斫獾氖?,上述預(yù)設(shè)數(shù)量為不小于上述預(yù)設(shè)最短長(zhǎng)度的數(shù)值。另外,在將上述預(yù)設(shè)回收庫(kù)中的完好數(shù)據(jù)塊構(gòu)建成一個(gè)新的超級(jí)塊后,還可在該超級(jí)塊上實(shí)現(xiàn)RAID。
相應(yīng)的,本發(fā)明實(shí)施例還公開(kāi)了一種基于可變條帶的RAID維護(hù)系統(tǒng),參見(jiàn)圖2所示,該系統(tǒng)包括:
寫(xiě)入操作監(jiān)視模塊21,用于在將目標(biāo)數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)塊的過(guò)程中,對(duì)相應(yīng)的寫(xiě)入操作進(jìn)行實(shí)時(shí)監(jiān)視,其中,第一數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第一超級(jí)塊上的任一數(shù)據(jù)塊;
數(shù)據(jù)重寫(xiě)模塊22,用于當(dāng)寫(xiě)入操作監(jiān)視模塊21監(jiān)視到寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則將目標(biāo)數(shù)據(jù)寫(xiě)入第二數(shù)據(jù)塊,第二數(shù)據(jù)塊為位于目標(biāo)RAID條帶的第二超級(jí)塊上的任一數(shù)據(jù)塊;
數(shù)據(jù)塊標(biāo)記模塊23,用于當(dāng)寫(xiě)入操作監(jiān)視模塊21監(jiān)視到寫(xiě)入操作發(fā)生寫(xiě)錯(cuò)誤事件,則在預(yù)設(shè)映射文件中將第一數(shù)據(jù)塊當(dāng)前的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),以相應(yīng)地使第一超級(jí)塊上的條帶長(zhǎng)度減1,預(yù)設(shè)映射文件為預(yù)先記錄的超級(jí)塊與數(shù)據(jù)塊之間映射關(guān)系的文件;
RAID實(shí)現(xiàn)模塊24,用于在數(shù)據(jù)塊標(biāo)記模塊23進(jìn)行標(biāo)記處理后,若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度大于或等于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)塊上重新實(shí)現(xiàn)RAID,預(yù)設(shè)最短長(zhǎng)度為能允許在超級(jí)塊上實(shí)現(xiàn)RAID的最短條帶長(zhǎng)度。
可見(jiàn),本發(fā)明實(shí)施例中,當(dāng)超級(jí)塊中的第一數(shù)據(jù)塊出現(xiàn)寫(xiě)入錯(cuò)誤時(shí),則將相應(yīng)的數(shù)據(jù)寫(xiě)入另一個(gè)超級(jí)塊上,并將上述第一數(shù)據(jù)塊的狀態(tài)標(biāo)記為不可寫(xiě)狀態(tài),由此使得第一超級(jí)塊上的條帶長(zhǎng)度減少1;并且,在上述超級(jí)塊的條帶長(zhǎng)度減少了1的情況下,若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度不小于預(yù)設(shè)最短長(zhǎng)度,則在當(dāng)前第一超級(jí)快上重新實(shí)現(xiàn)RAID。相較于現(xiàn)有技術(shù)的RAID維護(hù)方式,本發(fā)明實(shí)施例只需將損壞的數(shù)據(jù)塊進(jìn)行相應(yīng)地標(biāo)記,然后在條帶長(zhǎng)度減少了1的超級(jí)塊上重新實(shí)現(xiàn)RAID,而無(wú)需利用好的數(shù)據(jù)塊來(lái)替換壞的數(shù)據(jù)塊以維持超級(jí)塊條帶長(zhǎng)度的穩(wěn)定性,從而避免了現(xiàn)有技術(shù)中由于需要對(duì)超級(jí)塊和數(shù)據(jù)塊之間的映射表進(jìn)行動(dòng)態(tài)維護(hù)所帶來(lái)的復(fù)雜性,也即,本發(fā)明實(shí)施例降低了RAID維護(hù)過(guò)程的復(fù)雜性。
優(yōu)選的,上述預(yù)設(shè)映射文件具體可以為基于bitmap方式進(jìn)行構(gòu)建的映射文件。
進(jìn)一步的,本實(shí)施例中的RAID維護(hù)系統(tǒng),還可以包括:
數(shù)據(jù)遷移模塊,用于在RAID實(shí)現(xiàn)模塊重新實(shí)現(xiàn)RAID之前,將第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊。
本實(shí)施例中的RAID維護(hù)系統(tǒng),還可以進(jìn)一步包括:
數(shù)據(jù)塊回收模塊,用于在數(shù)據(jù)遷移模塊將第一超級(jí)塊上已保存的所有有效數(shù)據(jù)遷移至其他超級(jí)塊之后,若當(dāng)前第一超級(jí)塊上的條帶長(zhǎng)度小于預(yù)設(shè)最短長(zhǎng)度,則將當(dāng)前第一超級(jí)塊上的所有完好數(shù)據(jù)塊回收至預(yù)設(shè)回收庫(kù)中。
另外,本實(shí)施例中的RAID維護(hù)系統(tǒng),還可以進(jìn)一步包括:
超級(jí)塊構(gòu)建模塊,用于當(dāng)預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊的總數(shù)量大于或等于預(yù)設(shè)數(shù)量,則將預(yù)設(shè)回收庫(kù)中的所有完好數(shù)據(jù)塊構(gòu)建成一個(gè)新的超級(jí)塊。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種基于可變條帶的RAID維護(hù)方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。