專利名稱:一種基于磁盤陣列的數(shù)據(jù)處理方法及磁盤陣列管理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域的數(shù)據(jù)存儲技術(shù),尤其涉及一種基于磁盤陣列的數(shù)據(jù)處理方法及磁盤陣列管理器。
背景技術(shù):
在存儲系統(tǒng)中,一般用磁盤陣列作為存儲介質(zhì),通過RAIDOtedundant Array of Independent Disks,獨立硬盤冗余陣列)算法進(jìn)行數(shù)據(jù)冗余,通過熱備磁盤進(jìn)行磁盤備份。當(dāng)磁盤陣列中的成員磁盤發(fā)生故障(即介質(zhì)錯誤)時會導(dǎo)致數(shù)據(jù)讀寫失敗,存儲系統(tǒng)用熱備磁盤將出現(xiàn)故障的成員磁盤頂替掉,通過RAID算法進(jìn)行磁盤陣列重建,以繼續(xù)保持?jǐn)?shù)據(jù)冗余。在磁盤陣列重建開始后,存儲系統(tǒng)依次將故障磁盤的數(shù)據(jù)按條帶順序?qū)懭霟醾浯疟P的對應(yīng)條塊,在所有條帶完成對應(yīng)的寫入后,存儲系統(tǒng)將該故障磁盤踢出磁盤陣列,重建完成。如果存儲系統(tǒng)中沒有多余的熱備磁盤,則磁盤陣列將發(fā)生故障的成員磁盤踢出陣列并降級運行,不再具有數(shù)據(jù)的冗余性。此時如果再有新的成員磁盤發(fā)生故障,則陣列失效,無法繼續(xù)提供存儲業(yè)務(wù)。在發(fā)生陣列失效后,可以通過其他專用的數(shù)據(jù)恢復(fù)工具將磁盤陣列中失效前已經(jīng)保存的數(shù)據(jù)進(jìn)行恢復(fù),但是對失效后的數(shù)據(jù)則無能為力。在監(jiān)控存儲的應(yīng)用場景中,一般而言,監(jiān)控系統(tǒng)中配置少量熱備磁盤以為多個陣列備份,這樣可以在降低成本的同時保證一定的數(shù)據(jù)冗余能力。當(dāng)發(fā)生多于一塊成員磁盤故障且沒有熱備磁盤的情況時,將導(dǎo)致磁盤陣列失效而無法繼續(xù)進(jìn)行監(jiān)控數(shù)據(jù)保存。由于監(jiān)控存儲的數(shù)據(jù)流是M小時不間斷寫入,如果長時間沒有人工進(jìn)行介入,容易造成監(jiān)控數(shù)據(jù)長時間丟失。由此可見,目前的磁盤陣列故障處理機(jī)制對磁盤介質(zhì)錯誤的容忍度較低。
發(fā)明內(nèi)容
本發(fā)明提供一種基于磁盤陣列的數(shù)據(jù)處理方法及磁盤陣列管理器,用以提高磁盤陣列對磁盤介質(zhì)錯誤的容忍程度。本發(fā)明提供的基于磁盤陣列的數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)存儲系統(tǒng)中存儲有數(shù)據(jù)結(jié)構(gòu),用于記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,以及對該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建后重建數(shù)據(jù)塊所在的熱備磁盤,該方法包括磁盤陣列管理器根據(jù)所述數(shù)據(jù)結(jié)構(gòu)對磁盤陣列進(jìn)行讀寫;當(dāng)磁盤陣列發(fā)生讀寫失敗時,磁盤陣列管理器在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,并統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量,則根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊并將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,并記錄該重建數(shù)據(jù)塊所在的熱備磁盤;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,但所超出的數(shù)量未超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則根據(jù)磁盤陣列校驗算法重建
6發(fā)生讀寫失敗的數(shù)據(jù)塊;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,且所超出的數(shù)量超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則設(shè)置該條帶失效。本發(fā)明提供的磁盤陣列管理器,應(yīng)用于數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)存儲系統(tǒng)中存儲有數(shù)據(jù)結(jié)構(gòu),用于記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,以及對該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建后重建數(shù)據(jù)塊所在的熱備磁盤,該磁盤陣列管理器包括讀寫模塊、數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊、處理模塊和數(shù)據(jù)重建模塊,其中讀寫模塊,用于根據(jù)所述處理模塊的指示對磁盤陣列進(jìn)行讀寫;數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊,用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤;以及,根據(jù)所述處理模塊的指示,在所述讀寫模塊將重建數(shù)據(jù)塊寫入熱備磁盤后,在所述數(shù)據(jù)結(jié)構(gòu)中記錄該重建數(shù)據(jù)塊所屬的條帶和所在的成員磁盤以及該熱備磁盤;數(shù)據(jù)重建模塊,用于按照所述處理模塊的指示,根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;處理模塊,用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量,則指示所述數(shù)據(jù)重建模塊根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊,并指示所述讀寫模塊將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,以及指示數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在該數(shù)據(jù)結(jié)構(gòu)中記錄該重建數(shù)據(jù)塊所屬的條帶和所在的成員磁盤以及該熱備磁盤;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,但未超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量, 則指示所述數(shù)據(jù)重建模塊根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,且超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則指示所述數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在該數(shù)據(jù)結(jié)構(gòu)中設(shè)置所述條帶失效。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益技術(shù)效果在磁盤陣列發(fā)生讀寫失敗時,由于在相應(yīng)條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量的情況下,通過在熱備磁盤對該條帶數(shù)據(jù)進(jìn)行數(shù)據(jù)重建后將該熱備磁盤加入該磁盤陣列,這樣還能夠保證該條帶的冗余性,因此仍然將發(fā)生讀寫失敗的成員磁盤保持在磁盤陣列中,提高了磁盤陣列的容錯能力。即便磁盤陣列中有超過熱備磁盤數(shù)量的多個成員磁盤發(fā)生讀寫失敗,只要任意條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量超出熱備磁盤數(shù)量的部分未超過該磁盤陣列所允許的容錯能力,即使在磁盤陣列沒有熱備磁盤可用的情況下,仍然能夠通過熱備磁盤參與數(shù)據(jù)重建來保證相應(yīng)條帶的數(shù)據(jù)完整性,即保證磁盤陣列數(shù)據(jù)的完整性,存儲系統(tǒng)可繼續(xù)提供數(shù)據(jù)存儲服務(wù),從而提高了磁盤陣列的容錯能力。
圖1為本發(fā)明實施例提供的基于磁盤陣列的數(shù)據(jù)處理流程示意圖;圖2為本發(fā)明實施例提供的采用Hash表組織存儲條塊映射表的示意圖;圖3A為本發(fā)明實施例中有一個磁盤發(fā)生介質(zhì)錯誤并進(jìn)行重建的示意圖;圖;3B為本發(fā)明實施例中有兩個磁盤發(fā)生介質(zhì)錯誤并進(jìn)行重建的示意圖;圖3C為本發(fā)明實施例中有三個磁盤發(fā)生介質(zhì)錯誤并進(jìn)行重建的示意圖3D、圖3E、圖3F為本發(fā)明實施例中加入新盤后的磁盤陣列重建的示意圖;圖4A為現(xiàn)有技術(shù)中在有熱備磁盤時發(fā)生磁盤介質(zhì)錯誤時的示意圖;圖4B為現(xiàn)有技術(shù)中在沒有熱備磁盤時發(fā)生磁盤介質(zhì)錯誤時的示意圖;圖5為本發(fā)明實施例提供的磁盤陣列管理器的結(jié)構(gòu)示意圖;圖6A、圖6B和圖6C分別為圖5所示的磁盤陣列管理器中的處理模塊的結(jié)構(gòu)示意 圖;圖7A和圖7B分別為圖5所示的磁盤陣列管理器中的數(shù)據(jù)重建模塊的結(jié)構(gòu)示意 圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明實施例進(jìn)行詳細(xì)描述。本發(fā)明實施例中,需要在存儲系統(tǒng)中建立和維護(hù)條塊映射表,該映射表用于記錄 發(fā)生讀寫失敗的數(shù)據(jù)塊(以下將“發(fā)生讀寫失敗的數(shù)據(jù)塊”簡稱為“壞塊”)所屬的條帶和 所在的成員磁盤。該條塊映射表是磁盤陣列管理器能夠正確對磁盤陣列進(jìn)行數(shù)據(jù)讀寫的 依據(jù),還是對磁盤陣列進(jìn)行重建的依據(jù)。條塊映射表可存儲在內(nèi)存、NVRAM (Non-Volati Ie Random Access Memory,非易失性隨機(jī)訪問存儲器)或其他永久存儲介質(zhì)中,通常可在存儲 系統(tǒng)初始化時創(chuàng)建條塊映射表,在存儲系統(tǒng)重新啟動后,可從NVRAM或其他永久存儲介質(zhì) 中讀取該條塊映射表并在內(nèi)存中重建,以便磁盤陣列管理器根據(jù)該條塊映射表進(jìn)行數(shù)據(jù)讀 寫。例如,在磁盤陣列類型為RAID5且僅有ー個熱備磁盤(該熱備磁盤的磁盤編號為 n+1)的情況下,條帶映射表的結(jié)構(gòu)可如表1所示。表 權(quán)利要求
1.一種基于磁盤陣列的數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)存儲系統(tǒng)中存儲有數(shù)據(jù)結(jié)構(gòu),用于記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,以及對該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建后重建數(shù)據(jù)塊所在的熱備磁盤,該方法包括磁盤陣列管理器根據(jù)所述數(shù)據(jù)結(jié)構(gòu)對磁盤陣列進(jìn)行讀寫;當(dāng)磁盤陣列發(fā)生讀寫失敗時,磁盤陣列管理器在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,并統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量,則根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊并將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,并記錄該重建數(shù)據(jù)塊所在的熱備磁盤;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,但所超出的數(shù)量未超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,且所超出的數(shù)量超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則設(shè)置該條帶失效。
2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)磁盤陣列發(fā)生讀寫失敗時,該方法還包括磁盤陣列管理器根據(jù)所述數(shù)據(jù)結(jié)構(gòu)判斷發(fā)生讀寫失敗的條帶數(shù)量是否達(dá)到設(shè)定閾值, 并在判斷發(fā)生讀寫失敗的條帶數(shù)量達(dá)到設(shè)定閾值時,設(shè)置所述磁盤陣列失效。
3.如權(quán)利要求1所述的方法,其特征在于,在第一次將重建數(shù)據(jù)塊寫入熱備磁盤中的相應(yīng)條塊時,磁盤陣列管理器還將本次發(fā)生讀寫失敗的數(shù)據(jù)塊所在成員磁盤中未發(fā)生讀寫失敗的各條帶的數(shù)據(jù)塊對應(yīng)寫入該熱備磁盤中的相應(yīng)條塊;當(dāng)磁盤陣列管理器向該成員磁盤再次寫入數(shù)據(jù)時,磁盤陣列管理器還根據(jù)所述數(shù)據(jù)結(jié)構(gòu)判斷熱備磁盤中的對應(yīng)條塊是否存儲有該成員磁盤的數(shù)據(jù),并在判斷為是時,向該熱備磁盤中的該條塊寫入相同的數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述磁盤陣列管理器根據(jù)所述數(shù)據(jù)結(jié)構(gòu)對磁盤陣列進(jìn)行讀寫的過程中,若根據(jù)所述數(shù)據(jù)結(jié)構(gòu)發(fā)現(xiàn)當(dāng)前數(shù)據(jù)塊所屬條帶存在有讀寫失敗的數(shù)據(jù)塊并對應(yīng)記錄有重建數(shù)據(jù)塊所在的熱備磁盤,則根據(jù)該條帶中未發(fā)生讀寫失敗的成員磁盤和該熱備磁盤進(jìn)行數(shù)據(jù)讀寫。
5.如權(quán)利要求1所述的方法,其特征在于,還包括當(dāng)使用所述熱備磁盤替換發(fā)生讀寫失敗的磁盤并增加新的熱備磁盤進(jìn)行磁盤陣列重建時,磁盤陣列管理器執(zhí)行根據(jù)所述數(shù)據(jù)結(jié)構(gòu),將原熱備磁盤中除該被替換成員磁盤以外的其它成員磁盤的數(shù)據(jù)寫入新的熱備磁盤中的相應(yīng)條帶,在該新的熱備磁盤的其余條帶中寫入除該被替換成員磁盤以外的一個發(fā)生讀寫失敗的成員磁盤的相應(yīng)條帶的數(shù)據(jù);根據(jù)所述數(shù)據(jù)結(jié)構(gòu),將被替換成員磁盤中未發(fā)生讀寫失敗的數(shù)據(jù)塊寫入原熱備磁盤中的相應(yīng)條帶;使用原熱備磁盤替換被替換成員磁盤,并將被替換成員磁盤踢出磁盤陣列。
6.如權(quán)利要求5所述的方法,其特征在于,所述被替換成員磁盤是所述磁盤管理服務(wù)器根據(jù)所述數(shù)據(jù)結(jié)構(gòu)選擇出的發(fā)生讀寫失敗的數(shù)據(jù)塊最多的成員磁盤。
7.如權(quán)利要求1-6之一所述的方法,其特征在于,在所述數(shù)據(jù)存儲系統(tǒng)中使用1個熱備磁盤,以及所述磁盤陣列為RAID5的情況下當(dāng)磁盤陣列發(fā)生讀寫失敗時,磁盤陣列管理器在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,并統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量為1,則根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊并將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,并記錄該重建數(shù)據(jù)塊所在的熱備磁盤;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量為2,則根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量大于2,則設(shè)置該條帶失效。
8.—種磁盤陣列管理器,應(yīng)用于數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)存儲系統(tǒng)中存儲有數(shù)據(jù)結(jié)構(gòu),用于記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,以及對該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建后重建數(shù)據(jù)塊所在的熱備磁盤,該磁盤陣列管理器包括讀寫模塊、數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊、處理模塊和數(shù)據(jù)重建模塊,其中讀寫模塊,用于根據(jù)所述處理模塊的指示對磁盤陣列進(jìn)行讀寫;數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊,用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤;以及,根據(jù)所述處理模塊的指示,在所述讀寫模塊將重建數(shù)據(jù)塊寫入熱備磁盤后,在所述數(shù)據(jù)結(jié)構(gòu)中記錄該重建數(shù)據(jù)塊所屬的條帶和所在的成員磁盤以及該熱備磁盤;數(shù)據(jù)重建模塊,用于按照所述處理模塊的指示,根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;處理模塊,用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量,則指示所述數(shù)據(jù)重建模塊根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊,并指示所述讀寫模塊將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,以及指示數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在該數(shù)據(jù)結(jié)構(gòu)中記錄該重建數(shù)據(jù)塊所屬的條帶和所在的成員磁盤以及該熱備磁盤;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,但未超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則指示所述數(shù)據(jù)重建模塊根據(jù)磁盤陣列校驗算法重建發(fā)生讀寫失敗的數(shù)據(jù)塊;若該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,且超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量,則指示所述數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在該數(shù)據(jù)結(jié)構(gòu)中設(shè)置所述條帶失效。
9.如權(quán)利要求8所述的磁盤陣列管理器,其特征在于,所述處理模塊,包括失敗處理單元、統(tǒng)計單元和第一判斷單元,其中失敗處理單元,用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,指示所述數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在所述數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬的條帶和所在的成員磁盤,并指示所述統(tǒng)計單元統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;統(tǒng)計單元,用于根據(jù)所述失敗處理單元的指示,統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;第一判斷單元,用于當(dāng)所述統(tǒng)計單元統(tǒng)計出的數(shù)據(jù)塊數(shù)量未超過熱備磁盤數(shù)量時,指示所述數(shù)據(jù)重建模塊重建發(fā)生讀寫失敗的數(shù)據(jù)塊,并指示所述數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊在所述讀寫模塊將所述數(shù)據(jù)重建模塊所重建的數(shù)據(jù)塊寫入熱備磁盤后,在所述數(shù)據(jù)結(jié)構(gòu)中記錄該重建數(shù)據(jù)塊所屬的條帶和所在的成員磁盤以及該熱備磁盤;當(dāng)所述統(tǒng)計單元統(tǒng)計出的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,但未超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量時,指示所述數(shù)據(jù)重建模塊重建發(fā)生讀寫失敗的數(shù)據(jù)塊;當(dāng)所述統(tǒng)計單元統(tǒng)計出的數(shù)據(jù)塊數(shù)量已超過熱備磁盤數(shù)量,且超過一個條帶所允許的發(fā)生讀寫失敗的數(shù)據(jù)塊的最大數(shù)量時,指示所述數(shù)據(jù)結(jié)構(gòu)維護(hù)模塊將該條帶標(biāo)記為失效。
10.如權(quán)利要求9所述的磁盤陣列管理器,其特征在于,所述處理模塊,還包括第二判斷單元;所述統(tǒng)計單元,還用于當(dāng)磁盤陣列發(fā)生讀寫失敗時,統(tǒng)計發(fā)生讀寫失敗的條帶數(shù)量; 所述第二判斷單元,用于判斷所述統(tǒng)計單元統(tǒng)計出的發(fā)生讀寫失敗的條帶數(shù)量是否達(dá)到設(shè)定閾值,若判斷發(fā)生讀寫失敗的條帶數(shù)量達(dá)到設(shè)定閾值,則設(shè)置所述磁盤陣列失效;若判斷發(fā)生讀寫失敗的條帶數(shù)量未達(dá)到設(shè)定閾值,則指示所述第一判斷單元進(jìn)行處理。
11.如權(quán)利要求9或10所述的磁盤陣列管理器,其特征在于,所述處理模塊,還包括 第三判斷單元,用于判斷是否第一次將重建數(shù)據(jù)塊寫入熱備磁盤中的相應(yīng)條塊,若是,則指示所述讀寫模塊將本次發(fā)生讀寫失敗的數(shù)據(jù)塊所在成員磁盤中未發(fā)生讀寫失敗的各條帶的數(shù)據(jù)塊對應(yīng)寫入該熱備磁盤中的相應(yīng)條塊;以及,當(dāng)向該成員磁盤再次寫入數(shù)據(jù)時, 還根據(jù)所述數(shù)據(jù)結(jié)構(gòu)判斷熱備磁盤中的對應(yīng)條塊是否存儲有該成員磁盤的數(shù)據(jù),并在判斷為是時,指示所述讀寫模塊向該熱備磁盤中的該條塊寫入相同的數(shù)據(jù)。
12.如權(quán)利要求9所述的磁盤陣列管理器,其特征在于,所述處理模塊具體用于在指示所述讀寫模塊根據(jù)所述數(shù)據(jù)結(jié)構(gòu)對磁盤陣列進(jìn)行讀寫的過程中,若根據(jù)所述數(shù)據(jù)結(jié)構(gòu)發(fā)現(xiàn)當(dāng)前數(shù)據(jù)塊所屬條帶存在有讀寫失敗的數(shù)據(jù)塊并對應(yīng)記錄有重建數(shù)據(jù)塊所在的熱備磁盤,則指示所述讀寫模塊根據(jù)該條帶中未發(fā)生讀寫失敗的成員磁盤和該熱備磁盤進(jìn)行數(shù)據(jù)讀寫。
13.如權(quán)利要求9所述的磁盤陣列管理器,其特征在于,所述數(shù)據(jù)重建模塊,包括 接收單元,用于接收所述處理模塊503發(fā)出的重建指示,所述重建指示包括磁盤錯誤數(shù)據(jù)塊重建指示,或者是使用熱備磁盤替換發(fā)生讀寫失敗的磁盤并增加新的熱備磁盤進(jìn)行磁盤陣列重建的指示;重建單元,用于根據(jù)所述接收單元接收到的重建指示,進(jìn)行磁盤錯誤數(shù)據(jù)塊重建或進(jìn)行磁盤陣列的重建;其中,當(dāng)重建指示為磁盤上錯誤數(shù)據(jù)塊重建時,根據(jù)磁盤陣列校驗算法重建數(shù)據(jù)塊;當(dāng)重建指示為使用熱備磁盤替換發(fā)生讀寫失敗的磁盤并增加新的熱備磁盤進(jìn)行磁盤陣列重建的指示時,根據(jù)所述數(shù)據(jù)結(jié)構(gòu),指示所述讀寫模塊將原熱備磁盤中除該被替換成員磁盤以外的其它成員磁盤的數(shù)據(jù)寫入新的熱備磁盤中的相應(yīng)條塊,在該新的熱備磁盤的其余條帶中寫入除該被替換成員磁盤以外的一個發(fā)生讀寫失敗的成員磁盤的相應(yīng)條帶的數(shù)據(jù);以及,根據(jù)所述數(shù)據(jù)結(jié)構(gòu),指示所述讀寫模塊將被替換成員磁盤中未發(fā)生讀寫失敗的數(shù)據(jù)塊寫入原熱備磁盤中的相應(yīng)條帶;踢盤處理單元,用于在將原熱備磁盤替換被替換成員磁盤后,將被替換成員磁盤踢出磁盤陣列。
14.如權(quán)利要求13所述的磁盤陣列管理器,其特征在于,所述數(shù)據(jù)重建模塊,還包括 選擇單元,用于在所述接收單元接收到磁盤陣列重建指示后,根據(jù)所述數(shù)據(jù)結(jié)構(gòu)選擇出發(fā)生讀寫失敗的數(shù)據(jù)塊最多的成員磁盤作為被替換成員磁盤,并將選擇出的被替換成員磁盤通知給所述重建單元。
全文摘要
本發(fā)明公開一種基于磁盤陣列的數(shù)據(jù)處理及其裝置,數(shù)據(jù)存儲系統(tǒng)中存儲有用于記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬條帶和所在磁盤,以及對該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重建后重建數(shù)據(jù)塊所在的熱備磁盤的數(shù)據(jù)結(jié)構(gòu),磁盤陣列管理器根據(jù)數(shù)據(jù)結(jié)構(gòu)對磁盤陣列進(jìn)行讀寫;當(dāng)讀寫失敗時,在數(shù)據(jù)結(jié)構(gòu)中記錄發(fā)生讀寫失敗的數(shù)據(jù)塊所屬條帶和所在磁盤,并統(tǒng)計該條帶中發(fā)生讀寫失敗的數(shù)據(jù)塊數(shù)量;若該數(shù)量未超過熱備磁盤數(shù)量,則重建發(fā)生讀寫失敗的數(shù)據(jù)塊并將重建數(shù)據(jù)塊寫入熱備磁盤的對應(yīng)條塊,并記錄該重建數(shù)據(jù)塊所在的熱備磁盤;若該數(shù)量已超過熱備磁盤數(shù)量,但所超出的數(shù)量未超過一個條帶的容錯能力,則重建發(fā)生讀寫失敗的數(shù)據(jù)塊。本發(fā)明可提高磁盤陣列對磁盤介質(zhì)錯誤的容忍度。
文檔編號G06F11/14GK102508733SQ20111028314
公開日2012年6月20日 申請日期2011年9月22日 優(yōu)先權(quán)日2011年9月22日
發(fā)明者張日新 申請人:杭州華三通信技術(shù)有限公司