欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種獨立磁盤冗余陣列數(shù)據(jù)重建方法和裝置的制作方法

文檔序號:6425136閱讀:222來源:國知局
專利名稱:一種獨立磁盤冗余陣列數(shù)據(jù)重建方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種獨立磁盤冗余陣列數(shù)據(jù)重建方法和
直O(jiān)
背景技術(shù)
隨著科學(xué)技術(shù)的飛速發(fā)展和計算機技術(shù)的普遍應(yīng)用,人們對存儲設(shè)備的性能要求越來越高。作為一項成熟的技術(shù),獨立冗余磁盤陣列(RAID,Redundant Array of Independent Disk,)技術(shù)已經(jīng)廣泛應(yīng)用于數(shù)據(jù)存儲的各種場合。RAID是一種通過磁盤陣列與數(shù)據(jù)條塊化相結(jié)合,以提高數(shù)據(jù)可用率的結(jié)構(gòu),通過數(shù)據(jù)鏡像實現(xiàn)數(shù)據(jù)冗余,可直接從鏡像拷貝中讀取數(shù)據(jù),并將多個數(shù)據(jù)磁盤通過RAID控制器結(jié)合成虛擬的單臺大容量硬盤使用,通過同時使用多個磁盤提高數(shù)據(jù)的傳輸速率,通過在多個磁盤上同時存儲和讀取數(shù)據(jù)提高存儲系統(tǒng)的數(shù)據(jù)吞吐量。同時,RAID還可以通過數(shù)據(jù)校驗提供容錯功能,以提高系統(tǒng)的穩(wěn)定冗余性。此外,根據(jù)應(yīng)用場合的不同,RAID可以劃分為多種規(guī)范,包括RAID0、RAID1、 RAID2、RAID3、RAID4、RAID5、RAID6和RAID7等,每種規(guī)范分別具有各自的強項和弱項。RAID中為避免因磁盤故障而出現(xiàn)不可用狀態(tài),一般會添加一塊或多塊額外的磁盤作為備用盤,當(dāng)某個數(shù)據(jù)盤故障后,可以啟動RAID數(shù)據(jù)重建過程,此時備用盤作為重建磁盤加入到RAID中,根據(jù)正常磁盤中的數(shù)據(jù)計算故障數(shù)據(jù)盤中的數(shù)據(jù)并寫入重建磁盤中,在數(shù)據(jù)重建之后,重建磁盤頂替故障磁盤的工作,達到與原陣列一樣的狀態(tài)。RAID中的磁盤被劃分為多個分塊,每個磁盤上對應(yīng)位置的分塊的組合稱為條帶, 數(shù)據(jù)重建包括對每個條帶的重建。其中,RAID5也被叫做帶分布式奇偶位的條帶。每個條帶上都有相當(dāng)于一個“塊”那么大的地方被用來存放奇偶位。RAID5把奇偶位信息也分布在所有的磁盤上,而并非一個磁盤上,大大減輕了奇偶校驗盤的負擔(dān)。通常我們把一個條帶上的奇偶位信息稱為校驗和,該條帶上校驗和之外的數(shù)據(jù)稱之為普通數(shù)據(jù)。在現(xiàn)有實現(xiàn)中,當(dāng)RAID數(shù)據(jù)重建時,從該RAID中除重建磁盤外的正常磁盤中讀重建所需數(shù)據(jù),當(dāng)所述重建所需數(shù)據(jù)出現(xiàn)讀錯誤時,有兩種處理方法一種處理方法是RAID 數(shù)據(jù)重建停止,等待用戶或應(yīng)用對無法讀出數(shù)據(jù)的地址塊進行寫操作,以修復(fù)該正常磁盤的數(shù)據(jù),以便繼續(xù)重建,另一種處理方法是,記錄該條帶的地址,并且記錄該條帶未完成重建,表明該條帶數(shù)據(jù)不一致,繼續(xù)重建剩余的條帶(在RAID數(shù)據(jù)重建過程中,是逐個條帶進行數(shù)據(jù)重建的)。上述第一個解決方案在重建時由于一個磁盤的數(shù)據(jù)無法讀取,不能及時重建,只能等到數(shù)據(jù)恢復(fù)后才可以再重建;第二個解決方案是記錄整條帶數(shù)據(jù)不一致,重建磁盤在此條帶上的數(shù)據(jù)是無效的,如果該條帶其它磁盤數(shù)據(jù)再出現(xiàn)讀錯誤,不能對讀錯誤數(shù)據(jù)進行恢復(fù),因此不能提供冗余。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明主要目的是提供一種RAID數(shù)據(jù)重建方法,在能夠及時數(shù)據(jù)重建的情況下,如果該條帶其它磁盤數(shù)據(jù)再出現(xiàn)讀錯誤時,最大可能地提供了冗余。所述RAID 中包括正常磁盤和重建磁盤,所有磁盤被劃分成多個分塊,每個磁盤上對應(yīng)位置的分塊的組合稱為條帶,在數(shù)據(jù)重建時,對于每個條帶,該方法包括從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,則用讀出的數(shù)據(jù)計算重建數(shù)據(jù), 并將計算結(jié)果寫入重建磁盤對應(yīng)位置;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則以所述預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。其中,如果存在無法讀出重建所需數(shù)據(jù)時,該方法進一步包括建立無法讀出數(shù)據(jù)的記錄表;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,則將所述記錄的該條帶重建磁盤對應(yīng)位置的地址及長度保存在所述記錄表中;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則將該條帶重建磁盤對應(yīng)位置的地址及長度存保存在所述記錄表中,同時還記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并保存在所述記錄表中;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并保存在所述記錄表中。所述從正常磁盤中讀取重建所需數(shù)據(jù),之前該方法進一步包括查詢所述記錄表, 如果該條帶數(shù)據(jù)所在位置地址有無法讀取數(shù)據(jù)的記錄時,不讀取有無法讀取數(shù)據(jù)記錄的磁盤對應(yīng)位置數(shù)據(jù),用預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù)來計算該條帶新的校驗和。所述數(shù)據(jù)重建完成之后,該方法進一步包括讀數(shù)據(jù);所述讀數(shù)據(jù)方法為RAID讀數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表有記錄,則返回讀數(shù)據(jù)錯誤;如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表無記錄,且能直接讀出數(shù)據(jù),則返回讀數(shù)據(jù);
如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中有記錄時,則以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中都無記錄時,則根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。所述數(shù)據(jù)重建完成之后,該方法進一步包括寫數(shù)據(jù);所述寫數(shù)據(jù)方法為RAID寫數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表,如果要寫入數(shù)據(jù)的地址在所述記錄表中無記錄時,則直接寫入數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且要寫入數(shù)據(jù)的地址所在條帶要整條帶數(shù)據(jù)寫入時,直接寫入整條帶數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且只寫入要寫數(shù)據(jù)時,則以預(yù)設(shè)固定值替代所述要寫入數(shù)據(jù)的地址存儲的數(shù)據(jù),重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)地址。所述直接寫入整條帶數(shù)據(jù),之后進一步包括寫入成功后,清除所述記錄表中要寫入數(shù)據(jù)對應(yīng)地址數(shù)據(jù)無法讀出記錄;所述將要寫入的數(shù)據(jù)寫入對應(yīng)地址,之后進一步包括寫入成功后,清除所述記錄表中要寫入數(shù)據(jù)對應(yīng)地址數(shù)據(jù)無法讀出記錄。所述計算方法為異或運算。 所述磁盤地址為磁盤LBA地址或物理地址。本發(fā)明的另一個主要目的是提供一種RAID數(shù)據(jù)重建裝置,在能夠及時數(shù)據(jù)重建的情況下,如果該條帶其它磁盤數(shù)據(jù)再出現(xiàn)讀錯誤時,最大可能地提供了冗余。該裝置包括讀數(shù)據(jù)模塊和數(shù)據(jù)重建模塊;所述讀數(shù)據(jù)模塊,與所述數(shù)據(jù)重建模塊相連,對于每個條帶用于從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,將成功讀出的重建所需數(shù)據(jù)發(fā)送給所述數(shù)據(jù)重建模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則將預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;所述數(shù)據(jù)重建模塊,收到所述讀數(shù)據(jù)模塊發(fā)來的重建所需數(shù)據(jù),用重建所需數(shù)據(jù)計算重建數(shù)據(jù),并將計算結(jié)果寫入重建磁盤對應(yīng)的位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值,將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,將收到數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,用于將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。其中,該裝置進一步包括存儲模塊;所述讀數(shù)據(jù)模塊,進一步用于無法成功讀出數(shù)據(jù)時建立無法讀出數(shù)據(jù)的記錄表, 并發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,將記錄該條帶重建磁盤對應(yīng)位置的地址及長度發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和時,記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,將該條帶重建磁盤對應(yīng)位置的地址及長度,及無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù), 則記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并發(fā)送給所述存儲模塊;所述存儲模塊,與所述讀數(shù)據(jù)模塊相連,用于收到所述讀數(shù)據(jù)模塊發(fā)來的無法讀取數(shù)據(jù)的記錄表,將記錄表存儲,收到所述數(shù)據(jù)模塊的發(fā)來的地址及長度,將地址及長度存儲在記錄表中。該裝置進一步包括查詢模塊;所述查詢模塊與所述存儲模塊和所述讀數(shù)據(jù)模塊相連,用于從所述存儲模塊中存儲的記錄表中查找,如果該條帶的數(shù)據(jù)所在位置地址有有無法讀出數(shù)據(jù)的記錄時,向所述數(shù)據(jù)讀取模塊發(fā)送不對取該對應(yīng)位置地址的數(shù)據(jù),如果重建需要該位置地址對應(yīng)的數(shù)據(jù), 以預(yù)設(shè)固定值替代;否則不發(fā)送消息給所述讀數(shù)據(jù)模塊;所述讀數(shù)據(jù)模塊,進一步用于收到所述查詢模塊發(fā)來的消息,不再讀取對應(yīng)位置地址的數(shù)據(jù),如果需要發(fā)送該對應(yīng)位置的數(shù)據(jù),則用預(yù)設(shè)固定值替代發(fā)送給所述數(shù)據(jù)重建模塊。該裝置進一步包括數(shù)據(jù)讀模塊;所述數(shù)據(jù)讀模塊與所述數(shù)據(jù)重建模塊和所述存儲模塊相連,用于讀數(shù)據(jù),查詢所述存儲模塊中無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表有記錄,則返回讀數(shù)據(jù)錯誤;如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表無記錄,且能直接讀出數(shù)據(jù),則返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中有記錄時,則以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中都無記錄時,則根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。該裝置進一步包括數(shù)據(jù)寫模塊;
所述數(shù)據(jù)寫模塊與所述數(shù)據(jù)重建模塊和所述存儲模塊相連,用于寫數(shù)據(jù),查詢所述存儲模塊中無法讀出數(shù)據(jù)的記錄表,如果要寫入數(shù)據(jù)的地址在所述記錄表中無記錄時, 則直接寫入數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且要寫入數(shù)據(jù)的地址所在條帶要整條帶數(shù)據(jù)寫入時,直接寫入整條帶數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且只寫入要寫數(shù)據(jù)時,則以預(yù)設(shè)固定值替代所述要寫入數(shù)據(jù)的地址存儲的數(shù)據(jù), 重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)地址。綜上所述,本發(fā)明在RAID數(shù)據(jù)重建,如果重建所需數(shù)據(jù)均能讀出時,直接計算重建磁盤對應(yīng)位置數(shù)據(jù);如果重建所需數(shù)據(jù)中的普通數(shù)據(jù)無法讀出時,以預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和重建磁盤對應(yīng)位置的數(shù)據(jù),計算條帶新的校驗和;如果重建所需數(shù)據(jù)中的校驗和無法讀出時,用預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),計算新的校驗和;當(dāng)重建磁盤是存放該條帶校驗和的磁盤或數(shù)據(jù)能夠直接計算時,將新的校驗和或直接計算的數(shù)據(jù)寫入重建磁盤;否則記錄重建磁盤對應(yīng)位置地址無法讀出數(shù)據(jù)。通過上述重建磁盤的方法,本發(fā)明在能夠及時數(shù)據(jù)重建的情況下,如果該條帶其它磁盤數(shù)據(jù)再出現(xiàn)無法讀出時, 最大可能地提供了冗余。


