一種塊虛擬化陣列的實(shí)現(xiàn)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種塊虛擬化陣列的方法及裝置。
【背景技術(shù)】
[0002] 隨著數(shù)據(jù)容量劇增和機(jī)械硬盤容量的不斷增大,傳統(tǒng)RAID(RedundantArraysof IndependentDisks,獨(dú)立冗余磁盤陣列)受限于磁盤個(gè)數(shù),且重建耗時(shí)較長。新一代的基 于塊虛擬化的RAID技術(shù)應(yīng)運(yùn)而生。塊虛擬化是針對(duì)傳統(tǒng)RAID的缺點(diǎn)發(fā)展而來的全新技 術(shù),主要原理是將一組磁盤組成存儲(chǔ)池(POOL),其中每個(gè)磁盤劃分成一個(gè)個(gè)小粒度的數(shù)據(jù) 塊(Chunklet),根據(jù)指定RAID策略(N+M比如:10+1或8+2)從池中選取多個(gè)Chunklet組 成一個(gè)RAIDlet(邏輯磁盤),再由多個(gè)RAIDlet組成一個(gè)RAID提供給上層使用。塊虛擬化 基于數(shù)據(jù)塊來構(gòu)建RAID組,使得數(shù)據(jù)均勻地分布到存儲(chǔ)池的所有磁盤上,然后以數(shù)據(jù)塊為 單元來進(jìn)行資源管理。
[0003] 然而實(shí)踐發(fā)現(xiàn),現(xiàn)有基于塊虛擬化RAID技術(shù)中,RAID由多個(gè)RAIDlet組成,對(duì)上層 提供的地址空間在每個(gè)RAIDlet上是連續(xù)的,一個(gè)RAIDlet空間接著下一個(gè)RAIDlet空間, 整體線性的對(duì)上層提供地址空間。如果是順序讀寫業(yè)務(wù),流量是依次遍歷一個(gè)一個(gè)RAIDlet 的,在讀寫一個(gè)RAIDlet時(shí)可能其它所有RAIDlet所在的磁盤都處于空閑狀態(tài),而讀寫中的 RAIDlet所命中的磁盤是性能瓶頸。如果組成存儲(chǔ)池的磁盤數(shù)目眾多,則空閑的磁盤也更 多,不能有效利用存儲(chǔ)池中的所有磁盤資源。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種塊虛擬化陣列的實(shí)現(xiàn)方法及裝置,以解決現(xiàn)有基于塊虛擬化RAID 技術(shù)中順序讀寫時(shí)磁盤利用率低的問題。
[0005] 根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種塊虛擬化陣列的實(shí)現(xiàn)方法,包括:
[0006] 創(chuàng)建獨(dú)立冗余磁盤陣列RAID,所述RAID包括多個(gè)邏輯磁盤RAIDlet;
[0007] 按照所述RAIDlet的索引編號(hào)順序?qū)λ鯮AIDlet進(jìn)行分組;其中,所述分組的數(shù) 量小于所述RAIDlet的數(shù)量,所述RAID的地址空間在分組之間是線性的,同一分組內(nèi),所述 RAID的地址按條帶依次分布在該分組中的各RAIDlet上。
[0008] 根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種塊虛擬化陣列的實(shí)現(xiàn)裝置,包括:
[0009] 創(chuàng)建單元,用于創(chuàng)建獨(dú)立冗余磁盤陣列RAID,所述RAID包括多個(gè)邏輯磁盤 RAIDlet;
[0010] 分組單元,用于按照所述RAIDlet的索引編號(hào)順序?qū)λ鯮AIDlet進(jìn)行分組;其 中,所述分組的數(shù)量小于所述RAIDlet的數(shù)量,所述RAID的地址空間在分組之間是線性的, 同一分組內(nèi),所述RAID的地址按條帶依次分布在該分組中的各RAIDlet上。
[0011] 應(yīng)用本發(fā)明實(shí)施例,通過在創(chuàng)建RAID之后,按照RAIDlet的索引編號(hào)順序?qū)?RAIDlet進(jìn)行分組,其中,該分組的數(shù)量小于RAIDlet的數(shù)量,RAID的地址空間在分組之 間是線性的,且同一分組內(nèi)RAID的地址按條帶依次分布在該分組中的各RAIDlet上,由于 RAIDlet分組中至少存在一個(gè)分組包括兩個(gè)連續(xù)的RAIDlet,該兩個(gè)連續(xù)的RAIDlet與單 個(gè)RAIDlet相比,包括的Chunklet分布在更多的磁盤上,當(dāng)接收到順序讀寫業(yè)務(wù)時(shí),可以下 發(fā)到同時(shí)下發(fā)到更多的磁盤上,從而,提高了順序讀寫時(shí)磁盤利用率,并提高了順序讀寫性 能。
【附圖說明】
[0012] 圖1是本發(fā)明實(shí)施例提供的一種塊虛擬化陣列的實(shí)現(xiàn)方法的流程示意圖;
[0013] 圖2A和2B是本發(fā)明實(shí)施例提供的一種對(duì)RAIDlet進(jìn)彳丁分組的不意圖;
[0014] 圖3是本發(fā)明實(shí)施例提供的另一種塊虛擬化陣列的實(shí)現(xiàn)方法的流程示意圖;
[0015] 圖4是本發(fā)明實(shí)施例提供的一種塊虛擬化陣列的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0016] 圖5是本發(fā)明實(shí)施例提供的另一種塊虛擬化陣列的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
[0017] 圖6是本發(fā)明實(shí)施例提供的另一種塊虛擬化陣列的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018] 為了使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面首先對(duì)現(xiàn) 有基于塊虛擬的RAID技術(shù)中選取Chunklet的策略和算法,以及RAID地址空間分布進(jìn)行簡 單說明。其中:
[0019] 選取Chunklet的策略和算法:組成一個(gè)RAIDlet的Chunklet必須分布在不同 的物理磁盤上,不能有兩個(gè)或兩個(gè)以上的Chunklet位于同一物理磁盤上,以滿足策略要求 的冗余性。在此基礎(chǔ)上,選取Chunklet采用隨機(jī)算法,由于隨機(jī)算法的均衡性,已申請(qǐng)的 Chunklet會(huì)均勻分布到存儲(chǔ)池內(nèi)所有磁盤上,使所有磁盤的使用率保持一致。
[0020] RAID地址空間分布:創(chuàng)建RAID的過程是依次創(chuàng)建其下RAIDlet的過程,創(chuàng)建每一 個(gè)RAIDlet的過程是到存儲(chǔ)池申請(qǐng)組成該RAIDlet的所有Chunklet,其中,Chunklet的選 取策略和算法見上。RAID創(chuàng)建成功后,RAID中的所有RAIDlet按索引編號(hào),地址空間按索 引編號(hào)順序?qū)ν馓峁┙o上層使用。
[0021] 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí) 施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例中技術(shù)方 案作進(jìn)一步詳細(xì)的說明。
[0022] 請(qǐng)參見圖1,為本發(fā)明實(shí)施例提供的一種塊虛擬化陣列的實(shí)現(xiàn)方法,如圖1所示, 該方法可以包括以下步驟:
[0023] 步驟101、創(chuàng)建RAID,該RAID包括多個(gè)RAIDlet。
[0024] 本發(fā)明實(shí)施例中,圖1所描述的方法流程的執(zhí)行主體可以為存儲(chǔ)服務(wù)器或存儲(chǔ)服 務(wù)器中的處理單元,如CPU(CenterProcessUnit,中央處理器),為便于描述,以下該方法 的執(zhí)行主體為存儲(chǔ)服務(wù)器為例進(jìn)行說明。
[0025] 本發(fā)明實(shí)施例中,當(dāng)存儲(chǔ)服務(wù)器需要?jiǎng)?chuàng)建基于塊虛擬化的RAID時(shí),存儲(chǔ)服務(wù)器可 以根據(jù)指定的RAID策略從存儲(chǔ)池的磁盤上選取預(yù)設(shè)數(shù)量的Chunklet創(chuàng)建RAIDlet,并根 據(jù)所創(chuàng)建的RAIDlet創(chuàng)建該RAID;其中,存儲(chǔ)服務(wù)器選擇Chunklet時(shí),需要保證組成一個(gè) RAIDlet的Chunklet分布在不同的物理磁盤上。
[0026] 步驟102、按照RAIDlet的索引編號(hào)順序?qū)AIDlet進(jìn)行分組;其中,該分組的數(shù) 量小于RAIDlet的數(shù)量,該RAID的地址空間在分組之間是線性的,同一分組內(nèi),該RAID的 地址按條帶一次分布在該分組中的各RAIDlet上。
[0027] 本發(fā)明實(shí)施例中,存儲(chǔ)服務(wù)器創(chuàng)建RAID成功后,可以對(duì)RAID中所有RAIDlet按 索引編號(hào),并按照各RAIDlet的索引編號(hào)順序?qū)AIDlet進(jìn)行分組;其中,分組的數(shù)量小于 RAIDlet的數(shù)量,即至少存在一個(gè)分組中包括;兩個(gè)或兩個(gè)以上的RAIDlet。
[0028] 舉例來說,假設(shè)RAID中共包括8個(gè)RAIDlet(按索引編號(hào)依次為RAIDletO~ RAIDlet7),則存儲(chǔ)服務(wù)器可以按照RAIDlet的索引編號(hào)順序?qū)AID分為4個(gè)分組 (RAIDlet-Rroup),分別為RAIDletO和RAIDletl、RAIDlet2 和RAIDlet3、RAIDlet4 和 RAIDlet5以及RAIDlet6和RAIDlet7 ;或者存儲(chǔ)服務(wù)器還可以按照RAIDlet的索引編號(hào)順 序?qū)AID分為3個(gè)分組,分別為RAIDletO~RAIDlet2、RAIDlet3~6以及RAIDlet7~ RAIDlet8〇
[0029] 需要注意的是,在本發(fā)明實(shí)施例中,存儲(chǔ)服務(wù)器對(duì)RAIDlet進(jìn)行分組時(shí),并不一定 需要進(jìn)行等分,即各分組中RAIDlet的數(shù)量不要求全部相同。
[0030] 作為一種可選的實(shí)施方式,上述步驟102中,按照RAIDlet的索引編號(hào)順序?qū)?RAIDlet進(jìn)行分組,可以包括以下步驟:
[0031] 11)、根據(jù)RAID對(duì)應(yīng)的RAID策略以及存儲(chǔ)池內(nèi)磁盤總數(shù),確定各分組中RAIDlet 的目標(biāo)數(shù)量;
[0032]12)、按照RAIDlet的索引編號(hào)順序,依次將目標(biāo)數(shù)量個(gè)RAIDlet劃分為一個(gè)分組。
[0033] 在該實(shí)施方式中,存儲(chǔ)服務(wù)器在對(duì)RAIDlet進(jìn)行分組時(shí),可以根據(jù)RAID對(duì)應(yīng)的 RAID策略以及存儲(chǔ)池內(nèi)磁盤總數(shù),確定各分組中RAIDlet的目標(biāo)數(shù)量。
[0034] 其中,為了盡可能提高順序讀寫時(shí)存儲(chǔ)池中磁盤資源的利用率,存儲(chǔ)服務(wù)器對(duì) RAIDlet進(jìn)行分組時(shí),可以盡可能地保證同一分組的各RAIDlet中包括的Chunklet中包括 盡可能多的磁盤上的Chunklet。同時(shí),為了保證單盤I0(Input/0utput,輸入/輸出)的順 序性,存儲(chǔ)服務(wù)器對(duì)RAIDlet進(jìn)行分組時(shí),可以盡可能保證同一分組的各RAIDlet中未包括 同一磁盤上的兩個(gè)或兩個(gè)以上Chunklet。
[0035] 相應(yīng)地,為了達(dá)到上述目的,在一種優(yōu)選的實(shí)施方式中,根據(jù)RAID對(duì)應(yīng)的RAID策 略以及存儲(chǔ)池內(nèi)磁盤總數(shù),確定各分組中RAIDlet的目標(biāo)數(shù)量,可以包括:
[0036] 若RAID對(duì)應(yīng)的RAID策略為N+M,存儲(chǔ)池內(nèi)磁盤總數(shù)為Z,則根據(jù)以下公式確定各 組分中RAIDlet的目標(biāo)數(shù)量G:
[0037] G^Z/ (M+N)
[0038