本發(fā)明涉及數(shù)據(jù)存儲(chǔ)處理領(lǐng)域,具體地,涉及一種數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法及系統(tǒng)。
背景技術(shù):
當(dāng)前的存儲(chǔ)普遍采用raid技術(shù)來(lái)避免單一硬件損壞導(dǎo)致的數(shù)據(jù)丟失。避免磁盤損壞的有raid5,raid6,華為的raid2.0技術(shù)等;避免云存儲(chǔ)服務(wù)器故障的n+mraid等。當(dāng)存儲(chǔ)數(shù)據(jù)節(jié)點(diǎn)(磁盤,或服務(wù)器)故障后,使用raid技術(shù)后,可以將損壞的硬件直接替換為新的硬件,然后通過(guò)算法恢復(fù)新硬件上的數(shù)據(jù)。
以raid5為例其技術(shù)實(shí)現(xiàn)方式如表1所示:
表1
raid5是一種存儲(chǔ)性能、數(shù)據(jù)安全和存儲(chǔ)成本兼顧的存儲(chǔ)解決方案。以四個(gè)硬盤組成的raid5為例,其數(shù)據(jù)存儲(chǔ)方式如圖3所示:圖3中,ap為a1,a2和a3的奇偶校驗(yàn)信息,其它以此類推。由圖中可以看出,raid5不對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行備份,而是把數(shù)據(jù)和相對(duì)應(yīng)的奇偶校驗(yàn)信息存儲(chǔ)到組成raid5的各個(gè)磁盤上,并且奇偶校驗(yàn)信息和相對(duì)應(yīng)的數(shù)據(jù)分別存儲(chǔ)于不同的磁盤上。當(dāng)raid5的一個(gè)磁盤數(shù)據(jù)發(fā)生損壞后,利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗(yàn)信息去恢復(fù)被損壞的數(shù)據(jù)。
raid5可以理解為是raid0和raid1的折衷方案。raid5可以為系統(tǒng)提供數(shù)據(jù)安全保障,但保障程度要比mirror低而磁盤空間利用率要比mirror高。raid5具有和raid0相近似的數(shù)據(jù)讀取速度,只是多了一個(gè)奇偶校驗(yàn)信息,寫入數(shù)據(jù)的速度比對(duì)單個(gè)磁盤進(jìn)行寫入操作稍慢。同時(shí)由于多個(gè)數(shù)據(jù)對(duì)應(yīng)一個(gè)奇偶校驗(yàn)信息,raid5的磁盤空間利用率要比raid1高,存儲(chǔ)成本相對(duì)較低。
當(dāng)圖3的disk3(disk0,disk1,disk2等任意盤損壞均可)損壞時(shí),可以通過(guò)其它幾個(gè)盤的數(shù)據(jù)來(lái)計(jì)算出disk3的數(shù)據(jù);然后把disk3磁盤換掉,更換為新的空白磁盤disk3`;然后通過(guò)算法恢復(fù)disk3`上的數(shù)據(jù)。
如圖3通過(guò)a1與a2與a3算出ap,b1與b2與bp算出b3,以此類推還可以算出c3,d3。從而恢復(fù)disk3`上的數(shù)據(jù),上述為當(dāng)前的重構(gòu)技術(shù)。
可以看出當(dāng)前的重構(gòu)需要從其它幾個(gè)盤讀出全部數(shù)據(jù)計(jì)算后寫入disk3`;而在重構(gòu)的過(guò)程中系統(tǒng)磁盤被重構(gòu)過(guò)程占用,基本無(wú)法進(jìn)行外部業(yè)務(wù)的處理。或者說(shuō)如果外部業(yè)務(wù)處理大的過(guò)程中重構(gòu)時(shí)間非常長(zhǎng),有時(shí)多達(dá)數(shù)周。以上以raid5為例,其它的raid算法,包括但不限于raid0,raid5,raid6,華為的raid2.0,raid1,raid10,raidn+m等等都有類似問(wèn)題,都采用的類似方案,只是計(jì)算方法有不同。
綜上所述,本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本申請(qǐng)發(fā)明技術(shù)方案的過(guò)程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問(wèn)題:
在現(xiàn)有技術(shù)中,現(xiàn)有的數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方式存在計(jì)算量較大,效率較低,且在數(shù)據(jù)恢復(fù)的過(guò)程中數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力嚴(yán)重下降的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法及系統(tǒng),解決了現(xiàn)有的數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方式存在計(jì)算量較大,效率較低,且在數(shù)據(jù)恢復(fù)的過(guò)程中數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力嚴(yán)重下降的技術(shù)問(wèn)題,實(shí)現(xiàn)了高效、快速的完成數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)恢復(fù),且保障了數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力的技術(shù)效果。
為解決上述技術(shù)問(wèn)題,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法,所述方法包括:
步驟1:對(duì)數(shù)據(jù)存儲(chǔ)設(shè)備中的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào),數(shù)據(jù)存儲(chǔ)設(shè)備包括n個(gè)子數(shù)據(jù)存儲(chǔ)設(shè)備,n為大于等于1的正整數(shù);
步驟2:當(dāng)數(shù)據(jù)存儲(chǔ)設(shè)備中子數(shù)據(jù)存儲(chǔ)設(shè)備a出現(xiàn)損壞,記錄a損壞時(shí)還沒(méi)有成功寫入a的所有數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)塊編號(hào)(丟棄對(duì)應(yīng)數(shù)據(jù)),以及a損壞后寫入的所有數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)塊編號(hào)(丟棄對(duì)應(yīng)數(shù)據(jù)),基于記錄的編號(hào),生成第一記錄信息;
步驟3:將損壞的子數(shù)據(jù)存儲(chǔ)設(shè)備a更換為完好的子數(shù)據(jù)存儲(chǔ)設(shè)備b,并將子數(shù)據(jù)存儲(chǔ)設(shè)備a的數(shù)據(jù)復(fù)制到子數(shù)據(jù)存儲(chǔ)設(shè)備b中,并記錄下復(fù)制失敗的數(shù)據(jù)塊的編號(hào)信息,基于記錄的編號(hào),生成第二記錄信息;
步驟4:通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)塊編號(hào),并根據(jù)當(dāng)前的raid算法重構(gòu)出相應(yīng)數(shù)據(jù)塊,然后將重構(gòu)出的數(shù)據(jù)塊寫入子數(shù)據(jù)存儲(chǔ)設(shè)備b中。
其中,當(dāng)前的raid算法包含但不限于:raid0,raid5,raid6,華為的raid2.0,raid1,raid10,raidn+m等等。
進(jìn)一步的,對(duì)數(shù)據(jù)存儲(chǔ)設(shè)備中的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào),具體為:編號(hào)為管理編號(hào),在系統(tǒng)寫入數(shù)據(jù)前進(jìn)行確定。比如將把0~1000byte為塊1,1001~2000byte為塊2,2001~3000byte為塊3,……。為了管理方便進(jìn)行的編號(hào),后面當(dāng)這些塊發(fā)生數(shù)據(jù)變動(dòng)了之后則可以方便的記錄這些塊。
進(jìn)一步的,所述第一記錄信息具體實(shí)現(xiàn)方式包括但不限于:表格、日志、位圖、數(shù)據(jù)庫(kù)。
進(jìn)一步的,當(dāng)有新數(shù)據(jù)寫入數(shù)據(jù)塊時(shí),一方面將數(shù)據(jù)塊的數(shù)據(jù)改為對(duì)應(yīng)的數(shù)據(jù),同時(shí)記錄下數(shù)據(jù)塊被改寫過(guò),并記錄下所有被改寫過(guò)的數(shù)據(jù)塊的編號(hào)信息,生成第一記錄信息。
進(jìn)一步的,所述子數(shù)據(jù)存儲(chǔ)設(shè)備包括但不限于:服務(wù)器集群、服務(wù)器、pc機(jī)、磁盤、帶庫(kù)、u盤、光盤、硬盤。
步驟1之后步驟2之前還包括判斷步驟,所述判斷步驟具體為:對(duì)數(shù)據(jù)存儲(chǔ)設(shè)備的損壞真假進(jìn)行判斷,若為真則進(jìn)行后續(xù)步驟;若為假,則跳過(guò)步驟3進(jìn)行后續(xù)步驟。盤被誤踢場(chǎng)景,后面自動(dòng)恢復(fù)。僅重構(gòu)誤踢過(guò)程中的部分?jǐn)?shù)據(jù)塊。即第二記錄信息中的數(shù)據(jù)為空,僅使用第一記錄信息中的數(shù)據(jù)來(lái)重構(gòu)。
另一方面,本申請(qǐng)還提供了一種數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)系統(tǒng),所述系統(tǒng)包括:
編號(hào)模塊,所述編號(hào)模塊用于:對(duì)數(shù)據(jù)存儲(chǔ)設(shè)備中的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào),數(shù)據(jù)存儲(chǔ)設(shè)備包括n個(gè)子數(shù)據(jù)存儲(chǔ)設(shè)備,n為大于等于1的正整數(shù);
第一記錄模塊,所述第一記錄模塊用于:當(dāng)數(shù)據(jù)存儲(chǔ)設(shè)備中子數(shù)據(jù)存儲(chǔ)設(shè)備a損壞出現(xiàn)損壞,記錄a損壞時(shí)還沒(méi)有成功寫入a的所有數(shù)據(jù)的數(shù)據(jù)塊編號(hào),以及a損壞后寫入的所有數(shù)據(jù)的數(shù)據(jù)塊編號(hào),基于記錄的編號(hào),生成第一記錄信息;
更換模塊,所述更換模塊用于:將損壞的子數(shù)據(jù)存儲(chǔ)設(shè)備a更換為完好的子數(shù)據(jù)存儲(chǔ)設(shè)備b;
第二記錄模塊,所述第二記錄模塊用于:將子數(shù)據(jù)存儲(chǔ)設(shè)備a的數(shù)據(jù)復(fù)制到子數(shù)據(jù)存儲(chǔ)設(shè)備b中,并記錄下復(fù)制失敗的數(shù)據(jù)塊和對(duì)應(yīng)的編號(hào)信息,生成第二記錄信息;
數(shù)據(jù)重構(gòu)模塊,所述數(shù)據(jù)重構(gòu)模塊用于:通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)信息,并重構(gòu)出相應(yīng)數(shù)據(jù)塊,將重構(gòu)出的數(shù)據(jù)塊寫入子數(shù)據(jù)存儲(chǔ)設(shè)備b中。
其中,更換模塊的更換即可以是自動(dòng)的更換模塊(即熱備盤的方式),也可以是用戶手動(dòng)進(jìn)行更換(即把a(bǔ)盤拔出插入b盤等過(guò)程)。
其中,通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)信息,并重構(gòu)出相應(yīng)數(shù)據(jù)塊,具體包括:
將第一記錄信息與第二記錄信息的并集,生成需要重構(gòu)的所有數(shù)據(jù)塊編號(hào)集合;
按照對(duì)應(yīng)raid的重構(gòu)算法來(lái)對(duì)數(shù)據(jù)塊進(jìn)行數(shù)據(jù)重構(gòu),計(jì)算出子數(shù)據(jù)存儲(chǔ)設(shè)備b中當(dāng)前數(shù)據(jù)塊的數(shù)據(jù),并寫入該數(shù)據(jù)塊中。
本申請(qǐng)?zhí)峁┑囊粋€(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
由于損壞的磁盤一般是部分赤道或扇區(qū)損害,不會(huì)全部數(shù)據(jù)損壞,而本申請(qǐng)中的方法和系統(tǒng)正是針對(duì)性的只恢復(fù)已經(jīng)損壞的數(shù)據(jù)塊和損壞后被改寫的數(shù)據(jù),與傳統(tǒng)的方式相比較效率明顯提升,傳統(tǒng)的需要進(jìn)行大量的運(yùn)算,然后恢復(fù)全部的數(shù)據(jù),本申請(qǐng)是通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)信息,并重構(gòu)出相應(yīng)數(shù)據(jù)塊;
進(jìn)一步的,本發(fā)明在新設(shè)備數(shù)據(jù)構(gòu)建時(shí),盡量使用了已經(jīng)損壞設(shè)備上的數(shù)據(jù),而已經(jīng)損壞的盤,已經(jīng)不參與外部業(yè)務(wù)了,在io的模型上,從已經(jīng)損壞盤上讀取數(shù)據(jù)就是順序io,而此時(shí)的新設(shè)備也未參與外部業(yè)務(wù),io就為順序?qū)慽o;而傳統(tǒng)做法,讀數(shù)據(jù),寫數(shù)據(jù)均為隨機(jī)io(由于有外部業(yè)務(wù))。最少順序io比隨機(jī)io的讀寫效率提高5倍,通常10倍,甚至10多倍;本發(fā)明在數(shù)據(jù)構(gòu)建的過(guò)程中省略了大量的計(jì)算工作,數(shù)據(jù)不需要經(jīng)過(guò)cpu進(jìn)行校驗(yàn)計(jì)算,可以直接通過(guò)dma技術(shù),將數(shù)據(jù)從壞盤搬運(yùn)到新盤中,效率也大幅提高。
進(jìn)一步的,利用本專利的思路還可以解決硬盤(節(jié)點(diǎn)等)由于震動(dòng),過(guò)熱,電磁干擾等非持久性故障(這些故障會(huì)導(dǎo)致磁盤在某個(gè)時(shí)間內(nèi)無(wú)法正常使用,而被踢出raid組,但發(fā)現(xiàn)磁盤未真正損壞后,此磁盤會(huì)被重新加入raid組,并啟動(dòng)重構(gòu))導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。還可以解決用戶誤拔出正在使用的正常盤(在用戶維護(hù)設(shè)備時(shí)常發(fā)生。當(dāng)熱拔出磁盤后發(fā)現(xiàn)磁盤是正常的,隨后熱插入磁盤,系統(tǒng)會(huì)對(duì)此磁盤進(jìn)行全盤重構(gòu)),而導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。
進(jìn)一步的,在傳統(tǒng)算法重構(gòu)的過(guò)程中,會(huì)大量的對(duì)磁盤進(jìn)行讀寫,并使用cpu進(jìn)行計(jì)算,此時(shí)外部業(yè)務(wù)難以獲取到對(duì)應(yīng)的讀寫和cpu資源,所以會(huì)導(dǎo)致外部業(yè)務(wù)效率大幅降低。而本申請(qǐng)?jiān)诨謴?fù)數(shù)據(jù)的過(guò)程中,盡量使用了壞盤上的數(shù)據(jù),而壞盤是已經(jīng)不參與業(yè)務(wù)了,新盤在此時(shí)也沒(méi)有參與業(yè)務(wù),并且沒(méi)有大量的計(jì)算工作,基本不與外部業(yè)務(wù),爭(zhēng)搶計(jì)算機(jī)資源。也就保證了外部業(yè)務(wù)的處理能力。
所以,有效解決了現(xiàn)有的數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方式存在計(jì)算量較大,效率較低,且在數(shù)據(jù)恢復(fù)的過(guò)程中數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力嚴(yán)重下降的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了高效、快速的完成數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)恢復(fù),且保障了數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力的技術(shù)效果。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限定;
圖1是本申請(qǐng)中數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法的流程示意圖;
圖2是本申請(qǐng)中數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)系統(tǒng)的組成示意圖;
圖3是本申請(qǐng)中raid5方案示意圖;
圖4是本申請(qǐng)中raid5重構(gòu)計(jì)算方法示意圖;
圖5是本申請(qǐng)中raid5中的數(shù)據(jù)塊進(jìn)行分塊并編號(hào)示意圖;
圖6是本申請(qǐng)中記錄表1生成示意圖;
圖7是本申請(qǐng)中記錄表2生成示意圖;
圖8是本申請(qǐng)中依據(jù)記錄表1記錄表2進(jìn)行重構(gòu)的示意圖。
具體實(shí)施方式
本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法及系統(tǒng),解決了現(xiàn)有的數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方式存在計(jì)算量較大,效率較低,且在數(shù)據(jù)恢復(fù)的過(guò)程中數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力嚴(yán)重下降的技術(shù)問(wèn)題,實(shí)現(xiàn)了高效、快速的完成數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)恢復(fù),且保障了數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力的技術(shù)效果。
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在相互不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述范圍內(nèi)的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開的具體實(shí)施例的限制。
請(qǐng)參考圖1-圖2,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方法及系統(tǒng),所述方法包括:
步驟1:對(duì)數(shù)據(jù)存儲(chǔ)設(shè)備中的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào),數(shù)據(jù)存儲(chǔ)設(shè)備包括n個(gè)子數(shù)據(jù)存儲(chǔ)設(shè)備,n為大于等于1的正整數(shù);
步驟2:當(dāng)數(shù)據(jù)存儲(chǔ)設(shè)備中子數(shù)據(jù)存儲(chǔ)設(shè)備a出現(xiàn)損壞,記錄a損壞時(shí)還沒(méi)有成功寫入a的所有數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)塊編號(hào)(丟棄對(duì)應(yīng)數(shù)據(jù)),以及a損壞后寫入的所有數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)塊編號(hào)(丟棄對(duì)應(yīng)數(shù)據(jù)),基于記錄的編號(hào),生成第一記錄信息;
步驟3:將損壞的子數(shù)據(jù)存儲(chǔ)設(shè)備a更換為完好的子數(shù)據(jù)存儲(chǔ)設(shè)備b,并將子數(shù)據(jù)存儲(chǔ)設(shè)備a的數(shù)據(jù)復(fù)制到子數(shù)據(jù)存儲(chǔ)設(shè)備b中,并記錄下復(fù)制失敗的數(shù)據(jù)塊的編號(hào)信息,基于記錄的編號(hào),生成第二記錄信息;
步驟4:通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)塊編號(hào),并根據(jù)當(dāng)前的raid算法重構(gòu)出相應(yīng)數(shù)據(jù)塊,然后將重構(gòu)出的數(shù)據(jù)塊寫入子數(shù)據(jù)存儲(chǔ)設(shè)備b中。
所述系統(tǒng)包括:編號(hào)模塊、第一記錄模塊、更換模塊、第二記錄模塊、數(shù)據(jù)重構(gòu)模塊。
下面以磁盤為例舉例對(duì)本申請(qǐng)進(jìn)行介紹:
首先,對(duì)磁盤的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào);然后,當(dāng)有磁盤disk3損壞后,此時(shí)壞盤被踢出raid5,并且此時(shí)raid5處于降級(jí)狀態(tài)。記錄下所有被改寫的塊。如圖6,當(dāng)有新數(shù)據(jù)寫入塊2時(shí),一方面我們把塊2的數(shù)據(jù)改為對(duì)應(yīng)的c1’,cp’,c2’,同時(shí)記錄下塊2被改寫過(guò)。這個(gè)過(guò)程中我們會(huì)記錄下所有被改寫過(guò)的磁盤塊,并把這些數(shù)據(jù)叫“記錄表1”。
然后,離線恢復(fù)disk3’上的數(shù)據(jù),由于disk3已經(jīng)損壞了,我們需要更換為disk3’。此時(shí)disk3’是空白盤,為了減小重構(gòu)時(shí)間我們進(jìn)行如下處理:把disk3上的數(shù)據(jù)copy到disk3’上,由于disk3損壞了我們假設(shè)此時(shí)ap,b3,c3,copy成功而d3copy失敗,我們記錄下失敗的數(shù)據(jù)塊塊3;當(dāng)copy完成后我們會(huì)得到一個(gè)有不完整數(shù)據(jù)的disk3’,并有copy失敗的記錄表,并把這些數(shù)據(jù)叫“記錄表2”
然后,把disk3’磁盤放入系統(tǒng),并啟動(dòng)輕重構(gòu)過(guò)程,僅重構(gòu)“記錄表1”+“記錄表2”的數(shù)據(jù)塊;通過(guò)“記錄表1”我們發(fā)現(xiàn)塊2要重構(gòu),我們通過(guò)c1’與cp’與c2’計(jì)算出c3’。通過(guò)“記錄表2”我們發(fā)現(xiàn)塊3要重構(gòu),我們通過(guò)dp與d1與d2計(jì)算出d3。我們分別把c3’和d3寫入disk3’的對(duì)應(yīng)位置就完成了重構(gòu)過(guò)程。
其中,輕重構(gòu)相對(duì)于傳統(tǒng)的重構(gòu)算法需要將所有的數(shù)據(jù)塊均需要使用raid對(duì)應(yīng)的算法計(jì)算一遍的方式不同,輕重構(gòu)是指經(jīng)過(guò)某種處理使得僅需要對(duì)部分必要的數(shù)據(jù)塊使用raid對(duì)應(yīng)的算法的重構(gòu)方案;本處就是指使用“記錄表1”+“記錄表2”的部分?jǐn)?shù)據(jù)進(jìn)行重構(gòu)。
另外,數(shù)據(jù)存儲(chǔ)設(shè)備容易出現(xiàn)錯(cuò)誤,但是設(shè)備本身并沒(méi)有損壞,也可采用本申請(qǐng)中的方法或系統(tǒng)進(jìn)行處理,具體如:
誤踢盤(服務(wù)器)場(chǎng)景。磁盤非持久性的損壞場(chǎng)景。比如溫度過(guò)高導(dǎo)致,或者外部震動(dòng)導(dǎo)致,或電磁干擾導(dǎo)致。盤被踢,后發(fā)現(xiàn)盤未損壞,后面自動(dòng)恢復(fù)。僅重構(gòu)誤踢過(guò)程中的部分?jǐn)?shù)據(jù)塊。
具體步驟如下:
首先,對(duì)磁盤的每一個(gè)數(shù)據(jù)塊進(jìn)行編號(hào);然后,當(dāng)有磁盤disk3臨時(shí)損壞后,記錄下所有被改寫的塊。如圖6,當(dāng)有新數(shù)據(jù)寫入塊2時(shí),一方面我們把塊2的數(shù)據(jù)改為對(duì)應(yīng)的c1’,cp’,c2’,同時(shí)記錄下塊2被改寫過(guò)。這個(gè)過(guò)程中我們會(huì)記錄下所有被改寫過(guò)的磁盤塊,并把這些數(shù)據(jù)叫“記錄表1”。
然后,我們發(fā)現(xiàn)disk3已經(jīng)恢復(fù)。隨后disk3直接重新參與輕重構(gòu)過(guò)程。
然后,啟動(dòng)輕重構(gòu)過(guò)程,僅重構(gòu)“記錄表1”的數(shù)據(jù)塊;通過(guò)“記錄表1”我們發(fā)現(xiàn)塊2要重構(gòu),我們通過(guò)c1’與cp’與c2’計(jì)算出c3’。我們把c3’寫入disk3的對(duì)應(yīng)位置就完成了重構(gòu)過(guò)程。
本申請(qǐng)?zhí)峁┑囊粋€(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
由于損壞的磁盤一般是部分赤道或扇區(qū)損害,不會(huì)全部數(shù)據(jù)損壞,而本申請(qǐng)中的方法和系統(tǒng)正是針對(duì)性的只恢復(fù)已經(jīng)損壞的數(shù)據(jù)塊和損壞后被改寫的數(shù)據(jù),與傳統(tǒng)的方式相比較效率明顯提升,傳統(tǒng)的需要進(jìn)行大量的運(yùn)算,然后恢復(fù)全部的數(shù)據(jù),本申請(qǐng)是通過(guò)第一記錄信息和第二記錄信息生成需要重構(gòu)的數(shù)據(jù)信息,并重構(gòu)出相應(yīng)數(shù)據(jù)塊;
利用本專利的思路還可以解決硬盤(節(jié)點(diǎn)等)由于震動(dòng),過(guò)熱,電磁干擾等非持久性故障(這些故障會(huì)導(dǎo)致磁盤在某個(gè)時(shí)間內(nèi)無(wú)法正常使用,而被踢出raid組,但發(fā)現(xiàn)磁盤未真正損壞后,此磁盤會(huì)被重新加入raid組,并啟動(dòng)重構(gòu))導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。
還可以解決用戶誤拔出正在使用的正常盤(在用戶維護(hù)設(shè)備時(shí)常發(fā)生。當(dāng)熱拔出磁盤后發(fā)現(xiàn)磁盤是正常的,隨后熱插入磁盤,系統(tǒng)會(huì)對(duì)此磁盤進(jìn)行全盤重構(gòu)),而導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。
進(jìn)一步的,本發(fā)明在新設(shè)備數(shù)據(jù)構(gòu)建時(shí),盡量使用了已經(jīng)損壞設(shè)備上的數(shù)據(jù),而已經(jīng)損壞的盤,已經(jīng)不參與外部業(yè)務(wù)了,在io的模型上,從已經(jīng)損壞盤上讀取數(shù)據(jù)就是順序讀io,而此時(shí)的新設(shè)備也未參與外部業(yè)務(wù),io就為順序?qū)慽o;而傳統(tǒng)做法,讀數(shù)據(jù),寫數(shù)據(jù)均為隨機(jī)io(由于有外部業(yè)務(wù))。最少順序io比隨機(jī)io的讀寫效率提高5倍,通常10倍,甚至10多倍。由此就會(huì)大幅的提高io讀寫效率;而且本發(fā)明在數(shù)據(jù)構(gòu)建的過(guò)程中省略了大量的計(jì)算工作,數(shù)據(jù)不需要經(jīng)過(guò)cpu進(jìn)行校驗(yàn)計(jì)算,可以直接通過(guò)dma技術(shù),將數(shù)據(jù)從壞盤搬運(yùn)到新盤中,效率也大幅提高。
進(jìn)一步的,利用本專利的思路還可以解決硬盤(節(jié)點(diǎn)等)由于震動(dòng),過(guò)熱,電磁干擾等非持久性故障(這些故障會(huì)導(dǎo)致磁盤在某個(gè)時(shí)間內(nèi)無(wú)法正常使用,而被踢出raid組,但發(fā)現(xiàn)磁盤未真正損壞后,此磁盤會(huì)被重新加入raid組,并啟動(dòng)重構(gòu))導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。還可以解決用戶誤拔出正在使用的正常盤(在用戶維護(hù)設(shè)備時(shí)常發(fā)生。當(dāng)熱拔出磁盤后發(fā)現(xiàn)磁盤是正常的,隨后熱插入磁盤,系統(tǒng)會(huì)對(duì)此磁盤進(jìn)行全盤重構(gòu)),而導(dǎo)致的重構(gòu)時(shí)間過(guò)長(zhǎng)的問(wèn)題。
進(jìn)一步的,在傳統(tǒng)算法重構(gòu)的過(guò)程中,會(huì)大量的對(duì)磁盤進(jìn)行讀寫,并使用cpu進(jìn)行計(jì)算,此時(shí)外部業(yè)務(wù)難以獲取到對(duì)應(yīng)的讀寫和cpu資源,所以會(huì)導(dǎo)致外部業(yè)務(wù)效率大幅降低。而本申請(qǐng)?jiān)诨謴?fù)數(shù)據(jù)的過(guò)程中,盡量使用了壞盤上的數(shù)據(jù),而壞盤是已經(jīng)不參與業(yè)務(wù)了,新盤在此時(shí)也沒(méi)有參與業(yè)務(wù),并且沒(méi)有大量的計(jì)算工作,基本不與外部業(yè)務(wù),爭(zhēng)搶計(jì)算機(jī)資源。也就保證了外部業(yè)務(wù)的處理能力。
所以,有效解決了現(xiàn)有的數(shù)據(jù)存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)方式存在計(jì)算量較大,效率較低,且在數(shù)據(jù)恢復(fù)的過(guò)程中數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力嚴(yán)重下降的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了高效、快速的完成數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)恢復(fù),且保障了數(shù)據(jù)存儲(chǔ)設(shè)備外部業(yè)務(wù)處理能力的技術(shù)效果。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。