圖1為本發(fā)明RAID數(shù)據(jù)重建方法流程圖;圖2為本發(fā)明讀數(shù)據(jù)過程流程圖;圖3為本發(fā)明寫數(shù)據(jù)過程流程4為本發(fā)明RAID數(shù)據(jù)重建裝置結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明所述方案作進一步地詳細說明。在本發(fā)明中,預(yù)設(shè)一個固定值,當(dāng)在RAID數(shù)據(jù)重建,從正常磁盤中讀取普通數(shù)據(jù)無法讀出時,用預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),計算所在條帶新的校驗和,并記錄無法讀出數(shù)據(jù)對應(yīng)位置地址及長度。RAID中包括正常磁盤和重建磁盤,所有磁盤被劃分成多個分塊,每個磁盤上對應(yīng)位置的分塊的組合稱為條帶,在數(shù)據(jù)重建時,對于每個條帶,數(shù)據(jù)的重建方法為從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,則用讀出的數(shù)據(jù)計算重建數(shù)據(jù), 并將計算結(jié)果寫入重建磁盤對應(yīng)位置;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則以所述預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。參見圖1,圖1為本發(fā)明RAID數(shù)據(jù)重建流程圖。其具體步驟為步驟101,RAID數(shù)據(jù)重建開始。步驟102,對于某個條帶,RAID處理器從正常磁盤讀取重建所需數(shù)據(jù)。在RAID的使用過程中,將所有數(shù)據(jù)磁盤分成多個大小相等、地址相同的分塊,并將不同物理磁盤上的分塊組織成條帶。其中,分塊為地址分配的最小粒度,也稱為條帶深度;條帶為RAID中的不同物理磁盤上的位置相關(guān)的分塊的集合,均勻地分布在各個物理磁盤上。在數(shù)據(jù)重建過程中,是一個條帶一個條帶的數(shù)據(jù)重建。此步驟中的讀取重建所需數(shù)據(jù)是一個條帶的數(shù)據(jù)。由于在讀取數(shù)據(jù)時的最小單位并非上述所分塊的大小,如最小512bit, 無法讀出的數(shù)據(jù)可能是一個512bit,也可能是N個512bit,因此在描述無法讀出的數(shù)據(jù)時不說無法讀出的數(shù)據(jù)塊,而稱無法讀出的數(shù)據(jù)。為了后續(xù)更精確的記錄無法讀出數(shù)據(jù)的地址及長度。步驟103,判斷重建所需數(shù)據(jù)是否存在無法讀出,如果是,執(zhí)行步驟104 ;否則,執(zhí)行步驟105。步驟104,判斷無法讀出的數(shù)據(jù)是否為該條帶校驗和,如果是,執(zhí)行步驟106 ;否則,執(zhí)行步驟107。RAID中,規(guī)范5以上的RAID,存儲數(shù)據(jù)時均在陣列中一個磁盤存儲條帶數(shù)據(jù)的校驗和,其它磁盤存儲條帶的普通數(shù)據(jù)。以RAID5為例,也被叫做帶分布式奇偶位的條帶。每個條帶上都有相當(dāng)于一個“塊”那么大的地方被用來存放奇偶位。RAID5把奇偶位信息也分布在所有的磁盤上,而并非一個磁盤上,大大減輕了奇偶校驗盤的負擔(dān)。在本發(fā)明中,把奇偶位信息稱為校驗和,一個條帶中的其它數(shù)據(jù)稱為普通數(shù)據(jù)。步驟105,RAID處理器用讀出的數(shù)據(jù)計算重建數(shù)據(jù),并將計算出的數(shù)據(jù)寫入重建磁盤對應(yīng)位置。執(zhí)行步驟110。步驟105的計算過程同現(xiàn)有技術(shù),在本發(fā)明中不再贅述。步驟106,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的重建所需數(shù)據(jù),以及用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值計算該條帶的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置。執(zhí)行步驟110。當(dāng)條帶中在某個磁盤上的數(shù)據(jù)無法讀取時,用預(yù)設(shè)固定值替代,該預(yù)設(shè)固定值可以為0,也可以為其他任意常數(shù),一般設(shè)為0,計算要相對簡單。無論該預(yù)設(shè)固定值是什么, 在替代無法無處數(shù)據(jù)時,數(shù)據(jù)長度應(yīng)該同無法讀出數(shù)據(jù)的長度,長度不夠時,用0補齊。由于讀數(shù)據(jù)最小單位是512bit,因此一般數(shù)據(jù)都不會超過該存儲長度。在步驟106中,計算出的新的校驗和相對現(xiàn)在的數(shù)據(jù)是正確的校驗和,當(dāng)再有磁盤發(fā)生故障時,新的校驗和可以為下次重建或者數(shù)據(jù)讀寫時提供冗余。
在RAID數(shù)據(jù)重建過程中,一旦有數(shù)據(jù)讀不出來,需要查看是否建立無法讀出數(shù)據(jù)的記錄表,如果已建立,將無法讀出的數(shù)據(jù)及長度記錄在該記錄表中,如果記錄表未建立, 此時建立無法讀出數(shù)據(jù)的記錄表。由于重新計算出的校驗和相對現(xiàn)在的數(shù)據(jù)是正確的校驗和,因此不記錄該校驗磁盤對應(yīng)位置的地址。將重建磁盤該條帶對應(yīng)位置的地址記錄為無法讀出數(shù)據(jù),并記錄這段無法讀出數(shù)據(jù)的長度。將無法讀出數(shù)據(jù)對應(yīng)的地址及長度記錄在重建無法讀出數(shù)據(jù)的記錄表中。記錄的地址為磁盤的對應(yīng)位置的物理地址或者LBA地址。步驟107,判斷已讀出的數(shù)據(jù)是否包含該條帶的校驗和,如果是,執(zhí)行步驟108 ;否則,執(zhí)行步驟109。步驟108,以預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于分別替代無法讀出的數(shù)據(jù)、以及重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置。執(zhí)行步驟110。在重建無法讀數(shù)據(jù)的記錄表中記錄無法讀出數(shù)據(jù)的正常磁盤對應(yīng)位置地址及長度,以及重建磁盤對應(yīng)位置地址及長度。步驟109,用預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、以及用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤對應(yīng)位置。在步驟109中,在重建無法讀數(shù)據(jù)的記錄表中記錄無法讀出數(shù)據(jù)的正常磁盤對應(yīng)位置地址及長度。步驟110,寫入成功后,向RAID處理器返回寫入成功消息。步驟111,RAID處理器收到寫入數(shù)據(jù)成功消息后,判斷需要重建的所有條帶是否都重建完成,如果是,執(zhí)行步驟112,否則,執(zhí)行步驟102。同現(xiàn)有技術(shù)一致,不再贅述。步驟112,RAID數(shù)據(jù)重建結(jié)束。當(dāng)RAID處理器已建立了無法讀出數(shù)據(jù)的記錄表時,數(shù)據(jù)重建,從正常磁盤中讀取重建所需數(shù)據(jù)之前需進行如下操作查詢無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)的條帶所對應(yīng)的磁盤地址中有有無法讀出的記錄時,不再讀取有記錄的地址對應(yīng)位置數(shù)據(jù),在后續(xù)計算該條帶新的校驗和時,用預(yù)設(shè)固定值替代記錄表中有記錄的數(shù)據(jù)。否則,直接執(zhí)行步驟 102。下面詳細描述在上述RAID陣列重建完成后的用戶數(shù)據(jù)讀寫過程。首先詳細描述磁盤讀數(shù)據(jù)的過程。參見圖2,圖2為本發(fā)明讀數(shù)據(jù)過程流程圖。具體步驟為步驟201,RAID讀數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表。步驟202,判斷要讀取數(shù)據(jù)對應(yīng)位置地址在無法讀出數(shù)據(jù)的記錄表中是否有記錄, 如果是,執(zhí)行步驟203 ;否則,執(zhí)行步驟204。步驟203,返回讀數(shù)據(jù)錯誤。本流程結(jié)束。步驟204,直接讀取要讀取的數(shù)據(jù),判斷要讀取的數(shù)據(jù)是否可以讀出,如果是,執(zhí)行步驟205 ;否則,執(zhí)行步驟206。步驟205,返回讀數(shù)據(jù)。本流程結(jié)束。
步驟206,查詢要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址是否在無法讀取數(shù)據(jù)的記錄表中有記錄,如果是,執(zhí)行步驟207 ;否則,執(zhí)行步驟208。步驟207,以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。本流程結(jié)束。步驟208,根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。接下來詳細描述磁盤寫數(shù)據(jù)的過程。參見圖3,圖3為本發(fā)明寫數(shù)據(jù)過程流程圖。 具體步驟為步驟301,RAID寫數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表。步驟302,判斷要寫入數(shù)據(jù)的地址在記錄表中是否有記錄,如果是,執(zhí)行步驟304 ; 否則,執(zhí)行步驟303。步驟303,直接寫入數(shù)據(jù)。本流程結(jié)束。寫入數(shù)據(jù)后,需重新計算該條帶的校驗和,并重新寫入該條帶校驗和,該過程同現(xiàn)有技術(shù)一致,不再贅述。步驟304,判斷要寫入數(shù)據(jù)的地址所在條帶是否整條帶數(shù)據(jù)寫入,如果是,執(zhí)行步驟305,否則,執(zhí)行步驟306。步驟305,直接寫入整條帶數(shù)據(jù),寫入成功后,清除記錄表中該地址數(shù)據(jù)無法讀出記錄。本流程結(jié)束。本步驟中,記錄表中該地址數(shù)據(jù)無法讀出記錄被清除,表明該條帶所有數(shù)據(jù)恢復(fù)正常。步驟306,以預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)磁盤對應(yīng)位置,寫入成功后,清除記錄表中該地址數(shù)據(jù)無法讀出記錄。本步驟中重新計算該條帶數(shù)據(jù)校驗和的方法為替代無法讀出數(shù)據(jù)的預(yù)設(shè)固定值,同要寫入的數(shù)據(jù),以及該條帶的原校驗和做異或運算,得出的數(shù)據(jù)作為新的校驗和。在本發(fā)明中,所提到的計算均為異或運算。記錄表中該地址數(shù)據(jù)無法讀出記錄被清除,表明該條帶恢復(fù)正常?;谂c上述RAID數(shù)據(jù)重建方法同樣的發(fā)明構(gòu)思,本發(fā)明還提出一種RAID數(shù)據(jù)重建裝置。參見圖4,圖4為RAID數(shù)據(jù)重建裝置結(jié)構(gòu)示意圖。該裝置在數(shù)據(jù)重建時,對于每個條帶的重建方式一致,該裝置包括讀數(shù)據(jù)模塊401和數(shù)據(jù)重建模塊402。讀數(shù)據(jù)模塊401,與數(shù)據(jù)重建模塊402相連,對于每個條帶用于從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,將成功讀出的重建所需數(shù)據(jù)發(fā)送給數(shù)據(jù)重建模塊402 ;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給數(shù)據(jù)重建模塊402 ;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則將預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給數(shù)據(jù)重建模塊402 ;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給數(shù)據(jù)重建模塊402。數(shù)據(jù)重建模塊402,收到讀數(shù)據(jù)模塊401發(fā)來的重建所需數(shù)據(jù),用重建所需數(shù)據(jù)計算重建數(shù)據(jù),并將計算結(jié)果寫入重建磁盤對應(yīng)的位置;收到讀數(shù)據(jù)模塊401發(fā)來的已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值,將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到讀數(shù)據(jù)模塊401發(fā)來的已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,將收到數(shù)據(jù)做異或運算, 計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到讀數(shù)據(jù)模塊401發(fā)來的已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,用于將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。該裝置進一步包括存儲模塊403,與讀數(shù)據(jù)模塊401相連。讀數(shù)據(jù)模塊401,進一步用于無法成功讀出數(shù)據(jù)時建立無法讀出數(shù)據(jù)的記錄表, 并發(fā)送給存儲模塊403 ;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,將記錄該條帶重建磁盤對應(yīng)位置的地址及長度發(fā)送給存儲模塊403 ;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和時,記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,將該條帶重建磁盤對應(yīng)位置的地址及長度,及無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度發(fā)送給存儲模塊403 ;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù), 則記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并發(fā)送給存儲模塊403。存儲模塊403,收到讀數(shù)據(jù)模塊401發(fā)來的無法讀取數(shù)據(jù)的記錄表,將記錄表存儲,收到數(shù)據(jù)模塊的401發(fā)來的地址及長度,將地址及長度存儲在記錄表中。該裝置進一步包括查詢模塊404,與存儲模塊403和讀數(shù)據(jù)模塊401相連,用于從存儲模塊403中存儲的記錄表中查找,如果該條帶的數(shù)據(jù)所在位置地址有有無法讀出數(shù)據(jù)的記錄時,向數(shù)據(jù)讀取模塊401發(fā)送不對取該對應(yīng)位置地址的數(shù)據(jù),如果重建需要該位置地址對應(yīng)的數(shù)據(jù),以預(yù)設(shè)固定值替代;否則不發(fā)送消息給讀數(shù)據(jù)模塊401。讀數(shù)據(jù)模塊401,進一步用于收到查詢模塊404發(fā)來的消息,不再讀取對應(yīng)位置地址的數(shù)據(jù),如果需要發(fā)送該對應(yīng)位置的數(shù)據(jù),則用預(yù)設(shè)固定值替代發(fā)送給數(shù)據(jù)重建模塊 402。該裝置進一步包括數(shù)據(jù)讀模塊405,與數(shù)據(jù)重建模塊402和存儲模塊403相連, 用于讀數(shù)據(jù),查詢存儲模塊403中無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表有記錄,則返回讀數(shù)據(jù)錯誤;如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表無記錄,且能直接讀出數(shù)據(jù),則返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中有記錄時,則以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中都無記錄時,則根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。該裝置進一步包括數(shù)據(jù)寫模塊406,與數(shù)據(jù)重建模塊402和存儲模塊403相連, 用于寫數(shù)據(jù),查詢存儲模塊403中無法讀出數(shù)據(jù)的記錄表,如果要寫入數(shù)據(jù)的地址在所述記錄表中無記錄時,則直接寫入數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且要寫入數(shù)據(jù)的地址所在條帶要整條帶數(shù)據(jù)寫入時,直接寫入整條帶數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且只寫入要寫數(shù)據(jù)時,則以預(yù)設(shè)固定值替代所述要寫入數(shù)據(jù)的地址存儲的數(shù)據(jù),重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)地址。綜上所述,本發(fā)明在RAID數(shù)據(jù)重建,讀數(shù)據(jù)存在未讀出時,用預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù)計算新的校驗和,并記錄將數(shù)據(jù)的磁盤未讀出數(shù)據(jù)對應(yīng)位置地址及長度記錄在無法讀出數(shù)據(jù)的記錄表中大小。因此,本發(fā)明所提供的技術(shù)方案不僅在重建讀數(shù)據(jù)出錯時可以繼續(xù)重建,且重建后該條帶還是數(shù)據(jù)冗余的。如果再有其它磁盤出現(xiàn)故障時,上次重建數(shù)據(jù)可以提供冗余,來重建新的故障磁盤。數(shù)據(jù)重建過程中無法讀出數(shù)據(jù)的記錄表中的記錄,只要后續(xù)寫該數(shù)據(jù)成功,就可將無法讀出記錄清除,該條帶可恢復(fù)成正常的一致性冗余。本發(fā)明的實現(xiàn)方案對RAID的讀寫和重建流程改動較少,但是提高容錯和可靠性效果明
Mo以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1.一種獨立磁盤冗余陣列RAID數(shù)據(jù)重建方法,所述RAID中包括正常磁盤和重建磁盤, 所有磁盤被劃分成多個分塊,每個磁盤上對應(yīng)位置的分塊的組合稱為條帶,其特征在于,在數(shù)據(jù)重建時,對于每個條帶,該方法包括從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,則用讀出的數(shù)據(jù)計算重建數(shù)據(jù),并將計算結(jié)果寫入重建磁盤對應(yīng)位置;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則以所述預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值, 以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置,記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),根據(jù)已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果存在無法讀出重建所需數(shù)據(jù)時,該方法進一步包括建立無法讀出數(shù)據(jù)的記錄表;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,則將所述記錄的該條帶重建磁盤對應(yīng)位置的地址及長度保存在所述記錄表中;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則將該條帶重建磁盤對應(yīng)位置的地址及長度存保存在所述記錄表中,同時還記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并保存在所述記錄表中;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并保存在所述記錄表中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從正常磁盤中讀取重建所需數(shù)據(jù),之前該方法進一步包括查詢所述記錄表,如果該條帶數(shù)據(jù)所在位置地址有無法讀取數(shù)據(jù)的記錄時,不讀取有無法讀取數(shù)據(jù)記錄的磁盤對應(yīng)位置數(shù)據(jù),用預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù)來計算該條帶新的校驗和。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)重建完成之后,該方法進一步包括讀數(shù)據(jù);所述讀數(shù)據(jù)方法為RAID讀數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表有記錄,則返回讀數(shù)據(jù)錯誤;如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表無記錄,且能直接讀出數(shù)據(jù),則返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中有記錄時,則以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中都無記錄時,則根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)重建完成之后,該方法進一步包括寫數(shù)據(jù);所述寫數(shù)據(jù)方法為RAID寫數(shù)據(jù),查詢無法讀出數(shù)據(jù)的記錄表,如果要寫入數(shù)據(jù)的地址在所述記錄表中無記錄時,則直接寫入數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且要寫入數(shù)據(jù)的地址所在條帶要整條帶數(shù)據(jù)寫入時,直接寫入整條帶數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且只寫入要寫數(shù)據(jù)時,則以預(yù)設(shè)固定值替代所述要寫入數(shù)據(jù)的地址存儲的數(shù)據(jù),重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)地址。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述直接寫入整條帶數(shù)據(jù),之后進一步包括寫入成功后,清除所述記錄表中要寫入數(shù)據(jù)對應(yīng)地址數(shù)據(jù)無法讀出記錄;所述將要寫入的數(shù)據(jù)寫入對應(yīng)地址,之后進一步包括寫入成功后,清除所述記錄表中要寫入數(shù)據(jù)對應(yīng)地址數(shù)據(jù)無法讀出記錄。
7.根據(jù)權(quán)利要求1-6任意一項所述的方法,其特征在于,所述計算方法為異或運算。
8.根據(jù)權(quán)利要求1-6任意一項所述的方法,其特征在于,所述磁盤地址為磁盤LBA地址或物理地址。
9.一種獨立磁盤冗余陣列RAID數(shù)據(jù)重建裝置,其特征在于,該裝置包括讀數(shù)據(jù)模塊和數(shù)據(jù)重建模塊;所述讀數(shù)據(jù)模塊,與所述數(shù)據(jù)重建模塊相連,對于每個條帶用于從正常磁盤中讀取重建所需數(shù)據(jù),如果成功讀出,將成功讀出的重建所需數(shù)據(jù)發(fā)送給所述數(shù)據(jù)重建模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,以預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和,則將預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和所述重建磁盤對應(yīng)位置的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;記錄該條帶重建磁盤對應(yīng)位置的地址及長度;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則以所述預(yù)設(shè)固定值替代無法讀出的數(shù)據(jù),并將已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值發(fā)送給所述數(shù)據(jù)重建模塊;所述數(shù)據(jù)重建模塊,收到所述讀數(shù)據(jù)模塊發(fā)來的重建所需數(shù)據(jù),用重建所需數(shù)據(jù)計算重建數(shù)據(jù),并將計算結(jié)果寫入重建磁盤對應(yīng)的位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的重建所需數(shù)據(jù)和用于替代重建磁盤對應(yīng)位置數(shù)據(jù)的預(yù)設(shè)固定值,將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的普通數(shù)據(jù)、用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,以及用于替代重建磁盤對應(yīng)位置的數(shù)據(jù)的預(yù)設(shè)固定值,將收到數(shù)據(jù)做異或運算, 計算該條帶新的校驗和,并將計算出的新的校驗和寫入該條帶存儲原校驗和的磁盤的對應(yīng)位置;收到所述讀數(shù)據(jù)模塊發(fā)來的已讀出的普通數(shù)據(jù)和用于替代無法讀出的數(shù)據(jù)的預(yù)設(shè)固定值,用于將收到的數(shù)據(jù)做異或運算,計算該條帶新的校驗和,并將計算出的新的校驗和寫入重建磁盤的對應(yīng)位置。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,該裝置進一步包括存儲模塊;所述讀數(shù)據(jù)模塊,進一步用于無法成功讀出數(shù)據(jù)時建立無法讀出數(shù)據(jù)的記錄表,并發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的校驗和時,將記錄該條帶重建磁盤對應(yīng)位置的地址及長度發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)包含該條帶的普通數(shù)據(jù)與校驗和時, 記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,將該條帶重建磁盤對應(yīng)位置的地址及長度,及無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度發(fā)送給所述存儲模塊;如果存在無法讀出重建所需數(shù)據(jù)且是該條帶的普通數(shù)據(jù)時,當(dāng)已讀出的重建所需數(shù)據(jù)都是普通數(shù)據(jù),則記錄無法讀出數(shù)據(jù)的磁盤對應(yīng)位置的地址及長度,并發(fā)送給所述存儲模塊;所述存儲模塊,與所述讀數(shù)據(jù)模塊相連,用于收到所述讀數(shù)據(jù)模塊發(fā)來的無法讀取數(shù)據(jù)的記錄表,將記錄表存儲,收到所述數(shù)據(jù)模塊的發(fā)來的地址及長度,將地址及長度存儲在記錄表中。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,該裝置進一步包括查詢模塊;所述查詢模塊與所述存儲模塊和所述讀數(shù)據(jù)模塊相連,用于從所述存儲模塊中存儲的記錄表中查找,如果該條帶的數(shù)據(jù)所在位置地址有有無法讀出數(shù)據(jù)的記錄時,向所述數(shù)據(jù)讀取模塊發(fā)送不對取該對應(yīng)位置地址的數(shù)據(jù),如果重建需要該位置地址對應(yīng)的數(shù)據(jù),以預(yù)設(shè)固定值替代;否則不發(fā)送消息給所述讀數(shù)據(jù)模塊;所述讀數(shù)據(jù)模塊,進一步用于收到所述查詢模塊發(fā)來的消息,不再讀取對應(yīng)位置地址的數(shù)據(jù),如果需要發(fā)送該對應(yīng)位置的數(shù)據(jù),則用預(yù)設(shè)固定值替代發(fā)送給所述數(shù)據(jù)重建模塊。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,該裝置進一步包括數(shù)據(jù)讀模塊;所述數(shù)據(jù)讀模塊與所述數(shù)據(jù)重建模塊和所述存儲模塊相連,用于讀數(shù)據(jù),查詢所述存儲模塊中無法讀出數(shù)據(jù)的記錄表,如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表有記錄,則返回讀數(shù)據(jù)錯誤;如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表無記錄,且能直接讀出數(shù)據(jù), 則返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中有記錄時,則以預(yù)設(shè)固定值替代記錄表中無法讀出的數(shù)據(jù),根據(jù)用于替代無法讀出的數(shù)據(jù),以及已讀出的數(shù)據(jù),通過校驗恢復(fù)要讀取的數(shù)據(jù),返回讀數(shù)據(jù);如果要讀取數(shù)據(jù)對應(yīng)位置地址在所述記錄表中無記錄,但不能讀出數(shù)據(jù),當(dāng)要讀取的數(shù)據(jù)所在條帶的其它磁盤對應(yīng)位置地址在所述記錄表中都無記錄時,則根據(jù)已讀出的數(shù)據(jù),通過校驗恢復(fù)要要讀取的數(shù)據(jù),返回讀數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,該裝置進一步包括數(shù)據(jù)寫模塊; 所述數(shù)據(jù)寫模塊與所述數(shù)據(jù)重建模塊和所述存儲模塊相連,用于寫數(shù)據(jù),查詢所述存儲模塊中無法讀出數(shù)據(jù)的記錄表,如果要寫入數(shù)據(jù)的地址在所述記錄表中無記錄時,則直接寫入數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且要寫入數(shù)據(jù)的地址所在條帶要整條帶數(shù)據(jù)寫入時,直接寫入整條帶數(shù)據(jù);如果要寫入數(shù)據(jù)的地址在所述記錄表中有記錄,且只寫入要寫數(shù)據(jù)時,則以預(yù)設(shè)固定值替代所述要寫入數(shù)據(jù)的地址存儲的數(shù)據(jù),重新計算該條帶數(shù)據(jù)校驗和,并寫入該條帶存儲原校驗和磁盤的對應(yīng)位置,將要寫入的數(shù)據(jù)寫入對應(yīng)地址。
全文摘要
本發(fā)明提供了一種獨立磁盤冗余陣列RAID數(shù)據(jù)重建方法,該方法包括從正常磁盤中讀取重建所需數(shù)據(jù),如果重建所需數(shù)據(jù)中的普通數(shù)據(jù)存在無法讀出時,以預(yù)設(shè)固定值分別替代無法讀出的數(shù)據(jù)和重建磁盤對應(yīng)位置的數(shù)據(jù),計算條帶新的校驗和;如果重建所需數(shù)據(jù)中的校驗和無法讀出時,用預(yù)設(shè)固定值替代重建磁盤對應(yīng)位置的數(shù)據(jù),計算新的校驗和;重建磁盤未能恢復(fù)的數(shù)據(jù),記錄重建磁盤對應(yīng)位置地址無法讀出數(shù)據(jù)。基于上述同樣的發(fā)明構(gòu)思,本發(fā)明還提出一種裝置,在能夠及時數(shù)據(jù)重建的情況下,如果該條帶其它磁盤數(shù)據(jù)再出現(xiàn)無法讀出時,最大可能地提供了冗余。
文檔編號G06F11/10GK102207895SQ201110141358
公開日2011年10月5日 申請日期2011年5月27日 優(yōu)先權(quán)日2011年5月27日
發(fā)明者胡榮國 申請人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
剑阁县| 鄂托克旗| 柏乡县| 衡南县| 宜兴市| 河南省| 扶余县| 兰坪| 晋城| 通州市| 昌平区| 盐山县| 临汾市| 库尔勒市| 广宗县| 安阳市| 迁安市| 德钦县| 临湘市| 广西| 昌图县| 张掖市| 龙山县| 海原县| 彰武县| 老河口市| 龙门县| 安庆市| 石台县| 吕梁市| 剑阁县| 武夷山市| 新民市| 大方县| 怀来县| 铁力市| 长沙县| 曲周县| 定日县| 会同县| 偏关县|