專利名稱:海量存儲(chǔ)系統(tǒng)中的資源分配方法
技術(shù)領(lǐng)域:
海量存儲(chǔ)系統(tǒng)中的資源分配方法屬于存儲(chǔ)區(qū)域網(wǎng)絡(luò)領(lǐng)域,尤其涉及其中的數(shù)據(jù)分布與負(fù)載平衡領(lǐng)域。
背景技術(shù):
隨著信息技術(shù)的飛速發(fā)展,人們要處理的數(shù)據(jù)量不斷增加;這對(duì)存儲(chǔ)系統(tǒng)容量和性能提出了巨大需求,并使得傳統(tǒng)的存儲(chǔ)方式已經(jīng)無(wú)法滿足用戶的需要。存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage AreaNetwork,SAN)是一種專門的存儲(chǔ)網(wǎng)絡(luò),它可以把各種存儲(chǔ)設(shè)備連接在一起,組成統(tǒng)一管理的存儲(chǔ)資源,而主機(jī)可以通過(guò)光纖或IP網(wǎng)絡(luò)來(lái)訪問(wèn)這些資源。同時(shí),為了支持存儲(chǔ)網(wǎng)絡(luò)中不同規(guī)格的磁盤及各種異構(gòu)的前端主機(jī),虛擬化技術(shù)被引入到存儲(chǔ)區(qū)域網(wǎng)絡(luò)中。虛擬化屏蔽存儲(chǔ)設(shè)備的物理細(xì)節(jié),將它們虛擬為一個(gè)巨大的存儲(chǔ)池提供給前端主機(jī)。在這種存儲(chǔ)體系結(jié)構(gòu)中,虛擬化的存儲(chǔ)資源通過(guò)網(wǎng)絡(luò)為前端主機(jī)所共享,物理資源配置可以不斷變化,以滿足用戶對(duì)存儲(chǔ)容量或性能的需求。
但是隨著存儲(chǔ)網(wǎng)絡(luò)規(guī)模的不斷增加,單純的虛擬化并不能解決所有問(wèn)題。首先,在大規(guī)模存儲(chǔ)區(qū)域網(wǎng)絡(luò)中,存儲(chǔ)設(shè)備的帶寬、容量以及前端主機(jī)對(duì)存儲(chǔ)系統(tǒng)容量、帶寬、延時(shí)的服務(wù)質(zhì)量(Quality of Service,QoS)要求不盡相同;如何在差異化的存儲(chǔ)設(shè)備中為主機(jī)分配資源以達(dá)到存儲(chǔ)系統(tǒng)性能的最優(yōu)化并盡量的滿足前端主機(jī)的要求是一個(gè)重要問(wèn)題。其次,當(dāng)存儲(chǔ)系統(tǒng)容量或者前端主機(jī)的訪問(wèn)模式發(fā)生改變時(shí),如不進(jìn)行存儲(chǔ)資源的重新分配,則無(wú)法達(dá)到存儲(chǔ)系統(tǒng)的性能最優(yōu)化。同時(shí),雖然目前的SCSI(Small Computer System Interface,小型計(jì)算機(jī)系統(tǒng)接口)磁盤的平均無(wú)故障時(shí)間(MTBF)可到達(dá)數(shù)十萬(wàn)小時(shí),但在SAN環(huán)境中存在成千上萬(wàn)塊磁盤,平均不到24小時(shí)會(huì)有一塊磁盤損壞;如何替換出現(xiàn)問(wèn)題的磁盤而不丟失數(shù)據(jù)成為一個(gè)重要的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的是設(shè)計(jì)一種對(duì)異構(gòu)磁盤的基于容量的評(píng)價(jià)方法,并根據(jù)這一評(píng)價(jià)結(jié)果實(shí)現(xiàn)存儲(chǔ)資源的隨機(jī)分布,即隨機(jī)數(shù)據(jù)分布。通過(guò)本方法,存儲(chǔ)資源從傳統(tǒng)的規(guī)律的條帶化分布改為按照容量的隨機(jī)分布,使得各個(gè)存儲(chǔ)設(shè)備的資源利用率基本達(dá)到平衡且負(fù)載更加均衡;同時(shí),當(dāng)存儲(chǔ)系統(tǒng)的物理布局發(fā)生變化時(shí),該方法可以保證遷移最少的數(shù)據(jù)以達(dá)到系統(tǒng)的新的平衡。
本發(fā)明構(gòu)建在存儲(chǔ)虛擬化之上。虛擬化系統(tǒng)能夠把所有的物理磁盤(Physical Disks,簡(jiǎn)稱PD)組織成一個(gè)統(tǒng)一的存儲(chǔ)池(Source Container,簡(jiǎn)稱SC)。存儲(chǔ)管理員可以根據(jù)用戶的需要,隨意地從SC中劃分存儲(chǔ)空間,從而形成眾多的虛擬盤(Virtual Disks,簡(jiǎn)稱VD),以供前端服務(wù)器使用。虛擬化系統(tǒng)接收前端服務(wù)器發(fā)來(lái)的SCSI指令,把邏輯地址轉(zhuǎn)化為實(shí)際的設(shè)備物理地址進(jìn)行讀寫操作并返回結(jié)果。這樣,虛擬化系統(tǒng)能夠?qū)崿F(xiàn)存儲(chǔ)資源的整合。在實(shí)現(xiàn)上,系統(tǒng)將物理磁盤按照一個(gè)固定大小的單元——SG(Storage Granularity)劃分成若干個(gè)塊,并按照地址順序依次編號(hào);同時(shí),VD也按此大小分為若干個(gè)SG,并按照地址順序依次編號(hào)。我們?cè)趯?shí)現(xiàn)中取SG為512KB。分別為PD和VD創(chuàng)建資源使用表與資源映射表。資源使用表記錄了該表對(duì)應(yīng)的PD的每個(gè)SG是否被某個(gè)VD使用以及具體被映射到哪個(gè)VD的哪個(gè)SG上。創(chuàng)建資源映射表記錄與之對(duì)應(yīng)的VD的SG映射到的某一PD的具體位置。所以,本發(fā)明中的資源分配的目的就是填充資源使用表與資源映射表;為VD的每個(gè)SG在PD中找到對(duì)應(yīng)的SG。一個(gè)VD的SG可以映射到多個(gè)PD中。
磁盤評(píng)價(jià)是資源分布的基礎(chǔ),它根據(jù)物理磁盤的容量(Capacity,簡(jiǎn)稱C)產(chǎn)生評(píng)價(jià)值,分布到該物理磁盤上的數(shù)據(jù)量由其容量決定。
基于虛擬化的存儲(chǔ)資源分配就是為VD中的SG分配對(duì)應(yīng)PD中的SG以填充資源使用表與資源映射表。一般而言,在以下三種情況下要進(jìn)行資源分配創(chuàng)建新的VD,在SC中添加新的PD以及從SC中刪除PD,其基本算法如下。
假設(shè)系統(tǒng)中有n塊物理磁盤PD1、PD2……PDn,評(píng)價(jià)值(即容量)分別為C1、C2……Cn。待分布的數(shù)據(jù)對(duì)象集合S={SG1,SG2...SGm},m為集合S的大小。定義PD1的容量區(qū)間為(0,C1),PD2的容量區(qū)間為(C1,C1+C2),……,PDn的容量區(qū)間為 當(dāng)創(chuàng)建VD或添加PD時(shí),S為SAN中所有的數(shù)據(jù)對(duì)象;當(dāng)刪除PD時(shí),S為待刪除PD上的數(shù)據(jù)對(duì)象。對(duì)于待分布數(shù)據(jù)對(duì)象集合S中的每一個(gè)對(duì)象SGi,產(chǎn)生一個(gè)隨機(jī)數(shù)r,當(dāng)r落在PDj的容量區(qū)間時(shí),將SGi分布在PDj中。
具體而言,當(dāng)存儲(chǔ)系統(tǒng)中加入或移除物理磁盤時(shí),必須重新分配各個(gè)VD的存儲(chǔ)資源,將部分存儲(chǔ)遷移到新的物理磁盤中,以保證負(fù)載平衡。為了保證這種負(fù)載平衡,本發(fā)明采用了基于概率的隨機(jī)方法來(lái)進(jìn)行資源分配。
本發(fā)明的特征在于,依次含有以下幾個(gè)步驟步驟(1)在所述系統(tǒng)的虛擬化管理節(jié)點(diǎn)之上加載一個(gè)資源分配與資源配置模塊以及一個(gè)中間層命令處理模塊,其中資源分配與配置模塊含有以下數(shù)據(jù)結(jié)構(gòu)ax_pd_t記錄某一個(gè)物理磁盤PD的屬性,包括容量、帶寬、已用空間、可用空間及資源使用表;該資源使用表對(duì)應(yīng)于莫一個(gè)PD,記錄了對(duì)應(yīng)PD的每個(gè)存儲(chǔ)管理基本單元SG是否被某個(gè)虛擬磁盤VD使用以及被映射到哪個(gè)VD的哪個(gè)SG上;所述PD和VD均被劃分為大小相等的若干個(gè)SG;ax_vd_t記錄某一個(gè)虛擬磁盤的VD的屬性,包括容量及資源映射表;該資源映射表對(duì)應(yīng)于某一個(gè)VD,記錄了對(duì)應(yīng)VD的每個(gè)SG映射到的某一PD的具體位置;axum_SC記錄整個(gè)系統(tǒng)中所以物理磁盤PD、虛擬磁盤VD的總大小、總可用空間,并包含一個(gè)由系統(tǒng)中所有ax_pd_t組成的鏈表及所有ax_vd_t組成的鏈表;所述資源分配與配置模塊按以下方式實(shí)現(xiàn)資源分配設(shè)定系統(tǒng)中有n塊物理磁盤,用PD1、PD2……PDn表示,用容量表示的評(píng)價(jià)值分別為C1、C2……Cn;待分布的數(shù)據(jù)對(duì)象集合S={SG1,SG2...SGm},m為集合S的大??;定義PD1的容量區(qū)間為(0,C1),PD2的容量區(qū)間為(C1,C1+C2),……,PDn的容量區(qū)間為 則在創(chuàng)建VD或添加PD時(shí),S為SAN中所有的數(shù)據(jù)對(duì)象;當(dāng)刪除PD時(shí),S為待刪除PD上的數(shù)據(jù)對(duì)象;對(duì)于待分布數(shù)據(jù)對(duì)象集合S中的每一個(gè)對(duì)象SGi,產(chǎn)生一個(gè)隨機(jī)數(shù)r,當(dāng)r落在PDj的容量區(qū)間時(shí),將SGi分布在PDj中;創(chuàng)建PDn的流程如下步驟(1.0),為PD分配數(shù)據(jù)結(jié)構(gòu)ax_pd_t,填充包括容量、可用大小的基本屬性,初始化PD的資源分配表;定義變量P并初始化為0;步驟(1.1),將PD加入到虛擬化管理節(jié)點(diǎn)中把所有PD虛擬地組織成一個(gè)統(tǒng)一的存儲(chǔ)池SC;步驟(1.2),對(duì)SC中存在的VD按以下步驟進(jìn)行資源重分配步驟(1.2.1),對(duì)所有已分配的物理磁盤PDi,i=1,2,...,n-1,定義δi=Ci/S′-Ci/S,其中S=Σi=1nCi]]>為包括PDn在內(nèi)的所有物理磁盤的總?cè)萘?,S′=Σi=1n-1Ci,]]>為所有已分配資源的物理磁盤的總?cè)萘?;步驟(1.2.2),對(duì)于所有SGi產(chǎn)生(0,1)區(qū)間平均分布的隨機(jī)數(shù)r,所述SGi∈PDi且所有SGi已分配給VD,i=1,2,...,n-1;步驟(1.2.3),對(duì)于該SGi所屬的PDi,若r<δi,則該SGi遷移到PDn的第P個(gè)SG中,并修改相應(yīng)的資源分配表與資源映射表,P加1;否則該SGi保持不變;步驟(1.2.4),重復(fù)步驟(1.2.3),直到i=n-1結(jié)束;刪除PDn的流程如下
步驟(2.0),對(duì)于該P(yáng)Dn上所有已分配的SG的集合,產(chǎn)生 區(qū)間平均分布的n-1個(gè)隨機(jī)數(shù)r;步驟(2.1),若隨機(jī)數(shù)ri位于PDi的容量區(qū)間上,則該SG遷移到PDi的第Pi個(gè)SG上;否則該SG保持不變;Pi為PDi上按地址順序第一個(gè)未被分配給VD的SG的位置,i=1,2,...,n-1;步驟(2.2),搜索PDi使得Pi指向PDi下一個(gè)未被分配的SG,并修改相應(yīng)的資源分配表與資源映射表;步驟(2.3),把PDn從SC中刪除;創(chuàng)建VD的流程如下步驟(3.0),計(jì)算SC中剩余空間之和是否大于要?jiǎng)?chuàng)建的VD的容量。如果否,則不能創(chuàng)建該VD;否則轉(zhuǎn)下一步;步驟(3.1),創(chuàng)建VD的數(shù)據(jù)結(jié)構(gòu)并添加到SC中;步驟(3.2),若要?jiǎng)?chuàng)建的為VDn其步驟如下步驟(3.2.1),對(duì)該VDn上所有SG的集合,產(chǎn)生 區(qū)間平均分布的n個(gè)隨機(jī)數(shù)r;步驟(3.2.2),如果ri位于PDi的容量區(qū)間上,則該SG分配到PDi的第Pi個(gè)SG上;Pi為PDi上按地址順序第一個(gè)未被分配給VD的SG的位置,i=1,2,...,n;步驟(3.2.3),搜索PDi使得Pi指向PDi下一個(gè)未被分配的SG,并修改相應(yīng)的資源分配表與資源映射表;中間層命令處理模塊,根據(jù)ax_vd_t提供的資源映射表進(jìn)行地址變換并完成所接受的前端主機(jī)的命令;步驟(2),所述方法按以下步驟依次進(jìn)行資源分配在添加PDn時(shí)首先,為該P(yáng)Dn分配并初始化ax_pd_t數(shù)據(jù)結(jié)構(gòu)及資源使用表并把其加入到全局變量axup_SC中;其次,進(jìn)行資源重分配,重購(gòu)資源使用表及資源映射表;最后,喚醒后臺(tái)線程,該線程根據(jù)重購(gòu)后的資源使用表與資源映射表進(jìn)行數(shù)據(jù)拷貝;在刪除PDn時(shí)第一步,刪除PDn時(shí)需要將其上VD的數(shù)據(jù)進(jìn)行轉(zhuǎn)移,計(jì)算刪除PD后是否有足夠的資源供VD使用。如果否,則該P(yáng)D不能刪除;
第二步,進(jìn)行資源重分配,重構(gòu)資源使用表與資源映射表;第三步,喚醒后臺(tái)線程,完成重購(gòu)后的數(shù)據(jù)拷貝;第四步,從axup_SC中刪除該P(yáng)D的ax_pd_t結(jié)構(gòu),釋放其資源使用表;在刪除VD時(shí)首先,計(jì)算SC中是否有足夠的空間創(chuàng)建該VD;其次,為VD創(chuàng)建并初始化ax_vd_t數(shù)據(jù)結(jié)構(gòu)及資源分配表,將其加入axup_SC中;最后,為VD分配資源,并更改資源使用表與資源映射表。
通過(guò)實(shí)驗(yàn)表明,該方法在實(shí)現(xiàn)磁盤利用率均衡的前提下,將磁盤的平均訪問(wèn)時(shí)間減小了14.8%,具有很好的性能。
為了解決海量異構(gòu)存儲(chǔ)網(wǎng)絡(luò)環(huán)境中的資源分配問(wèn)題,我們提出了SAN環(huán)境中存儲(chǔ)虛擬化的基于容量的磁盤評(píng)價(jià)與數(shù)據(jù)隨機(jī)分布方法。它按照容量對(duì)SAN環(huán)境中的磁盤進(jìn)行評(píng)價(jià),并以此進(jìn)行資源分配,從而達(dá)到資源利用率及性能的優(yōu)化;同時(shí),支持SAN中磁盤的添加與刪除。該方法具有以下的特點(diǎn)高度的兼容性及靈活性通過(guò)磁盤評(píng)價(jià),該方法支持各種異構(gòu)磁盤,這大大提高了SAN的兼容性與靈活性。
高效的資源管理存儲(chǔ)資源的分配可以在各個(gè)存儲(chǔ)節(jié)點(diǎn)上并行執(zhí)行,具有很高的性能。
資源管理的代價(jià)小由于采用隨機(jī)的數(shù)據(jù)分布,每次資源分配及重分配時(shí)移動(dòng)的數(shù)據(jù)量達(dá)到最優(yōu)。
高度可擴(kuò)展性與可靠性通過(guò)資源重分布,實(shí)現(xiàn)了SAN環(huán)境中存儲(chǔ)設(shè)備的添加與刪除,大大提高了SAN的可擴(kuò)展性與可靠性。
圖1.存儲(chǔ)資源層次圖。
圖2.虛擬化海量存儲(chǔ)資源映射圖。
圖3.系統(tǒng)結(jié)構(gòu)圖。
圖4.虛擬化海量存儲(chǔ)模塊結(jié)構(gòu)圖。
圖5.創(chuàng)建PD流程圖。
圖6.刪除PD的流程圖。
圖7.創(chuàng)建VD的流程圖。
具體實(shí)施例方式
本發(fā)明的核心是通過(guò)專用的虛擬化處理節(jié)點(diǎn)來(lái)維護(hù)一套存儲(chǔ)資源配置信息以集中管理存儲(chǔ)網(wǎng)絡(luò)中各種不同的存儲(chǔ)設(shè)備資源,并進(jìn)行資源分配。該虛擬化處理節(jié)點(diǎn)為一臺(tái)運(yùn)行Linux操作系統(tǒng)的服務(wù)器。同時(shí),它通過(guò)SCSI中間層進(jìn)行命令分析處理對(duì)前端主機(jī)提供完全透明的存儲(chǔ)服務(wù)。具體的實(shí)現(xiàn)架構(gòu)包括以下兩個(gè)主要部分1.虛擬化處理節(jié)點(diǎn)上維護(hù)全部存儲(chǔ)設(shè)備(包括物理設(shè)備和虛擬設(shè)備)的配置信息列表對(duì)每個(gè)PD,記錄其各種屬性及空間列表,即SG表;創(chuàng)建VD、添加刪除PD時(shí)進(jìn)行資源分配,并對(duì)每個(gè)VD創(chuàng)建一個(gè)結(jié)構(gòu),記錄各種屬性以及空間映射方式。
2.虛擬化處理節(jié)點(diǎn)上實(shí)現(xiàn)一個(gè)支持虛擬化功能的SCSI軟件目標(biāo)器STML(SCSI TargetMid-level Layer),它的工作是把前端主機(jī)對(duì)虛擬磁盤邏輯空間的訪問(wèn)(即虛擬命令)轉(zhuǎn)化為對(duì)實(shí)際物理設(shè)備的訪問(wèn)(即物理命令),并把物理設(shè)備的數(shù)據(jù)處理結(jié)果反饋給前端主機(jī)。
本發(fā)明所需的硬件設(shè)備包括前端主機(jī)、虛擬化管理節(jié)點(diǎn)、I/O節(jié)點(diǎn)和具有光纖卡接口的磁盤;網(wǎng)絡(luò)包括光纖網(wǎng)絡(luò)(即SAN網(wǎng)絡(luò))及以太網(wǎng)絡(luò)。其中,SAN網(wǎng)絡(luò)由光纖交換機(jī)連接包括前端主機(jī)、I/O節(jié)點(diǎn)和光纖卡接口磁盤,進(jìn)行數(shù)據(jù)傳輸;以太網(wǎng)絡(luò)由以太交換機(jī)連接虛擬化管理節(jié)點(diǎn)及I/O節(jié)點(diǎn)進(jìn)行配置管理、資源分配。其中,虛擬化管理節(jié)點(diǎn)及I/O節(jié)點(diǎn)運(yùn)行Linux操作系統(tǒng)(2.4.18以上內(nèi)核),前端主機(jī)為任何主流操作系統(tǒng),可以為L(zhǎng)inux、Windows、Solaris及OPEN BSD。
定義以下數(shù)據(jù)結(jié)構(gòu)ax_pd_t記錄某一個(gè)物理磁盤的屬性,包括容量、帶寬、已用空間、可用空間及資源使用表;ax_vd_t記錄某一個(gè)虛擬磁盤的屬性,包括容量及地址映射表;axum_SC記錄整個(gè)系統(tǒng)中所有物理磁盤、虛擬磁盤的總大小、總可用空間,并包含一個(gè)由系統(tǒng)中所有ax_pd_t組成的鏈表及所有ax_vd_t組成的鏈表;PD即系統(tǒng)中的物理磁盤;VD即系統(tǒng)中的虛擬盤;1)加載資源分配源與配置模塊(axup.o)該模塊對(duì)存儲(chǔ)區(qū)域網(wǎng)絡(luò)環(huán)境中的資源進(jìn)行虛擬化融合,為前端用戶提供一個(gè)同一的資源視圖并隱藏物理實(shí)現(xiàn)細(xì)節(jié)。同時(shí),根據(jù)物理磁盤的容量,完成資源分配,并提供磁盤添加及刪除的接口。該模塊按步驟完成以下功能1.在Linux內(nèi)核注冊(cè)一個(gè)字符設(shè)備。該字符設(shè)備名稱為AXUP,它通過(guò)主從設(shè)備號(hào)與管理員通信以響應(yīng)各種配置與資源分配請(qǐng)求;2.提供一個(gè)全局變量axup_SC記錄系統(tǒng)整體資源配置情況;3.提供Linux”/proc”目錄下的內(nèi)核信息接口,以便用戶或管理軟件對(duì)已有資源配置信息進(jìn)行查詢;4.通過(guò)資源搜索與配置生成完整的資源配置信息結(jié)構(gòu)(物理磁盤,虛擬磁盤的空間組織和使用情況),并獲得各物理設(shè)備的規(guī)格參數(shù);2)加載中間層命令處理模塊(stml_target.o)該模塊為實(shí)際命令的處理模塊。它根據(jù)ax_vd_t提供的資源映射表進(jìn)行地址變換并完成所接受的命令。
1.向前端主機(jī)報(bào)告存儲(chǔ)區(qū)域網(wǎng)絡(luò)中可用的虛擬盤。
2.在內(nèi)核中啟動(dòng)一個(gè)負(fù)責(zé)處理虛擬命令的線程及為每個(gè)磁盤啟動(dòng)一個(gè)處理物理命令的線程。
3.對(duì)收到的虛擬命令,經(jīng)地址映射后拆分為若干個(gè)物理命令并執(zhí)行;執(zhí)行完畢后合并并返回給前端。
資源分配步驟如下1)添加PD使用命令./pdcreate a b c d;其中a b c d四個(gè)參數(shù)分別為待添加PD的host channelid lun號(hào)碼。該命令完成以下工作1.為PD分配并初始化ax_pd t數(shù)據(jù)結(jié)構(gòu)及資源使用表,并將其加入axup_SC中;2.進(jìn)行資源重分配,重構(gòu)資源使用表與資源映射表;3.喚醒后臺(tái)線程background_process_thread完成重構(gòu)后的數(shù)據(jù)拷貝;2)刪除PD使用命令./pdremove id;其中id為待刪除物理盤的編號(hào)。該命令完成以下工作1.計(jì)算刪除PD后是否有足夠的資源供VD使用。如果否,則該P(yáng)D不能刪除。
2.進(jìn)行資源重分配,重構(gòu)資源使用表與資源映射表;3.喚醒后臺(tái)線程background_process_thread完成重構(gòu)后的數(shù)據(jù)拷貝;4.從axup_SC中刪除該P(yáng)D的ax_pd_t結(jié)構(gòu),釋放其資源使用表。
3)創(chuàng)建VD使用命令./vdcreate-n name-s size;其中name為該VD名,size為其大小。該命令完成以下工作1.計(jì)算SC中是否有足夠的空間創(chuàng)建該VD;2.為VD創(chuàng)建并初始化ax_vd_t數(shù)據(jù)結(jié)構(gòu)及資源分配表,將其加入axup_SC中;3.為VD分配資源,并更改資源使用表與資源映射表;
權(quán)利要求
1.海量存儲(chǔ)系統(tǒng)中的資源分配方法,其特征在于,依次含有以下幾個(gè)步驟步驟(1)在所述系統(tǒng)的虛擬化管理節(jié)點(diǎn)之上加載一個(gè)資源分配與資源配置模塊以及一個(gè)中間層命令處理模塊,其中資源分配與配置模塊含有以下數(shù)據(jù)結(jié)構(gòu)ax_pd_t記錄某一個(gè)物理磁盤PD的屬性,包括容量、帶寬、已用空間、可用空間及資源使用表;該資源使用表對(duì)應(yīng)于莫一個(gè)PD,記錄了對(duì)應(yīng)PD的每個(gè)存儲(chǔ)管理基本單元SG是否被某個(gè)虛擬磁盤VD使用以及被映射到哪個(gè)VD的哪個(gè)SG上;所述PD和VD均被劃分為大小相等的若干個(gè)SG;ax_vd_t記錄某一個(gè)虛擬磁盤的VD的屬性,包括容量及資源映射表;該資源映射表對(duì)應(yīng)于某一個(gè)VD,記錄了對(duì)應(yīng)VD的每個(gè)SG映射到的某一PD的具體位置;axum_SC記錄整個(gè)系統(tǒng)中所以物理磁盤PD、虛擬磁盤VD的總大小、總可用空間,并包含一個(gè)由系統(tǒng)中所有ax_pd_t組成的鏈表及所有ax_vd_t組成的鏈表;所述資源分配與配置模塊按以下方式實(shí)現(xiàn)資源分配設(shè)定系統(tǒng)中有n塊物理磁盤,用PD1、PD2……PDn表示,用容量表示的評(píng)價(jià)值分別為C1、C2……Cn;待分布的數(shù)據(jù)對(duì)象集合S={SG1,SG2…SGm},m為集合S的大??;定義PD1的容量區(qū)間為(0,C1),PD2的容量區(qū)間為(C1,C1+C2),……,PDn的容量區(qū)間為 則在創(chuàng)建VD或添加PD時(shí),S為SAN中所有的數(shù)據(jù)對(duì)象;當(dāng)刪除PD時(shí),S為待刪除PD上的數(shù)據(jù)對(duì)象;對(duì)于待分布數(shù)據(jù)對(duì)象集合S中的每一個(gè)對(duì)象SGi,產(chǎn)生一個(gè)隨機(jī)數(shù)r,當(dāng)r落在PDj的容量區(qū)間時(shí),將SGi分布在PDj中;創(chuàng)建PDn的流程如下步驟(1.0),為PD分配數(shù)據(jù)結(jié)構(gòu)ax_pd_t,填充包括容量、可用大小的基本屬性,初始化PD的資源分配表;定義變量P并初始化為0;步驟(1.1),將PD加入到虛擬化管理節(jié)點(diǎn)中把所有PD虛擬地組織成一個(gè)統(tǒng)一的存儲(chǔ)池SC;步驟(1.2),對(duì)SC中存在的VD按以下步驟進(jìn)行資源重分配步驟(1.2.1),對(duì)所有已分配的物理磁盤PDi,i=1,2,…,n-1,定義δi=Ci/S’-Ci/S,其中S=Σi=1nCi]]>為包括PDn在內(nèi)的所有物理磁盤的總?cè)萘?,S′=Σi=1n-1Ci,]]>為所有已分配資源的物理磁盤的總?cè)萘?;步驟(1.2.2),對(duì)于所有SGi產(chǎn)生(0,1)區(qū)間平均分布的隨機(jī)數(shù)r,所述SGi∈PDi且所有SGi已分配給VD,i=1,2,…,n-1;步驟(1.2.3),對(duì)于該SGi所屬的PDi,若r<δi,則該SGi遷移到PDn的第P個(gè)SG中,并修改相應(yīng)的資源分配表與資源映射表,P加1;否則該SGi保持不變;步驟(1.2.4),重復(fù)步驟(1.2.3),直到i=n-1結(jié)束;刪除PDn的流程如下步驟(2.0),對(duì)于該P(yáng)Dn上所有已分配的SG的集合,產(chǎn)生 區(qū)間平均分布的n-1個(gè)隨機(jī)數(shù)r;步驟(2.1),若隨機(jī)數(shù)ri位于PDi的容量區(qū)間上,則該SG遷移到PDi的第Pi個(gè)SG上;否則該SG保持不變;Pi為PDi上按地址順序第一個(gè)未被分配給VD的SG的位置,i=1,2,…,n-1;步驟(2.2),搜索PDi使得Pi指向PDi下一個(gè)未被分配的SG,并修改相應(yīng)的資源分配表與資源映射表;步驟(2.3),把PDn從SC中刪除;創(chuàng)建VD的流程如下步驟(3.0),計(jì)算SC中剩余空間之和是否大于要?jiǎng)?chuàng)建的VD的容量。如果否,則不能創(chuàng)建該VD;否則轉(zhuǎn)下一步;步驟(3.1),創(chuàng)建VD的數(shù)據(jù)結(jié)構(gòu)并添加到SC中;步驟(3.2),若要?jiǎng)?chuàng)建的為VDn其步驟如下步驟(3.2.1),對(duì)該VDn上所有SG的集合,產(chǎn)生 區(qū)間平均分布的n個(gè)隨機(jī)數(shù)r;步驟(3.2.2),如果ri位于PDi的容量區(qū)間上,則該SG分配到PDi的第Pi個(gè)SG上;Pi為PDi上按地址順序第一個(gè)未被分配給VD的SG的位置,i=1,2,…,n;步驟(3.2.3),搜索PDi使得Pi指向PDi下一個(gè)未被分配的SG,并修改相應(yīng)的資源分配表與資源映射表;中間層命令處理模塊,根據(jù)ax_vd_t提供的資源映射表進(jìn)行地址變換并完成所接受的前端主機(jī)的命令;步驟(2),所述方法按以下步驟依次進(jìn)行資源分配在添加PDn時(shí)首先,為該P(yáng)Dn分配并初始化ax_pd_t數(shù)據(jù)結(jié)構(gòu)及資源使用表并把其加入到全局變量axup_SC中;其次,進(jìn)行資源重分配,重購(gòu)資源使用表及資源映射表;最后,喚醒后臺(tái)線程,該線程根據(jù)重購(gòu)后的資源使用表與資源映射表進(jìn)行數(shù)據(jù)拷貝;在刪除PDn時(shí)第一步,刪除PDn時(shí)需要將其上VD的數(shù)據(jù)進(jìn)行轉(zhuǎn)移,計(jì)算刪除PD后是否有足夠的資源供VD使用。如果否,則該P(yáng)D不能刪除;第二步,進(jìn)行資源重分配,重構(gòu)資源使用表與資源映射表;第三步,喚醒后臺(tái)線程,完成重購(gòu)后的數(shù)據(jù)拷貝;第四步,從axup_SC中刪除該P(yáng)D的ax_pd_t結(jié)構(gòu),釋放其資源使用表;在刪除VD時(shí)首先,計(jì)算SC中是否有足夠的空間創(chuàng)建該VD;其次,為VD創(chuàng)建并初始化ax_vd_t數(shù)據(jù)結(jié)構(gòu)及資源分配表,將其加入axup_SC中;最后,為VD分配資源,并更改資源使用表與資源映射表。
全文摘要
海量存儲(chǔ)系統(tǒng)中的資源分配方法屬于存儲(chǔ)區(qū)域網(wǎng)絡(luò)領(lǐng)域,其特征在于按照容量規(guī)則對(duì)SAN環(huán)境中的資源進(jìn)行評(píng)價(jià),并根據(jù)該評(píng)價(jià)值用基于概率的隨機(jī)方法就行資源分配,以達(dá)到資源利用率及性能的最優(yōu)化;同時(shí),支持SAN中磁盤的添加與刪除。它具有高度的兼容性及靈活性、高效的資源管理、高度可擴(kuò)展性與可靠性及資源管理的代價(jià)小等優(yōu)點(diǎn)。
文檔編號(hào)G06F12/00GK1955912SQ20061011370
公開(kāi)日2007年5月2日 申請(qǐng)日期2006年10月13日 優(yōu)先權(quán)日2006年10月13日
發(fā)明者舒繼武, 薛巍, 鄭緯民, 劉坤 申請(qǐng)人:清華大學(xué)