一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置,屬于電子數(shù)據(jù)存儲領(lǐng)域。所述方法包括:檢測到存儲池中出現(xiàn)故障盤;確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG;若所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG,則在所述可用盤中選擇多個連續(xù)空間CK組成第一CKG,所述第一CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。本發(fā)明在存儲池中出現(xiàn)故障盤,且需要分配CKG時,即使存儲池中正??捎玫挠脖P較少、不足以按照需分配的CKG的默認(rèn)RAID屬性分配空間,通過改變所述默認(rèn)的RAID屬性,在可用盤中選擇多個CK組成與需分配的CKG的默認(rèn)的RAID屬性不同的第一CKG,實(shí)現(xiàn)空間分配。
【專利說明】—種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子數(shù)據(jù)存儲領(lǐng)域,特別涉及一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置。
【背景技術(shù)】
[0002]存儲池中出現(xiàn)硬盤故障時,需要通過數(shù)據(jù)重構(gòu)的方法把故障盤中的數(shù)據(jù)恢復(fù)出來保存到正??捎玫挠脖P上,或者需要將新的業(yè)務(wù)數(shù)據(jù)寫入正常可用的硬盤上,因此需要一種有效的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,以確保數(shù)據(jù)重構(gòu)及新的業(yè)務(wù)數(shù)據(jù)寫入的成功。
[0003]現(xiàn)有技術(shù)出現(xiàn)故障盤后,實(shí)現(xiàn)存儲池內(nèi)空間分配的方法是:在進(jìn)行數(shù)據(jù)重構(gòu)時,將故障盤上的數(shù)據(jù)以CK (Chunk,硬盤上的一段連續(xù)的空間)為粒度,從其它的硬盤上尋找正常可用的CK即熱備CK,并組成新的CKG (Chunk Group,多個CK組成的組,用來提供保存業(yè)務(wù)數(shù)據(jù)的空間),然后把數(shù)據(jù)從故障CKG恢復(fù)出來保存到新的CKG中。該新的CKG的RAID(Redundant Arrays of Inexpensive Disks,磁盤陣列)屬性與故障盤對應(yīng)的故障CKG的RAID屬性相同。為了保證可靠性,該熱備CK所在的硬盤和故障CKG原來的CK所在的硬盤不同;當(dāng)選不到熱備CK時,則從故障CKG原來的成員盤上選擇可用的CK。在為新的業(yè)務(wù)分配空間時,則按照新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的屬性為新的業(yè)務(wù)數(shù)據(jù)分配新的CKG,當(dāng)正??捎玫挠脖P數(shù)不足以構(gòu)成新的CKG時,不夠的CK就會從故障盤上的可用的CK中選擇,構(gòu)成新的CKG。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]當(dāng)存儲空間出現(xiàn)故障盤,需要對存儲池中故障CKG的數(shù)據(jù)重構(gòu)或在存儲池中寫入新的業(yè)務(wù)數(shù)據(jù)時,如果存儲池中正??捎玫挠脖P較少,則可能無法在存儲池中為重構(gòu)的數(shù)據(jù)或新的業(yè)務(wù)數(shù)據(jù)成功分配空間,導(dǎo)致數(shù)據(jù)重構(gòu)或新的業(yè)務(wù)數(shù)據(jù)的寫入的失??;如果從故障CKG原來的成員盤上選擇可用的CK或從故障盤上選擇可用的CK則會導(dǎo)致新的CKG性能不穩(wěn)定,降低數(shù)據(jù)的可靠性。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了 一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置。所述技術(shù)方案如下:
[0007]第一方面,提供了一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,所述方法包括:檢測到存儲池中出現(xiàn)故障盤;確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ;若所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG,則在所述可用盤中選擇多個連續(xù)空間CK組成第一CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0008]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述多個CK中每個CK所在的硬盤均不相同。
[0009]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性,包括:確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ;確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0010]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,包括:判斷所述存儲池中除所述故障盤之外的可用盤的可用空間大小是否不低于所述故障CKG中的數(shù)據(jù)占用的空間大小;如果是,則在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG ;否則,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG。
[0011]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,所述方法還包括:將所述故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
[0012]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG之后,所述方法還包括:將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出,然后寫入所述第一 CKG中。
[0013]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,,所述確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性,包括:
[0014]如果在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù),則確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0015]結(jié)合第一方面的第六種可能的實(shí)現(xiàn)方式,在第一方面的第七種可能的實(shí)現(xiàn)方式中,所述在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,包括:在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG。
[0016]結(jié)合第一方面的第七種可能的實(shí)現(xiàn)方式,在第一方面的第八種可能的實(shí)現(xiàn)方式中,在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG之后,所述方法還包括:將所述新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
[0017]第二方面,提供了一種實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置,所述裝置包括:故障盤檢測單元,用于檢測存儲池中是否出現(xiàn)故障盤;屬性確定單元,用于在所述故障盤檢測單元檢測到所述存儲池中出現(xiàn)故障盤時,確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;可用盤確定單元,用于在所述屬性確定單元確定所述默認(rèn)的RAID屬性后,判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ;連續(xù)空間組CKG重構(gòu)單元,用于在所述可用盤確定單元判斷所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG之后,在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0018]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,
[0019]所述CKG重構(gòu)單元,還用于從每個所述可用盤中選擇一個CK組成所述第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0020]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述屬性確定單元包括:故障CKG確定模塊,用于在所述故障盤檢測單元檢測到所述存儲池中出現(xiàn)故障盤時,確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ;RAID屬性確定模塊,用于在所述故障CKG確定模塊確定故障CKG之后,確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0021]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述可用盤確定單元包括:可用空間檢測模塊,用于在所述RAID屬性確定模塊確定所述需分配的CKG的默認(rèn)的RAID屬性之后,判斷所述存儲池中的可用盤中可用空間的大小是否不低于所述故障CKG中的數(shù)據(jù)占用空間的大??;所述CKG重構(gòu)單元還包括:轉(zhuǎn)存模塊,用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中;CK選擇模塊,還用于在所述轉(zhuǎn)存模塊將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中之后,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG ;或者,還用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小不低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,從所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG ;所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0022]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:寫入單元,用于在所述CK選擇單元在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,將故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
[0023]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:讀取單元,用于在所述CK選擇單元在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG之后,將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出;所述寫入單元,還用于將所述讀取單元讀取的數(shù)據(jù)寫入所述第一 CKG中。
[0024]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第六種可能的實(shí)現(xiàn)方式中,所述裝置還包括:接收單元,用于接收新的業(yè)務(wù)數(shù)據(jù);所述屬性確定單元,還用于當(dāng)所述接收單元在所述故障盤檢測單元在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù)時,確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0025]結(jié)合第二方面的第六種可能的實(shí)現(xiàn)方式,在第二方面的第七種可能的實(shí)現(xiàn)方式中,所述屬性確定單元,還用于確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為默認(rèn)的RAID屬性。
[0026]結(jié)合第二方面的第七種可能的實(shí)現(xiàn)方式,在第二方面的第八種可能的實(shí)現(xiàn)方式中,所述CK選擇模塊,還用于在所述可用盤中的可用空間中選擇多個CK組成所述第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0027]結(jié)合第二方面的第八種可能的實(shí)現(xiàn)方式,在第二方面的第九種可能的實(shí)現(xiàn)方式中,所述裝置還包括:寫入單元,用于在所述CK選擇模塊選擇多個CK組成所述第一 CKG之后,將所述接收單元接收的新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
[0028]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0029]當(dāng)存儲池中出現(xiàn)故障盤,需要數(shù)據(jù)重構(gòu)或者有新業(yè)務(wù)需要空間時,即使存儲池中正??捎玫挠脖P較少、不足以按照正常情況以默認(rèn)的RAID屬性分配CKG,通過改變所述默認(rèn)的RAID屬性,在可用盤中選擇多個CK組成與需分配的CKG的默認(rèn)的RAID屬性不同的第一 CKG,也能夠?qū)崿F(xiàn)空間分配,從而保證存儲池中數(shù)據(jù)重構(gòu)成功及新的業(yè)務(wù)數(shù)據(jù)的成功寫入。并且,由于新的CKG的成員CK均是從可用盤中選出,因此新的CKG性能穩(wěn)定,可靠性得到了提聞。
【專利附圖】
【附圖說明】
[0030]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0031]圖1是本發(fā)明實(shí)施例中一個存儲池的結(jié)構(gòu)示意圖;
[0032]圖2是本發(fā)明實(shí)施例一提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法流程圖;
[0033]圖3是本發(fā)明實(shí)施例二提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法流程圖;
[0034]圖4是本發(fā)明實(shí)施例二中存儲池中有足夠可用空間時為故障CKG的數(shù)據(jù)重構(gòu)分配空間的不意圖;
[0035]圖5是本發(fā)明實(shí)施例二中存儲池中無足夠可用空間時為故障CKG的數(shù)據(jù)重構(gòu)分配空間的不意圖;
[0036]圖6是本發(fā)明實(shí)施例三提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法流程圖;
[0037]圖7是本發(fā)明實(shí)施例三中在存儲中為新的業(yè)務(wù)數(shù)據(jù)分配空間的示意圖;
[0038]圖8是本發(fā)明實(shí)施例四提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0040]本發(fā)明實(shí)施例涉及CKG,CKG由多個CK組成,CK位于硬盤上。一個CKG中的各個CK可以位于不同的硬盤上。其中,構(gòu)成CKG的各個CK可以稱為CKG的成員CK,為CKG貢獻(xiàn)了 CK的硬盤稱為CKG的成員盤。
[0041]CKG具有RAID屬性,該RAID屬性指的是RAID技術(shù)的等級。RAID技術(shù)分為幾種不同的等級,分別可以提供不同的速度、安全性和性價比。根據(jù)實(shí)際情況選擇適當(dāng)?shù)腞AID級別可以滿足用戶對存儲系統(tǒng)可用性、性能和容量的要求。常用的RAID級別有以下幾種:NRAID, JBOD, RAIDO, RAID1, RAID0+1 (即 RAID10),RAID3,RAID5 等。CKG 的 RAID 屬性不同,需要的成員盤的數(shù)量也不同。
[0042]一個存儲池中可以存在多個不同RAID屬性的CKG。請參閱圖1,在一個存儲池中有4個硬盤,分別是DISKO、DISKU DISK2和DISK3。存儲池中一個RAIDlO屬性的CKGO;(圖1中虛線所示)包括4個成員盤:DISK0、DISK1、DISK2、DISK3 d_CKG0'的成員CK包括:CKOO, CKOU CK02和CK03。存儲池一個具有RAID5屬性的CKGl'(如圖1中實(shí)線所示)包括 3 個成員盤:DISK0、DISKl 和 DISK2 ;該 CKGl'的成員 CK 包括:CK10、CK11 和 CK12。
[0043]具體的,當(dāng)存儲池中出現(xiàn)故障盤之后,將故障盤之外的可使用的硬盤稱為可用盤;將可用盤上尚未使用的空間稱為可用空間;將與故障盤對應(yīng)的CKG稱為故障CKG。
[0044]實(shí)施例一[0045]本實(shí)施例提供一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,請參閱圖2,方法流程包括:
[0046]201、檢測到存儲池中出現(xiàn)故障盤;
[0047]202、確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;
[0048]203、判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ;
[0049]204、若所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG,則在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0050]進(jìn)一步的,在所述可用盤中分配與所述默認(rèn)的RAID屬性不同的第一 CKG,包括:
[0051]在所述可用盤中選擇多個連續(xù)空間組成所述第一 CKG。
[0052]進(jìn)一步的,所述多個CK中每個CK所在的硬盤均不相同。
[0053]本實(shí)施例中,在第一種場景下,所述確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性,包括:
[0054]確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ;
[0055]確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0056]進(jìn)一步的,在所述可用盤中選擇多個連續(xù)空間組成第一 CKG,包括:
[0057]判斷所述存儲池中除所述故障盤之外的可用盤的可用空間大小是否不低于所述故障CKG中的數(shù)據(jù)占用的空間大?。?br>
[0058]如果是,則在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG ;
[0059]否則,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG。
[0060]進(jìn)一步的,所述在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,所述方法還包括:
[0061]將所述故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
[0062]進(jìn)一步的,所述在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一CKG之后,所述方法還包括:
[0063]將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出,然后寫入所述第一 CKG中。
[0064]本實(shí)施例中,在第二種場景下,在所述檢測到存儲池中出現(xiàn)故障盤之前,所述方法還包括:
[0065]如果在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù),則確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0066]進(jìn)一步的,所述在所述可用盤中選擇多個連續(xù)空間組成第一 CKG,包括:
[0067]在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG。
[0068]進(jìn)一步的,在在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述方法還包括:
[0069]將所述新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
[0070]具體的,可用盤是指故障盤之外的可使用的硬盤;可用空間是指可用盤上尚未使用的空間。[0071]本實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,當(dāng)存儲池中出現(xiàn)故障盤時,需要數(shù)據(jù)重構(gòu)或者有新業(yè)務(wù)需要空間時,即使存儲池中正常可用的硬盤和空間較少、不足以正常情況以默認(rèn)的默認(rèn)RAID屬性分配CKG,通過改變所述存儲池中默認(rèn)的RAID屬性,在可用盤中選擇多個CK組成與需分配的CKG的默認(rèn)的RAID屬性不同的第一 CKG,也能夠?qū)崿F(xiàn)空間分配,構(gòu)成新的CKG (即第一 CKG),從而保證存儲池中數(shù)據(jù)重構(gòu)成功及新的業(yè)務(wù)數(shù)據(jù)的成功寫入。
[0072]實(shí)施例二
[0073]本實(shí)施例提供一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,請參閱圖3,方法流程包括:
[0074]301、檢測到存儲池中出現(xiàn)故障盤。
[0075]302、確定故障盤對應(yīng)的故障連續(xù)空間組CKG。
[0076]303、確定故障CKG的RAID屬性為默認(rèn)的RAID屬性。
[0077]304、判斷所儲池中的可用盤是否足夠按照默認(rèn)的RAID屬性分配新的CKG。
[0078]305、若可用盤無法按照默認(rèn)的RAID屬性分配新的CKG,則判斷存儲池中除故障盤之外的可用盤的可用空間大小是否不低于所述故障CKG中的數(shù)據(jù)占用的空間大?。蝗绻?,則執(zhí)行步驟2041,否則執(zhí)行步驟2042。
[0079]3051、在所述可用盤的可用空間中隨機(jī)選擇多個CK組成與默認(rèn)CKR的RAID屬性不同的第一 CKG ;
[0080]3052、將故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中,在可用盤中選擇故障CKG的多個成員CK組成與默認(rèn)的CKG的RAID屬性不同的第一 CKG。
[0081]306、在可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,將故障CKG中的數(shù)據(jù)寫入第一 CKG中。
[0082]307、在可用盤中所述故障CKG的多個成員CK組成所述第一 CKG之后,將故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出,然后寫入第一 CKG中。
[0083]具體的,請再次參閱圖1,假設(shè)本實(shí)施例中圖1的存儲池中DISK3出現(xiàn)故障,成為故障盤。
[0084]與故障盤DISK3對應(yīng)的一個故障CKGO的RAID屬性為RAIDlO。為了將故障CKGO上的數(shù)據(jù)重構(gòu)出來,默認(rèn)需要按照故障CKGO的RAID屬性在存儲池中為故障CKGO上的數(shù)據(jù)分配一個RAIDlO屬性的新的CKG。但是,存儲池中的可用硬盤不足,不能夠按照RAIDlO屬性分配新的CKG,因此根據(jù)本實(shí)施例提供的方法,在故障盤DISK3之外的硬盤(即可用盤)上選擇CK,組成與故障CKGO的RAID屬性不同的CKGl (即第一 CKG)。
[0085]具體的,選擇CK時,可以要求每個被選擇的CK所在的硬盤各不相同,即每個可用盤僅貢獻(xiàn)出一個CK,因此能夠解決硬盤壓力變大的問題,使所述CK構(gòu)成的新CKG中數(shù)據(jù)的讀與的性能得到提聞。
[0086]具體的,在選擇CK組成第一 CKG時,存在兩種可能的情況:
[0087]第一種情況,存儲池中有足夠的可用空間,則在可用盤中隨機(jī)選擇新的CK組成CKGl (即第一 CKG)。
[0088]如圖4所示,DISKi (i=0、l或2)上存在足夠的可用空間,但是由于屬性為RAIDlO的CKG需要4個成員盤,其可用盤的數(shù)量不足以構(gòu)成與CKGO的RAID屬性相同的新的CKG,若仍然按照CKGO的屬性進(jìn)行數(shù)據(jù)重構(gòu),則會出現(xiàn)數(shù)據(jù)重構(gòu)失敗的情況。因此,通過新分配DISKi上的CKli組成成員盤數(shù)為3的RAID5屬性的CKGl,保證數(shù)據(jù)重構(gòu)的成功。此時,CKGl的成員CK包括CK10、CKll及CK12。
[0089]需要說明的是,在保證每個被選擇的CK所在的硬盤各不相同的前提下,CK的選擇可以是隨機(jī)的,比如,也可以選擇CKNi(比如將N取值設(shè)定為2)組成3盤RAID5屬性的新的CKG ;并且,新的CKG的RAID屬性也可以是隨機(jī)的,比如,CKGl的RAID屬性也可以為RAIDl或RAID3等。
[0090]第二種情況,儲池中的可用空間不足,在故障CKG中的可用成員盤上選擇多個成員CK,構(gòu)成RAID屬性與故障CKG的RAID屬性不同的CKG2 (即第一 CKG)。
[0091]如圖5所示,4個硬盤上的空間都已用完,此時,可以通過分配DISKi (i=0、l或2)上的CKOi組成成員盤數(shù)為3的RAID5屬性的CKG2,從而保證數(shù)據(jù)重構(gòu)的成功。
[0092]CKGO的成員0(包括0(00、0(01、0(02及0(03,由于DISK3出現(xiàn)故障,因此DISK3上的CK03不可用,同時由于4個硬盤上的空間都已用完,因此可以分配CKGO中4,構(gòu)成RAID5屬性的CKG2。此時,CKG2的成員CK包括CKOO, CK01、CK02。
[0093]具體的,圖5中實(shí)線橢圓內(nèi)為CKG2的成員CK ;虛線橢圓內(nèi)為CKGO的成員CK。
[0094]需要說明的是,此時選擇DISKi上的CKOi,可以使數(shù)據(jù)重構(gòu)操作較為簡單。而CKG2的RAID屬性可以是隨機(jī)的。由于原有的硬盤空間都已用完,在進(jìn)行數(shù)據(jù)重構(gòu)時,需要在構(gòu)成CKG2之前,把CKGO中原來的數(shù)據(jù)讀出到內(nèi)存或者其它的地方,然后在構(gòu)成新的CKG2之后,再按照新的RAID屬性寫到CKG2上。
[0095]本實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,當(dāng)存儲池中出現(xiàn)故障盤時,即使存儲池中正常可用的硬盤和空間較少、不足以組成默認(rèn)RAID屬性和成員盤數(shù)量的CKG,通過改變所述默認(rèn)的RAID屬性,在可用盤中選擇多個CK組成與需分配的CKG的默認(rèn)的RAID屬性不同的第一 CKG,也能夠?qū)崿F(xiàn)空間分配,構(gòu)成新的CKG(即第一 CKG),即使可用盤中無足夠的可用空間,也可以在故障CKG中的可用成員盤中選擇該故障CKG的成員CK組成具有新的RAID屬性的第一 CKG,然后把原來的數(shù)據(jù)寫到第一 CKG上。為數(shù)據(jù)的重構(gòu)成功提供了可能。另外,新分配的第一 CKG中不再包含故障盤,而且第一 CKG中的每個成員CK所在的硬盤均不同,不存在重構(gòu)后某個硬盤壓力過大的情況,因此重構(gòu)后的CKG的可靠性及該CKG中數(shù)據(jù)讀寫的性能均得到了提高。
[0096]實(shí)施例三
[0097]本實(shí)施例提供了一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法。請參閱圖6,方法流程包括:
[0098]601、接收新的業(yè)務(wù)數(shù)據(jù)。
[0099]602、檢測到存儲池中出現(xiàn)故障盤。
[0100]603、確定新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述默認(rèn)的RAID屬性。
[0101]604、判斷存儲池中的可用盤是否足夠按照默認(rèn)的RAID屬性分配新的CKG。
[0102]605、若可用盤無法按照默認(rèn)的RAID屬性分配新的CKG,則在可用盤中分配與所述默認(rèn)的RAID屬性不同的第一 CKG。
[0103]606、將新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
[0104]具體的,選擇CK時,可以要求每個被選擇的CK所在的硬盤各不相同,即每個可用盤僅貢獻(xiàn)出一個CK,因此能夠解決硬盤壓力變大的問題,使所述CK構(gòu)成的新CKG中數(shù)據(jù)的讀與的性能得到提聞。[0105]具體的,請再次參閱圖1,假設(shè)本實(shí)施例中圖1的存儲池中DISK3出現(xiàn)故障,成為故障盤。
[0106]當(dāng)接收到新的業(yè)務(wù)數(shù)據(jù)時,默認(rèn)需要按照新的業(yè)務(wù)數(shù)據(jù)請求分配的RAIDlO屬性分配新的CKG,但是存儲池中的可用硬盤不足,不能夠按照RAIDlO屬性分配新的CKG,因此根據(jù)本實(shí)施例提供的方法,在故障盤DISK3之外的硬盤(即可用盤)上選擇CK,組成與默認(rèn)的RAIDlO屬性不同的CKG3。
[0107]具體的,在故障盤DISK3之外的可用盤DISKi上選擇CK組成與存儲池中原有的CKG的RAID屬性不同的新CKG,并且每個被選擇的CK所在的硬盤均不相同。
[0108]具體的,請參閱圖7,DISK3發(fā)生故障時,若仍按照新的業(yè)務(wù)數(shù)據(jù)設(shè)置的CKG的RAID屬性,構(gòu)成新的CKG,其可用盤的不足,容易導(dǎo)致新的業(yè)務(wù)數(shù)據(jù)寫入失敗。此時,通過新分配DISKi Ci=OU或2)上的CKNi組成成員盤數(shù)為3的RAID5屬性的CKG3,保證數(shù)據(jù)重構(gòu)的成功。例如,可選擇CK00、CK01、CK02作為CKG3的成員盤。
[0109]具體的,在保證每個被選擇的CK所在的硬盤各不相同的前提下,CK的選擇可以是隨機(jī)的,比如,可以選擇CKli,也可以選擇CK2i。而新CKG的RAID屬性也可以為RAID5、RAIDl 或 RAID3 等。
[0110]本實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,當(dāng)有新的業(yè)務(wù)數(shù)據(jù)需要寫入時,若存儲池中出現(xiàn)故障盤,即使正??捎玫挠脖P和空間較少、不足以按照新的業(yè)務(wù)數(shù)據(jù)請求分配的RAID屬性分配新的CKG時,通過在可用盤中的可用空間中選擇新的CK組成與新的業(yè)務(wù)數(shù)據(jù)請求分配的RAID屬性不同的第一 CKG,實(shí)現(xiàn)空間的分配,然后再將新的業(yè)務(wù)數(shù)據(jù)寫入到第一 CKG中,也能夠保證存儲池中數(shù)據(jù)重構(gòu)成功。另外,由于第一 CKG的成員CK是從可用盤即非故障盤中選出的,因此第一 CKG的穩(wěn)定性較好。并且由于第一 CKG的每個成員CK所在的硬盤均不相同,不存在重構(gòu)后某個硬盤壓力過大的情況,因此第一 CKG的可靠性及該第一 CKG中數(shù)據(jù)讀寫的性能均得到了提高。
[0111]實(shí)施例四
[0112]參見圖8,本實(shí)施例提供了一種實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置,該裝置包括:
[0113]故障盤檢測單元81,用于檢測存儲池中是否出現(xiàn)故障盤;
[0114]屬性確定單元82,用于在所述故障盤檢測單元81檢測到所述存儲池中出現(xiàn)故障盤時,確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;
[0115]可用盤確定單元83,用于在所述屬性確定單元82確定所述默認(rèn)的RAID屬性后,判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ;
[0116]CKG重構(gòu)單元84,用于在所述可用盤確定單元83判斷所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG之后,在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0117]進(jìn)一步的,CKG重構(gòu)單元84,還還用于從每個所述可用盤中選擇一個CK組成所述第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0118]在本實(shí)施例的第一種場景中,屬性確定單元82包括:
[0119]故障CKG確定模塊,用于在所述故障盤檢測單元81檢測到所述存儲池中出現(xiàn)故障盤時,確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ;
[0120]RAID屬性確定模塊,用于在所述故障CKG確定模塊確定故障CKG之后,確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
[0121]進(jìn)一步的,可用盤確定單元83包括:
[0122]可用空間檢測模塊,用于在所述RAID屬性確定模塊確定所述需分配的CKG的RAID屬性之后,判斷所述存儲池中的可用盤中可用空間的大小是否不低于所述故障CKG中的數(shù)據(jù)占用空間的大??;
[0123]所述CKG重構(gòu)單元84還包括:
[0124]轉(zhuǎn)存模塊,用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中;
[0125]CK選擇模塊,還用于在所述轉(zhuǎn)存模塊將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中之后,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG ;或者,還用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小不低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,從所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一CKG ;;所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0126]進(jìn)一步的,所述裝置還包括:
[0127]寫入單元,用于在所述CK選擇模括在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,將故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
[0128]進(jìn)一步的,所述裝置還包括:
[0129]讀取單元,用于在所述CK選擇模塊在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG之后,將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出;
[0130]所述寫入單元,還用于將所述讀取單元讀取的數(shù)據(jù)寫入所述第一 CKG中。
[0131]在本實(shí)施例的第二種場景中,所述裝置還包括:
[0132]接收單元,用于接收新的業(yè)務(wù)數(shù)據(jù);
[0133]所述屬性確定單元82,還用于當(dāng)所述接收單元在所述故障盤檢測單元在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù)時,確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。。
[0134]進(jìn)一步的,所述CK選擇模塊,還用于在所述可用盤的可用空間中選擇多個連續(xù)空間組成CK所述第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
[0135]進(jìn)一步的,所述裝置還包括:
[0136]寫入單元,用于在所述CK選擇模塊選擇多個CK組成所述第一 CKG之后,將所述接收單元接收的新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
[0137]本實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置,當(dāng)存儲池中出現(xiàn)故障盤,需要為故障CKG中的數(shù)據(jù)重構(gòu)分配空間時,即使存儲池中正??捎玫挠脖P和空間較少、不足以組成默認(rèn)RAID屬性和成員盤數(shù)量的CKG,通過改變所述默認(rèn)的RAID屬性,在可用盤中選擇多個CK組成與需分配的CKG的默認(rèn)的RAID屬性不同的第一 CKG,也能夠?qū)崿F(xiàn)空間分配,構(gòu)成新的CKG (即第一 CKG),即使可用盤中無足夠的可用空間,也可以在故障CKG中的可用成員盤中選擇該故障CKG的成員CK組成具有新的RAID屬性的第一 CKG,然后把原來的數(shù)據(jù)寫到第一 CKG上,為數(shù)據(jù)的重構(gòu)成功提供了可能;當(dāng)有新的業(yè)務(wù)數(shù)據(jù)需要寫入,需要分配新的空間時,即使正??捎玫挠脖P和空間較少、不足以按照新的業(yè)務(wù)數(shù)據(jù)請求分配的RAID屬性分配新的CKG時,通過在可用盤中的可用空間中選擇新的CK組成與新的業(yè)務(wù)數(shù)據(jù)請求分配的RAID屬性不同的第一 CKG,實(shí)現(xiàn)空間的分配,然后再將新的業(yè)務(wù)數(shù)據(jù)寫入到第一 CKG中,也能夠保證存儲池中數(shù)據(jù)重構(gòu)成功。另外,由于第一 CKG的成員CK是從可用盤即非故障盤中選出的,因此第一 CKG的穩(wěn)定性較好。并且由于第一 CKG的每個成員CK所在的硬盤均不相同,不存在重構(gòu)后某個硬盤壓力過大的情況,因此第一 CKG的可靠性及該第一 CKG中數(shù)據(jù)讀寫的性能均得到了提高。
[0138]需要說明的是,本發(fā)明的實(shí)施例在存儲池中發(fā)現(xiàn)故障盤后,在為各種數(shù)據(jù)分配新的CKG時,如果判斷出存儲池中的可用盤無法按照所述默認(rèn)的RAID屬性分配新的CKG,則在所述可用盤中選擇多個連續(xù)空間CK組成與默認(rèn)的RAID屬性不同的第一 CKG ;如果判斷出存儲池中的可用盤可以按照所述默認(rèn)的RAID屬性分配新的CKG,則優(yōu)先按照默認(rèn)的RAID屬性分配新的CKG。
[0139]綜上所述,本發(fā)明實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置,在存儲池中出現(xiàn)故障盤,需要數(shù)據(jù)重構(gòu)或者有新業(yè)務(wù)需要空間時,即使存儲池中正??捎玫挠脖P和空間較少、不足以按照正常情況以默認(rèn)的RAID屬性分配新的CKG,也可以通過改變所述存儲池默認(rèn)的需要分配的CKG的RAID屬性構(gòu)成第一 CKG,保證空間分配的成功,從而能夠保證存儲池中數(shù)據(jù)重構(gòu)及新的業(yè)務(wù)數(shù)據(jù)寫入的成功。另外,由于第一 CKG的成員CK是從可用盤即非故障盤中選出的,因此第一 CKG的穩(wěn)定性較好。并且由于第一 CKG的每個成員CK所在的硬盤均不相同,因此第一 CKG的可靠性及該第一 CKG中數(shù)據(jù)讀寫的性能均得到了提高。
[0140]具體的,上述實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的方法及裝置,也可應(yīng)用于其它領(lǐng)域中,比如網(wǎng)絡(luò)中數(shù)據(jù)傳輸中服務(wù)器根據(jù)自身負(fù)荷的大小選擇不同的數(shù)據(jù)加密算法,在負(fù)荷比較大時,采用消耗比較小的加密算法。
[0141]需要說明的是:上述實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置在實(shí)現(xiàn)存儲池內(nèi)空間分配時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置與實(shí)現(xiàn)存儲池內(nèi)空間分配的方法實(shí)施屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0142]上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0143]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0144]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種實(shí)現(xiàn)存儲池內(nèi)空間分配的方法,其特征在于,所述方法包括: 檢測到存儲池中出現(xiàn)故障盤; 確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性; 判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ; 若所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG,則在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述多個CK中每個CK所在的硬盤均不相同。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性,包括: 確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ; 確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,包括: 判斷所述存儲池中除所述故障盤之外的可用盤的可用空間大小是否不低于所述故障CKG中的數(shù)據(jù)占用的空間大??; 如果是,則在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG ; 否則,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,所述方法還包括: 將所述故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG之后,所述方法還包括: 將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出,然后寫入所述第一 CKG中。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性,包括: 如果在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù),則確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,包括: 在所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG之后,所述方法還包括: 將所述新的業(yè)務(wù)數(shù)據(jù)寫入所述第一 CKG中。
10.一種實(shí)現(xiàn)存儲池內(nèi)空間分配的裝置,其特征在于,包括: 故障盤檢測單元,用于檢測存儲池中是否出現(xiàn)故障盤; 屬性確定單元,用于在所述故障盤檢測單元檢測到所述存儲池中出現(xiàn)故障盤時,確定需分配的連續(xù)空間組CKG的默認(rèn)的磁盤陣列RAID屬性;可用盤確定單元,用于在所述屬性確定單元確定所述默認(rèn)的RAID屬性后,判斷所述存儲池中的可用盤是否足夠按照所述默認(rèn)的RAID屬性分配所述CKG ; 連續(xù)空間組CKG重構(gòu)單元,用于在所述可用盤確定單元判斷所述可用盤無法按照所述默認(rèn)的RAID屬性分配所述CKG之后,在所述可用盤中選擇多個連續(xù)空間CK組成第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述CKG重構(gòu)單元,還用于從每個所述可用盤中選擇一個CK組成所述第一 CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
12.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述屬性確定單元包括: 故障CKG確定模塊,用于在所述故障盤檢測單元檢測到所述存儲池中出現(xiàn)故障盤時,確定所述故障盤對應(yīng)的故障連續(xù)空間組CKG ; RAID屬性確定模塊,用于在所述故障CKG確定模塊確定故障CKG之后,確定所述故障CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于, 所述可用盤確定單元包括: 可用空間檢測模塊, 用于在所述RAID屬性確定模塊確定所述需分配的CKG的默認(rèn)的RAID屬性之后,判斷所述存儲池中的可用盤中可用空間的大小是否不低于所述故障CKG中的數(shù)據(jù)占用空間的大小; 所述CKG重構(gòu)單元還包括: 轉(zhuǎn)存模塊,用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中; CK選擇模塊,還用于在所述轉(zhuǎn)存模塊將所述故障CKG中的數(shù)據(jù)讀出并寫入內(nèi)存或指定硬盤中之后,在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG ;或者,還用于在可用空間檢測模塊判斷所述存儲池中的可用空間的大小不低于所述故障CKG中的數(shù)據(jù)占用空間的大小時,從所述可用盤的可用空間中隨機(jī)選擇多個CK組成所述第一 CKG ;所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括: 寫入單元,用于在所述CK選擇單元在所述可用盤的可用空間中隨機(jī)選擇多個CK組成第一 CKG之后,將故障CKG中的數(shù)據(jù)寫入所述第一 CKG中。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括: 讀取單元,用于在所述CK選擇單元在所述可用盤中選擇所述故障CKG的多個成員CK組成所述第一 CKG之后,將所述故障CKG中的數(shù)據(jù)從所述內(nèi)存或指定硬盤內(nèi)讀出; 所述寫入單元,還用于將所述讀取單元讀取的數(shù)據(jù)寫入所述第一 CKG中。
16.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述裝置還包括: 接收單元,用于接收新的業(yè)務(wù)數(shù)據(jù); 所述屬性確定單元,還用于當(dāng)所述接收單元在所述故障盤檢測單元在檢測到所述故障盤之前接收到新的業(yè)務(wù)數(shù)據(jù)時,確定所述新的業(yè)務(wù)數(shù)據(jù)請求分配的CKG的RAID屬性為所述需分配的CKG的默認(rèn)的RAID屬性。
17.如權(quán)利要求16所述的裝置,其特征在于, 所述CK選擇模塊,還用于在所述可用盤中的可用空間中選擇多個CK組成所述第一CKG,所述第一 CKG的RAID屬性與所述默認(rèn)的RAID屬性不同。
18.如權(quán)利要求17所述的裝置,其特征在于,所述裝置還包括: 寫入單元,用于在所述CK選擇模塊選擇多個CK組成所述第一 CKG之后,將所述接收單元接收的新的業(yè)務(wù)數(shù)據(jù)寫入所述 第一 CKG中。
【文檔編號】G06F3/06GK103631535SQ201310589453
【公開日】2014年3月12日 申請日期:2013年11月20日 優(yōu)先權(quán)日:2013年11月20日
【發(fā)明者】劉曉瑞, 薛迎春 申請人:華為技術(shù)有限公司