專利名稱:一種raid類型判斷方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機存儲領(lǐng)域,更具體地說,涉及一種RAID類型判斷方法。
背景技術(shù):
RAID重組屬于高端數(shù)據(jù)恢復(fù)技術(shù)的一種,涉及面廣,技術(shù)含量高。但是因為耗費人力資源眾多、工序繁瑣,成本奇高,收費也相當(dāng)可觀。RAID重組中,分析是最重要的環(huán)節(jié),注意我們所指的RAID是對RAIDO、RAIDl、RAID5、RAID6、JBOD等常用陣列而言。
從RAID的原理來講,其本質(zhì)是利用多磁盤并行協(xié)作,達(dá)到擴容和增加吞吐量的目的,所以,RAID必然有一套相當(dāng)復(fù)雜的數(shù)據(jù)分配機制,既要保證數(shù)據(jù)按照協(xié)議規(guī)定的情形被寫在指定磁盤的指定位置,又要保證這種協(xié)議不會導(dǎo)致性能的損失,甚至要起到優(yōu)化性能,增強安全性的作用。當(dāng)RAID系統(tǒng)崩潰時,其賴以生存的數(shù)據(jù)組織協(xié)議就不復(fù)存在。這樣操作系統(tǒng)識別RAID的抽象接口也將隨之瓦解。此刻RAID由一個存儲整體分割成了一個個磁盤單位。我們無論從任何一塊磁盤角度來看,里面的數(shù)據(jù)都毫無意義。RAID重組就是根據(jù)RAID協(xié)議中所描述的算法,利用程序模擬RAID本來面貌,從而恢復(fù)數(shù)據(jù)的一種有效手段,是災(zāi)難拯救中非常重要的一環(huán)。由于RAID種類眾多,大大增減了自動化分析的難度,所以迄今為止,手工分析仍是RAID重組學(xué)科中的主流技術(shù)。即便擁有自動分析的軟件,仍有一個主要問題無法解決,那就是RAID種類識別,據(jù)統(tǒng)計80%的RAID數(shù)據(jù)恢復(fù)客戶不清楚或錯誤地判斷自己存儲系統(tǒng)的RAID類型,給數(shù)據(jù)恢復(fù)工程師造成誤導(dǎo),大大增加了分析難度。中國發(fā)明專利申請201010140518. 7公開了一種遠(yuǎn)程智能監(jiān)控與分析RAID故障的方法,采用分布式數(shù)據(jù)處理模式,本地實時監(jiān)視與預(yù)測RAID的工作狀態(tài),當(dāng)發(fā)出現(xiàn)異常時,本地計算機將與RAID相關(guān)的參數(shù)及RAID的工作狀態(tài)發(fā)送至Web服務(wù)端,由服務(wù)端程序確定告警的級別和相應(yīng)的處理方案,并將告警信息與系統(tǒng)自動產(chǎn)生的故障解決方案及時告知用戶,本發(fā)明的有益效果是=RAID發(fā)生故障或異常時及時告知用戶,避免因數(shù)據(jù)丟失帶來的損失。為用戶提供遠(yuǎn)程的智能化的故障診斷與問題解決方案,幫助用戶快速定位故障,并迅速有效的解決問題??墒巧鲜鰧@暾埖募夹g(shù)方案是建立在確定RAID類型的基礎(chǔ)上進行操作,如果在不確定故障RAID類型的情況下進行恢復(fù)操作,容易誤導(dǎo)數(shù)據(jù)恢復(fù)工程師做出錯誤的判斷,并造成時間上的浪費。如果依次嘗試假設(shè)各種類型的RAID,則需要大量的時間進行操作。特別是對于大存儲量的RAID來說,恢復(fù)數(shù)據(jù)往往需要幾十小時,或者上百小時。依次嘗試各種類型,將浪費大量的時間,并不可行
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種能夠?qū)崿F(xiàn)RAID類型的自動化識別,而且速度極快,可以滿足大多數(shù)數(shù)據(jù)恢復(fù)從業(yè)人員需求的RAID類型判斷方法。本發(fā)明的技術(shù)方案如下一種RAID類型判斷方法,步驟如下I)讀取RAID系統(tǒng)中各硬盤相同地址的數(shù)據(jù);2)根據(jù)各種RAID類型中,各硬盤相同址的數(shù)據(jù)間的關(guān)系,確定RAID類型。作為優(yōu)選,步驟I)具體為在RAID系統(tǒng)中抽取任意一塊硬盤,搜尋一個以上非全O扇區(qū),記錄地址并讀取所述的扇區(qū)至內(nèi)存;在其余硬盤中搜尋相同地址的非全O扇區(qū)至內(nèi)存,分別保存在內(nèi)存中的區(qū)域SI、S2、S3、……、Sn。 作為優(yōu)選,搜尋非全O扇區(qū)的范圍為整個磁盤容量區(qū)域。作為優(yōu)選,步驟2)中,如果SI異或S2異或S3、......、等于Sn,則確定當(dāng)前RAID
類型為RAID5。作為優(yōu)選,步驟I)具體為查找硬盤中的主文件表(MFT),記錄主文件表(MFT)中的文件記錄數(shù)組的地址,在每個硬盤上讀取文件記錄數(shù)組的地址的數(shù)據(jù)至內(nèi)存中。作為優(yōu)選,查找硬盤中的主文件表(MFT)具體為在RAID系統(tǒng)中抽取任意一塊硬盤,搜索0x460x490x4C0x45四個字節(jié),然后連續(xù)搜索32KB的區(qū)域,如果所述的32KB的區(qū)域中每KB的前四個字節(jié)均為0x460x490x403x45,則停止搜索,記錄當(dāng)前地址;讀取的文件記錄數(shù)組的數(shù)據(jù)為1KB。作為優(yōu)選,步驟2)具體為2. I)在讀取的數(shù)據(jù)中的0x2C偏移處獲得一個無符號整型變量,記為a、b、C、d、......;2. 2)對所述的整型變量進行升冪排序;2. 3)判斷排序后的的無符號整型數(shù)據(jù)是否為等差,并且判斷其差是否滿足2的η次冪,如果滿足,確定該RAID類型為RAIDO。作為優(yōu)選,步驟2)中,排除S1、S2、S3、……、Sn中的一個區(qū)域的數(shù)據(jù),對其余數(shù)據(jù)進行異或運算,如果除最后一個數(shù)據(jù)的其他在前數(shù)據(jù)依次異或的結(jié)果等于最后一個數(shù)據(jù),而且排除的數(shù)據(jù)滿足其它數(shù)據(jù)的里德-所羅門編碼運算,則確定該RAID類型為RAID6。作為優(yōu)選,步驟I)具體為在每個硬盤上隨機讀取一個以上地址相同的非全O扇區(qū)。作為優(yōu)選,如果每個硬盤的相同地址的非全O扇區(qū)完全相等,則該RAID類型為RAIDl0作為優(yōu)選,步驟I)具體為在每個硬盤上并行搜索主引導(dǎo)(MBR)扇區(qū),如果在某個硬盤上找到主引導(dǎo)(MBR)扇區(qū),則設(shè)該硬盤為RAID系統(tǒng)的I號盤。作為優(yōu)選,步驟2)具體為2. I)從主引導(dǎo)(MBR)扇區(qū)中的0x01D6處提取一個32位整型作為擴展分區(qū)的起始地址;2. 2)從擴展分區(qū)的擴展分區(qū)引導(dǎo)(EBR)扇區(qū)的0x01C6處提取一個32位整型作為第一個分區(qū)的DBR扇區(qū)的起始地址;2. 3)在所述的分區(qū)的DOS引導(dǎo)記錄(DBR)扇區(qū)的0x30處獲取其主文件表(MFT)的起始地址;2. 4)依次讀取主文件表(MFT)記錄,如果每個記錄的0x2C處提取的32位整型為連續(xù)整數(shù),該RAID類型為JB0D。本發(fā)明的有益效果如下本發(fā)明所述的RAID類型判斷方法,填補了本領(lǐng)域內(nèi),關(guān)于RAID類型的判斷的技術(shù)的空白,大大彌補了某些RAID參數(shù)分析軟件的不足。采用本發(fā)明所述的技術(shù)方案,可以大大增加RAID重組技術(shù)的智能性,節(jié)約時間,減少成本,降低工程師壓力;更重要的,可以避免因客戶提供錯誤信息而帶來的更大損失。
綜上所述,本發(fā)明所述的方法作為本領(lǐng)域內(nèi)對空白技術(shù)的重要補充,而且具備多方面的優(yōu)越性,擁有廣闊市場前景。
具體實施例方式以下結(jié)合實施例對本發(fā)明進行進一步的詳細(xì)說明。常用RAID 種類有 JBOD、RAID O、RAID I、RAID 5、RAID 6、RAID 10 以及 RAID 50等,不同類型的RAID具有各自不同的數(shù)據(jù)存儲規(guī)則。因此,本發(fā)明在對各種類型的RAID的存儲規(guī)則進行判斷,從而進行RAID的類型的確認(rèn)。步驟如下I)讀取RAID系統(tǒng)中各硬盤相同地址的數(shù)據(jù);2)根據(jù)各種RAID類型中,各硬盤相同址的數(shù)據(jù)間的關(guān)系,確定RAID類型。RAID5的判斷方法步驟I、在RAID系統(tǒng)中抽取任意一塊硬盤,搜尋一個以上非全O扇區(qū),搜尋非全O扇區(qū)的范圍為整個磁盤容量區(qū)域;記錄地址并讀取所述的扇區(qū)至內(nèi)存;在其余硬盤中搜尋相同地址的非全O扇區(qū)至內(nèi)存,分別保存在內(nèi)存中的區(qū)域SI、S2、S3、……、Sn。步驟2、如果SI異或S2異或S3、……、等于Sn,則確定當(dāng)前RAID類型為RAID5。實施例一在RAID系統(tǒng)中抽取任意一塊硬盤,在整個磁盤容量區(qū)域內(nèi),搜尋1000個非全O扇區(qū)。記錄地址并讀取這些扇區(qū)至內(nèi)存;在其它磁盤的相同地址讀取1000個非O扇區(qū)至內(nèi)存中。內(nèi)存區(qū)域我們用A、B、C、D……表示。比如陣列中有4塊硬盤,我們就,分別讀取到A、B、C、D……中;對這數(shù)據(jù)進行異或運算,如果滿足A異或B異或C等于D,可以確定該陣列是RAID5,流程中止。RAIDO的判斷方法步驟I、查找硬盤中的主文件表(MFT),記錄主文件表(MFT)中的文件記錄數(shù)組的地址,在每個硬盤上讀取文件記錄數(shù)組的地址的數(shù)據(jù)至內(nèi)存中。查找硬盤中的主文件表(MFT)具體為在RAID系統(tǒng)中抽取任意一塊硬盤,搜索0x460x490x4C0x45四個字節(jié),然后連續(xù)搜索32KB的區(qū)域,如果所述的32KB的區(qū)域中每KB的前四個字節(jié)均為0x460x490x4C0x45,則停止搜索,記錄當(dāng)前地址;讀取的文件記錄數(shù)組的數(shù)據(jù)為IKB。步驟2、
2. I)在讀取的數(shù)據(jù)中的0x2C偏移處獲得一個無符號整型變量;2. 2)對所述的整型變量進行升冪排序;2. 3)判斷排序后的的無符號整型數(shù)據(jù)是否為等差,并且判斷其差是否滿足2的η次冪,如果滿足,確定該RAID類型為RAIDO。實施例二搜索0x460x490x4C0x45四個字節(jié) ,也就是MFT記錄標(biāo)記,搜索成功后繼續(xù)搜索,如果連續(xù)32KB的區(qū)域內(nèi),每KB中的前4個字節(jié)都是0x460x490x4C0x45,搜索停止,記錄當(dāng)前地址到變量A中,否則繼續(xù)搜索。在每塊磁盤的變量地址處都讀取IKB數(shù)據(jù)至內(nèi)存中。在讀取的數(shù)據(jù)中的0x2C偏移處獲得一個無符號整型變量,我們記為a、b、c、d·.·。 對這些整型變量做升冪排序。判斷這些無符號整型彼此的差是否相等,其差是否滿足2的次冪,如果滿足可以確定該RAID為RAID0。仍以4塊盤為例單位KB、a為32,b為64,c為96、d為128,它們的彼此差為32,32又是2的5次方,那么條件滿足,這4塊硬盤是一個RAIDO系統(tǒng),本步驟同時得出RAID條帶塊大小為32KB。RAID6的判斷方法步驟I、在RAID系統(tǒng)中抽取任意一塊硬盤,搜尋一個以上非全O扇區(qū),搜尋非全O扇區(qū)的范圍為整個磁盤容量區(qū)域;記錄地址并讀取所述的扇區(qū)至內(nèi)存;在其余硬盤中搜尋相同地址的非全O扇區(qū)至內(nèi)存,分別保存在內(nèi)存中的區(qū)域SI、S2、S3、……、Sn。步驟2、排除S1、S2、S3、……、Sn中的一個區(qū)域的數(shù)據(jù),對其余數(shù)據(jù)進行異或運算,如果除最后一個數(shù)據(jù)的其他在前數(shù)據(jù)依次異或的結(jié)果等于最后一個數(shù)據(jù),而且排除的數(shù)據(jù)滿足其它數(shù)據(jù)的里德-所羅門編碼運算,則確定該RAID類型為RAID6。實施例三在RAID系統(tǒng)中抽取任意一塊硬盤,在整個磁盤容量區(qū)域內(nèi),搜尋1000個非全O扇區(qū)。記錄地址并讀取這些扇區(qū)至內(nèi)存;在其它磁盤的相同地址讀取1000個非O扇區(qū)至內(nèi)存中。內(nèi)存區(qū)域我們用A、B、C、D……表示。比如陣列中有4塊硬盤,我們就,分別讀取到A、B、C、D……中;并在排除一塊磁盤的情況下重復(fù)異或運算步驟。例如A、B、C、D、E、F6塊內(nèi)存區(qū)域,我們首先排除A,也就是看B、C、D、E、F是否滿
足異或運算關(guān)系,如果是進行步驟10,如果不是排除B看A、C、D、E、F是否滿足異或關(guān)系,以此類推。判斷排除掉的數(shù)據(jù)是否滿足其它數(shù)據(jù)的里德所羅門編碼運算,如果是則確定該陣列為RAID6。RAIDl的判斷方法在每個硬盤上隨機讀取一個以上地址相同的非全O扇區(qū)。如果每個硬盤的相同地址的非全O扇區(qū)完全相等,則該RAID類型為RAIDl。實施例四如果磁盤數(shù)量只有兩塊,則隨機抽取10000個非全O扇區(qū)并記錄它們的地址。在另一塊磁盤的相同位置處共提取10000個非全O扇區(qū),比較提取數(shù)據(jù),如果完全相等,則為RAIDloJBOD的判斷方法步驟I、在每個硬盤上并行搜索主引導(dǎo)(MBR)扇區(qū),如果在某個硬盤上找到主引導(dǎo)(MBR)扇區(qū),則設(shè)該硬盤為RAID系統(tǒng)的I號盤。步驟2、2. I)從主引導(dǎo)(MBR)扇區(qū)中的0x01D6處提取一個32位整型作為擴展分區(qū)的起始地址;2. 2)從擴展分區(qū)的擴展分區(qū)引導(dǎo)(EBR)扇區(qū)的0x01C6處提取一個32位整型作為第一個分區(qū)的DBR扇區(qū)的起始地址;
2. 3)在所述的分區(qū)的DOS引導(dǎo)記錄(DBR)扇區(qū)的0x30處獲取其主文件表(MFT)的起始地址;2. 4)依次讀取主文件表(MFT)記錄,如果每個記錄的0x2C處提取的32位整型為連續(xù)整數(shù),該RAID類型為JB0D。實施例五如果磁盤數(shù)量大于2塊,則在幾塊硬盤內(nèi)并行搜索MBR扇區(qū),如果在某塊磁盤內(nèi)找到MBR扇區(qū),則假設(shè)該磁盤為RAID系統(tǒng)的I號盤。從MBR中0x01D6處提取一個32位整型作為擴展分區(qū)的起始地址,從擴展分區(qū)的EBR扇區(qū)的0x01C6處提取一個32位整型作為第一個分區(qū)的DBR扇區(qū)的起始地址,在該分區(qū)DBR扇區(qū)的0x30處獲取其MFT表的起始地址。依次讀取MFT記錄,大小1KB,判斷每個記錄的0x2C處提取的32位整型是否滿足連續(xù)的整數(shù)特性,如果滿足,該RAID為JB0D。比如第一個記錄0x2C處應(yīng)當(dāng)為O、第二個記錄為I......一直連續(xù)至N,就認(rèn)為其滿
足JBOD的特性。上述實施例僅是用來說明本發(fā)明,而并非用作對本發(fā)明的限定。只要是依據(jù)本發(fā)明的技術(shù)實質(zhì),對上述實施例進行變化、變型等都將落在本發(fā)明的權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種RAID類型判斷方法,其特征在于,步驟如下 O讀取RAID系統(tǒng)中各硬盤相同地址的數(shù)據(jù); 2)根據(jù)各種RAID類型中,各硬盤相同址的數(shù)據(jù)間的關(guān)系,確定RAID類型。
2.根據(jù)權(quán)利要求I所述的RAID類型判斷方法,其特征在于,步驟I)具體為在RAID系統(tǒng)中抽取任意一塊硬盤,搜尋一個以上非全O扇區(qū),記錄地址并讀取所述的扇區(qū)至內(nèi)存;在其余硬盤中搜尋相同地址的非全O扇區(qū)至內(nèi)存,分別保存在內(nèi)存中的區(qū)域S1、S2、S3、……、Sn。
3.根據(jù)權(quán)利要求2所述的RAID類型判斷方法,其特征在于,搜尋非全O扇區(qū)的范圍為整個磁盤容量區(qū)域。
4.根據(jù)權(quán)利要求2所述的RAID類型判斷方法,其特征在于,步驟2)中,如果SI異或S2異或S3、……、等于Sn,則確定當(dāng)前RAID類型為RAID5。
5.根據(jù)權(quán)利要求I所述的RAID類型判斷方法,其特征在于,步驟I)具體為查找硬盤中的主文件表(MFT),記錄主文件表(MFT)中的文件記錄數(shù)組的地址,在每個硬盤上讀取文件記錄數(shù)組的地址的數(shù)據(jù)至內(nèi)存中。
6.根據(jù)權(quán)利要求5所述的RAID類型判斷方法,其特征在于,查找硬盤中的主文件表(MFT)具體為在RAID系統(tǒng)中抽取任意一塊硬盤,搜索0x460x490x4C0x45四個字節(jié),然后連續(xù)搜索32KB的區(qū)域,如果所述的32KB的區(qū)域中每KB的前四個字節(jié)均為0x460x490x403x45,則停止搜索,記錄當(dāng)前地址;讀取的文件記錄數(shù)組的數(shù)據(jù)為1KB。
7.根據(jù)權(quán)利要求5所述的RAID類型判斷方法,其特征在于,步驟2)具體為 2. I)在讀取的數(shù)據(jù)中的0x2C偏移處獲得一個無符號整型變量; 2. 2)對所述的整型變量進行升冪排序; 2.3)判斷排序后的的無符號整型數(shù)據(jù)是否為等差,并且判斷其差是否滿足2的η次冪,如果滿足,確定該RAID類型為RAIDO。
8.根據(jù)權(quán)利要求2所述的RAID類型判斷方法,其特征在于,步驟2)中,排除SI、S2、S3、……、Sn中的一個區(qū)域的數(shù)據(jù),對其余數(shù)據(jù)進行異或運算,如果除最后一個數(shù)據(jù)的其他在前數(shù)據(jù)依次異或的結(jié)果等于最后一個數(shù)據(jù),而且排除的數(shù)據(jù)滿足其它數(shù)據(jù)的里德-所羅門編碼運算,則確定該RAID類型為RAID6。
9.根據(jù)權(quán)利要求I所述的RAID類型判斷方法,其特征在于,步驟I)具體為在每個硬盤上隨機讀取一個以上地址相同的非全O扇區(qū)。
10.根據(jù)權(quán)利要求9所述的RAID類型判斷方法,其特征在于,如果每個硬盤的相同地址的非全O扇區(qū)完全相等,則該RAID類型為RAIDl。
11.根據(jù)權(quán)利要求I所述的RAID類型判斷方法,其特征在于,步驟I)具體為在每個硬盤上并行搜索主引導(dǎo)(MBR)扇區(qū),如果在某個硬盤上找到主引導(dǎo)(MBR)扇區(qū),則設(shè)該硬盤為RAID系統(tǒng)的I號盤。
12.根據(jù)權(quán)利要求11所述的RAID類型判斷方法,其特征在于,步驟2)具體為 .2.I)從主引導(dǎo)(MBR)扇區(qū)中的0x01D6處提取一個32位整型作為擴展分區(qū)的起始地址; . 2.2)從擴展分區(qū)的擴展分區(qū)引導(dǎo)(EBR)扇區(qū)的0X01C6處提取一個32位整型作為第一個分區(qū)的DBR扇區(qū)的起始地址;。2.3)在所述的分區(qū)的DOS引導(dǎo)記錄(DBR)扇區(qū)的0x30處獲取其主文件表(MFT)的起始地址; 。 2.4)依次讀取主文件表(MFT)記錄,如果每個記錄的0x2C處提取的32位整型為連續(xù)整數(shù),該RAID類型為JB0D。
全文摘要
本發(fā)明涉及一種RAID類型判斷方法,步驟如下1)讀取RAID系統(tǒng)中各硬盤相同地址的數(shù)據(jù);2)根據(jù)各種RAID類型中,各硬盤相同址的數(shù)據(jù)間的關(guān)系,確定RAID類型。本發(fā)明的有益效果如下本發(fā)明所述的RAID類型判斷方法,填補了本領(lǐng)域內(nèi),關(guān)于RAID類型的判斷的技術(shù)的空白,大大彌補了某些RAID參數(shù)分析軟件的不足。采用本發(fā)明所述的技術(shù)方案,可以大大增加RAID重組技術(shù)的智能性,節(jié)約時間,減少成本,降低工程師壓力;更重要的,可以避免因客戶提供錯誤信息而帶來的更大損失。綜上所述,本發(fā)明所述的方法作為本領(lǐng)域內(nèi)對空白技術(shù)的重要補充,而且具備多方面的優(yōu)越性,擁有廣闊市場前景。
文檔編號G06F11/10GK102866933SQ201210321888
公開日2013年1月9日 申請日期2012年9月3日 優(yōu)先權(quán)日2012年9月3日
發(fā)明者高志鵬, 闕永明, 范鑫 申請人:廈門市美亞柏科信息股份有限公司