本發(fā)明涉及云技術(shù)領(lǐng)域,具體涉及一種虛擬機(jī)熱遷移的方法及宿主機(jī)。
背景技術(shù):
云計(jì)算系統(tǒng)通常包括控制設(shè)備和大量的宿主機(jī),控制設(shè)備可以通過虛擬機(jī)軟件在一臺(tái)宿主機(jī)上模擬創(chuàng)建出一臺(tái)或者多臺(tái)虛擬機(jī),而這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作。
一臺(tái)宿主機(jī)通??梢詣?chuàng)建出多個(gè)虛擬機(jī),這些虛擬機(jī)可以在該宿主機(jī)上運(yùn)行,執(zhí)行用戶所請(qǐng)求的相應(yīng)功能,在有些情況下,例如:宿主機(jī)故障或者存在安全隱患時(shí),為了保證不影響用戶對(duì)虛擬機(jī)的使用,需要將該宿主機(jī)上的虛擬機(jī)遷移到其他正常的宿主機(jī)上。
虛擬機(jī)熱遷移的過程中需要遷移與該虛擬機(jī)對(duì)應(yīng)的磁盤存儲(chǔ)空間的每個(gè)存儲(chǔ)塊中的數(shù)據(jù),導(dǎo)致虛擬機(jī)熱遷移效率低下。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有技術(shù)中虛擬機(jī)熱遷移效率低下的問題,本發(fā)明實(shí)施例提供一種虛擬機(jī)熱遷移的方法,針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。本發(fā)明實(shí)施例還提供了相應(yīng)的宿主機(jī)。
本發(fā)明第一方面提供一種虛擬機(jī)熱遷移的方法,包括:
源宿主機(jī)確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊;
所述源宿主機(jī)識(shí)別當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊;
當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),所述源宿主機(jī)向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù);
當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),所述源宿主機(jī)跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。
本發(fā)明第二方面提供一種宿主機(jī),包括:
第一確定單元,用于確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊;
識(shí)別單元,用于識(shí)別所述第一確定單元確定的當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊;
發(fā)送單元,用于當(dāng)所述識(shí)別單元識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù);
跳過單元,用于當(dāng)所述識(shí)別單元識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。
與現(xiàn)有技術(shù)中虛擬機(jī)熱遷移效率低下相比,本發(fā)明實(shí)施例提供的虛擬機(jī)熱遷移的方法,針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例中宿主機(jī)的一結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例中存儲(chǔ)塊的一示意圖;
圖3是本發(fā)明實(shí)施例中云計(jì)算系統(tǒng)的一實(shí)施例示意圖;
圖4是本發(fā)明實(shí)施例中虛擬機(jī)熱遷移的一實(shí)施例示意圖;
圖5是本發(fā)明實(shí)施例中虛擬機(jī)熱遷的方法的一實(shí)施例示意圖;
圖6是本發(fā)明實(shí)施例中存儲(chǔ)塊的另一示意圖;
圖7是本發(fā)明實(shí)施例中數(shù)據(jù)熱遷移的一實(shí)施例示意圖;
圖8是本發(fā)明實(shí)施例中虛擬機(jī)生命周期的一示意圖;
圖9是本發(fā)明實(shí)施例中宿主機(jī)的一實(shí)施例示意圖;
圖10是本發(fā)明實(shí)施例中宿主機(jī)的另一實(shí)施例示意圖;
圖11是本發(fā)明實(shí)施例中宿主機(jī)的另一實(shí)施例示意圖;
圖12是本發(fā)明實(shí)施例中宿主機(jī)的另一實(shí)施例示意圖;
圖13是本發(fā)明實(shí)施例中宿主機(jī)的另一實(shí)施例示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供一種虛擬機(jī)熱遷移的方法,針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。本發(fā)明實(shí)施例還提供了相應(yīng)的宿主機(jī)。以下分別進(jìn)行詳細(xì)說明。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例中宿主機(jī)的一結(jié)構(gòu)示意圖。
如圖1所示的宿主機(jī)包括虛擬機(jī)(Virtual Machine,VM)和硬件層,硬件層可以為每個(gè)虛擬機(jī)提供硬件資源。
虛擬機(jī):
通過虛擬機(jī)軟件可以在一臺(tái)宿主機(jī)上模擬出一臺(tái)或者多臺(tái)虛擬的計(jì)算機(jī),而這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作,虛擬機(jī)上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機(jī)還可訪問網(wǎng)絡(luò)資源。對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,虛擬機(jī)就像是在真正的計(jì)算機(jī)中進(jìn)行工作。
硬件層:
虛擬化環(huán)境運(yùn)行的硬件平臺(tái)。其中,硬件層可包括多種硬件,例如某計(jì)算節(jié)點(diǎn)的硬件層可包括處理器(如中央處理器(Central Processing Unit,CPU))和內(nèi)存,還可以包括網(wǎng)卡、存儲(chǔ)器等高速或低速輸入/輸出(I/O,Input/Output)設(shè)備,及具有特定處理功能的其它設(shè)備,如輸入輸出內(nèi)存管理單元(IOMMU,Input/Output Memory Management Unit),其中IOMMU可用于虛擬機(jī)物理地址和Host物理地址的轉(zhuǎn)換。
虛擬機(jī)熱遷移:指將源宿主機(jī)上的虛擬機(jī)從源宿主機(jī)遷移到目標(biāo)宿主機(jī),在此期間不停止虛擬機(jī)的運(yùn)行。
磁盤存儲(chǔ)空間通常是由存儲(chǔ)塊組成的,針對(duì)待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間可以參閱圖2進(jìn)行理解,該磁盤存儲(chǔ)空間包括多個(gè)存儲(chǔ)塊,而且圖2中所畫出的也只是示意,不應(yīng)理解為是對(duì)存儲(chǔ)塊數(shù)量的限定。
虛擬機(jī)熱遷移的過程通常需要將目標(biāo)虛擬機(jī)對(duì)應(yīng)磁盤存儲(chǔ)空間的每個(gè)存儲(chǔ)塊中的數(shù)據(jù)都做遷移,但對(duì)于一個(gè)用戶來說,當(dāng)該用戶所使用的是新建的虛擬機(jī),該新建的虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的數(shù)據(jù)量很低,所以該磁盤存儲(chǔ)空間的很多存儲(chǔ)塊中都是零數(shù)據(jù),如果將這些零數(shù)據(jù)的存儲(chǔ)塊也做復(fù)制處理,無疑浪費(fèi)了熱遷移時(shí)間,因此,本發(fā)明實(shí)施例提供一種虛擬機(jī)熱遷移的方法,可以針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。
宿主機(jī)通常都位于云計(jì)算系統(tǒng)中,云計(jì)算系統(tǒng)中通常包括控制設(shè)備和多臺(tái)宿主機(jī),因此,在一臺(tái)宿主機(jī)出現(xiàn)故障隱患或者該臺(tái)宿主機(jī)的負(fù)載過重時(shí),控制設(shè)備都會(huì)協(xié)調(diào)宿主機(jī)上的虛擬機(jī)做熱遷移。
如圖3所示,本發(fā)明實(shí)施例提供的云計(jì)算系統(tǒng)的一實(shí)施例包括:
云計(jì)算系統(tǒng)包括控制設(shè)備10、網(wǎng)絡(luò)20和多臺(tái)宿主機(jī)30,多臺(tái)宿主機(jī)30中包括宿主機(jī)30A和宿主機(jī)30B,控制設(shè)備10和多臺(tái)宿主機(jī)30通過網(wǎng)絡(luò)20通信連接,每臺(tái)宿主機(jī)上都分別包含多臺(tái)虛擬機(jī)。
控制設(shè)備10會(huì)實(shí)時(shí)或者周期性向每臺(tái)宿主機(jī)請(qǐng)求每臺(tái)宿主機(jī)當(dāng)前的負(fù)載信息,例如:請(qǐng)求當(dāng)前cpu的使用量,也可以是每臺(tái)宿主機(jī)實(shí)時(shí)或者周期性向控制設(shè)備10上報(bào)各自的負(fù)載信息。
控制設(shè)備10根據(jù)所述每臺(tái)宿主機(jī)的負(fù)載信息,確定負(fù)載量超過預(yù)置閾值的源宿主機(jī)。例如:若預(yù)設(shè)閾值為cpu的使用量為70%,則控制設(shè)備10可根據(jù)每臺(tái)宿主機(jī)的負(fù)載信息可確定cpu的使用量超過70%的宿主機(jī),例如:確定圖3中的宿主機(jī)30A的cpu的使用量超過70%,則確定該宿主機(jī)30A為負(fù)載量超過預(yù)置閾值的源宿主機(jī)。
確定出源宿主機(jī)后,控制設(shè)備10會(huì)從宿主機(jī)30A當(dāng)前處于運(yùn)行狀態(tài)的虛擬機(jī)中確定出目標(biāo)虛擬機(jī),目標(biāo)虛擬機(jī)為熱遷移后所述源宿主機(jī)的負(fù)載量能降低到所述預(yù)置閾值之下的虛擬機(jī)。
確定目標(biāo)虛擬機(jī)后,控制設(shè)備10會(huì)根據(jù)所述每臺(tái)宿主機(jī)的負(fù)載信息和所述目標(biāo)虛擬機(jī)的負(fù)載占用量,確定所述目標(biāo)宿主機(jī),所述目標(biāo)宿主機(jī)為承載所述目標(biāo)虛擬機(jī)后負(fù)載量不會(huì)超過所述預(yù)置閾值的宿主機(jī)。如圖3所示,確定的目標(biāo)宿主機(jī)為宿主機(jī)30B。
當(dāng)然,如果宿主機(jī)自身集成有控制設(shè)備的負(fù)載監(jiān)控功能和其他宿主機(jī)的負(fù)載信息,也可以由該宿主機(jī)自己來確定目標(biāo)宿主機(jī)。
控制設(shè)備10控制目標(biāo)虛擬機(jī)從源主機(jī)熱遷移到目標(biāo)宿主機(jī)。也就是從宿主機(jī)30A熱遷移到宿主機(jī)30B。
宿主機(jī)熱遷移的過程可以參閱圖4進(jìn)行理解。如圖4所示,目標(biāo)虛擬機(jī)從宿主機(jī)30A熱遷移到宿主機(jī)30B。目標(biāo)虛擬機(jī)在熱遷移過程中不影響用戶的使用,用戶不感知。
虛擬機(jī)熱遷移的過程實(shí)際上是與該虛擬機(jī)有關(guān)的數(shù)據(jù)的熱遷移的過程,下面結(jié)合圖5說明本發(fā)明實(shí)施例中虛擬機(jī)熱遷移的過程。
如圖5所示,本發(fā)明實(shí)施例提供的虛擬機(jī)熱遷移的方法的一實(shí)施例包括:
501、源宿主機(jī)確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊。
待遷移的目標(biāo)虛擬機(jī)可以是控制設(shè)備確定后通知給源宿主機(jī)的,也可以是該源宿主機(jī)自己確定的,例如:當(dāng)源宿主機(jī)出現(xiàn)安全隱患或者故障時(shí),可以將源宿主機(jī)上的所有虛擬機(jī)都確定為是目標(biāo)虛擬機(jī)。
每個(gè)虛擬機(jī)都有自己對(duì)應(yīng)的磁盤存儲(chǔ)空間,例如:磁盤存儲(chǔ)空間的第1陣列到第5陣列,虛擬機(jī)的磁盤存儲(chǔ)空間是不復(fù)用的,也就是說每個(gè)虛擬機(jī)的磁盤存儲(chǔ)空間都是獨(dú)立的。
磁盤存儲(chǔ)空間中會(huì)包括多個(gè)存儲(chǔ)塊。這些存儲(chǔ)塊有的用來存儲(chǔ)元數(shù)據(jù),有的用來存儲(chǔ)內(nèi)容數(shù)據(jù)。
元數(shù)據(jù):主要用于記錄用戶文件在磁盤上的存儲(chǔ)位置,元數(shù)據(jù)丟失或損壞會(huì)導(dǎo)致用戶數(shù)據(jù)丟失。
如圖6所示,存儲(chǔ)塊中標(biāo)識(shí)為M的存儲(chǔ)塊中存儲(chǔ)數(shù)據(jù)為用戶文件的元數(shù)據(jù)。標(biāo)識(shí)為N的存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù)為用戶正在使用的數(shù)據(jù),標(biāo)識(shí)為P的存儲(chǔ)塊中存儲(chǔ)的數(shù)據(jù)為用戶使用后已經(jīng)刪除的數(shù)據(jù),沒有標(biāo)識(shí)的存儲(chǔ)塊中沒有數(shù)據(jù)。
502、源宿主機(jī)識(shí)別當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊。當(dāng)是時(shí),執(zhí)行步驟503,當(dāng)否時(shí),執(zhí)行步驟504。
當(dāng)前待搬遷的存儲(chǔ)塊指的是源宿主機(jī)識(shí)別到的存儲(chǔ)塊,源宿主機(jī)確定目標(biāo)虛擬機(jī)的存儲(chǔ)塊后,源宿主機(jī)會(huì)逐個(gè)存儲(chǔ)塊去識(shí)別,當(dāng)然也可以是多個(gè)存儲(chǔ)塊并行識(shí)別,源宿主機(jī)識(shí)別到存儲(chǔ)塊中是否存儲(chǔ)有數(shù)據(jù)。
503、當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),所述源宿主機(jī)向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù)。
當(dāng)存儲(chǔ)塊中有數(shù)據(jù),則需要將該存儲(chǔ)塊中的數(shù)據(jù)搬遷到目標(biāo)宿主機(jī),搬遷數(shù)據(jù)就是將該存儲(chǔ)塊中的數(shù)據(jù)發(fā)送給目標(biāo)宿主機(jī),將該存儲(chǔ)塊中的數(shù)據(jù)轉(zhuǎn)移到目標(biāo)宿主機(jī)中進(jìn)行存儲(chǔ)。
即使該存儲(chǔ)塊中的數(shù)據(jù)是已經(jīng)被用戶刪除的數(shù)據(jù),依然需要將該存儲(chǔ)塊中的數(shù)據(jù)轉(zhuǎn)移到目標(biāo)宿主機(jī)中,以便于用戶在需要時(shí)恢復(fù)該已刪除的數(shù)據(jù)或文件。
已刪除的數(shù)據(jù)只是用戶不可見了,實(shí)際上,在存儲(chǔ)塊中還是有存儲(chǔ)的,并沒有擦除。
數(shù)據(jù)遷移過程可以參閱圖7進(jìn)行理解,將存儲(chǔ)塊中的數(shù)據(jù)進(jìn)行相應(yīng)的熱遷移,將數(shù)據(jù)轉(zhuǎn)移到目標(biāo)宿主機(jī)的存儲(chǔ)塊上存儲(chǔ)。
504、當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),所述源宿主機(jī)跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。
當(dāng)識(shí)別出存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),那么就不需要再進(jìn)行復(fù)制搬遷了,直接跳過該存儲(chǔ)塊,繼續(xù)識(shí)別下一個(gè)存儲(chǔ)塊即可。
與現(xiàn)有技術(shù)中虛擬機(jī)熱遷移效率低下相比,本發(fā)明實(shí)施例提供的虛擬機(jī)熱遷移的方法,針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。
可選地,所述源宿主機(jī)確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊之前,所述方法還可以包括:
當(dāng)所述源宿主機(jī)出現(xiàn)故障隱患時(shí),所述源宿主機(jī)將在所述源宿主機(jī)上已創(chuàng)建的每個(gè)虛擬機(jī)確定為目標(biāo)虛擬機(jī)。
本發(fā)明實(shí)施例中,當(dāng)源宿主機(jī)出現(xiàn)故障隱患,則需要將該源宿主機(jī)上的所有虛擬機(jī)都做遷移,以保證用戶對(duì)虛擬機(jī)的使用不受影響,這時(shí)就需要將該源宿主機(jī)上的所有虛擬機(jī)都確定為目標(biāo)虛擬機(jī),源宿主機(jī)針對(duì)多臺(tái)目標(biāo)虛擬機(jī)的熱遷移處理方案與針對(duì)一臺(tái)目標(biāo)虛擬機(jī)的熱遷移處理方案是相同的。
可選地,所述源宿主機(jī)確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊之前,所述方法還可以包括:
當(dāng)所述源宿主機(jī)負(fù)載超過預(yù)置閾值時(shí),所述源宿主機(jī)根據(jù)所述源宿主機(jī)中每個(gè)虛擬機(jī)的負(fù)載占用量,確定所述目標(biāo)虛擬機(jī),所述目標(biāo)虛擬機(jī)為熱遷移后所述源宿主機(jī)的負(fù)載量能降低到所述預(yù)置閾值之下虛擬機(jī)。
本發(fā)明實(shí)施例中,當(dāng)源宿主機(jī)負(fù)載超過預(yù)置閾值,可能會(huì)影響每臺(tái)虛擬機(jī)的響應(yīng)速度,因此,源宿主機(jī)需要將一臺(tái)或者多臺(tái)負(fù)載量較大的虛擬機(jī)遷走,以緩解自身壓力,關(guān)于這種遷移方案可以參閱圖3部分的描述進(jìn)行理解,本處不再重復(fù)贅述。
可選地,所述源宿主機(jī)識(shí)別當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),可以包括:
所述源宿主機(jī)識(shí)別出所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)刪除記錄時(shí),則確定所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)。
本發(fā)明實(shí)施例中,當(dāng)存儲(chǔ)塊中的數(shù)據(jù)是用戶在用戶側(cè)已刪除的數(shù)據(jù),因?yàn)?,即使用戶刪除了數(shù)據(jù),虛擬機(jī)的存儲(chǔ)塊中還是會(huì)保留該數(shù)據(jù),以便于用戶需要使用是恢復(fù)。
可選地,在將所述目標(biāo)虛擬機(jī)所對(duì)應(yīng)的存儲(chǔ)塊中的數(shù)據(jù)全部遷移到所述目標(biāo)虛擬機(jī)之后,所述方法還可以包括:
擦除所述磁盤存儲(chǔ)空間中的存儲(chǔ)塊,以銷毀所述存儲(chǔ)塊中所述目標(biāo)虛擬機(jī)所產(chǎn)生的數(shù)據(jù)。
本發(fā)明實(shí)施例中,虛擬機(jī)是具有生命周期的,如圖8所示,虛擬機(jī)的生命周期包括創(chuàng)建、運(yùn)行、遷移和銷毀,虛擬機(jī)創(chuàng)建后,投入運(yùn)行,運(yùn)行過程中該虛擬機(jī)的存儲(chǔ)空間中會(huì)保持使用該虛擬機(jī)的用戶的數(shù)據(jù),若一旦該虛擬機(jī)遷移到其他宿主機(jī)上,或者在該宿主機(jī)上銷毀該虛擬機(jī),就需要將該虛擬機(jī)對(duì)應(yīng)存儲(chǔ)空間中的數(shù)據(jù)全部擦除,這樣可以保證使用該虛擬機(jī)的用戶的數(shù)據(jù)安全,以防止該虛擬機(jī)對(duì)應(yīng)的存儲(chǔ)空間被另外一個(gè)用戶使用后,使用數(shù)據(jù)恢復(fù)功能恢復(fù)出原用戶的數(shù)據(jù)。
以上是對(duì)虛擬機(jī)熱遷移的描述,下面介紹本發(fā)明實(shí)施例中的宿主機(jī)。
參閱圖9,本發(fā)明實(shí)施例提供的宿主機(jī)60的一實(shí)施例包括:
第一確定單元601,用于確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊;
識(shí)別單元602,用于識(shí)別所述第一確定單元601確定的當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊;
發(fā)送單元603,用于當(dāng)所述識(shí)別單元602識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù);
跳過單元604,用于當(dāng)所述識(shí)別單元602識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。
本發(fā)明實(shí)施例中,第一確定單元601確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊;識(shí)別單元602識(shí)別所述第一確定單元601確定的當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊;發(fā)送單元603當(dāng)所述識(shí)別單元602識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù);跳過單元604當(dāng)所述識(shí)別單元602識(shí)別出當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。與現(xiàn)有技術(shù)中虛擬機(jī)熱遷移效率低下相比,本發(fā)明實(shí)施例提供的宿主機(jī),針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。
可選地,參閱圖10,本發(fā)明實(shí)施例提供的宿主機(jī)的另一實(shí)施例中,所述宿主機(jī)還包括第二確定單元605,
所述第二確定單元605,用于在所述第一確定單元501確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊之前,當(dāng)所述源宿主機(jī)出現(xiàn)故障隱患時(shí),將在所述源宿主機(jī)上已創(chuàng)建的每個(gè)虛擬機(jī)確定為目標(biāo)虛擬機(jī)。
本發(fā)明實(shí)施例中,當(dāng)源宿主機(jī)出現(xiàn)故障隱患,則需要將該源宿主機(jī)上的所有虛擬機(jī)都做遷移,以保證用戶對(duì)虛擬機(jī)的使用不受影響,這時(shí)就需要將該源宿主機(jī)上的所有虛擬機(jī)都確定為目標(biāo)虛擬機(jī),源宿主機(jī)針對(duì)多臺(tái)目標(biāo)虛擬機(jī)的熱遷移處理方案與針對(duì)一臺(tái)目標(biāo)虛擬機(jī)的熱遷移處理方案是相同的。
可選地,參閱圖11,本發(fā)明實(shí)施例提供的宿主機(jī)的另一實(shí)施例中,所述宿主機(jī)還包括第三確定單元606,
所述第三確定單元606,用于在所述第一確定單元601確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊之前,當(dāng)所述源宿主機(jī)負(fù)載超過預(yù)置閾值時(shí),根據(jù)所述源宿主機(jī)中每個(gè)虛擬機(jī)的負(fù)載占用量,確定所述目標(biāo)虛擬機(jī),所述目標(biāo)虛擬機(jī)為熱遷移后所述源宿主機(jī)的負(fù)載量能降低到所述預(yù)置閾值之下虛擬機(jī)。
本發(fā)明實(shí)施例中,當(dāng)源宿主機(jī)負(fù)載超過預(yù)置閾值,可能會(huì)影響每臺(tái)虛擬機(jī)的響應(yīng)速度,因此,源宿主機(jī)需要將一臺(tái)或者多臺(tái)負(fù)載量較大的虛擬機(jī)遷走,以緩解自身壓力,關(guān)于這種遷移方案可以參閱圖3部分的描述進(jìn)行理解,本處不再重復(fù)贅述。
可選地,所述識(shí)別單元602,用于識(shí)別出所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)刪除記錄時(shí),則確定所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)。
本發(fā)明實(shí)施例中,當(dāng)存儲(chǔ)塊中的數(shù)據(jù)是用戶在用戶側(cè)已刪除的數(shù)據(jù),因?yàn)椋词褂脩魟h除了數(shù)據(jù),虛擬機(jī)的存儲(chǔ)塊中還是會(huì)保留該數(shù)據(jù),以便于用戶需要使用是恢復(fù)。
可選地,參閱圖12,本發(fā)明實(shí)施例提供的宿主機(jī)60的另一實(shí)施例中,所述宿主機(jī)還包括:
擦除單元607,用于在所述發(fā)送單元603將所述目標(biāo)虛擬機(jī)所對(duì)應(yīng)的存儲(chǔ)塊中的數(shù)據(jù)全部遷移到所述目標(biāo)虛擬機(jī)之后,擦除所述磁盤存儲(chǔ)空間中的存儲(chǔ)塊,以銷毀所述存儲(chǔ)塊中所述目標(biāo)虛擬機(jī)所產(chǎn)生的數(shù)據(jù)。
本發(fā)明實(shí)施例中,虛擬機(jī)是具有生命周期的,如圖8所示,虛擬機(jī)的生命周期包括創(chuàng)建、運(yùn)行、遷移和銷毀,虛擬機(jī)創(chuàng)建后,投入運(yùn)行,運(yùn)行過程中該虛擬機(jī)的存儲(chǔ)空間中會(huì)保持使用該虛擬機(jī)的用戶的數(shù)據(jù),若一旦該虛擬機(jī)遷移到其他宿主機(jī)上,或者在該宿主機(jī)上銷毀該虛擬機(jī),就需要將該虛擬機(jī)對(duì)應(yīng)存儲(chǔ)空間中的數(shù)據(jù)全部擦除,這樣可以保證使用該虛擬機(jī)的用戶的數(shù)據(jù)安全,以防止該虛擬機(jī)對(duì)應(yīng)的存儲(chǔ)空間被另外一個(gè)用戶使用后,使用數(shù)據(jù)恢復(fù)功能恢復(fù)出原用戶的數(shù)據(jù)。
圖13是本發(fā)明實(shí)施例提供的宿主機(jī)60的結(jié)構(gòu)示意圖。所述宿主機(jī)60應(yīng)用于云計(jì)算系統(tǒng),所述云計(jì)算系統(tǒng)包括多臺(tái)宿主機(jī),每臺(tái)宿主機(jī)上都分別包含多臺(tái)虛擬機(jī),所述宿主機(jī)60包括處理器610、存儲(chǔ)器650和輸入/輸出設(shè)備630,存儲(chǔ)器650可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器610提供操作指令和數(shù)據(jù)。存儲(chǔ)器650的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)。
在一些實(shí)施方式中,存儲(chǔ)器650存儲(chǔ)了如下的元素,可執(zhí)行模塊或者數(shù)據(jù)結(jié)構(gòu),或者他們的子集,或者他們的擴(kuò)展集:
在本發(fā)明實(shí)施例中,通過調(diào)用存儲(chǔ)器650存儲(chǔ)的操作指令(該操作指令可存儲(chǔ)在操作系統(tǒng)中),
確定待遷移的目標(biāo)虛擬機(jī)所對(duì)應(yīng)的磁盤存儲(chǔ)空間中的存儲(chǔ)塊;
識(shí)別當(dāng)前待搬遷的存儲(chǔ)塊中是否有數(shù)據(jù),所述當(dāng)前待搬遷的存儲(chǔ)塊為所述磁盤存儲(chǔ)空間中的一塊存儲(chǔ)塊;
當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)時(shí),向目標(biāo)宿主機(jī)發(fā)送所述當(dāng)前待搬遷的存儲(chǔ)塊中的數(shù)據(jù);
當(dāng)所述當(dāng)前待搬遷的存儲(chǔ)塊中沒有數(shù)據(jù)時(shí),跳過所述當(dāng)前待搬遷的存儲(chǔ)塊。
與現(xiàn)有技術(shù)中虛擬機(jī)熱遷移效率低下相比,本發(fā)明實(shí)施例提供的宿主機(jī),針對(duì)有數(shù)據(jù)的存儲(chǔ)塊進(jìn)行熱遷移,針對(duì)沒有數(shù)據(jù)的存儲(chǔ)塊直接跳過,從而提高了虛擬機(jī)熱遷移的效率。
處理器610控制宿主機(jī)60的操作,處理器610還可以稱為CPU(Central Processing Unit,中央處理單元)。存儲(chǔ)器650可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器610提供指令和數(shù)據(jù)。存儲(chǔ)器650的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)。具體的應(yīng)用中宿主機(jī)60的各個(gè)組件通過總線系統(tǒng)620耦合在一起,其中總線系統(tǒng)620除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號(hào)總線等。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)620。
上述本發(fā)明實(shí)施例揭示的方法可以應(yīng)用于處理器610中,或者由處理器610實(shí)現(xiàn)。處理器610可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器610中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器610可以是通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器650,處理器610讀取存儲(chǔ)器650中的信息,結(jié)合其硬件完成上述方法的步驟。
可選地,處理器610還用于:當(dāng)所述源宿主機(jī)出現(xiàn)故障隱患時(shí),將在所述源宿主機(jī)上已創(chuàng)建的每個(gè)虛擬機(jī)確定為目標(biāo)虛擬機(jī)。
可選地,處理器610還用于:當(dāng)所述源宿主機(jī)負(fù)載超過預(yù)置閾值時(shí),根據(jù)所述源宿主機(jī)中每個(gè)虛擬機(jī)的負(fù)載占用量,確定所述目標(biāo)虛擬機(jī),所述目標(biāo)虛擬機(jī)為熱遷移后所述源宿主機(jī)的負(fù)載量能降低到所述預(yù)置閾值之下虛擬機(jī)。
可選地,處理器610用于:識(shí)別出所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)刪除記錄時(shí),則確定所述前待搬遷的存儲(chǔ)塊中有數(shù)據(jù)。
可選地,處理器610還用于:在將所述目標(biāo)虛擬機(jī)所對(duì)應(yīng)的存儲(chǔ)塊中的數(shù)據(jù)全部遷移到所述目標(biāo)虛擬機(jī)之后,擦除所述磁盤存儲(chǔ)空間中的存儲(chǔ)塊,以銷毀所述存儲(chǔ)塊中所述目標(biāo)虛擬機(jī)所產(chǎn)生的數(shù)據(jù)。
以上圖13所描述的宿主機(jī)可以參閱圖1至圖8部分的相應(yīng)描述進(jìn)行理解,本處不再重復(fù)贅述。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:ROM、RAM、磁盤存儲(chǔ)空間或光盤等。
以上對(duì)本發(fā)明實(shí)施例所提供的虛擬機(jī)熱遷移的方法以及宿主機(jī)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。