數(shù)據(jù)存儲(chǔ)方法及存儲(chǔ)裝置制造方法
【專(zhuān)利摘要】本發(fā)明適用數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,提供了一種RAID數(shù)據(jù)存儲(chǔ)方法及裝置,所述方法用于將數(shù)據(jù)存儲(chǔ)于獨(dú)立磁盤(pán)冗余陣列RAID中,所述RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,包括:接收應(yīng)用服務(wù)器發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)和數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù);在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù);將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。使用本發(fā)明,可提高通過(guò)虛擬化RAID存儲(chǔ)數(shù)據(jù)的可靠性。
【專(zhuān)利說(shuō)明】數(shù)據(jù)存儲(chǔ)方法及存儲(chǔ)裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于存儲(chǔ)領(lǐng)域,尤其涉及一種RAID數(shù)據(jù)存儲(chǔ)方法及存儲(chǔ)裝置。
【背景技術(shù)】
[0002]獨(dú)立冗余磁盤(pán)陣列(RedundantArray of Independent Disk, RAID)是存儲(chǔ)領(lǐng)域最為常用的提高系統(tǒng)可靠性的方法。通過(guò)同時(shí)使用多塊磁盤(pán),并按照一定的算法規(guī)則,虛擬化成一塊單獨(dú)的大容量高可靠性磁盤(pán)進(jìn)行使用。當(dāng)具有冗余級(jí)別的RAID組中的其中一個(gè)發(fā)生成員盤(pán)損壞時(shí),可以利用其他成員盤(pán)的數(shù)據(jù)以及冗余數(shù)據(jù)進(jìn)行數(shù)據(jù)的修復(fù),從而實(shí)現(xiàn)RAID組可靠性高于單個(gè)磁盤(pán)的目的。
[0003]但是由于傳統(tǒng)的RAID必須使用一整塊磁盤(pán),故存在構(gòu)成速度慢,空間使用不靈活的問(wèn)題。而虛擬化RAID不再使用完整的磁盤(pán)作為RAID的成員盤(pán),而將磁盤(pán)劃分成多個(gè)磁盤(pán)塊,使用這些磁盤(pán)塊創(chuàng)建RAID。這種虛擬化RAID的組織方式使RAID的組成更靈活,磁盤(pán)使用方式更靈活,構(gòu)成單個(gè)RAID的所需的存儲(chǔ)空間更低等優(yōu)勢(shì)。
[0004]通常對(duì)于一些重要數(shù)據(jù),為了提高數(shù)據(jù)的可靠性,存儲(chǔ)系統(tǒng)會(huì)在多個(gè)RAID上同時(shí)保存多份相同數(shù)據(jù)。以?xún)煞輸?shù)據(jù)存放在兩個(gè)RAID5 (每個(gè)RAID包括3個(gè)成員盤(pán))上為例,由于每個(gè)RAID存在校驗(yàn)數(shù)據(jù)及冗余數(shù)據(jù),若一個(gè)RAID中的其中一個(gè)成員盤(pán)損壞之后,可以通過(guò)該RAID中的另外兩個(gè)盤(pán)中的校驗(yàn)及冗余數(shù)據(jù)進(jìn)行恢復(fù),故傳統(tǒng)的兩個(gè)RAID可以保證其中任意三個(gè)成員盤(pán)損壞之后,存儲(chǔ)在兩個(gè)RAID中的數(shù)據(jù)都可以被恢復(fù),而不會(huì)丟失的,如圖1所示,若RAID I中壞了兩個(gè)磁盤(pán)10,RAID II壞了一個(gè)磁盤(pán)20,則壞了一個(gè)磁盤(pán)的RAID II的數(shù)據(jù)可以通過(guò)該RAID II中的另外兩個(gè)磁盤(pán)20恢復(fù),如此可根據(jù)所恢復(fù)的RAIDII中的數(shù)據(jù)恢復(fù)RAID I中的數(shù)據(jù)。
[0005]如圖2所示,在現(xiàn)有的虛擬化RAID中,虛擬化RAID由分布于不同磁盤(pán)30中的磁盤(pán)塊301構(gòu)成,而不再是由獨(dú)立磁盤(pán)30構(gòu)成。這種虛擬化的方法使得不同的RAID的磁盤(pán)塊301可能同時(shí)位于同一磁盤(pán)30之上。因此,當(dāng)將兩份數(shù)據(jù)存儲(chǔ)至兩個(gè)RAID時(shí),不能保證兩個(gè)RAID的磁盤(pán)塊301不會(huì)選到同一塊磁盤(pán)30上,從而降低了可靠性。例如,如圖2所示,在六個(gè)盤(pán)中,包括兩個(gè)RAID,即由標(biāo)識(shí)為RO的磁盤(pán)塊組成的RAID以及由標(biāo)識(shí)為Rl的磁盤(pán)塊構(gòu)成的RAID,該兩個(gè)RAID有兩個(gè)磁盤(pán)塊301在同一磁盤(pán)30中(如圖2中的虛線部分所示),如此當(dāng)這兩個(gè)磁盤(pán)30都?jí)牧酥?,這兩個(gè)RAID中存儲(chǔ)的數(shù)據(jù)都無(wú)法恢復(fù),降低了存儲(chǔ)可靠性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例的目的在于提供一種存儲(chǔ)方法及存儲(chǔ)裝置,能夠在將數(shù)據(jù)存儲(chǔ)于虛擬化的RAID中時(shí),提高數(shù)據(jù)存儲(chǔ)的可靠性。
[0007]第一方面,本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)方法,所述方法用于將數(shù)據(jù)存儲(chǔ)于獨(dú)立磁盤(pán)冗余陣列RAID中,所述RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,包括:
[0008]接收應(yīng)用服務(wù)器發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)和數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù);
[0009]在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù);
[0010]將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。
[0011]在本發(fā)明的第一方面的第一種實(shí)現(xiàn)方式中,所述在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID包括:
[0012]在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID ;
[0013]根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N-1個(gè)第二 RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
[0014]在本發(fā)明的第一方面的第一種實(shí)現(xiàn)方式所提供的數(shù)據(jù)存儲(chǔ)方法中,優(yōu)選地,還包括:
[0015]將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中;
[0016]建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
[0017]優(yōu)選地,所述存儲(chǔ)請(qǐng)求中還包含數(shù)據(jù)的大小,所述在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID包括:
[0018]根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID。
[0019]優(yōu)選地,所述根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID包括:
[0020]根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。
[0021]第二方面,本發(fā)明提供了一種存儲(chǔ)裝置,所述裝置用于將數(shù)據(jù)存儲(chǔ)于獨(dú)立磁盤(pán)冗余陣列RAID中,所述RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,所述裝置包括:
[0022]接收模塊,用于接收應(yīng)用服務(wù)器發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)和數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù);
[0023]確定模塊,用于在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù);
[0024]存儲(chǔ)模塊,用于將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。
[0025]在第二方面的第一種實(shí)現(xiàn)方式中,所述確定模塊具體用于:
[0026]在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID ;
[0027]并根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N_1個(gè)第二 RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
[0028]優(yōu)選地,所述的存儲(chǔ)裝置還包括:
[0029]配置模塊,用于將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中;
[0030]建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
[0031]優(yōu)選地,所述存儲(chǔ)請(qǐng)求中還包含包數(shù)據(jù)的大小,所述確定模塊具體用于:根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID。[0032]優(yōu)選地,所述確定模塊具體用于:
[0033]根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。
[0034]本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法中,存儲(chǔ)數(shù)據(jù)的RAID由磁盤(pán)上的磁盤(pán)塊構(gòu)成,在接收到存儲(chǔ)N份數(shù)據(jù)拷貝的存儲(chǔ)請(qǐng)求時(shí),可以通過(guò)預(yù)先創(chuàng)建的M個(gè)RAID中選擇存儲(chǔ)數(shù)據(jù)的N個(gè)RAID,其中,選擇的N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,并將所述N份數(shù)據(jù)分別存儲(chǔ)在選擇的所述N個(gè)RAID中。在本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法中,由于選擇的N個(gè)RAID由分布于不同磁盤(pán)的磁盤(pán)塊構(gòu)成,因此,與現(xiàn)有技術(shù)中在虛擬化RAID中存儲(chǔ)多份數(shù)據(jù)的方法相比,本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法能夠提高在虛擬化RAID中存儲(chǔ)的數(shù)據(jù)的可靠性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0035]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例。
[0036]圖1為現(xiàn)有技術(shù)中的一種RAID的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖;
[0037]圖2為現(xiàn)有技術(shù)中的另外一種RAID的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖;
[0038]圖3為本發(fā)明實(shí)施例提供的一種應(yīng)用場(chǎng)景圖;
[0039]圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)方法的流程圖;
[0040]圖5為本發(fā)明實(shí)施例提供的一種RAID結(jié)構(gòu)示意圖;
[0041]圖6為本發(fā)明實(shí)施例提供的又一種RAID結(jié)構(gòu)示意圖;
[0042]圖7為本發(fā)明實(shí)施例提供的一種存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
[0043]具體實(shí)現(xiàn)方式
[0044]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。
[0045]圖3為本發(fā)明實(shí)施例提供的一種應(yīng)用場(chǎng)景圖。如圖3所示,應(yīng)用服務(wù)器2與RAID系統(tǒng)I通過(guò)有線或者無(wú)線方式連接,RAID系統(tǒng)I用于存儲(chǔ)數(shù)據(jù),應(yīng)用服務(wù)器2可存儲(chǔ)數(shù)據(jù)至RAID系統(tǒng)I或者從RAID系統(tǒng)I中獲取數(shù)據(jù)。獨(dú)立冗余磁盤(pán)陣列(Redundant Array ofIndependent Disk, RAID)系統(tǒng)I由陣列控制器11和一組連接至陣列控制器11的磁盤(pán)12組成。RAID系統(tǒng)I中的數(shù)據(jù)即存儲(chǔ)于磁盤(pán)12中,陣列控制器11用于組織所連接的磁盤(pán)12,并將所連接的磁盤(pán)12劃分為多個(gè)磁盤(pán)塊,然后根據(jù)算法邏輯創(chuàng)建出由磁盤(pán)塊構(gòu)成的多個(gè)虛擬化的RAID。實(shí)際應(yīng)用中,在創(chuàng)建虛擬化的RAID時(shí),可以先根據(jù)需要?jiǎng)?chuàng)建的RAID的級(jí)別確定每個(gè)RAID的包括的磁盤(pán)塊的數(shù)目及建立虛擬RAID的磁盤(pán),然后在所選的磁盤(pán)上選擇構(gòu)成每個(gè)RAID的磁盤(pán)塊。
[0046]需要說(shuō)明的是,在本發(fā)明實(shí)施例中,如無(wú)特別說(shuō)明,描述的RAID均是指虛擬化RAID,換一種表達(dá)方式,本發(fā)明實(shí)施例中的RAID均是指由磁盤(pán)塊構(gòu)建的RAID。
[0047]圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)方法的流程圖。該方法可以應(yīng)用于圖3所示的應(yīng)用場(chǎng)景中。所述方法用于將數(shù)據(jù)存儲(chǔ)于所述RAID系統(tǒng)I中,該RAID系統(tǒng)I中包括多個(gè)RAID,每個(gè)RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成。如圖4所示,所述方法包括:
[0048]步驟S40,接收應(yīng)用服務(wù)器2發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)、數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù)。其中,該存儲(chǔ)請(qǐng)求中除了攜帶數(shù)據(jù)及數(shù)據(jù)拷貝份數(shù)之外還可以包括其他信息,如數(shù)據(jù)的大小以及數(shù)據(jù)的源地址等,在此不做限定。
[0049]步驟S41,在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù)。
[0050]實(shí)際應(yīng)用中,可以先在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID,再根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N-1個(gè)第二 RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
[0051]例如,若構(gòu)建RAID R0,RAID Rl及RAID R2 (為了描述方便,下面分別用R0、R1和R2來(lái)表示)的磁盤(pán)塊均分布于不同的磁盤(pán)上,則可以預(yù)先在R0、Rl及R2之間建立對(duì)應(yīng)關(guān)系。在接收到數(shù)據(jù)存儲(chǔ)請(qǐng)求時(shí),如果需要存儲(chǔ)三份數(shù)據(jù),若將RO確定為第一RAID,則根據(jù)上述預(yù)設(shè)的對(duì)應(yīng)關(guān)系,Rl及R2即被確定為第二 RAID,并將第一份數(shù)據(jù)存儲(chǔ)在RO中,第二份及第三份數(shù)據(jù)則分別存儲(chǔ)于與RO對(duì)應(yīng)的Rl及R2中。通過(guò)預(yù)先建立這樣的對(duì)應(yīng)關(guān)系,在存儲(chǔ)多份數(shù)據(jù)時(shí),只要確定存儲(chǔ)第一份數(shù)據(jù)的第一 RAID,即可根據(jù)預(yù)設(shè)的對(duì)應(yīng)關(guān)系找到存儲(chǔ)其他份數(shù)據(jù)的第二 RAID。
[0052]實(shí)際應(yīng)用中,在選擇存儲(chǔ)數(shù)據(jù)的第一 RAID時(shí),可以具體根據(jù)存儲(chǔ)請(qǐng)求中攜帶的數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID。進(jìn)一步的,為了使各個(gè)RAID中存儲(chǔ)的數(shù)據(jù)實(shí)現(xiàn)負(fù)載均衡,在實(shí)際選擇第一 RAID的過(guò)程中,還可以根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。
[0053]預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系一般在執(zhí)行本實(shí)施方式的方法之前由所述陣列控制器11建立,例如可以在陣列控制器11建立虛擬RAID時(shí)建立,具體的建立方式為:將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中;建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
[0054]例如,可以從創(chuàng)建的M個(gè)RAID中找出三個(gè)磁盤(pán)塊均不在同一磁盤(pán)上RO、RU R2組成一個(gè)RAID組,并可將該組中各個(gè)RAID之間的對(duì)應(yīng)關(guān)系記錄為(R0、R1、R2)。實(shí)際應(yīng)用中,每組RAID中所包括的RAID的個(gè)數(shù)可以根據(jù)具體情況確定。但一般情況下,只有數(shù)據(jù)的存儲(chǔ)份數(shù)小于等于該組RAID中的RAID的個(gè)數(shù)時(shí),該組RAID才可以用來(lái)存儲(chǔ)該數(shù)據(jù)。將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組的方式可以為遍歷的方式。具體的,可以通過(guò)遍歷創(chuàng)建的RAID中的磁盤(pán)塊所分布的磁盤(pán),將分布于不同磁盤(pán)的磁盤(pán)塊構(gòu)建的RAID劃分為一個(gè)RAID組。換一種表達(dá)方式,構(gòu)建一個(gè)RAID組中的所有RAID的磁盤(pán)塊均分布于不同的磁盤(pán)上。例如,可以首先確定一個(gè)RAID的磁盤(pán)塊所在的磁盤(pán)后,然后在M-1個(gè)RAID中逐個(gè)查找由與確定的RAID中的磁盤(pán)塊不屬于同一個(gè)磁盤(pán)的磁盤(pán)塊構(gòu)成的RAID,并將查找獲得的RAID與預(yù)先確定的RAID劃分為一個(gè)RAID組。例如,以一組RAID包括兩個(gè)RAID,每個(gè)RAID的級(jí)別為RAID5,且每個(gè)RAID涉及3個(gè)磁盤(pán)塊為例說(shuō)明。如圖5所示,圖5為本發(fā)明實(shí)施例提供的一種RAID結(jié)構(gòu)示意圖。若RAID系統(tǒng)I包括6個(gè)磁盤(pán)Dl、D2、D3、D4、D5及D6,將要建立的一 RAID組中的其中一個(gè)RAID NO的三個(gè)磁盤(pán)塊所在的磁盤(pán)分別為Dl、D3、D5,則其他由除磁盤(pán)Dl、D3、D5之外的磁盤(pán)上的磁盤(pán)塊的RAID才能被選擇作為與NO對(duì)應(yīng)RAID,即由磁盤(pán)D2、D4及D6上的磁盤(pán)塊構(gòu)建的RAID才能被選擇作為與NO對(duì)應(yīng)的RAID。
[0055]實(shí)際應(yīng)用中,還可以在創(chuàng)建過(guò)程中,直接使創(chuàng)建的M個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)上。具體的,在創(chuàng)建M個(gè)RAID時(shí),首先為需要建立的每個(gè)RAID分配識(shí)別碼,例如,若M=2,即需要?jiǎng)?chuàng)建兩個(gè)RAID,且這兩個(gè)RAID構(gòu)成一個(gè)RAID組,則可對(duì)該兩個(gè)RAID分配識(shí)別碼(R0,Rl ),再為每個(gè)RAID選擇磁盤(pán)塊。選擇時(shí),逐一為每個(gè)RAID選擇磁盤(pán)塊。在為其中一個(gè)RAID選擇磁盤(pán)塊時(shí),首先在其中一個(gè)磁盤(pán)中選擇一個(gè)磁盤(pán)塊,然后判斷所選擇的磁盤(pán)塊所在的磁盤(pán)上是否有標(biāo)記有本組其他RAID的識(shí)別碼的磁盤(pán)塊,若沒(méi)有本組其他RAID的識(shí)別碼,則選擇該磁盤(pán)塊,并將該磁盤(pán)塊標(biāo)記為該RAID的識(shí)別碼,若有本組其他RAID的識(shí)別碼,則在其他磁盤(pán)上選擇該RAID的磁盤(pán)塊。例如,如圖6所示,首先為識(shí)別碼為RO的RAID選擇磁盤(pán)塊,選擇時(shí),若RO為首先創(chuàng)建的RAID,因此,可以在圖6所示的磁盤(pán)中任意選擇磁盤(pán)塊創(chuàng)建所述R0。當(dāng)創(chuàng)建完RO后,在創(chuàng)建Rl時(shí),在選擇創(chuàng)建Rl的磁盤(pán)塊時(shí),需要先判斷該磁盤(pán)上是否有標(biāo)記有本組其他RAID的識(shí)別碼的磁盤(pán)塊,即是否標(biāo)記有RO的磁盤(pán)塊,若沒(méi)有,則將該磁盤(pán)塊標(biāo)記為R1,若有,則選擇其他磁盤(pán)。該RAID的其他兩個(gè)磁盤(pán)塊也可以用同樣的方法選出。在分別選擇了識(shí)別碼為RO和Rl的磁盤(pán)塊之后,可以分別在選擇的磁盤(pán)塊上創(chuàng)建RO和R1。通過(guò)這種方式,可以使該組RAID中的每個(gè)RAID的磁盤(pán)塊不在同一磁盤(pán)上。
[0056]步驟S42,將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。
[0057]本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法中,存儲(chǔ)數(shù)據(jù)的RAID由磁盤(pán)上的磁盤(pán)塊構(gòu)成,在接收到存儲(chǔ)N份數(shù)據(jù)拷貝的存儲(chǔ)請(qǐng)求時(shí),可以通過(guò)預(yù)先創(chuàng)建的M個(gè)RAID中選擇存儲(chǔ)數(shù)據(jù)的N個(gè)RAID,其中,選擇的N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,并將所述N份數(shù)據(jù)分別存儲(chǔ)在選擇的所述N個(gè)RAID中。在本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法中,由于選擇的N個(gè)RAID由分布于不同磁盤(pán)的磁盤(pán)塊構(gòu)成,因此,與現(xiàn)有技術(shù)中在虛擬化RAID中存儲(chǔ)多份數(shù)據(jù)的方法相比,本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法能夠提高數(shù)據(jù)存儲(chǔ)的可靠性。例如,如圖6所不,圖6為本發(fā)明實(shí)施例提供的又一種RAID結(jié)構(gòu)不意圖。圖6以包括在6個(gè)磁盤(pán)中建立的兩個(gè)RAID的RAID組為例,其中,每個(gè)RAID的級(jí)別為RAID5,且每個(gè)RAID涉及3個(gè)磁盤(pán)塊。該組RAID的對(duì)應(yīng)關(guān)系為(R0, Rl),,由于每組RAID的磁盤(pán)塊不在同一磁盤(pán)上,即具有RO和Rl標(biāo)記的磁盤(pán)塊不會(huì)出現(xiàn)在同一磁盤(pán)上。當(dāng)將數(shù)據(jù)分別存儲(chǔ)于RO和Rl中后,若其中的第2盤(pán),第3盤(pán),及地5盤(pán)損壞,即RO的一個(gè)磁盤(pán)塊以及Rl中兩個(gè)磁盤(pán)塊中的數(shù)據(jù)丟失,則RO中丟失的數(shù)據(jù)可以通過(guò)RO的另外兩個(gè)磁盤(pán)塊中的數(shù)據(jù)進(jìn)行恢復(fù),則Rl中兩個(gè)磁盤(pán)塊上丟失的數(shù)據(jù)也可以通過(guò)RO的數(shù)據(jù)進(jìn)行恢復(fù)。如此也可以達(dá)到任意三盤(pán)損壞時(shí),都可以進(jìn)行數(shù)據(jù)的恢復(fù)的效果,從而提高了在虛擬化RAID中存儲(chǔ)的數(shù)據(jù)的可靠性。
[0058]如圖7所示,為本發(fā)明實(shí)施例中提供的一種存儲(chǔ)裝置7的模塊圖。該裝置7用于將數(shù)據(jù)存儲(chǔ)于RAID系統(tǒng)I中,所述RAID系統(tǒng)I包括多個(gè)RAID,每個(gè)RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,該裝置包括接收模塊71、RAID確定模塊72、及數(shù)據(jù)存儲(chǔ)模塊73。
[0059]所述接收模塊71,用于接收應(yīng)用服務(wù)器2發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)、數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù)。其中,該存儲(chǔ)請(qǐng)求中除了數(shù)據(jù)及數(shù)據(jù)拷貝份數(shù)之外還可以包括:數(shù)據(jù)的大小、數(shù)據(jù)的源地址等。
[0060]所述確定模塊72,用于在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù);
[0061]所述存儲(chǔ)模塊73,用于可將所述數(shù)據(jù)分別存儲(chǔ)于確定模塊72選擇的所述N個(gè)RAID 中。
[0062]實(shí)際應(yīng)用中,確定模塊72具體用于在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID ;根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N-1個(gè)第二 RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
[0063]例如,若構(gòu)建RAID R0,RAID Rl及RAID R2 (為了描述方便,下面分別用R0、R1和R2來(lái)表示)的磁盤(pán)塊均分布于不同的磁盤(pán)上,則可以預(yù)先在RO、Rl及R2之間建立對(duì)應(yīng)關(guān)系。在接收模塊71接收到數(shù)據(jù)存儲(chǔ)請(qǐng)求時(shí),如果需要存儲(chǔ)三份數(shù)據(jù),若確定模塊72將RO確定為第一 RAID,則根據(jù)上述預(yù)設(shè)的對(duì)應(yīng)關(guān)系,Rl及R2即被確定為第二 RAID,并將第一份數(shù)據(jù)存儲(chǔ)在RO中,第二份及第三份數(shù)據(jù)則分別存儲(chǔ)于與RO對(duì)應(yīng)的Rl及R2中。通過(guò)預(yù)先建立這樣的對(duì)應(yīng)關(guān)系,在存儲(chǔ)多份數(shù)據(jù)時(shí),只要確定存儲(chǔ)第一份數(shù)據(jù)的第一 RAID,即可根據(jù)預(yù)設(shè)的對(duì)應(yīng)關(guān)系找到存儲(chǔ)其他份數(shù)據(jù)的第二 RAID。
[0064]實(shí)際應(yīng)用中,確定模塊72在選擇存儲(chǔ)數(shù)據(jù)的第一 RAID時(shí),可以具體根據(jù)存儲(chǔ)請(qǐng)求中攜帶的數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID。進(jìn)一步的,為了使各個(gè)RAID中存儲(chǔ)的數(shù)據(jù)實(shí)現(xiàn)負(fù)載均衡,確定模塊72在實(shí)際選擇第一 RAID的過(guò)程中,還可以根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。
[0065]在又一種情況下,本發(fā)明實(shí)施例提供的存儲(chǔ)裝置還可以包括:
[0066]配置模塊74,用于將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中,并建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
[0067]例如,可以從創(chuàng)建的M個(gè)RAID中找出三個(gè)磁盤(pán)塊均不在同一磁盤(pán)上RO、RU R2組成一個(gè)RAID組,并可將該組中各個(gè)RAID之間的對(duì)應(yīng)關(guān)系記錄為(R0、R1、R2)。實(shí)際應(yīng)用中,每組RAID中所包括的RAID的個(gè)數(shù)可以根據(jù)具體情況確定。但一般情況下,只有數(shù)據(jù)的存儲(chǔ)份數(shù)小于等于該組RAID中的RAID的個(gè)數(shù)時(shí),該組RAID才可以用來(lái)存儲(chǔ)該數(shù)據(jù)。
[0068]實(shí)際應(yīng)用中,配置模塊74將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組的方式可以為遍歷的方式。具體的,可以通過(guò)遍歷創(chuàng)建的RAID中的磁盤(pán)塊所分布的磁盤(pán),將分布于不同磁盤(pán)的磁盤(pán)塊構(gòu)建的RAID劃分為一個(gè)RAID組。換一種表達(dá)方式,構(gòu)建一個(gè)RAID組中的所有RAID的磁盤(pán)塊均分布于不同的磁盤(pán)上。例如,可以首先確定一個(gè)RAID的磁盤(pán)塊所在的磁盤(pán)后,然后在M-1個(gè)RAID中逐個(gè)查找由與確定的RAID中的磁盤(pán)塊不屬于同一個(gè)磁盤(pán)的磁盤(pán)塊構(gòu)成的RAID,并將查找獲得的RAID與預(yù)先確定的RAID劃分為一個(gè)RAID組。
[0069]實(shí)際應(yīng)用中,配置模塊74還可以在創(chuàng)建過(guò)程中,使創(chuàng)建的M個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)上。具體的,在創(chuàng)建M個(gè)RAID時(shí),首先為需要建立的每個(gè)RAID分配識(shí)別碼,例如,若M=2,即需要?jiǎng)?chuàng)建兩個(gè)RAID,且這兩個(gè)RAID構(gòu)成一個(gè)RAID組,則可對(duì)該兩個(gè)RAID分配識(shí)別碼(R0,R1),再為每個(gè)RAID選擇磁盤(pán)塊。選擇時(shí),逐一為每個(gè)RAID選擇磁盤(pán)塊。在為其中一個(gè)RAID選擇磁盤(pán)塊時(shí),首先在其中一個(gè)磁盤(pán)中選擇一個(gè)磁盤(pán)塊,然后判斷所選擇的磁盤(pán)塊所在的磁盤(pán)上是否有標(biāo)記有本組其他RAID的識(shí)別碼的磁盤(pán)塊,若沒(méi)有本組其他RAID的識(shí)別碼,則選擇該磁盤(pán)塊,并將該磁盤(pán)塊標(biāo)記為該RAID的識(shí)別碼,若有本組其他RAID的識(shí)別碼,則在其他磁盤(pán)上選擇該RAID的磁盤(pán)塊。例如,如圖6所示,首先為識(shí)別碼為RO的RAID選擇磁盤(pán)塊,選擇時(shí),若RO為首先創(chuàng)建的RAID,因此,可以在圖6所示的磁盤(pán)中任意選擇磁盤(pán)塊創(chuàng)建所述R0。當(dāng)創(chuàng)建完RO后,在創(chuàng)建Rl時(shí),在選擇創(chuàng)建Rl的磁盤(pán)塊時(shí),需要先判斷該磁盤(pán)上是否有標(biāo)記有本組其他RAID的識(shí)別碼的磁盤(pán)塊,即是否標(biāo)記有RO的磁盤(pán)塊,若沒(méi)有,則將該磁盤(pán)塊標(biāo)記為Rl,若有,則選擇其他磁盤(pán)。該RAID的其他兩個(gè)磁盤(pán)塊也可以用同樣的方法選出。在分別選擇了識(shí)別碼為RO和Rl的磁盤(pán)塊之后,可以分別在選擇的磁盤(pán)塊上創(chuàng)建RO和Rl。通過(guò)這種方式,可以使該組RAID中的每個(gè)RAID的磁盤(pán)塊不在同一磁盤(pán)上。
[0070]本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)裝置,在接收模塊71接收到存儲(chǔ)N份數(shù)據(jù)拷貝的存儲(chǔ)請(qǐng)求時(shí),可以通過(guò)確定模塊72在預(yù)先創(chuàng)建的M個(gè)RAID中選擇存儲(chǔ)數(shù)據(jù)的N個(gè)RAID,其中,選擇的N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,并由存儲(chǔ)模塊73將所述N份數(shù)據(jù)分別存儲(chǔ)在選擇的所述N個(gè)RAID中。本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)裝置,由于選擇的N個(gè)RAID由分布于不同磁盤(pán)的磁盤(pán)塊構(gòu)成,因此能夠提高數(shù)據(jù)存儲(chǔ)的可靠性,容災(zāi)能力更強(qiáng)。
[0071]本發(fā)明實(shí)施例所提供的數(shù)據(jù)存儲(chǔ)裝置可以執(zhí)行前述數(shù)據(jù)存儲(chǔ)方法,各個(gè)模塊功能的詳細(xì)描述可參見(jiàn)方法實(shí)施例中的描述,在此不再贅述。
[0072]可以理解的是,圖7所示的實(shí)施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)模塊或組件可以結(jié)合或者可以集成到另一個(gè)設(shè)備中,或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些通信接口,模塊的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0073]作為分離部件說(shuō)明的模塊可以是或者也可以不是物理上分開(kāi)的,作為模塊顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部,模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0074]本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理的計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令用于執(zhí)行前述任意一個(gè)方法實(shí)施例所述的方法流程。本領(lǐng)域普通技術(shù)人員可以理解,前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、磁碟、光盤(pán)、隨機(jī)存儲(chǔ)器(Random-Access Memory, RAM)、固態(tài)硬盤(pán)(Solid State Disk, SSD)或者非易失性存儲(chǔ)器(non-volatile memory)等各種可以存儲(chǔ)程序代碼的非短暫性的(non-transitory)機(jī)器可讀介質(zhì)。
[0075]需要說(shuō)明的是,本申請(qǐng)所提供的實(shí)施例僅僅是示意性的。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。在本發(fā)明實(shí)施例、權(quán)利要求以及附圖中揭示的特征可以獨(dú)立存在也可以組合存在。在本發(fā)明實(shí)施例中以硬件形式描述的特征可以通過(guò)軟件來(lái)執(zhí)行,反之亦然。在此不做限定。
【權(quán)利要求】
1.一種數(shù)據(jù)存儲(chǔ)方法,所述方法用于將數(shù)據(jù)存儲(chǔ)于獨(dú)立磁盤(pán)冗余陣列RAID中,所述RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,其特征在于,包括: 接收應(yīng)用服務(wù)器發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)和數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù); 在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù); 將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID包括: 在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID ; 根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N-1個(gè)第二RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,還包括: 將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中; 建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
4.如權(quán)利要求2或3所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述存儲(chǔ)請(qǐng)求中還包含數(shù)據(jù)的大小,所述在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID包括: 根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一 RAID包括: 根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。
6.一種存儲(chǔ)裝置,所述裝置用于將數(shù)據(jù)存儲(chǔ)于獨(dú)立磁盤(pán)冗余陣列RAID中,所述RAID由分布于不同磁盤(pán)中的磁盤(pán)塊構(gòu)成,其特征在于,包括: 接收模塊,用于接收應(yīng)用服務(wù)器發(fā)送的存儲(chǔ)請(qǐng)求,所述存儲(chǔ)請(qǐng)求中包含有數(shù)據(jù)和數(shù)據(jù)拷貝份數(shù),其中,所述數(shù)據(jù)拷貝份數(shù)為N,N為不小于2的自然數(shù); 確定模塊,用于在預(yù)先創(chuàng)建的M個(gè)RAID中選擇N個(gè)RAID,其中,所述N個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中,所述M為不小于N的自然數(shù); 存儲(chǔ)模塊,用于將所述數(shù)據(jù)分別存儲(chǔ)于所述N個(gè)RAID中。
7.如權(quán)利要6所述的存儲(chǔ)裝置,其特征在于,所述確定模塊具體用于: 在預(yù)先創(chuàng)建的M個(gè)RAID中確定存儲(chǔ)所述數(shù)據(jù)的第一 RAID ; 并根據(jù)預(yù)設(shè)的RAID對(duì)應(yīng)關(guān)系在創(chuàng)建的M個(gè)RAID中選擇除第一 RAID以外的N-1個(gè)第二 RAID,其中,構(gòu)建所述第一 RAID和構(gòu)建所述N-1個(gè)RAID的磁盤(pán)塊均分布于不同的磁盤(pán)中。
8.根據(jù)權(quán)利要求7所述的存儲(chǔ)裝置,其特征在于,還包括: 配置模塊,用于將創(chuàng)建的M個(gè)RAID劃分為至少一個(gè)RAID組,其中,所述RAID組中包括至少兩個(gè)RAID,構(gòu)成所述至少兩個(gè)RAID的磁盤(pán)塊分布于不同的磁盤(pán)中; 建立所述RAID組中至少兩個(gè)RAID之間的RAID對(duì)應(yīng)關(guān)系。
9.如權(quán)利要求7或8所述的存儲(chǔ)裝置,其特征在于,所述存儲(chǔ)請(qǐng)求中還包含包數(shù)據(jù)的大小,所述確定模塊具體用于:根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇第一RAID。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述確定模塊具體用于: 根據(jù)所述數(shù)據(jù)的大小在預(yù)先創(chuàng)建的M個(gè)RAID中選擇空閑的存儲(chǔ)空間最大的RAID為所述第一 RAID。`
【文檔編號(hào)】G06F12/02GK103617010SQ201310684219
【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2013年12月13日 優(yōu)先權(quán)日:2013年12月13日
【發(fā)明者】蒲貴友, 李大權(quán) 申請(qǐng)人:華為技術(shù)有限公司