本發(fā)明屬于互聯(lián)網(wǎng)
技術(shù)領(lǐng)域:
,涉及一種基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法,在云數(shù)據(jù)中心下進(jìn)行物理機(jī)與虛擬機(jī)的映射轉(zhuǎn)換時(shí),能夠避免物理機(jī)資源約束以及進(jìn)行虛擬機(jī)并行遷移。
背景技術(shù):
:在云數(shù)據(jù)中心,由于虛擬機(jī)動(dòng)態(tài)的產(chǎn)生和銷毀,以及服務(wù)熱點(diǎn)的存在經(jīng)常會(huì)導(dǎo)致物理機(jī)負(fù)載不均衡。同時(shí),為減少同一個(gè)租戶下各個(gè)虛擬機(jī)的通信時(shí)延,要求虛擬機(jī)放置在相互靠近的位置,比如同一個(gè)機(jī)架下。為此,云數(shù)據(jù)中心經(jīng)常進(jìn)行虛擬機(jī)的動(dòng)態(tài)部署調(diào)整,即數(shù)據(jù)中心管理員通過監(jiān)控系統(tǒng)實(shí)時(shí)監(jiān)控物理機(jī)的資源利用情況,在合適的時(shí)機(jī)進(jìn)行虛擬機(jī)重新部署,將當(dāng)前的物理機(jī)與虛擬機(jī)映射關(guān)系,通過虛擬機(jī)熱遷移,轉(zhuǎn)換為另一種物理機(jī)與虛擬機(jī)的映射關(guān)系,以此來實(shí)現(xiàn)負(fù)載均衡或者減少通信時(shí)延的目的。虛擬機(jī)熱遷移通常會(huì)消耗額外物理機(jī)資源,并帶來應(yīng)用性能損失,并行遷移能實(shí)現(xiàn)快速遷移,減少潛在風(fēng)險(xiǎn)。在選擇虛擬機(jī)進(jìn)行并行遷移時(shí)需要滿足一些資源約束,比如目的物理機(jī)可能不能容納待遷移虛擬機(jī)的虛擬機(jī),直到其遷移出部分需要遷移的虛擬機(jī)之后。這就表明虛擬機(jī)遷移之間存在一定的依賴關(guān)系,有些遷移任務(wù)需要在另一些遷移任務(wù)完成之前完成。另外虛擬機(jī)遷移可能形成環(huán)路,比如多個(gè)不同租戶的虛擬機(jī)進(jìn)行聚集操作以減小通信時(shí)延時(shí),可能發(fā)生物理機(jī)交換虛擬機(jī)的情況,當(dāng)虛擬機(jī)遷移形成環(huán)路時(shí),形成環(huán)路有可能形成遷移死鎖,需要將部分虛擬機(jī)遷移到臨時(shí)物理機(jī)節(jié)點(diǎn),以打破環(huán)路。現(xiàn)有的虛擬機(jī)并行遷移方法沒有考慮遷移任務(wù)相互依賴以及遷移死鎖的問題。本發(fā)明采用類似于拓?fù)渑判虻姆椒ǎ诮鉀Q上述兩個(gè)問題的同時(shí),虛擬機(jī)熱遷移是不斷在兩臺(tái)物理機(jī)之間迭代復(fù)制內(nèi)存的過程,可用帶寬與遷移時(shí)間是指數(shù)關(guān)系,為保證虛擬機(jī)快速遷移,本發(fā)明規(guī)定在同一臺(tái)物理機(jī)上,一次用最大帶寬只遷移一臺(tái)虛擬機(jī),以降低資源競(jìng)爭(zhēng),縮短遷移時(shí)間。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:為了解決現(xiàn)有技術(shù)未考慮遷移任務(wù)相互依賴以及遷移死鎖的問題,本發(fā)明提出一種基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法,能有效地實(shí)現(xiàn)虛擬機(jī)并行遷移,減少遷移時(shí)間。技術(shù)方案:為解決上述技術(shù)問題,本發(fā)明中的基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法,包括以下步驟:(1)確定數(shù)據(jù)中心中每臺(tái)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合;(2)依次遍歷數(shù)據(jù)中心中的物理機(jī),根據(jù)每臺(tái)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合以及虛擬機(jī)并行遷移原則選擇待遷移的虛擬機(jī);(3)將待遷移的虛擬機(jī)遷移至相應(yīng)的目的物理機(jī),并更新相應(yīng)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合;(4)步驟(2)和步驟(3)作為一次迭代過程,一次迭代結(jié)束后,判斷所有虛擬機(jī)是否都遷移完畢,否則重復(fù)執(zhí)行步驟(2)和步驟(3)的迭代過程,直到虛擬機(jī)遷移完畢。其中,步驟(2)中根據(jù)每臺(tái)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合以及虛擬機(jī)并行遷移原則選擇待遷移的虛擬機(jī),具體為:若該物理機(jī)的待遷出虛擬機(jī)集合為空集,待遷入虛擬機(jī)集合不為空集,則選擇該物理機(jī)的待遷入虛擬機(jī)集合中任意一臺(tái)虛擬機(jī)作為待遷移的虛擬機(jī);若該物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合都不為空集,且該物理機(jī)能同時(shí)容納待遷出集合中的所有虛擬機(jī)以及待遷入集合中的部分虛擬機(jī),則選擇待遷入虛擬機(jī)集合中能被該物理機(jī)容納的任意一臺(tái)虛擬機(jī)作為待遷移的虛擬機(jī);同時(shí),對(duì)于某一物理機(jī)中待遷入虛擬機(jī)集合里的虛擬機(jī),只有滿足所述虛擬機(jī)并行遷移原則才能作為待遷移的虛擬機(jī),具體為:1)若該虛擬機(jī)所要遷入的物理機(jī)在本次迭代中具有足夠資源容納該虛擬機(jī);2)在本次迭代過程中,除了遷移該虛擬機(jī),該虛擬機(jī)所要遷出的物理機(jī)不具有其他遷移任務(wù)。進(jìn)一步地,步驟(2)還包括:若在本次迭代中沒有選擇出待遷移的虛擬機(jī),則隨機(jī)一臺(tái)虛擬機(jī)作為臨時(shí)遷移虛擬機(jī)。針對(duì)上述情況,相應(yīng)地,步驟(3)還包括:對(duì)于臨時(shí)遷移虛擬機(jī),將該虛擬機(jī)先遷往預(yù)設(shè)的臨時(shí)物理機(jī),對(duì)于其他虛擬機(jī),則繼續(xù)執(zhí)行步驟(4),待其他虛擬機(jī)遷移完畢后,再將該臨時(shí)虛擬機(jī)遷移至其目的物理機(jī)。有益效果:本發(fā)明中基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法,首先根據(jù)數(shù)據(jù)中心每臺(tái)物理機(jī)的待遷入和待遷出虛擬機(jī)集合逐次選擇一組符合并行條件的虛擬機(jī),然后并行地遷移所選擇的虛擬機(jī),進(jìn)一步,若在一次迭代過程中沒有符合并行條件的虛擬機(jī),則遷移執(zhí)行模塊隨機(jī)選擇一臺(tái)待遷移虛擬機(jī)并遷移至臨時(shí)物理機(jī)節(jié)點(diǎn)。本發(fā)明方法能夠減少遷移時(shí)間,相對(duì)于依次順序遷移,并行遷移能有效減少虛擬機(jī)遷移時(shí)間,提高虛擬機(jī)整合效率;能夠解決虛擬機(jī)遷移之間任務(wù)依賴以及遷移環(huán)路問題,使并行遷移順利進(jìn)行;方便簡(jiǎn)單,僅需要知道當(dāng)前映射信息和目標(biāo)映射信息就能實(shí)現(xiàn)轉(zhuǎn)換,不需要監(jiān)控額外的資源利用信息,程序設(shè)計(jì)簡(jiǎn)單有效,便于實(shí)施。附圖說明圖1是本發(fā)明中基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法的應(yīng)用場(chǎng)景圖。具體實(shí)施方式下面結(jié)合實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明,本實(shí)施列對(duì)本發(fā)明不構(gòu)成限定。如圖1所示的場(chǎng)景中,云數(shù)據(jù)中心中,一臺(tái)物理機(jī)包含多個(gè)虛擬機(jī),物理機(jī)與虛擬機(jī)之間存在映射關(guān)系,如虛擬機(jī)遷移之前,原物理機(jī)a與虛擬機(jī)A、B之間存在映射關(guān)系,原物理機(jī)b與虛擬機(jī)C、D之間存在映射關(guān)系,虛擬機(jī)遷移之后,原物理機(jī)a與虛擬機(jī)A、C之間存在映射關(guān)系,原物理機(jī)b與虛擬機(jī)B、D之間存在映射關(guān)系。本發(fā)明中基于虛擬機(jī)熱遷移的物理機(jī)與虛擬機(jī)映射轉(zhuǎn)換方法,應(yīng)用于該場(chǎng)景,用于完成虛擬機(jī)的動(dòng)態(tài)部署,主要包括并行虛擬機(jī)的選擇和遷移執(zhí)行兩部分,具體包括以下步驟:(1)確定數(shù)據(jù)中心中每臺(tái)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合;(2)依次遍歷數(shù)據(jù)中心中的物理機(jī),根據(jù)每臺(tái)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合以及虛擬機(jī)并行遷移原則選擇待遷移的虛擬機(jī);(3)將待遷移的虛擬機(jī)遷移至相應(yīng)的目的物理機(jī),并更新相應(yīng)物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合;(4)步驟(2)和步驟(3)作為一次迭代過程,一次迭代結(jié)束后,判斷所有虛擬機(jī)是否都遷移完畢,否則重復(fù)執(zhí)行步驟(2)和步驟(3)的迭代過程,直到虛擬機(jī)遷移完畢。對(duì)于某一臺(tái)物理機(jī),步驟(2)中選擇待遷移的虛擬機(jī),具體為:若該物理機(jī)的待遷出虛擬機(jī)集合為空集,待遷入虛擬機(jī)集合不為空集,則選擇該物理機(jī)的待遷入虛擬機(jī)集合中任意一臺(tái)虛擬機(jī)作為待遷移的虛擬機(jī);若該物理機(jī)的待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合都不為空集,且該物理機(jī)能同時(shí)容納待遷出集合的所有虛擬機(jī),以及待遷入集合中的部分虛擬機(jī),則選擇待遷入虛擬機(jī)集合中能被該(目的)物理機(jī)容納的任意一臺(tái)虛擬機(jī)作為待遷移的虛擬機(jī)。選擇虛擬機(jī)時(shí)要保證目的物理機(jī)此時(shí)能容納此物理機(jī),同時(shí)要避免遷移引起資源競(jìng)爭(zhēng),降低遷移效率。因此,在每次迭代中選擇待遷移的虛擬機(jī)時(shí),需要考慮并行遷移,虛擬機(jī)需要滿足的并行遷移條件為:1)在本次迭代中,待遷移的虛擬機(jī)所要遷入的目的物理機(jī)有足夠資源容納此虛擬機(jī);2)在本次迭代過程中,除了遷移該待遷移的虛擬機(jī),該待遷移的虛擬機(jī)所要遷出的物理機(jī)不具有其他遷移任務(wù)。即:在一次迭代過程中,一臺(tái)物理機(jī)至多有一臺(tái)虛擬機(jī)在執(zhí)行遷入或者遷出操作,若此虛擬機(jī)所在的物理機(jī)已經(jīng)有遷移任務(wù),則不能選擇此虛擬機(jī)。如果沒有滿足上述條件的待遷移的虛擬機(jī),則發(fā)生了死鎖,即由于物理機(jī)資源限制,虛擬機(jī)不能相互遷移(并行遷移),物理機(jī)需要遷移出部分虛擬機(jī)才能容納待遷入的虛擬機(jī),此時(shí)可以任意選擇一臺(tái)虛擬機(jī)作為臨時(shí)遷移虛擬機(jī),準(zhǔn)備將其遷入臨時(shí)物理機(jī),對(duì)其他虛擬機(jī)先按照迭代步驟,選擇出每次迭代中待遷移的虛擬機(jī),并進(jìn)行并行遷移,等這些其他虛擬機(jī)遷移完畢后,再將臨時(shí)遷移虛擬機(jī)遷移到其目的物理機(jī)。比如物理機(jī)PM1想要虛擬機(jī)VM1到PM2,PM2想要遷移VM2到PM1,但是PM1和PM2均不能同時(shí)容納VM1和VM2,這時(shí)候就需要將VM1或者VM2遷移到臨時(shí)節(jié)點(diǎn)。若將VM1遷移至臨時(shí)物理機(jī)節(jié)點(diǎn),可以通過先將VM2從PM2遷移至PM1,然后將VM1從臨時(shí)物理機(jī)節(jié)點(diǎn)遷移到PM2的方式來完成遷移工作。下面通過一個(gè)例子來說明選擇并行虛擬機(jī)的過程,假設(shè)數(shù)據(jù)中心每臺(tái)物理機(jī)的待遷入虛擬機(jī)和待遷出虛擬機(jī)如下表1所示,并且假設(shè)由于資源限制物理機(jī)PM1至PM5最多同時(shí)容納VM1至VM6中的兩臺(tái)虛擬機(jī),遍歷順序?yàn)閺腜M1到PM5。表1數(shù)據(jù)中心每臺(tái)物理機(jī)的待遷入虛擬機(jī)集合和待遷出虛擬機(jī)集合物理機(jī)待遷出虛擬機(jī)待遷入虛擬機(jī)PM1VM1VM2VM3PM2VM3VM1PM3VM4VM6VM2PM4VM5VM4PM5VM5VM6第一次迭代:依次遍歷物理機(jī)PM1至物理機(jī)PM5,根據(jù)表1中各物理機(jī)中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,獲取此次迭代可以遷移的虛擬機(jī)。物理機(jī)PM1中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,但物理機(jī)PM1可以同時(shí)容納遷出集合的所有虛擬機(jī),但不能再容納遷入集合中的任意一臺(tái)虛擬機(jī)(PM1上以及有兩臺(tái)虛擬機(jī)),對(duì)于虛擬機(jī)VM3,所要遷入的物理機(jī)PM1中沒有足夠的空間容納虛擬機(jī)VM3,則虛擬機(jī)VM3不能被作為待遷移的虛擬機(jī);物理機(jī)PM2待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,且可以同時(shí)容納虛擬機(jī)VM3和VM1,則可以選擇虛擬機(jī)VM1作為待遷移的虛擬機(jī);物理機(jī)PM3中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,但物理機(jī)PM3不能同時(shí)容納遷出集合的所有虛擬機(jī),以及遷入集合中的任意一臺(tái)虛擬機(jī),物理機(jī)PM3中沒有足夠的空間容納虛擬機(jī)VM2,則虛擬機(jī)VM2不能被作為待遷移的虛擬機(jī);物理機(jī)PM4待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,且可以同時(shí)容納虛擬機(jī)VM5和VM4,則可以選擇虛擬機(jī)VM4作為待遷移的虛擬機(jī);對(duì)于虛擬機(jī)VM5和VM6,所要遷入的物理機(jī)PM5中待遷出虛擬機(jī)集合為空集,待遷入虛擬機(jī)集合均不為空集,則可以選擇VM5或VM6作為待遷移的虛擬機(jī),但是虛擬機(jī)VM5所在的物理機(jī)PM4已經(jīng)有其他遷移任務(wù)(遷入虛擬機(jī)VM4),以及虛擬機(jī)VM6所在的物理機(jī)PM3已經(jīng)有遷移任務(wù)(遷出虛擬機(jī)VM4),則不能選擇虛擬機(jī)VM5和VM6。因此,在遍歷完數(shù)據(jù)中心中的所有物理機(jī)后,可以確定本次迭代中作為并行遷移的虛擬機(jī)為VM1和VM4,完成遷移后,更新待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,如表2所示。表2第一次遷移后待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合物理機(jī)待遷出虛擬機(jī)待遷入虛擬機(jī)PM1VM2VM3PM2VM3PM3VM6VM2PM4VM5PM5VM5VM6第二次迭代:依次遍歷物理機(jī)PM1至物理機(jī)PM5,根據(jù)表2所示的各物理機(jī)中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,獲取此次迭代可以遷移的虛擬機(jī)。物理機(jī)PM1中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,且物理機(jī)PM1可以同時(shí)容納遷入集合和遷出集合中的所有虛擬機(jī),則可以選擇虛擬機(jī)VM3作為待遷移的虛擬機(jī);物理機(jī)PM2沒有遷入的虛擬機(jī);物理機(jī)PM3待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,且可以同時(shí)容納虛擬機(jī)VM6和VM2,但由于遍歷物理機(jī)PM1時(shí)已經(jīng)選擇VM3作為待遷移虛擬機(jī),因此虛擬機(jī)VM2在物理機(jī)PM1已經(jīng)存在遷移任務(wù),物理機(jī)PM1在一次迭代過程中最多只能進(jìn)行一項(xiàng)遷移任務(wù),所以此時(shí)放棄選擇VM2為待遷移虛擬機(jī);物理機(jī)PM4沒有遷入的虛擬機(jī);物理機(jī)PM5中待遷出虛擬機(jī)集合為空集,待遷入虛擬機(jī)集合均不為空集,則可以選擇VM5或VM6作為并行遷移的虛擬機(jī)。因此,可以并行遷移的組合有:VM3和VM5,VM3和VM6。在遍歷完數(shù)據(jù)中心中的所有物理機(jī)后,假設(shè)本次迭代中作為并行遷移的虛擬機(jī)為VM3和VM5,完成遷移后,更新待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,如表3所示。表3第二次遷移后待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合物理機(jī)待遷出虛擬機(jī)待遷入虛擬機(jī)PM1VM2PM2PM3VM6VM2PM4PM5VM6第三次迭代:依次遍歷物理機(jī)PM1至物理機(jī)PM5,根據(jù)表3所示的各物理機(jī)中待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,物理機(jī)PM1、PM2不存在待遷入虛擬機(jī);物理機(jī)PM3待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合均不為空集,且可以同時(shí)容納虛擬機(jī)VM6和VM2,則可以選擇虛擬機(jī)VM2作為待遷移的虛擬機(jī);物理機(jī)PM4不存在待遷入虛擬機(jī);物理機(jī)PM5中待遷出虛擬機(jī)集合為空集,待遷入虛擬機(jī)集合均不為空集,但是由于在遍歷PM3時(shí)將VM2作為待遷移虛擬機(jī),物理機(jī)PM3在一次迭代過程中只能有一項(xiàng)遷移任務(wù),因此放棄選擇VM6。因此,本次迭代中選擇VM2作為待遷移的虛擬機(jī),完成遷移后,更新待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合,如表4所示。表4第三次遷移后待遷出虛擬機(jī)集合和待遷入虛擬機(jī)集合物理機(jī)待遷出虛擬機(jī)待遷入虛擬機(jī)PM1PM2PM3VM6PM4PM5VM6第四次迭代:依次遍歷物理機(jī)PM1至物理機(jī)PM5,選擇虛擬機(jī)VM6作為待遷移虛擬機(jī)。當(dāng)前第1頁1 2 3