一種raid5系統(tǒng)及在raid5系統(tǒng)失效后繼續(xù)寫數(shù)據(jù)的方法
【技術(shù)領(lǐng)域】
[0001 ] 本申請(qǐng)涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及獨(dú)立冗余磁盤陣列(Redundant Arrayof Independent Disk,RAID)技術(shù),尤其涉及一種RAID5系統(tǒng)及在RAID5系統(tǒng)失效后繼續(xù)寫數(shù)據(jù)的方法。
【背景技術(shù)】
[0002]獨(dú)立冗余磁盤陣列(RedundantArray of Independent Disk,RAID)技術(shù)將多個(gè)單獨(dú)的物理硬盤以特定方式組合成一個(gè)邏輯硬盤,從而提高了硬盤的讀寫性能和數(shù)據(jù)安全性。根據(jù)不同的組合方式可以分為不同的RAID級(jí)別。常用RAID級(jí)別有:0、1、2、3、4、5、6、01、10等。
[0003]RAID 5是以數(shù)據(jù)的校驗(yàn)位來保證數(shù)據(jù)的安全,但它不是以單獨(dú)某一個(gè)硬盤來存放數(shù)據(jù)的校驗(yàn)位,而是將數(shù)據(jù)段的校驗(yàn)位交替存放于各個(gè)硬盤上。RAID5磁盤陣列中的數(shù)據(jù)存放結(jié)構(gòu)如圖1所示。圖1中示出了由四個(gè)磁盤組成的一個(gè)RAID5磁盤陣列,每一個(gè)圓柱體表示一個(gè)磁盤;?(?31';^7)表示校驗(yàn)位,0((^〖3)表示數(shù)據(jù)段,校驗(yàn)數(shù)據(jù)的計(jì)算方式為異或(101.)。在圖1所示例子中,每三個(gè)數(shù)據(jù)段的異或結(jié)果作為這三個(gè)數(shù)據(jù)段的校驗(yàn)位。例如,校驗(yàn)位Pi是數(shù)據(jù)段D1、D2、D3的異或結(jié)果,S卩Pl=DleD2?D3。這樣任何一個(gè)硬盤損壞,都可以根據(jù)其它硬盤上的校驗(yàn)位以及數(shù)據(jù)段來重建損壞的數(shù)據(jù)。
[0004]根據(jù)以上所述的RAID5技術(shù)原理,當(dāng)該磁盤陣列中出現(xiàn)I塊硬盤故障,可以通過重建的方式恢復(fù)該壞盤上的數(shù)據(jù);但是當(dāng)出現(xiàn)2塊硬盤故障后,RAID5磁盤陣列就失效了,這時(shí)候就不能再對(duì)該RAID5磁盤陣列剩余的正常磁盤做任何讀寫操作,特別是不能繼續(xù)寫數(shù)據(jù),有可能會(huì)導(dǎo)致嚴(yán)重的丟失數(shù)據(jù)事故。因?yàn)榧词故潞蟀裄AID5磁盤數(shù)據(jù)恢復(fù),也會(huì)因?yàn)镽AID5故障時(shí)間段內(nèi)業(yè)務(wù)數(shù)據(jù)沒有及時(shí)寫到RAID組中而導(dǎo)致這段數(shù)據(jù)的丟失。特別是對(duì)于在線視頻監(jiān)控這類的應(yīng)用,對(duì)于連續(xù)視頻數(shù)據(jù)記錄的要求很高,因此需要采用一定的技術(shù)手段保證在RAID5磁盤陣列出現(xiàn)2塊磁盤故障后仍然能夠繼續(xù)寫入視頻流數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┝艘环NRAID5系統(tǒng)及在RAID5系統(tǒng)失效后繼續(xù)寫數(shù)據(jù)的方法,能夠滿足連續(xù)寫入數(shù)據(jù)的要求。
[0006]本申請(qǐng)實(shí)施例提供的一種在RAID5系統(tǒng)失效后繼續(xù)寫數(shù)據(jù)的方法,包括:
[0007]A、通過配置文件記錄第一RAID5磁盤組成員盤信息,記錄第一RAID磁盤組狀態(tài)為正常狀態(tài),通過第一位圖表記錄第一 RAID5磁盤組有效使用的條帶;
[0008]B、判斷第一 RAID5磁盤組是否出現(xiàn)失效的情況,若是,執(zhí)行步驟C,否則繼續(xù)執(zhí)行本步驟;
[0009]C、將第一 RAID磁盤組的狀態(tài)變更為失效狀態(tài),通過配置文件獲知磁盤組還有哪些磁盤是正常的,通過第一位圖表獲知磁盤組中正常磁盤還有哪些條帶空間還沒有被使用以及剩余空間的大??;
[0010]D、生成用于記錄所述正常磁盤的條帶使用情況的第二位圖表;
[0011]E、若收到寫新數(shù)據(jù)的寫請(qǐng)求,通過第二位圖表查找正常磁盤的剩余空閑的條帶位置,在所述空閑條帶中寫入新數(shù)據(jù),并且把該條帶位置記錄到第二位圖表中。
[0012]可選地,步驟B包括:如果僅出現(xiàn)I塊磁盤故障,開始做數(shù)據(jù)重建;數(shù)據(jù)重建過程中又出現(xiàn)I塊磁盤故障,則執(zhí)行步驟C。
[0013]可選地,步驟D之后進(jìn)一步包括:
[0014]D1、若收到新的1請(qǐng)求,通過第一位圖表判斷該1請(qǐng)求是讀寫已有數(shù)據(jù)還是寫新數(shù)據(jù),若是讀寫已有數(shù)據(jù),則反饋錯(cuò)誤到上層,并返回步驟Dl;若寫新數(shù)據(jù),執(zhí)行步驟E。
[0015]可選地,步驟E所述在所述空閑條帶中寫入新數(shù)據(jù)包括:如果該RAID5剩余正常磁盤數(shù)量大于3個(gè),將剩余正常磁盤組成第二RAID5磁盤組存放數(shù)據(jù),剩余磁盤數(shù)據(jù)小于3個(gè)就按照RAIDO的方式存放數(shù)據(jù)。
[0016]可選地,若第二RAID5磁盤組失效,按照步驟C至步驟E找到正常磁盤和空閑條帶,如果正常磁盤數(shù)目大于3,繼續(xù)組成第三RAID5磁盤組存放數(shù)據(jù),剩余磁盤數(shù)據(jù)小于3個(gè)就按照RAIDO的方式存放數(shù)據(jù)。
[0017]可選地,步驟E之后進(jìn)一步包括:按照第一位圖表和第二位圖表記錄的條帶位置,分別恢復(fù)故障前數(shù)據(jù)以及故障后寫入的數(shù)據(jù)
[0018]本申請(qǐng)實(shí)施例還提供了一種RAID5系統(tǒng),包括:
[0019]第一模塊,用于通過配置文件記錄第一 RAID5磁盤組成員盤信息,記錄第一 RAID磁盤組狀態(tài)為正常狀態(tài),通過第一位圖表記錄第一 RAID5磁盤組有效使用的條帶;
[0020]第二模塊,用于判斷第一RAID5磁盤組是否出現(xiàn)失效的情況,若是,使能第三模塊;
[0021]第三模塊,用于將第一RAID磁盤組的狀態(tài)變更為失效狀態(tài),通過配置文件獲知磁盤組還有哪些磁盤是正常的,通過第一位圖表獲知磁盤組中正常磁盤還有哪些條帶空間還沒有被使用以及剩余空間的大??;
[0022]第四模塊,用于生成用于記錄所述正常磁盤的條帶使用情況的第二位圖表;
[0023]第五模塊,用于在生成第二位圖表之后,若收到寫新數(shù)據(jù)的寫請(qǐng)求,通過第二位圖表查找正常磁盤的剩余空閑的條帶位置,在所述空閑條帶中寫入新數(shù)據(jù),并且把該條帶位置記錄到第二位圖表中。
[0024]可選地,該RAID5系統(tǒng)進(jìn)一步包括:
[0025]第六模塊,用于在生成第二位圖表之后,若收到新的1請(qǐng)求,通過第一位圖表判斷該1請(qǐng)求是讀寫已有數(shù)據(jù)還是寫新數(shù)據(jù),若是讀寫已有數(shù)據(jù),則反饋錯(cuò)誤到上層。
[0026]可選地,如果該RAID5剩余正常磁盤數(shù)量大于3個(gè),所述第五模塊將剩余正常磁盤組成第二RAID5磁盤組存放數(shù)據(jù),剩余磁盤數(shù)據(jù)小于3個(gè),第五模塊就按照RAIDO的方式存放數(shù)據(jù)。
[0027]可選地,該RAID5系統(tǒng)進(jìn)一步包括:
[0028]第七模塊,用于按照第一位圖表和第二位圖表記錄的條帶位置,分別恢復(fù)故障前數(shù)據(jù)以及故障后寫入的數(shù)據(jù)。
[0029]從以上技術(shù)方案可以看出,在RAID5磁盤組失效后,找到剩余正常磁盤以及正常磁盤中的空閑條帶,在所述空閑條帶中寫入新數(shù)據(jù),從而實(shí)現(xiàn)了連續(xù)寫入數(shù)據(jù)。較佳地,如果剩余正常磁盤的數(shù)目大于3,還可以將剩余磁盤組成新的RAID5磁盤組,以保證數(shù)據(jù)安全。
【附圖說明】
[0030]圖1為RAID5磁盤陣列中的數(shù)據(jù)存放結(jié)構(gòu)示意圖;
[0031]圖2為本申請(qǐng)實(shí)施例提供的在RAID5系統(tǒng)失效后繼續(xù)寫視頻流數(shù)據(jù)的方法流程示意圖。
【具體實(shí)施方式】
[0032]為使本申請(qǐng)技術(shù)方案的技術(shù)原理、特點(diǎn)以及技術(shù)效果更加清楚,以下結(jié)合具體實(shí)施例對(duì)本申請(qǐng)技術(shù)方案進(jìn)行詳細(xì)闡述。
[0033]本申請(qǐng)實(shí)施例提供的在RAID5系統(tǒng)失效后繼續(xù)寫數(shù)據(jù)的方法流程如圖2所示,包括如下步驟:
[0034]步驟201:創(chuàng)建第一 RAID5磁盤組的時(shí)候,通過配置文件記錄該磁盤組成員盤信息,記錄第一 RAID磁盤組狀態(tài)為正常狀態(tài),通過第一位圖表(bitmapl)記錄第一 RAID5磁盤組有效使用的條帶。
[0035]例如,對(duì)于每一個(gè)條帶在第一位圖表中有一個(gè)比特對(duì)應(yīng),如果該條帶已使用,其對(duì)應(yīng)比特置為I,反之置為O。
[0036]步驟202:判斷第一RAID5磁盤組是否出現(xiàn)失效的情況,若是,執(zhí)行步驟203,否則繼續(xù)執(zhí)行本步驟。該步驟為可選步驟。
[0037]其中,如果僅出現(xiàn)I塊磁盤故障,可以正常工作或者開始做數(shù)據(jù)重建;數(shù)據(jù)重建過程中又出現(xiàn)I塊磁盤故障,則執(zhí)行步驟203。
[0038]步驟203:將第一RAID磁盤組的狀態(tài)變更為失效狀態(tài),通過配置文件獲知磁盤組還有哪些磁盤是正常的,通過第一位圖表獲知磁盤組中正常磁盤還有哪些條帶空間還沒有被使用以及剩余空間的大小。
[0039]步驟204:生成用于記錄所述正常磁盤的條帶使用情況的第二位圖表。
[0040]生成第二位圖表的方式可以是將當(dāng)前時(shí)刻的第一位圖表拷貝一個(gè)副本,作為第二位圖表。
[0041]步驟205:若收到新的1請(qǐng)求,通過第一位圖表判斷該1請(qǐng)求是讀寫已有數(shù)據(jù)還是寫新數(shù)據(jù),若是讀寫已有數(shù)據(jù),則執(zhí)行步驟206;若寫新數(shù)據(jù),執(zhí)行步驟207。
[0042]通常情況下,對(duì)于監(jiān)控視頻這類應(yīng)用,在一般工作狀態(tài)下,只有寫新數(shù)據(jù)的10,沒有讀寫的1