一種磁盤(pán)陣列raid重建方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種磁盤(pán)陣列RAID重建方法及裝置。
【背景技術(shù)】
[0002]RAID (Redundant Arrays of Independent Disks,磁盤(pán)陣列)表不“獨(dú)立磁盤(pán)構(gòu)成的具有冗余能力的陣列”,Stripe(條帶)是把連續(xù)的數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每段數(shù)據(jù)塊分別寫(xiě)入到RAID中的不同磁盤(pán)上的方法。
[0003]當(dāng)RAID中的硬盤(pán)損壞時(shí),則需要更換新的硬盤(pán),當(dāng)更換硬盤(pán)后需要對(duì)新的硬盤(pán)中的數(shù)據(jù)塊進(jìn)行重建,在新硬盤(pán)進(jìn)行數(shù)據(jù)重建的過(guò)程中,可能又需要對(duì)磁盤(pán)陣列進(jìn)行寫(xiě)數(shù)據(jù)或讀數(shù)據(jù)操作,因此如何處理新硬盤(pán)數(shù)據(jù)重建與對(duì)磁盤(pán)陣列進(jìn)行寫(xiě)數(shù)據(jù)或讀數(shù)據(jù)操作之間的關(guān)系,成為了一個(gè)很重要的技術(shù)問(wèn)題。
[0004]現(xiàn)有技術(shù)中,當(dāng)對(duì)新硬盤(pán)進(jìn)行數(shù)據(jù)重建時(shí),若有對(duì)磁盤(pán)陣列進(jìn)行寫(xiě)數(shù)據(jù)或讀數(shù)據(jù)操作,一般會(huì)給與讀或?qū)憯?shù)據(jù)操作更高的優(yōu)先級(jí),因此會(huì)先處理讀或?qū)憯?shù)據(jù)操作,等系統(tǒng)資源空閑時(shí)再進(jìn)行新硬盤(pán)的重建,因而導(dǎo)致新硬盤(pán)的重建的速度非常慢,尤其是在有大量數(shù)據(jù)進(jìn)行讀出或者寫(xiě)入的場(chǎng)景下,例如監(jiān)控視頻存儲(chǔ),新硬盤(pán)重建的速度更是下降的非常厲害,新硬盤(pán)的重建時(shí)間非常長(zhǎng),因而導(dǎo)致RAID系統(tǒng)的數(shù)據(jù)無(wú)法得到及時(shí)更新,降低了重建速度,以及降低了系統(tǒng)的可靠性。
[0005]綜上所述,現(xiàn)有技術(shù)中存在當(dāng)既需要新硬盤(pán)的重建,又需要大量的讀出數(shù)據(jù)或者寫(xiě)入數(shù)據(jù)操作時(shí),新硬盤(pán)重建速度非常慢而導(dǎo)致系統(tǒng)可靠性降低的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]
[0007]本申請(qǐng)?zhí)峁┮环N磁盤(pán)陣列RAID重建方法及裝置,用以解決現(xiàn)有技術(shù)中存在的當(dāng)既需要新硬盤(pán)的重建,又需要大量的讀出數(shù)據(jù)或者寫(xiě)入數(shù)據(jù)操作時(shí),新硬盤(pán)重建速度非常慢而導(dǎo)致系統(tǒng)可靠性降低的技術(shù)問(wèn)題。
[0008]—方面,本申請(qǐng)實(shí)施例提供一種磁盤(pán)陣列RAID重建方法,包括:
[0009]在確定需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作或讀出操作后,若所述條帶的狀態(tài)為未重建,則根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù)和/或根據(jù)所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù);
[0010]將確定的所述實(shí)際寫(xiě)入的數(shù)據(jù)寫(xiě)入到所述條帶中。
[0011]可選地,需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作且寫(xiě)入操作為滿(mǎn)寫(xiě)操作;
[0012]所述根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù),包括:
[0013]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0014]將所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0015]可選地,需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作且寫(xiě)入操作為非滿(mǎn)寫(xiě)操作;
[0016]所述根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù)和根據(jù)所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),包括:
[0017]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)和所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0018]根據(jù)所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù)。
[0019]可選地,所述根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)和所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù),包括:
[0020]若所述條帶包括的重建塊為校驗(yàn)塊,則確定所述條帶上的第一覆蓋數(shù)據(jù),所述第一覆蓋數(shù)據(jù)為所述條帶上與所述非滿(mǎn)寫(xiě)操作對(duì)應(yīng)的位置上的數(shù)據(jù);
[0021]根據(jù)所述第一覆蓋數(shù)據(jù),確定所述條帶上的第一目標(biāo)數(shù)據(jù),其中,所述第一目標(biāo)數(shù)據(jù)為所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù)除所述第一覆蓋數(shù)據(jù)之外的所有數(shù)據(jù);
[0022]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)及所述第一目標(biāo)數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù);
[0023]根據(jù)所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù),包括:
[0024]將所述重建塊對(duì)應(yīng)的數(shù)據(jù)以及所述需要寫(xiě)入所述條帶的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0025]可選地,所述根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)和所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù),包括:
[0026]若所述條帶包括的重建塊為數(shù)據(jù)塊,則根據(jù)所述條帶上目標(biāo)硬盤(pán)對(duì)應(yīng)的數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù),所述目標(biāo)硬盤(pán)為RAID中除所述重建塊對(duì)應(yīng)的重建盤(pán)之外的所有硬盤(pán);
[0027]根據(jù)所述非滿(mǎn)寫(xiě)操作,確定所述條帶上的第二覆蓋數(shù)據(jù),所述第二覆蓋數(shù)據(jù)為所述條帶上與所述非滿(mǎn)寫(xiě)操作對(duì)應(yīng)的位置上的數(shù)據(jù);
[0028]根據(jù)所述第二覆蓋數(shù)據(jù),確定所述條帶上的第二目標(biāo)數(shù)據(jù),其中,所述第二目標(biāo)數(shù)據(jù)為所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù)除所述第二覆蓋數(shù)據(jù)和校驗(yàn)塊數(shù)據(jù)之外的所有數(shù)據(jù);
[0029]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù),所述第二目標(biāo)數(shù)據(jù)及所述重建塊對(duì)應(yīng)的數(shù)據(jù),確定所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0030]根據(jù)所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù),包括:
[0031]將所述重建塊對(duì)應(yīng)的數(shù)據(jù),所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0032]可選地,所述操作為讀出操作;
[0033]所述根據(jù)所述條帶在所述RAID中其他硬盤(pán)上的正常塊對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù),包括:
[0034]根據(jù)所述條帶上目標(biāo)硬盤(pán)對(duì)應(yīng)的數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù),其中所述目標(biāo)硬盤(pán)為RAID中除所述重建塊對(duì)應(yīng)的重建盤(pán)之外的所有硬盤(pán);
[0035]將所述重建塊對(duì)應(yīng)的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù);
[0036]可選地,根據(jù)下列方式確定所述條帶的狀態(tài):
[0037]根據(jù)所述需要進(jìn)行操作的條帶在位圖中對(duì)應(yīng)的位的數(shù)值,確定所述條帶的狀態(tài);
[0038]其中,所述位圖中的一位對(duì)應(yīng)一個(gè)條帶的狀態(tài)。
[0039]可選地,將確定的所述實(shí)際寫(xiě)入的數(shù)據(jù)寫(xiě)入到所述條帶中之后,還包括:
[0040]將所述條帶在所述位圖中對(duì)應(yīng)的位的狀態(tài)設(shè)置為已重建。
[0041]另一方面,本申請(qǐng)實(shí)施例提供的一種磁盤(pán)陣列RAID重建裝置,包括:
[0042]確定單元,用于在確定需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作或讀出操作后,若所述條帶的狀態(tài)為未重建,則根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù)和/或根據(jù)所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù);
[0043]寫(xiě)入單元,用于將確定的所述實(shí)際寫(xiě)入的數(shù)據(jù)寫(xiě)入到所述條帶中。
[0044]可選地,需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作且寫(xiě)入操作為滿(mǎn)寫(xiě)操作;
[0045]所述確定單元,具體用于:
[0046]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0047]將所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0048]可選地,需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作且寫(xiě)入操作為非滿(mǎn)寫(xiě)操作;
[0049]所述確定單元,還用于:
[0050]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)和所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定所述條帶中校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0051]根據(jù)所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù)。
[0052]可選地,所述確定單元,還用于:
[0053]若所述條帶包括的重建塊為校驗(yàn)塊,則確定所述條帶上的第一覆蓋數(shù)據(jù),所述第一覆蓋數(shù)據(jù)為所述條帶上與所述非滿(mǎn)寫(xiě)操作對(duì)應(yīng)的位置上的數(shù)據(jù);
[0054]根據(jù)所述第一覆蓋數(shù)據(jù),確定所述條帶上的第一目標(biāo)數(shù)據(jù),其中,所述第一目標(biāo)數(shù)據(jù)為所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù)除所述第一覆蓋數(shù)據(jù)之外的所有數(shù)據(jù);
[0055]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù)及所述第一目標(biāo)數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù);
[0056]將所述重建塊對(duì)應(yīng)的數(shù)據(jù)以及所述需要寫(xiě)入所述條帶的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0057]可選地,所述確定單元,還用于:
[0058]若所述條帶包括的重建塊為數(shù)據(jù)塊,則根據(jù)所述條帶上目標(biāo)硬盤(pán)對(duì)應(yīng)的數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù),所述目標(biāo)硬盤(pán)為RAID中除所述重建塊對(duì)應(yīng)的重建盤(pán)之外的所有硬盤(pán);
[0059]根據(jù)所述非滿(mǎn)寫(xiě)操作,確定所述條帶上的第二覆蓋數(shù)據(jù),所述第二覆蓋數(shù)據(jù)為所述條帶上與所述非滿(mǎn)寫(xiě)操作對(duì)應(yīng)的位置上的數(shù)據(jù);
[0060]根據(jù)所述第二覆蓋數(shù)據(jù),確定所述條帶上的第二目標(biāo)數(shù)據(jù),其中,所述第二目標(biāo)數(shù)據(jù)為所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù)除所述第二覆蓋數(shù)據(jù)和校驗(yàn)塊數(shù)據(jù)之外的所有數(shù)據(jù);
[0061]根據(jù)需要寫(xiě)入所述條帶的數(shù)據(jù),所述第二目標(biāo)數(shù)據(jù)及所述重建塊對(duì)應(yīng)的數(shù)據(jù),確定所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù);
[0062]將所述重建塊對(duì)應(yīng)的數(shù)據(jù),所述校驗(yàn)塊對(duì)應(yīng)的數(shù)據(jù)以及需要寫(xiě)入所述條帶的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0063]可選地,需要對(duì)RAID中的條帶進(jìn)行寫(xiě)入操作且讀出操作;
[0064]所述確定單元,還用于:
[0065]根據(jù)所述條帶上目標(biāo)硬盤(pán)對(duì)應(yīng)的數(shù)據(jù),確定所述重建塊對(duì)應(yīng)的數(shù)據(jù),其中所述目標(biāo)硬盤(pán)為RAID中除所述重建塊對(duì)應(yīng)的重建盤(pán)之外的所有硬盤(pán);
[0066]將所述重建塊對(duì)應(yīng)的數(shù)據(jù)確定為實(shí)際寫(xiě)入的數(shù)據(jù)。
[0067]可選地,所述確定單元,還用于:
[0068]根據(jù)所述需要進(jìn)行操作的條帶在位圖中對(duì)應(yīng)的位的數(shù)值,確定所述條帶的狀態(tài);
[0069]其中,所述位圖中的一位對(duì)應(yīng)一個(gè)條帶的狀態(tài)。
[0070]可選地,所述寫(xiě)入單元,還用于:
[0071]將所述條帶在所述位圖中對(duì)應(yīng)的位的狀態(tài)設(shè)置為已重建。
[0072]本申請(qǐng)實(shí)施例提供的方法,在確定需要對(duì)RAID中的條帶進(jìn)行操作后,若條帶的狀態(tài)為未重建,則根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù)和/或根據(jù)條帶在RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù);將確定的實(shí)際寫(xiě)入的數(shù)據(jù)寫(xiě)入到條帶中。該方法在對(duì)RAID中的條帶進(jìn)行數(shù)據(jù)操作的同時(shí),就可完成對(duì)該條帶中重建盤(pán)的重建,因而節(jié)約了重建盤(pán)的重建時(shí)間,提高了系統(tǒng)的可靠性,提高了實(shí)際應(yīng)用能力。
【附圖說(shuō)明】
[0073]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0074]圖1為現(xiàn)有技術(shù)磁盤(pán)陣列中RAID5中條帶示意圖;
[0075]圖2為本申請(qǐng)實(shí)施例提供的磁盤(pán)陣列RAID重建方法流程圖;
[0076]圖3為本申請(qǐng)實(shí)施例提供的重建盤(pán)替換RAID中硬盤(pán)4的示意圖;
[0077]圖4為本申請(qǐng)實(shí)施例提供的重建盤(pán)替換RAID中硬盤(pán)4的示意圖;
[0078]圖5為本申請(qǐng)實(shí)施例提供的磁盤(pán)陣列RAID重建方法詳細(xì)流程圖;
[0079]圖6為本申請(qǐng)實(shí)施例提供的寫(xiě)入數(shù)據(jù)過(guò)程中磁盤(pán)陣列RAID重建方法詳細(xì)流程圖;
[0080]圖7為本申請(qǐng)實(shí)施例提供的讀取數(shù)據(jù)過(guò)程中磁盤(pán)陣列RAID重建方法詳細(xì)流程圖;
[0081]圖8為本申請(qǐng)實(shí)施例提供的磁盤(pán)陣列RAID重建裝置示意圖。
【具體實(shí)施方式】
[0082]為了使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部份實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0083]本申請(qǐng)實(shí)施例提供的方法,在確定需要對(duì)RAID中的條帶進(jìn)行操作后,若條帶的狀態(tài)為未重建,則根據(jù)需要進(jìn)行操作的條帶對(duì)應(yīng)的數(shù)據(jù)和/或根據(jù)所述條帶在所述RAID中正常塊對(duì)應(yīng)的數(shù)據(jù),確定實(shí)際寫(xiě)入的數(shù)據(jù);將確定的實(shí)際寫(xiě)入的數(shù)據(jù)寫(xiě)入到條帶中。該方法在對(duì)RAID中的條帶進(jìn)行數(shù)據(jù)操作的同時(shí),就可