一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法及相關(guān)裝置和集群系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種虛擬機(jī)內(nèi)存的遷移方法及相關(guān)裝置和集群系統(tǒng)。涉及通信領(lǐng)域,降低了虛擬機(jī)內(nèi)存遷移時的處理器利用率及時間開銷。本發(fā)明實(shí)施例提供的方法包括:獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN;根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到第一虛擬機(jī)的對應(yīng)關(guān)系,根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,得到請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
【專利說明】一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法及相關(guān)裝置和集群系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種虛擬機(jī)數(shù)據(jù)內(nèi)存的遷移方法及相關(guān)裝置和集群系統(tǒng)。
【背景技術(shù)】
[0002]虛擬機(jī)遷移是將虛擬機(jī)的內(nèi)存從源物理主機(jī)發(fā)送至目的物理主機(jī)。虛擬機(jī)遷移是虛擬機(jī)實(shí)時遷移的主要部分,虛擬機(jī)實(shí)時遷移可以在保持虛擬機(jī)運(yùn)行的同時,將虛擬機(jī)從源物理主機(jī)遷移至目的物理主機(jī),并在目的物理主機(jī)上恢復(fù)運(yùn)行,實(shí)現(xiàn)服務(wù)整合。通過虛擬機(jī)實(shí)時遷移可以實(shí)現(xiàn)服務(wù)器的在線維護(hù)、在線升級、負(fù)載均衡,并為災(zāi)難恢復(fù)提供了一種解決方案。
[0003]在現(xiàn)有技術(shù)中,xen虛擬化平臺下,虛擬機(jī)遷移采用迭代發(fā)送虛擬機(jī)內(nèi)存的方法,每次迭代時分批次地選取當(dāng)次迭代的臟頁并將這些頁面映射至特權(quán)虛擬機(jī)的用戶態(tài)進(jìn)程的線性地址空間,映射完成后,再調(diào)用超級調(diào)用進(jìn)行頁表的更新從而建立線性地址空間與物理地址的聯(lián)系,取得映射的線性地址后,通過用戶態(tài)的遠(yuǎn)程直接內(nèi)存讀取(RemoteDirect Memory Access,簡稱RDMA)接口注冊已映射的虛擬機(jī)內(nèi)存對應(yīng)的物理地址至RDMA網(wǎng)卡,并通過其他RDMA系統(tǒng)調(diào)用按照RDMA通信協(xié)議進(jìn)行后續(xù)的數(shù)據(jù)傳輸。在數(shù)據(jù)成功發(fā)送后,將虛擬機(jī)的內(nèi)存從用戶態(tài)進(jìn)程空間中解映射,同時注銷已注冊的物理內(nèi)存。
[0004]發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:在虛擬化平臺下,虛擬機(jī)遷移需要映射虛擬機(jī)的內(nèi)存并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的中央處理器(Central Processing Unit,簡稱CPU)利用率及時間開銷較大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法及相關(guān)裝置和集群系統(tǒng),以降低虛擬機(jī)所在的物理主機(jī)中的處理器利用率及時間開銷。
[0006]本發(fā)明實(shí)施例采用的技術(shù)方案是,
[0007]第一方面,提供了一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法,包括:
[0008]獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的物理頁框號(Physical Frame Number,簡稱PFN);
[0009]根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0010]根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;[0011]通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0012]在第一種可能的實(shí)現(xiàn)方式中,根據(jù)第一方面,在所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,所述方法還包括:
[0013]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0014]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0015]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0016]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0017]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0018]在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第一種可能的實(shí)現(xiàn)方式,
[0019]在所述根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,所述方法還包括:
[0020]將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0021]在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面或者第一種可能的實(shí)現(xiàn)方式,根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,所述方法還包括:
[0022]將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0023]在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第一方面,第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn)方式中的任一種,所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求包括:
[0024]依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級高低進(jìn)行排序。
[0025]第二方面,提供了一種宿主機(jī),包括:
[0026]獲取單元,用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0027]第一查詢單元,用于根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0028]第二查詢單元,用于根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一查詢單元得到的所述第一虛擬機(jī)的對應(yīng)關(guān)系,獲取所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0029]驅(qū)動發(fā)送單元,用于通過RDMA網(wǎng)卡將所述第二查詢單元得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。[0030]在第一種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面,
[0031 ] 所述Host還包括
[0032]建立單元,用于在所述獲取單元獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之
N /.刖,
[0033]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0034]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0035]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0036]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0037]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0038]在第二種可能的實(shí)現(xiàn)方式中,結(jié)合第一種可能的實(shí)現(xiàn)方式,
[0039]所述Host還包括:第一注冊單元,用于在所述建立單元根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,所述獲取單元獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0040]將所述建立單元獲取的第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0041]在第三種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面或者第一種可能的實(shí)現(xiàn)方式,
[0042]所述Host還包括:第二注冊單元,用于在所述第二查詢單元根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,所述驅(qū)動發(fā)送單元通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,
[0043]將所述第二查詢單元得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0044]在第四種可能的實(shí)現(xiàn)方式中,結(jié)合第二方面,第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn)方式中的任一種,所述獲取單元具體用于,依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級高低進(jìn)行排序。
[0045]第三方面,提供一種物理主機(jī),包括:硬件層、運(yùn)行在所述硬件層之上的Host、以及運(yùn)行在所述Host之上至少一個虛擬機(jī)VM,以及所述硬件層包括遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡;所述至少一個虛擬機(jī)包括第一虛擬機(jī),其中,
[0046]所述Host用于:
[0047]獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的物理頁框號PFN ;
[0048]根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0049]根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0050]通過遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0051]在第一種可能的實(shí)現(xiàn)方式中,結(jié)合第三方面,
[0052]所述Host還用于:
[0053]在獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0054]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0055]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0056]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0057]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0058]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0059]在第二可能的實(shí)現(xiàn)方式中,結(jié)合第一種可能的實(shí)現(xiàn)方式,
[0060]所述Host還用于:
[0061]在根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,以及獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0062]將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0063]在第三可能的實(shí)現(xiàn)方式中,結(jié)合第三方面或者第一種可能的實(shí)現(xiàn)方式,
[0064]所述Host還用于:在根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,
[0065]將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0066]第四方面,提供一種集群系統(tǒng),包括:多臺上述任一項(xiàng)所述的物理主機(jī),所述多臺物理主機(jī)包括源物理主機(jī)和目的物理主機(jī),其中每臺物理主機(jī)包括硬件層、運(yùn)行在所述硬件層之上的Host、以及運(yùn)行在所述Host之上的至少一個虛擬機(jī)VM,以及所述硬件層包括RDMA網(wǎng)卡。
[0067]由上可見,本發(fā)明實(shí)施例的物理主機(jī)可包括:硬件層、運(yùn)行在該硬件層之上的Host、以及運(yùn)行在該Host之上的至少一個虛擬機(jī)VM,該硬件層包括RDMA網(wǎng)卡,所述至少一個虛擬機(jī)包括第一虛擬機(jī);其中,該Host用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN;該Host根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,該Host可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;并通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
【專利附圖】
【附圖說明】
[0068]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0069]圖1為本發(fā)明實(shí)施例提供的一種虛擬機(jī)內(nèi)存數(shù)據(jù)遷移方法的流程示意圖;
[0070]圖2為本發(fā)明實(shí)施例提供的一種應(yīng)用場景的示意圖;
[0071]圖3為本發(fā)明實(shí)施例提供的另一種虛擬機(jī)內(nèi)存數(shù)據(jù)遷移方法的流程示意圖;
[0072]圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)發(fā)送請求隊(duì)列的示意圖;
[0073]圖5為本發(fā)明實(shí)施例提供的再一種虛擬機(jī)內(nèi)存數(shù)據(jù)遷移的方法的流程示意圖;
[0074]圖6為本發(fā)明實(shí)施例提供的一種宿主機(jī)的結(jié)構(gòu)示意圖;
[0075]圖7為本發(fā)明實(shí)施例提供的另一種宿主機(jī)的結(jié)構(gòu)示意圖;
[0076]圖8為本發(fā)明實(shí)施例提供的另一種宿主機(jī)的結(jié)構(gòu)示意圖;
[0077]圖9為本發(fā)明實(shí)施例提供的一種物理主機(jī)的裝置結(jié)構(gòu)示意圖;
[0078]圖10為本發(fā)明實(shí)施例提供的另一種物理主機(jī)的裝置結(jié)構(gòu)示意圖;
[0079]圖11為本發(fā)明實(shí)施例提供的一種集群系統(tǒng)示意圖。
【具體實(shí)施方式】
[0080]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0081 ] 為了方便理解本發(fā)明實(shí)施例,首先在此介紹本發(fā)明實(shí)施例描述中會引入的幾個術(shù)語;
[0082]虛擬機(jī)VM:通過虛擬機(jī)軟件可以在一臺物理主機(jī)上模擬出一臺或者多臺虛擬的計(jì)算機(jī),而這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作,虛擬機(jī)上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機(jī)還可訪問網(wǎng)絡(luò)資源。對于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,虛擬機(jī)就像是在真正的計(jì)算機(jī)中進(jìn)行工作。
[0083]硬件層:虛擬化環(huán)境運(yùn)行的硬件平臺。其中,硬件層可包括多種硬件,例如某物理主機(jī)的硬件層可包括處理器(例如CPU)和內(nèi)存,還可以包括網(wǎng)卡(例如RDMA網(wǎng)卡)、存儲器等等高速/低速輸入/輸出(I/o, Input/Output)設(shè)備,及具有特定處理功能的其它設(shè)備。
[0084]宿主機(jī)(Host):作為管理層,用以完成硬件資源的管理、分配;為虛擬機(jī)呈現(xiàn)虛擬硬件平臺;實(shí)現(xiàn)虛擬機(jī)的調(diào)度和隔離。其中,Host可能是虛擬機(jī)監(jiān)控器(VMM);此外,有時VMM和I個特權(quán)虛擬機(jī)配合,兩者結(jié)合組成Host。其中,虛擬硬件平臺對其上運(yùn)行的各個虛擬機(jī)提供各種硬件資源,如提供虛擬處理器(如VCPU)、虛擬內(nèi)存、虛擬磁盤、虛擬網(wǎng)卡等等。其中,該虛擬磁盤可對應(yīng)Host的一個文件或者一個邏輯塊設(shè)備。虛擬機(jī)運(yùn)行在Host為其準(zhǔn)備的虛擬硬件平臺上,Host上運(yùn)行一個或多個虛擬機(jī)。
[0085]特權(quán)虛擬機(jī):一種特殊的虛擬機(jī),亦可稱為驅(qū)動域,例如這種特殊的虛擬機(jī)在XenHypervisor平臺上被稱作DomO,在該虛擬機(jī)中安裝了例如網(wǎng)卡、SCSI磁盤等真實(shí)物理設(shè)備的驅(qū)動程序,能檢測和直接訪問這些真實(shí)物理設(shè)備。其他虛擬機(jī)利用Hypervisor提供的相應(yīng)機(jī)制通過特權(quán)虛擬機(jī)訪問真實(shí)物理設(shè)備。
[0086]應(yīng)理解,本發(fā)明實(shí)施例可以應(yīng)用于xen虛擬機(jī)平臺中,也可以應(yīng)用于可以應(yīng)用于任意一個遷移虛擬機(jī)時需要將虛擬機(jī)內(nèi)存進(jìn)行映射的虛擬化平臺中;本發(fā)明實(shí)施例對此不進(jìn)行限制。
[0087]實(shí)施例一
[0088]參見圖1,為本發(fā)明實(shí)施例提供的一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法,如圖1所示,可以包括以下步驟:
[0089]101:獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0090]本發(fā)明實(shí)施例中提供的方法,可以由第一虛擬機(jī)所在的物理主機(jī)執(zhí)行,例如,可以由該物理主機(jī)上的Host執(zhí)行,Host為VMM和運(yùn)行在該VMM上的特權(quán)虛擬機(jī)的結(jié)合。數(shù)據(jù)發(fā)送請求由特權(quán)虛擬機(jī)上的用戶態(tài)進(jìn)程發(fā)送給特權(quán)虛擬機(jī)。虛擬機(jī)的標(biāo)識可以為任何能夠唯一表示虛擬機(jī)的參數(shù),例如,可以為虛擬機(jī)的域名。
[0091]102:根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0092]103:根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0093]104:通過遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0094]可選的,在所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,所述方法還包括:
[0095]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0096]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0097]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;[0098]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0099]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0100]進(jìn)一步的,該方法還包括將第一虛擬機(jī)內(nèi)存數(shù)據(jù)的物理頁內(nèi)存地址注冊給RDMA網(wǎng)卡的過程,具體可以通過以下兩種方式中任意一種方式來實(shí)現(xiàn):
[0101]1、在所述根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0102]在這種方式下,將第一虛擬機(jī)全部內(nèi)存的物理內(nèi)存頁地址一次注冊給RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000~OxOOOlffffJl^f0x00010000~OxOOOlfTfT —次性全部注冊至RDMA網(wǎng)卡。
[0103]2、在根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0104]在這種方式下,根據(jù)每次的數(shù)據(jù)發(fā)送請求,分別就將每個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址分批次的注冊至RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000~OxOOOlffff,第一個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010000~OxOOOlOOff,則在獲取第一個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010000~OxOOOlOOff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010000~OxOOOlffff注冊至RDMA網(wǎng)卡;再例如,第二個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010100~OxOOOlOlff,則在獲取第二個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010100~OxOOOlOlff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址 0x00010100 ~OxOOOlOlff 注冊至 RDMA 網(wǎng)卡。
[0105]本發(fā)明實(shí)施例的虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法,通過獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0106]下面通過具體的實(shí)施例對上述方法實(shí)施例進(jìn)行說明。
[0107]本發(fā)明實(shí)施例的虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法可以應(yīng)用于集群系統(tǒng),該集群系統(tǒng)包含多臺物理主機(jī),多臺物理主機(jī)包括源物理主機(jī)和目的物理主機(jī),其中,每臺物理主機(jī)包括硬件層、運(yùn)行在該硬件層之上的Host、以及運(yùn)行在該Host之上的至少一個虛擬機(jī)VM,以及該硬件層包括RDMA網(wǎng)卡,處理器和內(nèi)存,參見圖2,為本發(fā)明實(shí)施例設(shè)定的一種集群系統(tǒng)的應(yīng)用場景,下述具體實(shí)施例在該場景下進(jìn)行具體說明,包括兩臺物理主機(jī)100和200,以及專用光纜300。兩臺物理主機(jī)100和200的硬件層分別包含RDMA網(wǎng)卡13、23,處理器12、22,內(nèi)存11、21,其中,內(nèi)存11、內(nèi)存21可以為共享內(nèi)存,RDMA網(wǎng)卡13、23可以為無線寬帶(InfiniBand)卡或以太網(wǎng)(RDMA over Converged Ethernet,簡稱 RoCE)卡等,物理主機(jī)100和101的硬件層上分別運(yùn)行有Hostl7、27,其中,Hostl7由VMM14和VMM14上運(yùn)行的特權(quán)虛擬機(jī)15結(jié)合組成,Host27由VMM24和VMM24上運(yùn)行的特權(quán)虛擬機(jī)25結(jié)合組成,,VMM14、24上分別運(yùn)行有至少一個虛擬機(jī)16、26,虛擬機(jī)為特權(quán)虛擬機(jī)之外的其他虛擬機(jī)。特權(quán)虛擬機(jī)15、25上分別加載了 RDMA網(wǎng)卡13、23對應(yīng)的網(wǎng)卡驅(qū)動。
[0108]專用光纜300用于連接兩臺物理主機(jī)上的RDMA網(wǎng)卡,專用光纜300可以為四通道SFP接口(Quad Small Form-factor Pluggable,簡稱QSPF),也可以為其它型號的光纜,本發(fā)明實(shí)施例對此不進(jìn)行限制。上述共享存儲可以為存儲網(wǎng)絡(luò)(Storage Area Network,簡稱 SAN),也可以為小型計(jì)算機(jī)系統(tǒng)接口( Internet Small Computer SystemInterface,簡稱iSCSI)或網(wǎng)絡(luò)連接式存儲(Network Attached Storage,簡稱NAS),本發(fā)明實(shí)施例對此不進(jìn)行限制。具體場景為將物理主機(jī)100 (源物理主機(jī))上的虛擬機(jī)16遷移到物理主機(jī)200(目的物理主機(jī))上。本發(fā)明實(shí)施例僅對將虛擬機(jī)實(shí)時遷移中的虛擬機(jī)遷移部分進(jìn)行詳細(xì)說明。
[0109]實(shí)施例二
[0110]參見圖3,為本發(fā)明實(shí)施例提供的另一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法,該方法可以由物理主機(jī)100來執(zhí)行,例如,可以由物理主機(jī)100運(yùn)行的Hostl7執(zhí)行,如圖3所示,可以包括以下步驟:
[0111]S301:獲取特權(quán)虛擬機(jī)15用戶態(tài)進(jìn)程發(fā)送的虛擬機(jī)的遷移命令,其中,虛擬機(jī)的遷移命令包含虛擬機(jī)的標(biāo)識;
[0112]示例性的,虛擬機(jī)可以為一個,也可以為多個,本發(fā)明實(shí)施例對此不進(jìn)行限制,但虛擬機(jī)所在的源物理主機(jī)相同。
[0113]示例性的,Hostl7中的特權(quán)虛擬機(jī)15上加載了 RDMA網(wǎng)卡13對應(yīng)的網(wǎng)卡驅(qū)動,并封裝了所有的RDMA通信接口,每個RDMA通信接口分別用于特權(quán)虛擬機(jī)內(nèi)用戶態(tài)與內(nèi)核態(tài)之間交互,一個RDMA通信接口對應(yīng)于一個虛擬機(jī),例如,有三個虛擬機(jī),分別為虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3,虛擬機(jī)I對應(yīng)RDMA通信接口 I,虛擬機(jī)2對應(yīng)RDMA通信接口 2,虛擬機(jī)3對應(yīng)RDMA通信接口 3,RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3都封裝在特權(quán)虛擬機(jī)的網(wǎng)卡驅(qū)動中。其中,RDMA通信接口用于創(chuàng)建保護(hù)域、隊(duì)列對等。
[0114]示例性的,一個用戶態(tài)進(jìn)程對應(yīng)一個虛擬機(jī),例如,有三個虛擬機(jī),分別為虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3,虛擬機(jī)I對應(yīng)RDMA通信接口 I和用戶態(tài)進(jìn)程I,虛擬機(jī)2對應(yīng)RDMA通信接口 2和用戶態(tài)進(jìn)程2,虛擬機(jī)3對應(yīng)RDMA通信接口 3和用戶態(tài)進(jìn)程3,RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3都封裝在特權(quán)虛擬機(jī)15中,特權(quán)虛擬機(jī)15中的RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3分別接收用戶態(tài)進(jìn)程1、用戶態(tài)進(jìn)程2和用戶態(tài)進(jìn)程3分別發(fā)送的虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3的遷移命令。[0115]示例性的,虛擬機(jī)的標(biāo)識可以為虛擬機(jī)的域名(IDentity,簡稱ID),也可以為可以唯一代表虛擬機(jī)的其它標(biāo)識,本發(fā)明實(shí)施例對此不進(jìn)行限制。
[0116]S302:根據(jù)虛擬機(jī)的標(biāo)識建立虛擬機(jī)的對應(yīng)關(guān)系,對應(yīng)關(guān)系為虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0117]示例性的,Hostl7中的VMM14可以根據(jù)所述遷移請求中的所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間;
[0118]然后根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0119]再根據(jù)所述虛擬機(jī)內(nèi)存的PFN計(jì)算所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0120]建立所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系O
[0121]示例性的,例如,若虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3分別對應(yīng)一個虛擬機(jī)的域ID,Hostl7中的VMM14根據(jù)虛擬機(jī)I的域ID可以查詢虛擬機(jī)I對應(yīng)的地址空間,進(jìn)而獲取該虛擬機(jī)I對應(yīng)的PFN,假設(shè)虛擬機(jī)I的PFN范圍為O~65535,VMM14根據(jù)虛擬機(jī)I的PFN計(jì)算虛擬機(jī)I對應(yīng)的物理內(nèi)存頁地址,假設(shè)為0x00010000~0x0001ffff,Hostl7可以基于此建立兩者的對應(yīng)關(guān)系,虛擬機(jī)2和虛擬機(jī)3與虛擬機(jī)I類似。
[0122]其中,虛擬機(jī)的對應(yīng)關(guān)系可以為虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的--對應(yīng)
的關(guān)系表的形式,也可以為其它可以包含虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系的任意形式,本發(fā)明實(shí)施例對此不進(jìn)行限制。
[0123]S303:將虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡;
[0124]其中,可以根據(jù)S302建立虛擬機(jī)的對應(yīng)關(guān)系過程中獲取的虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址,將虛擬機(jī)全部內(nèi)存的物理頁地址注冊至RDMA網(wǎng)卡,也可以根據(jù)虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系庫,獲取該虛擬機(jī)的對應(yīng)關(guān)系,再根據(jù)該對應(yīng)關(guān)系查找該虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址,然后將虛擬機(jī)全部內(nèi)存的物理頁地址注冊至RDMA網(wǎng)卡。其中,對應(yīng)關(guān)系庫中可以包含每一個待遷移的虛擬機(jī)的對應(yīng)關(guān)系。
[0125]例如,根據(jù)虛擬機(jī)I的標(biāo)識查詢對應(yīng)關(guān)系庫,得到虛擬機(jī)I的對應(yīng)關(guān)系,再根據(jù)虛擬機(jī)I內(nèi)存的PFN查詢虛擬機(jī)I的對應(yīng)關(guān)系,獲取虛擬機(jī)I內(nèi)存的物理內(nèi)存頁地址,將虛擬機(jī)I內(nèi)存的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡。
[0126]示例性的,若待遷移的虛擬機(jī)包含更多個,則可以將所有虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址分別注冊至RDMA網(wǎng)卡13。
[0127]S304:獲取虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程觸發(fā)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含用戶態(tài)進(jìn)程對應(yīng)的虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0128]例如,如果有三個用戶態(tài)進(jìn)程,分別請求發(fā)送虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3的部分內(nèi)存數(shù)據(jù),接收虛擬機(jī)I對應(yīng)的用戶態(tài)進(jìn)程I發(fā)送的數(shù)據(jù)發(fā)送請求1,以及虛擬機(jī)2對應(yīng)的用戶態(tài)進(jìn)程2發(fā)送的數(shù)據(jù)發(fā)送請求2,以及虛擬機(jī)3對應(yīng)的用戶態(tài)進(jìn)程3發(fā)送的數(shù)據(jù)發(fā)送請求3。
[0129]其中,數(shù)據(jù)發(fā)送請求I包含虛擬機(jī)I的標(biāo)識和用戶態(tài)進(jìn)程I請求發(fā)送的虛擬機(jī)I的內(nèi)存數(shù)據(jù)的PFN、數(shù)據(jù)發(fā)送請求2包含虛擬機(jī)2的標(biāo)識和用戶態(tài)進(jìn)程2請求發(fā)送的虛擬機(jī)2的內(nèi)存數(shù)據(jù)的PFN、數(shù)據(jù)發(fā)送請求3中包含虛擬機(jī)3的標(biāo)識和用戶態(tài)進(jìn)程3請求發(fā)送的虛擬機(jī)3的內(nèi)存數(shù)據(jù)的PFN。
[0130]示例性的,若待遷移的虛擬機(jī)個數(shù)包含更多個時,獲取每一個虛擬機(jī)分別對應(yīng)的用戶態(tài)進(jìn)程發(fā)送的數(shù)據(jù)發(fā)送請求,每個用戶態(tài)進(jìn)程管理對應(yīng)的虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移。
[0131]S305:將數(shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中;
[0132]可選的,可以按照獲取到數(shù)據(jù)發(fā)送請求的時間的先后順序?qū)?shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中,例如,如圖4,為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)發(fā)送請求隊(duì)列的示意圖,如圖所示,若依次獲取到數(shù)據(jù)發(fā)送請求1,數(shù)據(jù)發(fā)送請求2,數(shù)據(jù)發(fā)送請求3,則,首先,將用戶態(tài)進(jìn)程I發(fā)送的數(shù)據(jù)發(fā)送請求I放入數(shù)據(jù)發(fā)送請求隊(duì)列中,然后,將用戶態(tài)進(jìn)程2發(fā)送的數(shù)據(jù)發(fā)送請求2放入數(shù)據(jù)發(fā)送請求I后面的數(shù)據(jù)發(fā)送請求隊(duì)列中,再然后,將用戶態(tài)進(jìn)程3發(fā)送的數(shù)據(jù)發(fā)送請求3放入數(shù)據(jù)發(fā)送請求2后面的數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0133]可選的,可以按照獲取的數(shù)據(jù)發(fā)送請求的優(yōu)先級將數(shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中,例如,若獲取到3個數(shù)據(jù)發(fā)送請求,優(yōu)先級由高到低依次為數(shù)據(jù)發(fā)送請求1,數(shù)據(jù)發(fā)送請求2,數(shù)據(jù)發(fā)送請求3,則,首先,將用戶態(tài)進(jìn)程I發(fā)送的數(shù)據(jù)發(fā)送請求I放入數(shù)據(jù)發(fā)送請求隊(duì)列中,然后,將用戶態(tài)進(jìn)程2發(fā)送的數(shù)據(jù)發(fā)送請求2放入數(shù)據(jù)發(fā)送請求I后面的數(shù)據(jù)發(fā)送請求隊(duì)列中,再然后,將用戶態(tài)進(jìn)程3發(fā)送的數(shù)據(jù)發(fā)送請求3放入數(shù)據(jù)發(fā)送請求2后面的數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0134]當(dāng)然,若虛擬機(jī)的個數(shù)包含更多個,則可以按上述方式將每個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程分別發(fā)送的數(shù)據(jù)發(fā)送請求按序放入數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0135]S306:按順序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求;
[0136]例如,如圖4所示,首先從數(shù)據(jù)發(fā)送請求隊(duì)列中提取數(shù)據(jù)發(fā)送請求1,再提取數(shù)據(jù)發(fā)送請求2,最后提取發(fā)送請求3。
[0137]S307:根據(jù)提取數(shù)據(jù)發(fā)送請求中虛擬機(jī)標(biāo)識查詢對應(yīng)關(guān)系庫,得到該虛擬機(jī)的對應(yīng)關(guān)系;
[0138]S308:根據(jù)數(shù)據(jù)發(fā)送請求中的PFN查詢該虛擬機(jī)的對應(yīng)關(guān)系,查找數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0139]S309:通過RDMA網(wǎng)卡依次數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的數(shù)據(jù)至目的物理主機(jī)200 ;
[0140]S310:異步通知每一個用戶態(tài)進(jìn)程;
[0141]例如,通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求I的內(nèi)存數(shù)據(jù)后,異步通知數(shù)據(jù)發(fā)送請求I對應(yīng)的用戶態(tài)進(jìn)程I ;通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求2的內(nèi)存數(shù)據(jù)后,通知數(shù)據(jù)發(fā)送請求2對應(yīng)的用戶態(tài)進(jìn)程2 ;通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求3的內(nèi)存數(shù)據(jù)后,異步通知數(shù)據(jù)發(fā)送請求3對應(yīng)的用戶態(tài)進(jìn)程3。
[0142]S311:虛擬機(jī)16的內(nèi)存數(shù)據(jù)是否全部發(fā)送至目的物理機(jī)200,若否,則執(zhí)行步驟312,若是,則執(zhí)行步驟313 ;
[0143]S312:再按序執(zhí)行S305-S311步驟;
[0144]其中,在上述發(fā)送數(shù)據(jù)的過程中,可以采用迭代的方式來發(fā)送,以保證虛擬機(jī)16在遷移過程中的正常運(yùn)行。[0145]S313:將虛擬機(jī)16的對應(yīng)關(guān)系刪除,并注消虛擬機(jī)16內(nèi)存,將虛擬機(jī)16在源物理機(jī)100上銷毀;進(jìn)而,虛擬機(jī)26在目的物理主機(jī)200上被啟動。
[0146]至此,完成虛擬機(jī)16從源物理主機(jī)100遷移至目的物理主機(jī)200的過程。
[0147]由上可見,本發(fā)明實(shí)施例中,通過獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程發(fā)送的虛擬機(jī)的遷移命令,并根據(jù)每個虛擬機(jī)的遷移命令中包含的虛擬機(jī)的標(biāo)識建立每個虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;根據(jù)每個虛擬機(jī)的對應(yīng)關(guān)系,可以獲取每個虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址,并將每個虛擬機(jī)的物理內(nèi)存頁地址注冊至該RDMA網(wǎng)卡;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0148]而且,因?yàn)樵赗DMA網(wǎng)卡發(fā)送數(shù)據(jù)前,把每個虛擬機(jī)的物理內(nèi)存頁地址一次性注冊至該RDMA網(wǎng)卡,可以保證RDMA網(wǎng)卡根據(jù)用戶態(tài)進(jìn)程發(fā)送的數(shù)據(jù)發(fā)送請求成功傳輸相關(guān)的數(shù)據(jù);更進(jìn)一步的,
[0149]可以將分別獲取的每一個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程的數(shù)據(jù)發(fā)送請求通過數(shù)據(jù)發(fā)送請求隊(duì)列進(jìn)行統(tǒng)一管理,可以實(shí)現(xiàn)針對不同的用戶態(tài)進(jìn)程的數(shù)據(jù)遷移設(shè)置不同優(yōu)先級,進(jìn)而對不同的業(yè)務(wù)進(jìn)行QoS優(yōu)化,提高虛擬機(jī)遷移的性能。
[0150]實(shí)施例三
[0151]參見圖5,為本發(fā)明實(shí)施例提供的另一種虛擬機(jī)遷移的方法,該方法可以由物理主機(jī)100來執(zhí)行,例如,可以由物理主機(jī)100運(yùn)行的Hostl7執(zhí)行,如圖5所示,可以包括以下步驟:
[0152]S501:獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程發(fā)送的虛擬機(jī)的遷移命令,其中,虛擬機(jī)的遷移命令包含虛擬機(jī)的標(biāo)識;
[0153]示例性的,虛擬機(jī)可以為一個,也可以為多個,本發(fā)明實(shí)施例對此不進(jìn)行限制,但虛擬機(jī)所在的源物理主機(jī)相同。
[0154]示例性的,Hostl7中的特權(quán)虛擬機(jī)15上加載了 RDMA網(wǎng)卡13對應(yīng)的網(wǎng)卡驅(qū)動,并封裝了所有的RDMA通信接口,每個RDMA通信接口分別用于特權(quán)虛擬機(jī)內(nèi)用戶態(tài)與內(nèi)核態(tài)之間交互,一個RDMA通信接口對應(yīng)于一個虛擬機(jī),例如,有三個虛擬機(jī),分別為虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3,虛擬機(jī)I對應(yīng)RDMA通信接口 I,虛擬機(jī)2對應(yīng)RDMA通信接口 2,虛擬機(jī)3對應(yīng)RDMA通信接口 3,RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3都封裝在特權(quán)虛擬機(jī)的網(wǎng)卡驅(qū)動中。其中,RDMA通信接口用于創(chuàng)建保護(hù)域、隊(duì)列對等。
[0155]示例性的,一個用戶態(tài)進(jìn)程對應(yīng)一個虛擬機(jī),例如,有三個虛擬機(jī),分別為虛擬機(jī)
1、虛擬機(jī)2和虛擬機(jī)3,虛擬機(jī)I對應(yīng)RDMA通信接口 I和用戶態(tài)進(jìn)程I,虛擬機(jī)2對應(yīng)RDMA通信接口 2和用戶態(tài)進(jìn)程2,虛擬機(jī)3對應(yīng)RDMA通信接口 3和用戶態(tài)進(jìn)程3,RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3都封裝在特權(quán)虛擬機(jī)15中,特權(quán)虛擬機(jī)15中的RDMA通信接口 1、RDMA通信接口 2和RDMA通信接口 3分別接收用戶態(tài)進(jìn)程1、用戶態(tài)進(jìn)程2和用戶態(tài)進(jìn)程3分別發(fā)送的虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3的遷移命令。
[0156]示例性的,虛擬機(jī)的標(biāo)識可以為虛擬機(jī)的域名(IDentity,簡稱ID),也可以為可以唯一代表虛擬機(jī)的其它標(biāo)識,本發(fā)明實(shí)施例對此不進(jìn)行限制。
[0157]S502:根據(jù)虛擬機(jī)的標(biāo)識建立虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系包含虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0158]示例性的,Hostl7中的VMM14可以根據(jù)所述遷移請求中的所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間;
[0159]然后根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0160]再根據(jù)所述虛擬機(jī)內(nèi)存的PFN計(jì)算所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0161]建立所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系O
[0162]示例性的,例如,若虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3分別對應(yīng)一個虛擬機(jī)的域ID,Hostl7中的VMM14根據(jù)虛擬機(jī)I的域ID可以查詢虛擬機(jī)I對應(yīng)的地址空間,進(jìn)而獲取該虛擬機(jī)I對應(yīng)的PFN,假設(shè)虛擬機(jī)I的PFN范圍為O~65535,VMM14根據(jù)虛擬機(jī)I的PFN計(jì)算虛擬機(jī)I對應(yīng)的物理內(nèi)存頁地址,假設(shè)為0x00010000~0x0001ffff,Hostl7可以基于此建立兩者的對應(yīng)關(guān)系,虛擬機(jī)2和虛擬機(jī)3與虛擬機(jī)I類似。
[0163]其中,虛擬機(jī)的對應(yīng)關(guān)系可以為虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的--對應(yīng)
的關(guān)系表的形式,也可以為其它可以包含虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系的任意形式,本發(fā)明實(shí)施例對此不進(jìn)行限制。
[0164]S503:獲取虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程觸發(fā)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含用戶態(tài)進(jìn)程對應(yīng)的虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0165]例如,如果有三個用戶態(tài)進(jìn)程,分別請求發(fā)送虛擬機(jī)1、虛擬機(jī)2和虛擬機(jī)3的部分內(nèi)存數(shù)據(jù),獲取虛擬機(jī)I對應(yīng)的用戶態(tài)進(jìn)程I觸發(fā)的數(shù)據(jù)發(fā)送請求1,以及虛擬機(jī)2對應(yīng)的用戶態(tài)進(jìn)程2觸發(fā)的數(shù)據(jù)發(fā)送請求2,以及虛擬機(jī)3對應(yīng)的用戶態(tài)進(jìn)程3觸發(fā)的數(shù)據(jù)發(fā)送請求3。
[0166]其中,數(shù)據(jù)發(fā)送請求I包含虛擬機(jī)I的標(biāo)識和用戶態(tài)進(jìn)程I請求發(fā)送的虛擬機(jī)I的內(nèi)存數(shù)據(jù)的PFN、數(shù)據(jù)發(fā)送請求2包含虛擬機(jī)2的標(biāo)識和用戶態(tài)進(jìn)程2請求發(fā)送的虛擬機(jī)2的內(nèi)存數(shù)據(jù)的PFN、數(shù)據(jù)發(fā)送請求3中包含虛擬機(jī)3的標(biāo)識和用戶態(tài)進(jìn)程3請求發(fā)送的虛擬機(jī)3的內(nèi)存數(shù)據(jù)的PFN。
[0167]示例性的,若待遷移的虛擬機(jī)個數(shù)包含更多個時,獲取每一個虛擬機(jī)分別對應(yīng)的用戶態(tài)進(jìn)程觸發(fā)的數(shù)據(jù)發(fā)送請求,每個用戶態(tài)進(jìn)程管理對應(yīng)的虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移。
[0168]S504:將數(shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中;
[0169]可選的,可以按照獲取到數(shù)據(jù)發(fā)送請求的時間的先后順序?qū)?shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中,例如,如圖4,為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)發(fā)送請求隊(duì)列的示意圖,如圖所示,若依次獲取到數(shù)據(jù)發(fā)送請求1,數(shù)據(jù)發(fā)送請求2,數(shù)據(jù)發(fā)送請求3,則,首先,將用戶態(tài)進(jìn)程I發(fā)送的數(shù)據(jù)發(fā)送請求I放入數(shù)據(jù)發(fā)送請求隊(duì)列中,然后,將用戶態(tài)進(jìn)程2發(fā)送的數(shù)據(jù)發(fā)送請求2放入數(shù)據(jù)發(fā)送請求I后面的數(shù)據(jù)發(fā)送請求隊(duì)列中,再然后,將用戶態(tài)進(jìn)程3發(fā)送的數(shù)據(jù)發(fā)送請求3放入數(shù)據(jù)發(fā)送請求2后面的數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0170]可選的,可以按照獲取的數(shù)據(jù)發(fā)送請求的優(yōu)先級將數(shù)據(jù)發(fā)送請求分別放入數(shù)據(jù)發(fā)送請求隊(duì)列中,例如,若獲取到3個數(shù)據(jù)發(fā)送請求,優(yōu)先級由高到低依次為數(shù)據(jù)發(fā)送請求1,數(shù)據(jù)發(fā)送請求2,數(shù)據(jù)發(fā)送請求3,則,首先,將用戶態(tài)進(jìn)程I發(fā)送的數(shù)據(jù)發(fā)送請求I放入數(shù)據(jù)發(fā)送請求隊(duì)列中,然后,將用戶態(tài)進(jìn)程2發(fā)送的數(shù)據(jù)發(fā)送請求2放入數(shù)據(jù)發(fā)送請求I后面的數(shù)據(jù)發(fā)送請求隊(duì)列中,再然后,將用戶態(tài)進(jìn)程3發(fā)送的數(shù)據(jù)發(fā)送請求3放入數(shù)據(jù)發(fā)送請求2后面的數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0171]當(dāng)然,若虛擬機(jī)的個數(shù)包含更多個,則可以按上述方式將每個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程分別發(fā)送的數(shù)據(jù)發(fā)送請求按序放入數(shù)據(jù)發(fā)送請求隊(duì)列中。
[0172]S505:按順序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求;
[0173]例如,如圖4所示,首先從數(shù)據(jù)發(fā)送請求隊(duì)列中提取數(shù)據(jù)發(fā)送請求1,再提取數(shù)據(jù)發(fā)送請求2,最后提取發(fā)送請求3。
[0174]S506:根據(jù)提取數(shù)據(jù)發(fā)送請求中虛擬機(jī)標(biāo)識查詢對應(yīng)關(guān)系庫,得到該虛擬機(jī)的對應(yīng)關(guān)系;
[0175]S507:根據(jù)數(shù)據(jù)發(fā)送請求中的PFN查詢該虛擬機(jī)的對應(yīng)關(guān)系,查找數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0176]S508:將提取的數(shù)據(jù)發(fā)送請求對應(yīng)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡;
[0177]其中,按照提取的數(shù)據(jù)發(fā)送請求的順序?qū)⒏鱾€數(shù)據(jù)發(fā)送請求分別對應(yīng)的物理內(nèi)存頁地址分別注冊至RDMA網(wǎng)卡。例如,特權(quán)虛擬機(jī)15提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求I并將數(shù)據(jù)發(fā)送請求I對應(yīng)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡;再提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求2并將數(shù)據(jù)發(fā)送請求2對應(yīng)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡;再按順序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求3并將數(shù)據(jù)發(fā)送請求3對應(yīng)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡。
[0178]S509:通過RDMA網(wǎng)卡依次數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的數(shù)據(jù)至目的物理主機(jī)200 ;
[0179]S510:異步通知每一個用戶態(tài)進(jìn)程;
[0180]例如,通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求I的內(nèi)存數(shù)據(jù)后,異步通知數(shù)據(jù)發(fā)送請求I對應(yīng)的用戶態(tài)進(jìn)程I ;通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求2的內(nèi)存數(shù)據(jù)后,通知數(shù)據(jù)發(fā)送請求2對應(yīng)的用戶態(tài)進(jìn)程2 ;通過RDMA網(wǎng)卡發(fā)送完數(shù)據(jù)發(fā)送請求3的內(nèi)存數(shù)據(jù)后,異步通知數(shù)據(jù)發(fā)送請求3對應(yīng)的用戶態(tài)進(jìn)程3。
[0181]S511:注銷已經(jīng)發(fā)送的數(shù)據(jù)發(fā)送請求對應(yīng)的虛擬機(jī)的內(nèi)存;
[0182]S512:虛擬機(jī)16的內(nèi)存數(shù)據(jù)是否全部發(fā)送至目的物理機(jī)200,若否,則執(zhí)行步驟513,若是,則執(zhí)行步驟514 ;
[0183]S513:執(zhí)行步驟 S503-S512。
[0184]S514:將虛擬機(jī)16的對應(yīng)關(guān)系刪除,并注消虛擬機(jī)16內(nèi)存,將虛擬機(jī)16在源物理機(jī)100上銷毀,進(jìn)而虛擬機(jī)26在目的物理主機(jī)200上被啟動。
[0185]若是遷移完成,Hostl7將虛擬機(jī)的對應(yīng)關(guān)系刪除,并注消虛擬機(jī)內(nèi)存。
[0186]至此,完成虛擬機(jī)16從源物理主機(jī)100遷移至目的物理主機(jī)200的過程。
[0187]由上可見,本發(fā)明實(shí)施例中,通過獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的虛擬機(jī)的遷移命令,并根據(jù)虛擬機(jī)的遷移命令中包含的虛擬機(jī)的標(biāo)識建立虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;根據(jù)虛擬機(jī)的對應(yīng)關(guān)系,可以獲取虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址,再通過RDMA網(wǎng)卡發(fā)送數(shù)據(jù)之前將虛擬機(jī)的物理內(nèi)存頁地址注冊至該RDMA網(wǎng)卡;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0188]而且,可以將每一個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程分別發(fā)送的數(shù)據(jù)發(fā)送請求通過數(shù)據(jù)發(fā)送請求隊(duì)列進(jìn)行統(tǒng)一管理,可以實(shí)現(xiàn)針對不同的用戶態(tài)進(jìn)程的數(shù)據(jù)遷移設(shè)置不同優(yōu)先級,進(jìn)而對不同的業(yè)務(wù)進(jìn)行QoS優(yōu)化,提高虛擬機(jī)遷移的性能。
[0189]實(shí)施例四
[0190]本發(fā)明實(shí)施例提供一種宿主機(jī)Host60,該Hosteo與第一虛擬機(jī)同部署于一個物理主機(jī),在一種實(shí)現(xiàn)方式下,該Hosteo可以包括特權(quán)虛擬機(jī)和VMM,其中特權(quán)虛擬機(jī)和VMM與第一虛擬機(jī)同部署于一個物理主機(jī),參見圖6,該Hosteo可以包括:
[0191]獲取單元601,用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0192]第一查詢單元602,用于根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0193]第二查詢單元603,用于根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一查詢單元602得到的所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0194]驅(qū)動發(fā)送單元604,用于通過RDMA網(wǎng)卡將所述第二查詢單元603得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0195]本發(fā)明實(shí)施例提供的Host60,該Hosteo可獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;該Host根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,該Host可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0196]實(shí)施例五
[0197]參見圖7,為本發(fā)明實(shí)施例提供的另一種Host70,參見圖7,該Host70包括:建立單元701,第一注冊單元702,獲取單元703,第一查詢單元704,第二查詢單元705,驅(qū)動發(fā)送單元706,
[0198]其中,獲取單元703,第一查詢單元704,第二查詢單元705,驅(qū)動發(fā)送單元706的具體功能參見實(shí)施例四中所述,在此不再贅述。
[0199]建立單元701,用于獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系;
[0200]第一注冊單元702,用于在建立單元701根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,獲取單元702獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0201]將建立單元701獲取的第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0202]本實(shí)施例中,第一注冊單元702將第一虛擬機(jī)全部內(nèi)存的物理內(nèi)存頁地址一次注冊給RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,則第一注冊單元702將0x00010000?OxOOOlfTfT —次性全部注冊至RDMA網(wǎng)卡。
[0203]進(jìn)一步的,所述獲取單元601具體用于,依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級高低進(jìn)行排序。
[0204]本發(fā)明實(shí)施例提供的Host70,用于獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程發(fā)送的虛擬機(jī)的遷移命令,并根據(jù)每個虛擬機(jī)的遷移命令中包含的虛擬機(jī)的標(biāo)識建立每個虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;根據(jù)每個虛擬機(jī)的對應(yīng)關(guān)系,可以獲取每個虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址,并將每個虛擬機(jī)的物理內(nèi)存頁地址注冊至該RDMA網(wǎng)卡;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0205]而且,因?yàn)樵隍?qū)動發(fā)送單元706通過RDMA網(wǎng)卡發(fā)送數(shù)據(jù)前,第一注冊單元702把每個虛擬機(jī)的物理內(nèi)存頁地址一次性注冊至該RDMA網(wǎng)卡,可以保證RDMA網(wǎng)卡根據(jù)用戶態(tài)進(jìn)程發(fā)送的數(shù)據(jù)發(fā)送請求成功傳輸相關(guān)的數(shù)據(jù)。
[0206]而且,獲取單元703可以將分別獲取的每一個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程的數(shù)據(jù)發(fā)送請求通過數(shù)據(jù)發(fā)送請求隊(duì)列進(jìn)行統(tǒng)一管理,可以實(shí)現(xiàn)針對不同的用戶態(tài)進(jìn)程的數(shù)據(jù)遷移設(shè)置不同優(yōu)先級,進(jìn)而對不同的業(yè)務(wù)進(jìn)行QoS優(yōu)化,提高虛擬機(jī)遷移的性能。
[0207]實(shí)施例六
[0208]參見圖8,為本發(fā)明實(shí)施例提供的另一種Host80,參見圖8,該Host80包括:建立單元801,獲取單元802,第一查詢單元803,第二查詢單元804,第一注冊單元805,驅(qū)動發(fā)送單元806,
[0209]其中,
[0210]建立單元801,用于獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系;
[0211]獲取單元802,用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0212]優(yōu)選的,所述獲取單元802具體用于,依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級高低進(jìn)行排序。
[0213]第一查詢單元803,用于根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0214]第二查詢單元804,用于根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一查詢單元803得到的所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0215]第二注冊單元805,用于將第二查詢單元804得到的得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡;
[0216]本實(shí)施例中,第二注冊單元805根據(jù)每次的數(shù)據(jù)發(fā)送請求,分別就將每個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址分批次的注冊至RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,第一個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010000?0x000 IOOf f,則第二注冊單元805在獲取第一個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010000?OxOOOlOOff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010000?OxOOOlffff注冊至RDMA網(wǎng)卡;再例如,第二個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010100?OxOOOlOlff,則第二注冊單元805在獲取第二個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010100?OxOOOlOlff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010100?OxOOOlOlff注冊至RDMA網(wǎng)卡。
[0217]驅(qū)動發(fā)送單元806,用于在第二注冊單元805將第二查詢單元804得到的得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至RDMA網(wǎng)卡后,通過RDMA網(wǎng)卡將所述第二查詢單元804得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物
理主機(jī)。
[0218]本發(fā)明實(shí)施例提供的HostSO,用于獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的虛擬機(jī)的遷移命令,并根據(jù)虛擬機(jī)的遷移命令中包含的虛擬機(jī)的標(biāo)識建立虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;根據(jù)虛擬機(jī)的對應(yīng)關(guān)系,可以獲取虛擬機(jī)內(nèi)存的PFN對應(yīng)的物理內(nèi)存頁地址,再通過RDMA網(wǎng)卡發(fā)送數(shù)據(jù)之前將虛擬機(jī)的物理內(nèi)存頁地址注冊至該RDMA網(wǎng)卡;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0219]而且,可以將每一個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程分別發(fā)送的數(shù)據(jù)發(fā)送請求通過數(shù)據(jù)發(fā)送請求隊(duì)列進(jìn)行統(tǒng)一管理,可以實(shí)現(xiàn)針對不同的用戶態(tài)進(jìn)程的數(shù)據(jù)遷移設(shè)置不同優(yōu)先級,進(jìn)而對不同的業(yè)務(wù)進(jìn)行QoS優(yōu)化,提高虛擬機(jī)遷移的性能。
[0220]而且,獲取單元703可以將分別獲取的每一個虛擬機(jī)對應(yīng)的用戶態(tài)進(jìn)程的數(shù)據(jù)發(fā)送請求通過數(shù)據(jù)發(fā)送請求隊(duì)列進(jìn)行統(tǒng)一管理,可以實(shí)現(xiàn)針對不同的用戶態(tài)進(jìn)程的數(shù)據(jù)遷移設(shè)置不同優(yōu)先級,進(jìn)而對不同的業(yè)務(wù)進(jìn)行QoS優(yōu)化,提高虛擬機(jī)遷移的性能。
[0221]實(shí)施例七
[0222]本發(fā)明實(shí)施例提供一種物理主機(jī)90,參見圖9,該物理主機(jī)90包括硬件,其中所述硬件可以包括RDMA網(wǎng)卡901,可選的,所述硬件還可以包括至少一個處理器902、存儲器903,用于進(jìn)行該物理主機(jī)90內(nèi)部各設(shè)備之間的連接的至少一個通信總線904,用于實(shí)現(xiàn)這些裝置之間的連接和相互通信。
[0223]其中,通信總線904可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture,簡稱為ISA)總線、外部設(shè)備互連(Peripheral Component,簡稱為PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry Standard Architecture,簡稱為 EISA)總線等。該總線 904 可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖9中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0224]存儲器903可以包括隨機(jī)存取存儲器,并向處理器803提供指令和數(shù)據(jù)。
[0225]處理器902可以是一個中央處理器(Central Processing Unit,簡稱為CPU),或者是特定集成電路(Application Specific Integrated Circuit,簡稱為ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個或多個集成電路。[0226]RDMA網(wǎng)卡901可以為支持RDMA功能的各種網(wǎng)卡,例如,可以為無線寬帶(InfiniBand)卡或以太網(wǎng)(RDMA over Converged Ethernet,簡稱 RoCE)卡等。
[0227]其中,通過讀取存儲器903存儲的指令,處理器902用于,
[0228]獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0229]根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0230]根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢獲取的所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;
[0231]通過RDMA網(wǎng)卡901將獲取的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0232]進(jìn)一步的,所述處理器902還用于:
[0233]在獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0234]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0235]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0236]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0237]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0238]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0239]進(jìn)一步的,所述處理器902還用于:將第一虛擬機(jī)內(nèi)存數(shù)據(jù)的物理頁內(nèi)存地址注冊給RDMA網(wǎng)卡,具體可以通過以下兩種方式中任意一種方式來實(shí)現(xiàn):
[0240]1、在根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0241]在這種方式下,處理器902將第一虛擬機(jī)全部內(nèi)存的物理內(nèi)存頁地址一次注冊給RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,則 Host901 將 0x00010000 ?OxOOOlffff —次性全部注冊至 RDMA 網(wǎng)卡。
[0242]2、在根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0243]在這種方式下,處理器902根據(jù)每次的數(shù)據(jù)發(fā)送請求,分別就將每個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址分批次的注冊至RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,第一個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010000~OxOOOlOOff,則處理器902在獲取第一個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010000~OxOOOlOOff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010000~OxOOOlffff?注冊至RDMA網(wǎng)卡;再例如,第二個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010100~OxOOOlOlff,則Host901在獲取第二個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010100~OxOOOlOlff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010100~OxOOOlOlff注冊至RDMA網(wǎng)卡。[0244]本發(fā)明實(shí)施例提供的物理主機(jī)90,可獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN;該Host根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,該Host可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0245]實(shí)施例八
[0246]本發(fā)明實(shí)施例提供另一種物理主機(jī)100,參見圖10,該物理主機(jī)100包含硬件層、運(yùn)行在所述硬件層之上的HostlOOl、以及運(yùn)行在所述HostlOOl之上的至少一個虛擬機(jī)VM1002,以及所述硬件層包括RDMA網(wǎng)卡1003,可選的,還可以包括處理器1004和內(nèi)存1005 ;其中,Host可以包括該物理主機(jī)100上的VMM和運(yùn)行于該VMM上的特權(quán)虛擬機(jī),虛擬機(jī)1002為該物理主機(jī)100上除特權(quán)虛擬機(jī)之外的其他虛擬機(jī),虛擬機(jī)1002包括第一虛擬機(jī)。
[0247]其中,HostlOOl用于,
[0248]獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;
[0249]根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存物理內(nèi)存頁地址的對應(yīng)關(guān)系;
[0250]根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢獲取的所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;[0251]通過RDMA網(wǎng)卡1003將獲取的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
[0252]進(jìn)一步的,所述HostlOOl還用于:
[0253]在獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,
[0254]獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識;
[0255]根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間;
[0256]根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ;
[0257]根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;
[0258]建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
[0259]進(jìn)一步的,所述HostlOOl還用于:
[0260]將第一虛擬機(jī)內(nèi)存數(shù)據(jù)的物理頁內(nèi)存地址注冊給RDMA網(wǎng)卡,具體可以通過以下兩種方式中任意一種方式來實(shí)現(xiàn):
[0261]1、在根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0262]在這種方式下,HostlOOl將第一虛擬機(jī)全部內(nèi)存的物理內(nèi)存頁地址一次注冊給RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,則 Host901 將 0x00010000 ?OxOOOlffff —次性全部注冊至 RDMA 網(wǎng)卡。
[0263]2、在根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
[0264]在這種方式下,HostlOOl根據(jù)每次的數(shù)據(jù)發(fā)送請求,分別就將每個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址分批次的注冊至RDMA網(wǎng)卡,例如,第一虛擬機(jī)全部內(nèi)存對應(yīng)的物理內(nèi)存頁地址為0x00010000?OxOOOlffff,第一個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010000?OxOOOlOOff,則HostlOOl在獲取第一個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010000?OxOOOlOOff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010000?OxOOOlffff注冊至RDMA網(wǎng)卡;再例如,第二個數(shù)據(jù)發(fā)送請求請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址為0x00010100?OxOOOlOlff,則HostlOOl在獲取第二個數(shù)據(jù)發(fā)送請求之后,通過RDMA網(wǎng)卡將物理內(nèi)存頁地址0x00010100?OxOOOlOlff上存儲的內(nèi)存數(shù)據(jù)發(fā)送給目的物理主機(jī)之前,將物理內(nèi)存頁地址0x00010100?OxOOOlOlff注冊至RDMA網(wǎng)卡。
[0265]本發(fā)明實(shí)施例的物理主機(jī)100,用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN;該Host根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0266]實(shí)施例九
[0267]本發(fā)明實(shí)施例提供一種集群系統(tǒng),參見圖10,該集群系統(tǒng)包括:多臺物理主機(jī),所述多臺物理主機(jī)包括源物理主機(jī)和目的物理主機(jī),其中每臺物理主機(jī)包括硬件層、運(yùn)行在所述硬件層之上的Host、以及運(yùn)行在所述Host之上的至少一個虛擬機(jī)VM,以及所述硬件層包括RDMA網(wǎng)卡,可選的,還可以處理器和內(nèi)存。其中,Host可以包括Host所在的物理主機(jī)上的VMM和運(yùn)行于該VMM上的特權(quán)虛擬機(jī)。
[0268]以及,本發(fā)明實(shí)施例的集群系統(tǒng)中包括的物理主機(jī)參考前述實(shí)施例介紹的物理主機(jī),在此不再贅述。
[0269]本發(fā)明實(shí)施例的集群系統(tǒng),源物理主機(jī)中的Host可獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,該數(shù)據(jù)發(fā)送請求包含第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN ;該Host根據(jù)第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,獲取第一虛擬機(jī)的對應(yīng)關(guān)系,其中,該對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,虛擬機(jī)的對應(yīng)關(guān)系為基于該虛擬機(jī)的標(biāo)識獲取該虛擬機(jī)內(nèi)存的地址空間,以及該地址空間對應(yīng)的該虛擬機(jī)內(nèi)存的PFN,以及該虛擬機(jī)內(nèi)存的PFN對應(yīng)的該虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的該虛擬機(jī)內(nèi)存的PFN與物理內(nèi)存頁地址的對應(yīng)關(guān)系;所以,該Host可根據(jù)請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢第一虛擬機(jī)的對應(yīng)關(guān)系,獲取請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址;再通過RDMA網(wǎng)卡將請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。如此,在虛擬機(jī)遷移的過程中,不需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,通過該待遷移虛擬的對應(yīng)關(guān)系以及數(shù)據(jù)發(fā)送求中的PFN,可直接查詢獲取請求發(fā)送的內(nèi)存數(shù)據(jù)對應(yīng)的物理內(nèi)存頁地址,進(jìn)而大大降低了虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷,一定程度上解決了現(xiàn)有技術(shù)中由于在虛擬化平臺下,虛擬機(jī)遷移的過程中,需要將虛擬機(jī)的內(nèi)存映射到用戶態(tài)空間并通過超級調(diào)用更新頁表,導(dǎo)致虛擬機(jī)所在的物理機(jī)中的處理器利用率及時間開銷較大的問題。
[0270]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
[0271]在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0272]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0273]另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理包括,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0274]上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,簡稱ROM)、隨機(jī)存取存儲器(Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0275]本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件(例如處理器)來完成,該程序可以存儲于一計(jì)算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器、隨機(jī)存儲器、磁盤或光盤等。
[0276]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種虛擬機(jī)內(nèi)存數(shù)據(jù)的遷移方法,其特征在于,包括: 獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的物理頁框號PFN ; 根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系; 根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址; 通過遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,所述方法還包括: 獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識; 根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間; 根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ; 根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址; 建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前,所述方法還包括: 將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在所述根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前,所述方法還包括: 將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述方法,其特征在于,所述獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求包括: 依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級高低進(jìn)行排序。
6.一種宿主機(jī)Host,其特征在于,包括: 獲取單元,用于獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的物理頁框號PFN ;第一查詢單元,用于根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系; 第二查詢單元,用于根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一查詢單元得到的所述第一虛擬機(jī)的對應(yīng)關(guān)系,獲取所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址; 驅(qū)動發(fā)送單元,用于通過遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡將所述第二查詢單元得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
7.根據(jù)權(quán)利要求6所述的Host,其特征在于,所述Host還包括 建立單元,用于在所述獲取單元獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前, 獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識; 根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間; 根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ; 根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址; 建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
8.根據(jù)權(quán)利要求7所述的Host,其特征在于,所述Host還包括:第一注冊單元,用于在所述建立單元根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,所述獲取單元獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前, 將所述建立單元獲取的第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
9.根據(jù)權(quán)利要求6或7所述的Host,其特征在于,所述Host還包括:第二注冊單元,用于在所述第二查詢單元根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,所述驅(qū)動發(fā)送單元通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前, 將所述第二查詢單元得到的請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
10.根據(jù)權(quán)利要求6-9任一項(xiàng)所述Host,其特征在于,所述獲取單元具體用于,依序提取數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含不同的待遷移的虛擬機(jī)的數(shù)據(jù)發(fā)送請求,所述數(shù)據(jù)發(fā)送請求隊(duì)列中的數(shù)據(jù)發(fā)送請求按照時間先后或者優(yōu)先級聞低進(jìn)行排序。
11.一種物理主機(jī),其特征在于,包括:硬件層、運(yùn)行在所述硬件層之上的宿主機(jī)Host、以及運(yùn)行在所述Host之上的至少一個虛擬機(jī)VM,以及所述硬件層包括遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡;所述至少一個虛擬機(jī)包括第一虛擬機(jī),其中, 所述Host用于:獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求,其中,所述數(shù)據(jù)發(fā)送請求包含所述第一虛擬機(jī)的標(biāo)識,以及請求發(fā)送的內(nèi)存數(shù)據(jù)的物理頁框號PFN ; 根據(jù)所述第一虛擬機(jī)的標(biāo)識查詢對應(yīng)關(guān)系信息庫,得到所述第一虛擬機(jī)的對應(yīng)關(guān)系,其中,所述對應(yīng)關(guān)系信息庫包含待遷移的虛擬機(jī)的對應(yīng)關(guān)系,所述虛擬機(jī)的對應(yīng)關(guān)系為基于所述虛擬機(jī)的標(biāo)識獲取所述虛擬機(jī)內(nèi)存的地址空間,以及所述地址空間對應(yīng)的所述虛擬機(jī)內(nèi)存的PFN,以及所述虛擬機(jī)內(nèi)存的PFN對應(yīng)的所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址后,建立的所述虛擬機(jī)內(nèi)存的PFN與所述虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址的對應(yīng)關(guān)系; 根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址; 通過所述遠(yuǎn)程直接內(nèi)存讀取RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)。
12.根據(jù)權(quán)利要求11所述的物理主機(jī),其特征在于,所述Host還用于: 在獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前, 獲取特權(quán)虛擬機(jī)用戶態(tài)進(jìn)程觸發(fā)的遷移所述第一虛擬機(jī)的內(nèi)存數(shù)據(jù)的遷移請求,其中,所述遷移請求中包含所述第一虛擬機(jī)的標(biāo)識; 根據(jù)所述遷移請求中的所述第一虛擬機(jī)的標(biāo)識獲取所述第一虛擬機(jī)內(nèi)存的地址空間; 根據(jù)所述地址空間獲取所述虛擬機(jī)內(nèi)存的PFN ; 根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址;` 建立所述第一虛擬機(jī)內(nèi)存的PFN與所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之間的對應(yīng)關(guān)系。
13.根據(jù)權(quán)利要求12所述物理主機(jī),其特征在于,所述Host還用于: 在根據(jù)所述第一虛擬機(jī)內(nèi)存的PFN計(jì)算所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址之后,以及獲取發(fā)送第一虛擬機(jī)內(nèi)存數(shù)據(jù)的數(shù)據(jù)發(fā)送請求之前, 將所述第一虛擬機(jī)內(nèi)存的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
14.根據(jù)權(quán)利要求11或12所述物理主機(jī),其特征在于,所述Host還用于:在根據(jù)所述請求發(fā)送的內(nèi)存數(shù)據(jù)的PFN查詢所述第一虛擬機(jī)的對應(yīng)關(guān)系,得到所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址之后,通過RDMA網(wǎng)卡將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址上所存儲的內(nèi)存數(shù)據(jù)發(fā)送至目的物理主機(jī)之前, 將所述請求發(fā)送的內(nèi)存數(shù)據(jù)的物理內(nèi)存頁地址注冊至所述RDMA網(wǎng)卡。
15.一種集群系統(tǒng),其特征在于,包括:多臺如權(quán)利要求11至14任一項(xiàng)所述的物理主機(jī),所述多臺物理主機(jī)包括源物理主機(jī)和目的物理主機(jī),其中每臺物理主機(jī)包括硬件層、運(yùn)行在所述硬件層之上的宿主機(jī)Host、以及運(yùn)行在所述Host之上的至少一個虛擬機(jī)VM,以及所述硬件層包括RDMA網(wǎng)卡。
【文檔編號】G06F15/16GK103530167SQ201310462273
【公開日】2014年1月22日 申請日期:2013年9月30日 優(yōu)先權(quán)日:2013年9月30日
【發(fā)明者】楊杰, 章曉峰 申請人:華為技術(shù)有限公司