一種磁盤陣列重建優(yōu)化方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及磁盤陣列技術(shù)領(lǐng)域,特別是涉及一種磁盤陣列重建優(yōu)化方法及裝置。
【背景技術(shù)】
[0002]目前,隨著信息化的推進(jìn),需要存儲(chǔ)的信息量呈爆炸式增長(zhǎng),存儲(chǔ)系統(tǒng)規(guī)模的日益壯大給數(shù)據(jù)安全性和可靠性帶來了巨大的挑戰(zhàn),尤其是對(duì)于金融、軍事、大型企業(yè)等應(yīng)用領(lǐng)域,存儲(chǔ)系統(tǒng)一旦出現(xiàn)不可恢復(fù)的災(zāi)難性故障,企業(yè)將面臨著難以承受的巨大損失,可靠性已經(jīng)成為衡量存儲(chǔ)系統(tǒng)總體性能的重要因素。
[0003]磁盤陣列就是利用冗余技術(shù)來提高存儲(chǔ)系統(tǒng)的可靠性,但磁盤陣列重建期間的可靠性依然面臨著嚴(yán)峻的問題,主要體現(xiàn)在以下幾個(gè)方面:磁盤容量與磁盤訪問速度的不平衡發(fā)展導(dǎo)致數(shù)據(jù)恢復(fù)的時(shí)間越來越長(zhǎng);磁盤故障占據(jù)了存儲(chǔ)子系統(tǒng)故障相當(dāng)大的比例,另外磁盤潛在的扇區(qū)故障也進(jìn)一步降低了磁盤陣列的可靠性;磁盤陣列在數(shù)據(jù)恢復(fù)期間第二個(gè)磁盤發(fā)生故障的概率與重建時(shí)間成正比關(guān)系,數(shù)據(jù)重建時(shí)間越長(zhǎng),再次發(fā)生故障的概率就越大。
[0004]而在重建期間,用戶I/O請(qǐng)求和重建I/O請(qǐng)求同時(shí)爭(zhēng)奪有限的磁盤帶寬,用戶I/O請(qǐng)求將延長(zhǎng)重建時(shí)間、降低重建效率,而重建過程又會(huì)影響用戶I/o請(qǐng)求的服務(wù),增加用戶I/o響應(yīng)時(shí)間,降低用戶應(yīng)用的性能,同時(shí)磁頭在重建點(diǎn)和用戶請(qǐng)求區(qū)域頻繁地來回移動(dòng),勢(shì)必會(huì)造成一定的開銷。因此,減少重建時(shí)間,盡可能快地使系統(tǒng)恢復(fù)到正常狀態(tài)是提高存儲(chǔ)系統(tǒng)穩(wěn)定性的重要手段。
[0005]傳統(tǒng)的磁盤陣列重建是以條帶為單位進(jìn)行的“橫向”重建,對(duì)每個(gè)條帶創(chuàng)建一個(gè)重建進(jìn)程依次執(zhí)行以下三個(gè)步驟:首先,讀出該條帶位置上所有非故障盤上的數(shù)據(jù);然后,將讀出的數(shù)據(jù)進(jìn)行異或計(jì)算得到奇偶校驗(yàn)值;最后,將計(jì)算出來的數(shù)據(jù)寫到該條帶的故障盤位置。重復(fù)上述步驟,直到故障盤上的所有數(shù)據(jù)都恢復(fù)到替換盤。磁盤陣列在線重建的過程中其負(fù)載顯著增加,原因是故障盤上的讀寫操作都產(chǎn)生了 “放大”現(xiàn)象,故障盤上的一次讀請(qǐng)求將會(huì)導(dǎo)致對(duì)所有非故障磁盤產(chǎn)生讀請(qǐng)求,從而通過X0R運(yùn)算計(jì)算出要讀的數(shù)據(jù);故障盤上的一次寫操作也需要讀出所有幸存盤上的數(shù)據(jù)從而產(chǎn)生新的校驗(yàn)塊數(shù)據(jù)。而重建過程中用戶I/O請(qǐng)求和重建請(qǐng)求會(huì)爭(zhēng)用有限的磁盤帶寬,兩者會(huì)相互影響,極大的影響了重建的效率和系統(tǒng)響應(yīng),磁盤陣列重建時(shí)間太長(zhǎng),存儲(chǔ)系統(tǒng)的穩(wěn)定性較低。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種磁盤陣列重建優(yōu)化方法及裝置,以實(shí)現(xiàn)提高存儲(chǔ)系統(tǒng)的穩(wěn)定性。
[0007]為解決上述技術(shù)問題,本發(fā)明提供一種磁盤陣列重建優(yōu)化方法,該方法包括:
[0008]獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù);所述熱點(diǎn)數(shù)據(jù)為磁盤陣列整個(gè)重建期間至少兩次被讀取的數(shù)據(jù);
[0009]對(duì)磁盤陣列進(jìn)行重建,使重建的磁盤陣列進(jìn)入重定向狀態(tài),將重建過程中的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)迀移到空閑存儲(chǔ)設(shè)備上;所述空閑存儲(chǔ)設(shè)備為代理存儲(chǔ)設(shè)備;
[0010]當(dāng)磁盤陣列的重建完成時(shí),將所述寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)從空閑存儲(chǔ)設(shè)備上回迀到重建完成的磁盤陣列上。
[0011]優(yōu)選的,所述獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)之后,還包括:
[0012]構(gòu)建熱讀日志表,利用熱讀日志表識(shí)別熱點(diǎn)數(shù)據(jù),將熱點(diǎn)讀請(qǐng)求的元數(shù)據(jù)作為熱點(diǎn)數(shù)據(jù)記錄在日志表中。
[0013]優(yōu)選的,所述將重建過程中的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)迀移到空閑存儲(chǔ)設(shè)備上之前,還包括:
[0014]在磁盤陣列RAID抽象層接口函數(shù)中截獲重定向I/O請(qǐng)求;
[0015]參照重定向日志表和熱讀日志表,確定寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)要讀寫的空閑存儲(chǔ)設(shè)備和位置。
[0016]優(yōu)選的,將重建的將所述寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)迀移到空閑存儲(chǔ)設(shè)備上之后,還包括:
[0017]當(dāng)在空閑存儲(chǔ)設(shè)備完成寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)的迀移時(shí),停止重定向I/O請(qǐng)求。
[0018]優(yōu)選的,將所述寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)從空閑存儲(chǔ)設(shè)備上回迀到重建完成的磁盤陣列上之后,還包括:
[0019]將要寫回的I/O請(qǐng)求進(jìn)行合并,在重建完成的磁盤陣列上存儲(chǔ)寫回?cái)?shù)據(jù)的寫請(qǐng)求和用戶的讀寫請(qǐng)求。
[0020]本發(fā)明還提供一種磁盤陣列重建優(yōu)化裝置,該裝置包括:
[0021]獲取模塊,用于獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù);所述熱點(diǎn)數(shù)據(jù)為磁盤陣列整個(gè)重建期間至少兩次被讀取的數(shù)據(jù);
[0022]迀移模塊,用于對(duì)磁盤陣列進(jìn)行重建,使重建的磁盤陣列進(jìn)入重定向狀態(tài),將重建過程中的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)迀移到空閑存儲(chǔ)設(shè)備上;所述空閑存儲(chǔ)設(shè)備為代理存儲(chǔ)設(shè)備。
[0023]回迀模塊,用于當(dāng)磁盤陣列的重建完成時(shí),將所述寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)從空閑存儲(chǔ)設(shè)備上回迀到重建完成的磁盤陣列上。
[0024]優(yōu)選的,所述獲取模塊還包括:
[0025]記錄單元,用于構(gòu)建熱讀日志表,利用熱讀日志表識(shí)別熱點(diǎn)數(shù)據(jù),將熱點(diǎn)讀請(qǐng)求的元數(shù)據(jù)作為熱點(diǎn)數(shù)據(jù)記錄在日志表中。
[0026]優(yōu)選的,所述迀移模塊還包括:
[0027]截獲單元,用于在磁盤陣列RAID抽象層接口函數(shù)中截獲重定向I/O請(qǐng)求;
[0028]確定單元,用于參照重定向日志表和熱讀日志表,確定寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)要讀寫的空閑存儲(chǔ)設(shè)備和位置。
[0029]優(yōu)選的,所述裝置還包括:
[0030]停止模塊,用于當(dāng)在空閑存儲(chǔ)設(shè)備完成寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)的迀移時(shí),停止重定向I/o請(qǐng)求。
[0031]優(yōu)選的,所述裝置還包括:
[0032]合并模塊,用于所述將要寫回的I/O請(qǐng)求進(jìn)行合并,在重建完成的磁盤陣列上存儲(chǔ)寫回?cái)?shù)據(jù)的寫請(qǐng)求和用戶的讀寫請(qǐng)求。
[0033]本發(fā)明所提供的一種磁盤陣列重建優(yōu)化方法及裝置,獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù);所述熱點(diǎn)數(shù)據(jù)為磁盤陣列整個(gè)重建期間至少兩次被讀取的數(shù)據(jù);對(duì)磁盤陣列進(jìn)行重建,使重建的磁盤陣列進(jìn)入重定向狀態(tài),將重建過程中的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)迀移到空閑存儲(chǔ)設(shè)備上;所述空閑存儲(chǔ)設(shè)備為代理存儲(chǔ)設(shè)備。當(dāng)磁盤陣列的重建完成時(shí),將所述寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)從空閑存儲(chǔ)設(shè)備上回迀到重建完成的磁盤陣列上。可見,本發(fā)明識(shí)別出熱點(diǎn)讀數(shù)據(jù),將寫數(shù)據(jù)和熱點(diǎn)讀數(shù)據(jù)迀移到附加存儲(chǔ)設(shè)備,從而減輕重建陣列的工作負(fù)載,獲取更多的帶寬集中重建,待陣列完成重建以后再將附加存儲(chǔ)設(shè)備中的數(shù)據(jù)回迀,使陣列重新回到正常狀態(tài),如此將重建期間的用戶I/O負(fù)載迀移到空閑設(shè)備上,使陣列在低負(fù)載情況下保證較好的重建性能和I/o響應(yīng)性能,磁盤陣列大部分時(shí)間集中帶寬進(jìn)行重建也減少了磁頭的切換開銷,降低了磁盤陣列重建的時(shí)間,提高了存儲(chǔ)系統(tǒng)的穩(wěn)定性。
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0035]圖1為本發(fā)明所提供的一種磁盤陣列重建優(yōu)化方法的流程圖;
[0036]圖2為本發(fā)明所提供的一種磁盤陣列重建優(yōu)化裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0037]本發(fā)明的核心是提供一種磁盤陣列重建優(yōu)化方法及裝置,以實(shí)現(xiàn)提高存儲(chǔ)系統(tǒng)的穩(wěn)定性。
[0038]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]請(qǐng)參考圖1,圖1為本發(fā)明所提供的一種磁盤陣列重建優(yōu)化方法的流程圖,該方法包括:
[0040]S11:獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù);熱點(diǎn)數(shù)據(jù)為磁盤陣列整個(gè)重建期間至少兩次被讀取的數(shù)據(jù);
[0041]其中,獲取存儲(chǔ)系統(tǒng)中所有的寫數(shù)據(jù)和熱點(diǎn)數(shù)據(jù)之后,構(gòu)建熱讀日志表,利用熱讀日志表識(shí)別熱點(diǎn)數(shù)據(jù),將熱點(diǎn)讀請(qǐng)求的元數(shù)據(jù)作為熱點(diǎn)數(shù)據(jù)記錄在日志表中。
[0042]S12:對(duì)磁盤陣列進(jìn)行重建,使重建的磁盤陣列進(jìn)入重定向狀態(tài),將重建過