專利名稱:一種處理raid5壞扇區(qū)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)及存儲領(lǐng)域,具體涉及一種RAID5壞扇區(qū)處理的方法。
背景技術(shù):
對于具有冗余校驗信息的RAID5系統(tǒng),容錯功能已成為磁盤陣列最受青睞的特性,為了加強容錯的功能以及使系統(tǒng)在磁盤故障的情況下能迅速的重建數(shù)據(jù),以維持系統(tǒng)的性能,一般的磁盤陣列系統(tǒng)都可使用熱備份的功能,所謂熱備份是在建立磁盤陣列系統(tǒng)的時候,將其中一磁盤指定為后備磁盤,此一磁盤在平常并不操作,但若陣列中某一磁盤發(fā)生故障時,磁盤陣列即以后備磁盤取代故障磁盤,并自動將故障磁盤的數(shù)據(jù)重建在后備磁盤之上。RAID5系統(tǒng)是只允許有一塊盤失效,當有第二塊盤失效的時候,整個磁盤陣列就失效了。但是,有的磁盤失效是有少量磁盤壞扇區(qū)引起的,因為少量壞扇區(qū)而放棄的話,這個損失有些大。因為幾乎所有的硬盤都有一些壞扇區(qū),壞扇區(qū)是計算機硬盤中無法寫入數(shù)據(jù)的地方。對于單盤的壞扇區(qū)處理是有Bad Sector Remapping機制,所謂Bad Sector Remapping,就是將壞扇區(qū)中的數(shù)據(jù)寫到另一個位置,將來所有對原先壞扇區(qū)的訪問今后都會重新定向到新的位置。但是磁盤用做BSR的空間并不多。另外,如果一個條帶有一塊壞扇區(qū),是可以做BSR的,但是如果一個條帶中有兩塊盤存在壞扇區(qū)的話,是不能做BSR的,磁陣可能就會因為存在的幾個壞扇區(qū)而失效。如果其它的扇區(qū)是正常的話,這個損失是不正常的。這些少量的壞扇區(qū)完全可以跳過不用。本發(fā)明是在條帶上有一個或者多個壞扇區(qū)的話,就把這個條帶的數(shù)據(jù)重新寫到一個預(yù)留區(qū)域。同時也放棄只有單個盤有壞扇區(qū)時的BSR機制,一個或者多個壞扇區(qū)都按照重新的映射去處理。對于大容量的磁盤,預(yù)留這些區(qū)域不會帶來太大空間的損失,反而能增加可靠性。為了加快出現(xiàn)失效盤的修復(fù),當某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目的時候,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,大大加強了磁盤陣列的可靠性。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種處理RAID5壞扇區(qū)的方法。本發(fā)明的目的是按以下方式實現(xiàn)的,是在寫數(shù)據(jù)過程中,把出現(xiàn)壞扇區(qū)的條帶轉(zhuǎn)移到一個預(yù)留區(qū)域,避免因為磁盤存在的少量壞扇區(qū)而影響了磁盤陣列的使用,當某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目的時候,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,以此加強磁盤陣列的可靠性,步驟如下
1)首先要建立一個扇區(qū)映射表格,表格的每一項包含原來扇區(qū)號和新映射的扇區(qū)號,這個表格可以放到磁盤預(yù)留空間,使用的時候放到內(nèi)存中即可,另外,還需有個計數(shù)器 remap記錄有多少個條帶完成了映射;
2)當有扇區(qū)寫錯誤的時候,計數(shù)器remap記錄是哪個磁盤出現(xiàn)的壞扇區(qū),并增加該盤的壞扇區(qū)統(tǒng)計計數(shù),不管該條帶之前是否有已經(jīng)寫過的數(shù)據(jù),都要讓這個條帶重新寫,做好標記,寫到預(yù)留空間,在扇區(qū)映射表格里填上原來扇區(qū)號和新映射的扇區(qū)號,預(yù)留空間是按照時間先后順序排序?qū)懭氲?,每寫一次預(yù)留空間就把計數(shù)器remap記錄位置加1,當計數(shù)器 remap記錄到達一定數(shù)目的時候就報警,提示用戶做相應(yīng)的處理;
3)當有多個這樣的連續(xù)的條帶出現(xiàn)壞扇區(qū)的時候,就說明這一片大的區(qū)域都是受到損壞,那么其后的一片區(qū)域就放棄不用,再有寫的時候,就跳過這個區(qū)域,但是,如果緊挨著這個區(qū)域的條帶還是有壞扇區(qū)的話,就再擴大這個區(qū)域,擴大的范圍要比第一次的大,跳過這個重新擴大的區(qū)域,如果緊挨著這個區(qū)域的條帶沒有壞扇區(qū)的話,就正常寫入數(shù)據(jù),如果緊挨著這個區(qū)域的條帶還有壞扇區(qū)的話,就不再擴大,這個時候產(chǎn)生報警,不再進行寫入,然后,查看是哪個盤的壞扇區(qū)數(shù)目過多,替換壞扇區(qū)數(shù)目過多的磁盤;
4)如果新映射的位置也有壞扇區(qū)的話,就再重新找個位置映射,如果還有壞扇區(qū)的話, 就提示更換磁盤;
5)當某一塊盤的壞扇區(qū)數(shù)目過多的時候,就宣告這塊盤失效,把這塊盤踢出陣列,在添加熱備盤進行修復(fù)時,對于完成映射的原扇區(qū)和新扇區(qū)要做特殊處理,其它的正常扇區(qū)直接計算寫入即可,對于只是因為被踢出的這一塊磁盤出現(xiàn)壞扇區(qū)引起映射的條帶,恢復(fù)原來的扇區(qū),對于新扇區(qū)不恢復(fù),并刪除在映射表格的記錄,而對于是因為有其它磁盤存在壞扇區(qū)引起的映射的條帶,不恢復(fù)原來的扇區(qū),只恢復(fù)新映射之后的扇區(qū)就即可;
6)為了加快修復(fù),在某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目,但還沒到宣告失效的數(shù)目,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,因為這塊盤的壞扇區(qū)數(shù)目最多,最后宣告失效的概率最大,如果是這塊盤最后失效,添加對應(yīng)的熱備盤,寫過的數(shù)據(jù)就不用恢復(fù)了,減少了修復(fù)的時間,如果是另一塊盤最后達到宣告失效的數(shù)值,當熱備盤足夠時,就找另一個熱備盤進行修復(fù),保留原來寫入數(shù)據(jù)的熱備盤,雖然那塊盤沒有宣告失效,但已經(jīng)過了警戒線,依然有失效的可能,所以,保留與之對應(yīng)的熱備盤,為之后的可靠性做了保障,當然,用戶也會在那塊盤的壞扇區(qū)數(shù)目過了警戒線但還沒到宣告失效的時候,提前換出;
7)當對一個條帶讀或者再次寫操作的時候,如果報錯,查找在表格中是否有這個條帶存在,如果有的話,直接讀取或者再次寫入,如果沒有的話,說明該錯誤是上次寫入之后才發(fā)生的損壞,這個情況下就看是幾塊盤存在壞扇區(qū)了,如果只是一塊盤存在壞扇區(qū),那么這個壞扇區(qū)的數(shù)據(jù)是要通過計算得到的,添加熱備盤進行替換恢復(fù)即可,如果是多個磁盤存在壞扇區(qū),這部分的數(shù)據(jù)就會丟失,這個時候停止寫數(shù)據(jù),記錄條帶以及扇區(qū)的位置,對其它位置的數(shù)據(jù)保存,讓少量位置數(shù)據(jù)的損壞和丟失,不影響其它位置的數(shù)據(jù)的正確性。本發(fā)明的有益效果是這個方法對壞扇區(qū)做了多方面的處理,在一個條帶中有多塊盤存在壞扇區(qū)的時候有很好的作用,可以避免因為少量的扇區(qū)而讓整個磁盤陣列失效。 當壞扇區(qū)過多的時候,才宣告失效,并能在失效之前做一些準備工作,大大增加了整個磁盤陣列的可靠性。
附圖1磁盤數(shù)據(jù)布局示意圖; 附圖2存在壞扇區(qū)的寫流程圖; 附圖3存在壞扇區(qū)的讀流程圖。
具體實施例方式參照說明書附圖對本發(fā)明的方法作以下詳細地說明。處理步驟如下首先要建立一個扇區(qū)映射表格,表格的每一項包含原來扇區(qū)號和新映射的扇區(qū)號,這個表格可以放到磁盤預(yù)留空間,使用的時候放到內(nèi)存就可以了。另外, 還有個計數(shù)器remap記錄有多少個條帶完成了映射。當有扇區(qū)寫錯誤的時候,記錄是哪個磁盤出現(xiàn)的壞扇區(qū),并增加該盤的壞扇區(qū)統(tǒng)計計數(shù)。不管該條帶之前是否有已經(jīng)寫過的數(shù)據(jù),都要讓這個條帶重新寫,做好標記,寫到預(yù)留空間,在扇區(qū)映射表格里填上原來扇區(qū)號和新映射的扇區(qū)號。預(yù)留空間是按照時間先后順序排序?qū)懭氲摹C繉懸淮晤A(yù)留空間就把remap位置加1,當remap到達一定數(shù)目的時候就報警,提示用戶做相應(yīng)的處理。當有多個這樣的連續(xù)的條帶出現(xiàn)壞扇區(qū)的時候,就說明這一片大的區(qū)域都是受到損壞,那么其后的一片區(qū)域就放棄不用,再有寫的時候,就跳過這個區(qū)域,但如果緊挨著這個區(qū)域的條帶還是有壞扇區(qū)的話,就再擴大這個區(qū)域,擴大的范圍要比第一次的大,跳過這個重新擴大的區(qū)域,如果緊挨著這個區(qū)域的條帶沒有壞扇區(qū)的話,就正常寫入數(shù)據(jù)。如果緊挨著這個區(qū)域的條帶還有壞扇區(qū)的話,就不再擴大,這個時候產(chǎn)生報警,不再進行寫入。然后,查看是哪個盤的壞扇區(qū)數(shù)目過多,替換壞扇區(qū)數(shù)目過多的磁盤。如果新映射的位置也有壞扇區(qū)的話,就再重新找個位置映射,如果還有壞扇區(qū)的話,就提示更換磁盤。當某一塊盤的壞扇區(qū)數(shù)目過多的時候,就宣告這塊盤失效,把這塊盤踢出陣列,在添加熱備盤進行修復(fù)時,對于完成映射的原扇區(qū)和新扇區(qū)要做特殊處理,其它的正常扇區(qū)直接計算寫入就可以。對于只是因為被踢出的這一塊磁盤出現(xiàn)壞扇區(qū)引起映射的條帶,恢復(fù)原來的扇區(qū),對于新扇區(qū)不恢復(fù),并刪除在映射表格的記錄。而對于是因為有其它磁盤存在壞扇區(qū)引起的映射的條帶,不恢復(fù)原來的扇區(qū),只恢復(fù)新映射之后的扇區(qū)就可以了。為了加快修復(fù),在某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目的時候(還沒到宣告失效的數(shù)目),把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去。因為這塊盤的壞扇區(qū)數(shù)目最多,最后宣告失效的概率最大,如果是這塊盤最后失效,添加對應(yīng)的熱備盤,寫過的數(shù)據(jù)就不用恢復(fù)了,減少了修復(fù)的時間。如果是另一塊盤最后達到宣告失效的數(shù)值,當熱備盤足夠時,就找另一個熱備盤進行修復(fù),保留原來寫入數(shù)據(jù)的熱備盤。雖然那塊盤沒有宣告失效, 但已經(jīng)過了警戒線,依然有失效的可能,所以,保留與之對應(yīng)的熱備盤,為之后的可靠性做了保障。當然,用戶也可以在那塊盤的壞扇區(qū)數(shù)目過了警戒線但還沒到宣告失效的時候,提前換出。當對一個條帶讀或者再次寫操作的時候,如果報錯,查找在表格中是否有這個條帶存在,如果有的話,直接讀取,或者再次寫入。如果沒有的話,說明該錯誤是上次寫入之后才發(fā)生的損壞,這個情況下就看是幾塊盤存在壞扇區(qū)了,如果只是一塊盤存在壞扇區(qū),那么這個壞扇區(qū)的數(shù)據(jù)是可以通過計算得到的,添加熱備盤進行替換恢復(fù)就可以了。如果是多個磁盤存在壞扇區(qū),這部分的數(shù)據(jù)就會丟失,這個時候停止寫數(shù)據(jù),記錄條帶以及扇區(qū)的位置,對其它位置的數(shù)據(jù)保存,讓少量位置數(shù)據(jù)的損壞和丟失,不影響其它位置的數(shù)據(jù)的正確性。這個方法對壞扇區(qū)做了多方面的處理,在一個條帶中有多塊盤存在壞扇區(qū)的時候有很好的作用,可以避免因為少量的扇區(qū)而讓整個磁盤陣列失效。當壞扇區(qū)過多的時候,才宣告失效,并能在失效之前做一些準備工作,大大增加了整個磁盤陣列的可靠性。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1. 一種處理RAID5壞扇區(qū)的方法,其特征在于是在寫數(shù)據(jù)過程中,把出現(xiàn)壞扇區(qū)的條帶轉(zhuǎn)移到一個預(yù)留區(qū)域,避免因為磁盤存在的少量壞扇區(qū)而影響了磁盤陣列的使用,當某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目的時候,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,以此加強磁盤陣列的可靠性,步驟如下1)首先要建立一個扇區(qū)映射表格,表格的每一項包含原來扇區(qū)號和新映射的扇區(qū)號,這個表格可以放到磁盤預(yù)留空間,使用的時候放到內(nèi)存中即可,另外,還需有個計數(shù)器 remap記錄有多少個條帶完成了映射;2)當有扇區(qū)寫錯誤的時候,計數(shù)器remap記錄是哪個磁盤出現(xiàn)的壞扇區(qū),并增加該盤的壞扇區(qū)統(tǒng)計計數(shù),不管該條帶之前是否有已經(jīng)寫過的數(shù)據(jù),都要讓這個條帶重新寫,做好標記,寫到預(yù)留空間,在扇區(qū)映射表格里填上原來扇區(qū)號和新映射的扇區(qū)號,預(yù)留空間是按照時間先后順序排序?qū)懭氲模繉懸淮晤A(yù)留空間就把計數(shù)器remap記錄位置加1,當計數(shù)器 remap記錄到達一定數(shù)目的時候就報警,提示用戶做相應(yīng)的處理;3)當有多個這樣的連續(xù)的條帶出現(xiàn)壞扇區(qū)的時候,就說明這一片大的區(qū)域都是受到損壞,那么其后的一片區(qū)域就放棄不用,再有寫的時候,就跳過這個區(qū)域,但是,如果緊挨著這個區(qū)域的條帶還是有壞扇區(qū)的話,就再擴大這個區(qū)域,擴大的范圍要比第一次的大,跳過這個重新擴大的區(qū)域,如果緊挨著這個區(qū)域的條帶沒有壞扇區(qū)的話,就正常寫入數(shù)據(jù),如果緊挨著這個區(qū)域的條帶還有壞扇區(qū)的話,就不再擴大,這個時候產(chǎn)生報警,不再進行寫入,然后,查看是哪個盤的壞扇區(qū)數(shù)目過多,替換壞扇區(qū)數(shù)目過多的磁盤;4)如果新映射的位置也有壞扇區(qū)的話,就再重新找個位置映射,如果還有壞扇區(qū)的話, 就提示更換磁盤;5)當某一塊盤的壞扇區(qū)數(shù)目過多的時候,就宣告這塊盤失效,把這塊盤踢出陣列,在添加熱備盤進行修復(fù)時,對于完成映射的原扇區(qū)和新扇區(qū)要做特殊處理,其它的正常扇區(qū)直接計算寫入即可,對于只是因為被踢出的這一塊磁盤出現(xiàn)壞扇區(qū)引起映射的條帶,恢復(fù)原來的扇區(qū),對于新扇區(qū)不恢復(fù),并刪除在映射表格的記錄,而對于是因為有其它磁盤存在壞扇區(qū)引起的映射的條帶,不恢復(fù)原來的扇區(qū),只恢復(fù)新映射之后的扇區(qū)就即可;6)為了加快修復(fù),在某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目,但還沒到宣告失效的數(shù)目,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,因為這塊盤的壞扇區(qū)數(shù)目最多,最后宣告失效的概率最大,如果是這塊盤最后失效,添加對應(yīng)的熱備盤,寫過的數(shù)據(jù)就不用恢復(fù)了,減少了修復(fù)的時間,如果是另一塊盤最后達到宣告失效的數(shù)值,當熱備盤足夠時,就找另一個熱備盤進行修復(fù),保留原來寫入數(shù)據(jù)的熱備盤,雖然那塊盤沒有宣告失效,但已經(jīng)過了警戒線,依然有失效的可能,所以,保留與之對應(yīng)的熱備盤,為之后的可靠性做了保障,當然,用戶也會在那塊盤的壞扇區(qū)數(shù)目過了警戒線但還沒到宣告失效的時候,提前換出;7)當對一個條帶讀或者再次寫操作的時候,如果報錯,查找在表格中是否有這個條帶存在,如果有的話,直接讀取或者再次寫入,如果沒有的話,說明該錯誤是上次寫入之后才發(fā)生的損壞,這個情況下就看是幾塊盤存在壞扇區(qū)了,如果只是一塊盤存在壞扇區(qū),那么這個壞扇區(qū)的數(shù)據(jù)是要通過計算得到的,添加熱備盤進行替換恢復(fù)即可,如果是多個磁盤存在壞扇區(qū),這部分的數(shù)據(jù)就會丟失,這個時候停止寫數(shù)據(jù),記錄條帶以及扇區(qū)的位置,對其它位置的數(shù)據(jù)保存,讓少量位置數(shù)據(jù)的損壞和丟失,不影響其它位置的數(shù)據(jù)的正確性。
全文摘要
本發(fā)明提供一種處理RAID5壞扇區(qū)的方法,是在寫數(shù)據(jù)過程中,把出現(xiàn)壞扇區(qū)的條帶轉(zhuǎn)移到一個預(yù)留區(qū)域,避免因為磁盤存在的少量壞扇區(qū)而影響了磁盤陣列的使用,當某一塊磁盤的壞扇區(qū)數(shù)量先達到一定警戒數(shù)目的時候,把這塊盤的一些數(shù)據(jù)先備份到熱備盤上去,以此加強磁盤陣列的可靠性。
文檔編號G06F3/06GK102508620SQ20111039250
公開日2012年6月20日 申請日期2011年12月1日 優(yōu)先權(quán)日2011年12月1日
發(fā)明者古世磊, 施培任 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司