本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)在線(xiàn)遷移方法、裝置及系統(tǒng)。
背景技術(shù):
云計(jì)算是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)為用戶(hù)提供了按需、靈活、可伸縮的計(jì)算和存儲(chǔ)資源;隨著云計(jì)算的發(fā)展,客戶(hù)通過(guò)云端按需的訪(fǎng)問(wèn)應(yīng)用程序和數(shù)據(jù)的形式成為越來(lái)越重要的計(jì)算和服務(wù)模式。云劃分為:私有云、公有云和混合云,其中,公有云為獨(dú)立于企業(yè)公司的面向公眾的云,私有云為面向組織內(nèi)部的云,混合云是組合兩個(gè)或多個(gè)私有云或公有云所形成的基礎(chǔ)設(shè)施;混合云具有靈活性、兼顧安全與彈性的特點(diǎn),是未來(lái)云計(jì)算系統(tǒng)部署的發(fā)展趨勢(shì)。
虛擬化技術(shù)是云計(jì)算的核心技術(shù),虛擬化技術(shù)通過(guò)虛擬中間層截獲虛擬操作系統(tǒng)對(duì)底層接口的調(diào)用,可以屏蔽底層計(jì)算機(jī)硬件的差異,消除系統(tǒng)軟件和硬件的耦合,提高物理資源的利用率。虛擬機(jī)在線(xiàn)遷移技術(shù)是指將運(yùn)行中的源虛擬機(jī)的虛擬機(jī)服務(wù)透明地從源宿主計(jì)算機(jī)中遷移到另一臺(tái)目的宿主計(jì)算機(jī)上運(yùn)行,同時(shí)保持虛擬機(jī)服務(wù)不中斷,避免對(duì)虛擬機(jī)服務(wù)造成的影響,是實(shí)現(xiàn)資源調(diào)度、災(zāi)難備份、在線(xiàn)維護(hù)升級(jí)和節(jié)約電能,提供彈性、可擴(kuò)展和高可用性等必不可少的技術(shù)之一。其中,虛擬機(jī)在線(xiàn)遷移需要考慮內(nèi)存頁(yè)面的遷移、存儲(chǔ)的遷移(即磁盤(pán)塊數(shù)據(jù)的遷移)和網(wǎng)絡(luò)連接的遷移。A)在同一個(gè)云環(huán)境中,源宿主計(jì)算機(jī)和目的宿主計(jì)算機(jī)之間通過(guò)網(wǎng)絡(luò)SAN、NAS等方式共享鏡像文件,只需要傳輸內(nèi)存頁(yè)面;B)在多個(gè)云之間的虛擬機(jī)在線(xiàn)遷移需要考慮內(nèi)存頁(yè)面的遷移、存儲(chǔ)的遷移等。
現(xiàn)有的虛擬機(jī)在線(xiàn)遷移方式可以分為預(yù)拷貝、后拷貝和混合拷貝方式。A)預(yù)拷貝方式:目的虛擬機(jī)啟動(dòng)前完成將待拷貝數(shù)據(jù)拷貝到目的宿主計(jì)算機(jī)的操作;B)后拷貝方式:先只拷貝目的虛擬機(jī)運(yùn)行虛擬機(jī)服務(wù)所必須的數(shù)據(jù),在啟動(dòng)目的虛擬機(jī)后通過(guò)缺塊調(diào)取的方式獲取剩余所需數(shù)據(jù);C)混合拷貝方式:結(jié)合預(yù)拷貝方式與后拷貝方式。
現(xiàn)有的混合拷貝方式分為三個(gè)階段:1)預(yù)拷貝階段:將內(nèi)存頁(yè)數(shù)據(jù)和整個(gè)磁盤(pán)塊數(shù)據(jù)拷貝到目的宿主計(jì)算機(jī);其中,在預(yù)拷貝階段中某個(gè)磁盤(pán)塊數(shù)據(jù)被修改時(shí),則將磁盤(pán)位圖表中該被修改的磁盤(pán)塊標(biāo)記為1;2)停機(jī)拷貝階段:停止源虛擬機(jī)的運(yùn)行,將剩余未拷貝的內(nèi)存頁(yè)數(shù)據(jù)和磁盤(pán)位圖表發(fā)送給目的宿主計(jì)算機(jī),并啟動(dòng)目的虛擬機(jī);3)后拷貝階段:捕獲IO操作,若是對(duì)磁盤(pán)位圖表中標(biāo)記為1的磁盤(pán)塊中數(shù)據(jù)的訪(fǎng)問(wèn),則從源宿主計(jì)算機(jī)請(qǐng)求獲取被修改后的該磁盤(pán)塊中數(shù)據(jù)(即磁盤(pán)臟塊數(shù)據(jù)),更新目的宿主計(jì)算機(jī)中磁盤(pán)塊數(shù)據(jù)并將磁盤(pán)位圖表中該磁盤(pán)塊標(biāo)記置為0,如此直到遷移完成,同時(shí)在后拷貝階段源宿主計(jì)算機(jī)不斷將其它磁盤(pán)臟數(shù)據(jù)塊推送到目的宿主計(jì)算機(jī),并修改磁盤(pán)位圖表中標(biāo)記為0。
可見(jiàn),現(xiàn)有的混合拷貝方式中,在預(yù)拷貝階段需要拷貝整個(gè)磁盤(pán)塊,預(yù)拷貝階段所需時(shí)間較長(zhǎng),導(dǎo)致產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)較多,從而增加了需要重傳的數(shù)據(jù)數(shù)量,降低了虛擬機(jī)在線(xiàn)遷移效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種虛擬機(jī)在線(xiàn)遷移方法、裝置及系統(tǒng),提高了虛擬機(jī)在線(xiàn)遷移效率。
第一方面,本發(fā)明提供一種虛擬機(jī)在線(xiàn)遷移方法,包括:
獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),并將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存,其中,所述磁盤(pán)工作集為預(yù)設(shè)時(shí)間段內(nèi)待訪(fǎng)問(wèn)磁盤(pán)塊的集合;
將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;其中,所述目的宿主計(jì)算機(jī)中運(yùn)行有目的虛擬機(jī);
在所述內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)所述內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式;
根據(jù)所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī);
將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī),其中,所述非磁盤(pán)工作集為所述源虛擬機(jī)中除所述磁盤(pán)工作集以外的磁盤(pán)塊集合。
可選地,所述根據(jù)所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式之前,還包括:
將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存,并將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
可選地,所述確定所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式之前,還包括:
獲取所述磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2;
根據(jù)所述當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度、以及所述停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N;
其中,M和N為大于0的正整數(shù),P1和P2大于0。
可選地,所述確定所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,包括:
M小于或等于N時(shí),執(zhí)行步驟A:停止所述源虛擬機(jī),且將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;或者,
P1小于P2、且M大于N時(shí),繼續(xù)將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;
P1大于或等于P2、且M大于N時(shí),執(zhí)行步驟B:停止所述源虛擬機(jī),將所述磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
可選地,在將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存過(guò)程中,所述方法還包括:
截獲所述磁盤(pán)工作集中已寫(xiě)入所述緩存的磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作;
根據(jù)所述寫(xiě)操作將待寫(xiě)數(shù)據(jù)寫(xiě)入所述緩存中。
可選地,所述獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)之前,還包括:
截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作;
根據(jù)所述IO讀寫(xiě)操作以及工作集選擇算法,確定磁盤(pán)工作集/非工作集信息;其中,所述磁盤(pán)工作集/非工作集信息包括:磁盤(pán)工作集的指示信息以及非磁盤(pán)工作集的指示信息。
第二方面,本發(fā)明提供一種虛擬機(jī)在線(xiàn)遷移裝置,包括:
處理模塊,用于獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),并將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存,其中,所述磁盤(pán)工作集為預(yù)設(shè)時(shí)間段內(nèi)待訪(fǎng)問(wèn)磁盤(pán)塊的集合;
第一傳輸模塊,用于將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;其中,所述目的宿主計(jì)算機(jī)中運(yùn)行有目的虛擬機(jī);
確定模塊,用于在所述內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)所述內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式;
第二傳輸模塊,用于根據(jù)所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī);
第三傳輸模塊,用于將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī),其中,所述非磁盤(pán)工作集為所述源虛擬機(jī)中除所述磁盤(pán)工作集以外的磁盤(pán)塊集合。
可選地,所述裝置,還包括:
第四傳輸模塊,用于將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存,并將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
可選地,所述裝置,還包括:
獲取模塊,用于獲取所述磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2;
計(jì)算模塊,用于根據(jù)所述當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度、以及所述停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N;
其中,M和N為大于0的正整數(shù),P1和P2大于0。
可選地,所述確定模塊具體用于:
M小于或等于N時(shí),執(zhí)行步驟A:停止所述源虛擬機(jī),且將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;或者,
P1小于P2、且M大于N時(shí),繼續(xù)將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;
P1大于或等于P2、且M大于N時(shí),執(zhí)行步驟B:停止所述源虛擬機(jī),將所述磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
可選地,所述處理模塊還用于:
截獲所述磁盤(pán)工作集中已寫(xiě)入所述緩存的磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作;
根據(jù)所述寫(xiě)操作將待寫(xiě)數(shù)據(jù)寫(xiě)入所述緩存中。
可選地,所述裝置,還包括:
截獲模塊,用于截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作;
確定模塊,用于根據(jù)所述IO讀寫(xiě)操作以及工作集選擇算法,確定磁盤(pán)工作集/非工作集信息;其中,所述磁盤(pán)工作集/非工作集信息包括:磁盤(pán)工作集的指示信息以及非磁盤(pán)工作集的指示信息。
第三方面,本發(fā)明提供一種虛擬機(jī)在線(xiàn)遷移系統(tǒng),包括:運(yùn)行源虛擬機(jī)的源宿主計(jì)算機(jī)以及運(yùn)行目的虛擬機(jī)的目的宿主計(jì)算機(jī),其中,所述源宿主計(jì)算機(jī)中包含如上述第二方面中任一項(xiàng)所述的虛擬機(jī)在線(xiàn)遷移裝置。
本發(fā)明中,通過(guò)在預(yù)拷貝階段將源虛擬機(jī)的磁盤(pán)工作集中的磁盤(pán)塊數(shù)據(jù)以及內(nèi)存頁(yè)面數(shù)據(jù)傳輸至目的宿主計(jì)算機(jī);在內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,并根據(jù)磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī);進(jìn)一步地,在后拷貝階段將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī);可見(jiàn),在預(yù)拷貝階段僅需拷貝磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù),所需預(yù)拷貝時(shí)間較短,減少了所產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)數(shù)量,從而減少了需要重傳的數(shù)據(jù)數(shù)量,大大提高了虛擬機(jī)在線(xiàn)遷移效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1A為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法的應(yīng)用場(chǎng)景示意圖;
圖1B為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法實(shí)施例一的流程示意圖;
圖2為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法的應(yīng)用架構(gòu)示意圖;
圖3為本發(fā)明虛擬機(jī)在線(xiàn)遷移裝置實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本申請(qǐng)涉及的磁盤(pán)工作集是指:在預(yù)設(shè)時(shí)間段內(nèi),源虛擬機(jī)的進(jìn)程需要訪(fǎng)問(wèn)的磁盤(pán)塊集合;對(duì)應(yīng)的,本申請(qǐng)涉及的非磁盤(pán)工作集是指:源虛擬機(jī)中除磁盤(pán)工作集以外的磁盤(pán)塊集合。
本申請(qǐng)涉及的內(nèi)存頁(yè)面臟數(shù)據(jù)是指:Linux操作系統(tǒng)是以?xún)?nèi)存頁(yè)作為高速緩存的單位,當(dāng)進(jìn)程修改了高速緩存里的數(shù)據(jù)時(shí),該內(nèi)存頁(yè)就被Linux操作系統(tǒng)內(nèi)核標(biāo)記為內(nèi)存臟頁(yè),該內(nèi)存臟頁(yè)包括的數(shù)據(jù)為內(nèi)存頁(yè)面臟數(shù)據(jù)。
本申請(qǐng)涉及的磁盤(pán)臟塊數(shù)據(jù)是指:在某個(gè)內(nèi)存頁(yè)被Linux操作系統(tǒng)內(nèi)核標(biāo)記為內(nèi)存臟頁(yè)后,Linux操作系統(tǒng)內(nèi)核將會(huì)在合適的時(shí)間將內(nèi)存臟頁(yè)的數(shù)據(jù)(即內(nèi)存頁(yè)面臟數(shù)據(jù))寫(xiě)到磁盤(pán)鏡像中去,以保持高速緩存中的數(shù)據(jù)和磁盤(pán)鏡像中的數(shù)據(jù)一致;在磁盤(pán)鏡像中某個(gè)磁盤(pán)塊數(shù)據(jù)在內(nèi)存頁(yè)中已被修改,但最新數(shù)據(jù)還未寫(xiě)入磁盤(pán)鏡像中對(duì)應(yīng)磁盤(pán)塊中,該磁盤(pán)塊數(shù)據(jù)即為磁盤(pán)臟塊數(shù)據(jù)。
現(xiàn)有的混合拷貝方式中,在預(yù)拷貝階段需要拷貝整個(gè)磁盤(pán)塊,預(yù)拷貝階段所需時(shí)間較長(zhǎng),導(dǎo)致產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)較多,從而增加了需要重傳的數(shù)據(jù)數(shù)量,降低了虛擬機(jī)在線(xiàn)遷移效率。
本申請(qǐng)實(shí)施例提供的虛擬機(jī)在線(xiàn)遷移方法,通過(guò)根據(jù)磁盤(pán)工作集動(dòng)態(tài)劃分預(yù)拷貝階段和后拷貝階段的磁盤(pán)塊數(shù)據(jù)(磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù)作為預(yù)拷貝階段需要拷貝的磁盤(pán)塊,非磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù)作為后拷貝階段的磁盤(pán)塊);可見(jiàn),在預(yù)拷貝階段僅需拷貝磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù),所需預(yù)拷貝時(shí)間較短,減少了所產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)數(shù)量,從而減少了需要重傳的數(shù)據(jù)數(shù)量,大大提高了虛擬機(jī)在線(xiàn)遷移效率。
下面結(jié)合附圖通過(guò)具體實(shí)施例對(duì)本發(fā)明實(shí)施例提供的虛擬機(jī)在線(xiàn)遷移方法、裝置及系統(tǒng)進(jìn)行詳細(xì)說(shuō)明。
圖1A為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法的應(yīng)用場(chǎng)景示意圖,圖1B為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法實(shí)施例一的流程示意圖。如圖1A所示,源宿主計(jì)算機(jī)中運(yùn)行源虛擬機(jī),目的宿主計(jì)算機(jī)中運(yùn)行目的虛擬機(jī)。本實(shí)施例的執(zhí)行主體可以為配置在源宿主計(jì)算機(jī)中的虛擬機(jī)在線(xiàn)遷移裝置,該裝置可以通過(guò)軟件和/或硬件實(shí)現(xiàn)。本實(shí)施例的方案可提高虛擬機(jī)在線(xiàn)遷移效率。如圖1B所示,本實(shí)施例的方法可以包括:
S101、獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),并將預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存。
本步驟中,虛擬機(jī)在線(xiàn)遷移裝置獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),并將預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存,以便等待將該磁盤(pán)塊數(shù)據(jù)傳輸至目的宿主計(jì)算機(jī),其中,磁盤(pán)工作集為預(yù)設(shè)時(shí)間段內(nèi)待訪(fǎng)問(wèn)磁盤(pán)塊的集合??蛇x地,在該磁盤(pán)工作集中有待傳輸?shù)拇疟P(pán)塊數(shù)據(jù)時(shí),緩存中始終保持預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),直至該磁盤(pán)工作集中的所有待傳輸磁盤(pán)塊數(shù)據(jù)傳輸完畢為止,例如,當(dāng)將N個(gè)磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存,當(dāng)其中1個(gè)磁盤(pán)塊數(shù)據(jù)成功傳輸至目的宿主計(jì)算機(jī)時(shí),緩存中剩余N-1個(gè)磁盤(pán)塊數(shù)據(jù),此時(shí)可再將磁盤(pán)工作集中的一個(gè)待傳輸?shù)拇疟P(pán)塊數(shù)據(jù)寫(xiě)入緩存,如此反復(fù),直至該磁盤(pán)工作集中的所有待傳輸磁盤(pán)塊數(shù)據(jù)傳輸完畢為止。
可選地,在將預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存過(guò)程中,虛擬機(jī)在線(xiàn)遷移裝置通過(guò)截獲該磁盤(pán)工作集中已寫(xiě)入緩存的磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作,并根據(jù)該寫(xiě)操作將待寫(xiě)數(shù)據(jù)寫(xiě)入緩存中,例如通過(guò)截獲輸入輸出(Input Output,簡(jiǎn)稱(chēng)IO)讀寫(xiě)操作,若是對(duì)該磁盤(pán)工作集中已寫(xiě)入緩存的磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作,則根據(jù)該寫(xiě)操作將待寫(xiě)數(shù)據(jù)寫(xiě)入緩存中。
S102、將預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,并將源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸。
本步驟中,虛擬機(jī)在線(xiàn)遷移裝置將緩存中的該預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)依次向目的宿主計(jì)算機(jī)(目的宿主計(jì)算機(jī)中運(yùn)行有目的虛擬機(jī))傳輸,在將磁盤(pán)工作集中的所有待傳輸磁盤(pán)塊數(shù)據(jù)依次傳輸至目的宿主計(jì)算機(jī)后,進(jìn)一步地,并將源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,可選地,采用迭代預(yù)拷貝方式將源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,其中,迭代預(yù)拷貝方式是指:第一輪將整個(gè)內(nèi)存頁(yè)面數(shù)據(jù)拷貝至目的宿主計(jì)算機(jī),第二輪只拷貝在第一輪中被修改過(guò)的內(nèi)存頁(yè)面數(shù)據(jù)(即內(nèi)存頁(yè)面臟數(shù)據(jù)),以此類(lèi)推直到內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值,停止拷貝剩余的內(nèi)存頁(yè)面臟數(shù)據(jù)。
可選地,在內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,虛擬機(jī)在線(xiàn)遷移裝置通過(guò)截獲IO讀寫(xiě)操作,并將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)同步到目的宿主計(jì)算機(jī),可選地,通過(guò)將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)先寫(xiě)入緩存,并將已寫(xiě)入緩存中的該磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸。
S103、在內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式。
本步驟中,在內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),虛擬機(jī)在線(xiàn)遷移裝置根據(jù)預(yù)設(shè)策略確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式。
可選地,確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式之前,還包括:
獲取磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2;
根據(jù)當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度、以及停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N;其中,M和N為大于0的正整數(shù),P1和P2大于0。
本實(shí)施例中,虛擬機(jī)在線(xiàn)遷移裝置通過(guò)獲取磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,并根據(jù)當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,分別計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度t1、以及停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N,可選地,t1=M/P2,N=預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2*P2,當(dāng)然,虛擬機(jī)在線(xiàn)遷移裝置還可通過(guò)上述計(jì)算公式的其它變形公式或者其它方式計(jì)算t1和N,本申請(qǐng)實(shí)施例中對(duì)此并不作限制。
可選地,確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,包括:
M小于或等于N時(shí),執(zhí)行步驟A:停止源虛擬機(jī),且將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸;或者,
P1小于P2、且M大于N時(shí),繼續(xù)將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入緩存直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;
P1大于或等于P2、且M大于N時(shí),執(zhí)行步驟B:停止源虛擬機(jī),將磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊,并將源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸。
本實(shí)施例中,虛擬機(jī)在線(xiàn)遷移裝置根據(jù)預(yù)設(shè)策略確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,可選地,i)當(dāng)M小于或等于N時(shí)(即虛擬機(jī)在線(xiàn)遷移裝置能夠在預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2內(nèi)將M個(gè)磁盤(pán)臟塊全部傳輸?shù)侥康乃拗饔?jì)算機(jī)),則執(zhí)行步驟A:停止源虛擬機(jī),且將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸;ii)當(dāng)P1小于P2、且M大于N時(shí)(即若此時(shí)停機(jī)拷貝所需停機(jī)拷貝時(shí)間段長(zhǎng)度t1大于預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2,并且P1小于P2,那么繼續(xù)預(yù)拷貝階段可以使M減少),則繼續(xù)將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入緩存直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;iii)當(dāng)P1大于或等于P2、且M大于N時(shí)(即若此時(shí)停機(jī)拷貝所需停機(jī)拷貝時(shí)間段長(zhǎng)度t1大于預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2,且P1大于或等于P2,繼續(xù)預(yù)拷貝階段并不會(huì)使磁盤(pán)臟塊數(shù)據(jù)減少),則執(zhí)行步驟B:停止源虛擬機(jī),同時(shí)為了停機(jī)拷貝所需停機(jī)拷貝時(shí)間段長(zhǎng)度t1不超過(guò)預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2,將磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊(即將磁盤(pán)工作集位圖表中關(guān)于該磁盤(pán)臟塊對(duì)應(yīng)的標(biāo)識(shí)更新為0),僅將源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,此時(shí)無(wú)需將該磁盤(pán)工作集中的磁盤(pán)臟塊向目的宿主計(jì)算機(jī)傳輸,可在后拷貝階段再進(jìn)行傳輸。
可見(jiàn),虛擬機(jī)在線(xiàn)遷移裝置根據(jù)P1、P2、M、N、t1及t2等的不同情況確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,不僅避免了磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1過(guò)高導(dǎo)致的停機(jī)拷貝時(shí)間段長(zhǎng)度t1過(guò)長(zhǎng)的問(wèn)題,同時(shí)保證了停機(jī)拷貝時(shí)間段長(zhǎng)度t1在預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2的范圍內(nèi),從而避免對(duì)源虛擬機(jī)性能造成過(guò)大影響。
S104、根據(jù)磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī)。
本步驟中,虛擬機(jī)在線(xiàn)遷移裝置根據(jù)磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式(如上述根據(jù)P1、P2、M、N、t1及t2等的不同情況所確定出的拷貝方式),將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī)。
S105、將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī)。
本步驟中,虛擬機(jī)在線(xiàn)遷移裝置在后拷貝階段將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī),其中,非磁盤(pán)工作集為源虛擬機(jī)中除磁盤(pán)工作集以外的磁盤(pán)塊集合;可選地,虛擬機(jī)在線(xiàn)遷移裝置在后拷貝階段還可將剩余未傳輸?shù)拇疟P(pán)塊工作集中磁盤(pán)臟塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī);當(dāng)全部磁盤(pán)塊數(shù)據(jù)全稱(chēng)拷貝至目的宿主計(jì)算機(jī)時(shí),則遷移完成??梢?jiàn),只有磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)可能需要多次傳輸,非磁盤(pán)工作集中的磁盤(pán)塊數(shù)據(jù)只需傳輸一次,減少了需要重傳的數(shù)據(jù)數(shù)量。
本實(shí)施例中,通過(guò)在預(yù)拷貝階段將源虛擬機(jī)的磁盤(pán)工作集中的磁盤(pán)塊數(shù)據(jù)以及內(nèi)存頁(yè)面數(shù)據(jù)傳輸至目的宿主計(jì)算機(jī);在內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,并根據(jù)磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī);進(jìn)一步地,在后拷貝階段將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī);可見(jiàn),在預(yù)拷貝階段僅需拷貝磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù),所需預(yù)拷貝時(shí)間較短,減少了所產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)數(shù)量,從而減少了需要重傳的數(shù)據(jù)數(shù)量,大大提高了虛擬機(jī)在線(xiàn)遷移效率。
可選地,步驟S101之前,還包括:
截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作;
根據(jù)該IO讀寫(xiě)操作以及工作集選擇算法,確定磁盤(pán)工作集/非工作集信息。
本實(shí)施例中,虛擬機(jī)在線(xiàn)遷移裝置在獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)之前,通過(guò)截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作,分別確定出所有IO讀寫(xiě)操作對(duì)應(yīng)的讀寫(xiě)操作信息(例如,操作類(lèi)型、操作的磁盤(pán)塊標(biāo)識(shí)信息等),進(jìn)一步根據(jù)所有IO讀寫(xiě)操作對(duì)應(yīng)的讀寫(xiě)操作信息以及工作集選擇算法,確定出磁盤(pán)工作集/非工作集信息;其中,該磁盤(pán)工作集/非工作集信息包括:磁盤(pán)工作集的指示信息以及非磁盤(pán)工作集的指示信息;可選地,磁盤(pán)工作集/非工作集信息可以磁盤(pán)工作集位圖表形式標(biāo)識(shí),例如,磁盤(pán)工作集位圖表中的某個(gè)磁盤(pán)塊標(biāo)識(shí)對(duì)應(yīng)的數(shù)值為0代表:該磁盤(pán)塊標(biāo)識(shí)對(duì)應(yīng)的磁盤(pán)塊為非磁盤(pán)工作集中的磁盤(pán)塊;磁盤(pán)工作集位圖表中的某個(gè)磁盤(pán)塊標(biāo)識(shí)對(duì)應(yīng)的數(shù)值為1代表:該磁盤(pán)塊標(biāo)識(shí)對(duì)應(yīng)的磁盤(pán)塊為磁盤(pán)工作集中的磁盤(pán)塊。當(dāng)然,磁盤(pán)工作集/非工作集信息還可以通過(guò)其它形式標(biāo)識(shí),本申請(qǐng)實(shí)施例中對(duì)此并不作限制??蛇x地,工作集選擇算法可以采用哈希映射進(jìn)行索引,同時(shí)利用循環(huán)列表實(shí)現(xiàn)先進(jìn)先出,或者還可以采用內(nèi)存的工作集選擇算法(例如利用空間局部性和時(shí)間局部性,采用先進(jìn)先出算法);當(dāng)然,本實(shí)施例涉及的工作集選擇算法還可以采用其它選擇算法,本實(shí)施例中對(duì)此并不作限制。
圖2為本發(fā)明虛擬機(jī)在線(xiàn)遷移方法的應(yīng)用架構(gòu)示意圖。如圖2所示,源宿主計(jì)算機(jī)包括:源內(nèi)存、源內(nèi)存遷移單元、智能停機(jī)拷貝單元、源磁盤(pán)遷移單元、源傳輸單元和源磁盤(pán)鏡像,其中,源磁盤(pán)遷移單元包括:源IO處理子單元、源IO讀寫(xiě)子單元、磁盤(pán)臟塊同步子單元及源磁盤(pán)緩存區(qū);目的宿主計(jì)算機(jī)包括:目的內(nèi)存、目的內(nèi)存遷移單元、目的磁盤(pán)遷移單元、目的傳輸單元和目的磁盤(pán)鏡像,其中,目的磁盤(pán)遷移單元包括:目的IO處理子單元、目的IO讀寫(xiě)子單元及目的磁盤(pán)緩存區(qū)。如圖2所示,在上述實(shí)施例的基礎(chǔ)上,本發(fā)明虛擬機(jī)在線(xiàn)遷移方法實(shí)施例二中對(duì)每個(gè)單元的功能進(jìn)行詳細(xì)描述。
本實(shí)施例虛擬機(jī)在線(xiàn)遷移方法包括:遷移前階段和遷移階段,其中,遷移階段包括:預(yù)拷貝階段、停機(jī)拷貝階段及后拷貝階段,本實(shí)施例中按照階段順序?qū)Ω鱾€(gè)單元的功能進(jìn)行相應(yīng)描述。
1)遷移前階段
源IO處理子單元用于截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作,分別確定出所有IO讀寫(xiě)操作對(duì)應(yīng)的讀寫(xiě)操作信息(例如,操作類(lèi)型、操作的磁盤(pán)塊標(biāo)識(shí)信息等),進(jìn)一步根據(jù)所有IO讀寫(xiě)操作對(duì)應(yīng)的讀寫(xiě)操作信息以及工作集選擇算法,確定出磁盤(pán)工作集/非工作集信息,可選地,磁盤(pán)工作集/非工作集信息可以磁盤(pán)工作集位圖表形式標(biāo)識(shí)。
2)預(yù)拷貝階段
源IO讀寫(xiě)子單元用于根據(jù)磁盤(pán)工作集位圖表將磁盤(pán)工作集中的磁盤(pán)塊數(shù)據(jù)寫(xiě)入源磁盤(pán)緩存區(qū),可選地,源IO讀寫(xiě)子單元查看磁盤(pán)工作集位圖表和已遷移位圖表,若磁盤(pán)工作集位圖表中磁盤(pán)工作集中的某個(gè)磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)為1且已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)為0(表示該磁盤(pán)塊數(shù)據(jù)未被遷移),則源IO讀寫(xiě)子單元將該磁盤(pán)塊數(shù)據(jù)寫(xiě)入源磁盤(pán)緩存區(qū),并將已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)修改為1(表示該磁盤(pán)塊數(shù)據(jù)已被遷移);當(dāng)磁盤(pán)工作集中的所有待傳輸磁盤(pán)塊數(shù)據(jù)均傳輸至目的宿主計(jì)算機(jī)后,通知源內(nèi)存遷移單元,以使源內(nèi)存遷移單元開(kāi)始遷移源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)。
在源IO讀寫(xiě)子單元將磁盤(pán)工作集中的磁盤(pán)塊數(shù)據(jù)寫(xiě)入源磁盤(pán)緩存區(qū)中,源IO處理子單元用于截獲系統(tǒng)的所有IO讀寫(xiě)操作,分別確定出所有IO讀寫(xiě)操作對(duì)應(yīng)的讀寫(xiě)操作信息,并判斷是否為對(duì)磁盤(pán)工作集中已傳輸磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作,若是,則將該讀寫(xiě)操作信息及待寫(xiě)數(shù)據(jù)發(fā)送給磁盤(pán)臟塊同步子單元;若否,則不作處理。
磁盤(pán)臟塊同步子單元用于接收源IO處理子單元發(fā)送的讀寫(xiě)操作信息及待寫(xiě)數(shù)據(jù),并查看磁盤(pán)工作集位圖表和已遷移位圖表,A)若磁盤(pán)工作集位圖表中磁盤(pán)工作集中的某個(gè)磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)以及已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)都為1(即該磁盤(pán)塊數(shù)據(jù)為磁盤(pán)臟塊數(shù)據(jù)),則將讀寫(xiě)操作信息及待寫(xiě)數(shù)據(jù)寫(xiě)入源磁盤(pán)緩存區(qū),等待傳輸至目的宿主計(jì)算機(jī);B)若磁盤(pán)工作集位圖表中磁盤(pán)工作集中的某個(gè)磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)為1且已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)為0,則表示該磁盤(pán)塊還沒(méi)有遷移,暫時(shí)不需要同步。同時(shí),磁盤(pán)臟塊同步子單元還用于:更新磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1和記錄當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M等。
源內(nèi)存遷移單元用于采用迭代預(yù)拷貝方式將源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,直到內(nèi)存頁(yè)面數(shù)據(jù)收斂達(dá)到預(yù)設(shè)閾值時(shí),通知智能停機(jī)拷貝單元,以確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式。
在源內(nèi)存遷移單元將源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸過(guò)程中,源IO處理子單元還用于截獲系統(tǒng)的所有IO讀寫(xiě)操作,并將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)同步到目的宿主計(jì)算機(jī)。
3)停機(jī)拷貝階段
智能停機(jī)拷貝單元用于查詢(xún)磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,并計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度t1、以及停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N,其中,計(jì)算t1和N的具體方式可參照上述實(shí)施例中相應(yīng)部分,此處不再贅述;i)當(dāng)M小于或等于N時(shí),執(zhí)行步驟A:停止源虛擬機(jī),且將磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸;ii)當(dāng)P1小于P2、且M大于N時(shí),繼續(xù)預(yù)拷貝階段(即將磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入緩存)直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;iii)當(dāng)P1大于或等于P2、且M大于N時(shí),執(zhí)行步驟B:停止源虛擬機(jī),將磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊(即將磁盤(pán)工作集位圖表中關(guān)于該磁盤(pán)臟塊對(duì)應(yīng)的標(biāo)識(shí)更新為0),并將源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸以及將關(guān)于該磁盤(pán)臟塊對(duì)應(yīng)的標(biāo)識(shí)更新通知目的宿主計(jì)算機(jī)。
智能停機(jī)拷貝單元還用于在停機(jī)拷貝階段結(jié)束時(shí),通知目的宿主計(jì)算機(jī)和/或通知源IO讀寫(xiě)子單元啟動(dòng)后拷貝階段。
可選地,智能停機(jī)拷貝單元可向磁盤(pán)臟塊同步子單元查詢(xún)P1和M;可選地,智能停機(jī)拷貝單元中預(yù)先存儲(chǔ)有P2以及預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2。
4)后拷貝階段
源IO讀寫(xiě)子單元用于將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)侥康乃拗饔?jì)算機(jī),可選地,通過(guò)查看磁盤(pán)工作集位圖表和已遷移位圖表,若磁盤(pán)工作集位圖表中磁盤(pán)工作集中的某個(gè)磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)以及已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)都為0,則將該磁盤(pán)塊數(shù)據(jù)寫(xiě)入源磁盤(pán)緩存區(qū),傳輸至目的宿主計(jì)算機(jī),并將已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)修改為1(表示該磁盤(pán)塊數(shù)據(jù)已被遷移)。
目的IO處理子單元用于截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作,判斷是否對(duì)未遷移磁盤(pán)塊數(shù)據(jù)的讀/寫(xiě)操作;A)若是讀操作,則向源宿主計(jì)算機(jī)的源IO處理子單元請(qǐng)求所需磁盤(pán)塊數(shù)據(jù),以使源IO處理子單元請(qǐng)求將所需磁盤(pán)塊數(shù)據(jù)盡快傳輸至目的宿主計(jì)算機(jī);B)若是寫(xiě)操作,則將待寫(xiě)數(shù)據(jù)直接寫(xiě)入目的磁盤(pán)緩存區(qū),并將已遷移位圖表中該磁盤(pán)塊數(shù)據(jù)對(duì)應(yīng)的標(biāo)識(shí)更新為1(表示該磁盤(pán)塊數(shù)據(jù)已被遷移);C)若是對(duì)已遷移磁盤(pán)塊數(shù)據(jù)的讀/寫(xiě)操作,則直接進(jìn)行讀/寫(xiě)。
目的IO讀寫(xiě)子單元用于讀取目的磁盤(pán)緩存區(qū)中的磁盤(pán)塊數(shù)據(jù)寫(xiě)入目的磁盤(pán)鏡像中,并將目的IO處理子單元請(qǐng)求的數(shù)據(jù)寫(xiě)入目的磁盤(pán)鏡像中。
可選地,在上述各個(gè)階段,源IO處理子單元還用于實(shí)時(shí)更新磁盤(pán)工作集/非工作集信息。
綜上所述,本申請(qǐng)實(shí)施例提供的虛擬機(jī)在線(xiàn)遷移方法,通過(guò)根據(jù)磁盤(pán)工作集動(dòng)態(tài)劃分預(yù)拷貝階段和后拷貝階段的磁盤(pán)塊數(shù)據(jù)(磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù)作為預(yù)拷貝階段需要拷貝的磁盤(pán)塊,非磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù)作為后拷貝階段的磁盤(pán)塊),因此,在預(yù)拷貝階段僅需拷貝磁盤(pán)工作集內(nèi)的磁盤(pán)塊數(shù)據(jù),所需預(yù)拷貝時(shí)間較短,在實(shí)現(xiàn)較小缺塊率的前提下,減少了所產(chǎn)生的磁盤(pán)臟塊數(shù)據(jù)數(shù)量,從而減少了需要重傳的數(shù)據(jù)數(shù)量,大大提高了虛擬機(jī)在線(xiàn)遷移效率;進(jìn)一步地,根據(jù)P1、P2、M、N、t1及t2等的不同情況確定磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,不僅避免了磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1過(guò)高導(dǎo)致的停機(jī)拷貝時(shí)間段長(zhǎng)度t1過(guò)長(zhǎng)的問(wèn)題,同時(shí)保證了停機(jī)拷貝時(shí)間段長(zhǎng)度t1在預(yù)設(shè)最大停機(jī)拷貝時(shí)間段長(zhǎng)度t2的范圍內(nèi),從而避免對(duì)源虛擬機(jī)性能造成過(guò)大影響。
圖3為本發(fā)明虛擬機(jī)在線(xiàn)遷移裝置實(shí)施例一的結(jié)構(gòu)示意圖。如圖3所示,本實(shí)施例提供的虛擬機(jī)在線(xiàn)遷移裝置30,包括:
處理模塊301,用于獲取源虛擬機(jī)的磁盤(pán)工作集中預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù),并將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)寫(xiě)入緩存,其中,所述磁盤(pán)工作集為預(yù)設(shè)時(shí)間段內(nèi)待訪(fǎng)問(wèn)磁盤(pán)塊的集合;
第一傳輸模塊302,用于將所述預(yù)設(shè)個(gè)數(shù)的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;其中,所述目的宿主計(jì)算機(jī)中運(yùn)行有目的虛擬機(jī);
確定模塊303,用于在所述內(nèi)存頁(yè)面數(shù)據(jù)傳輸過(guò)程中,當(dāng)所述內(nèi)存頁(yè)面臟數(shù)據(jù)收斂到預(yù)設(shè)閾值時(shí),確定所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式;
第二傳輸模塊304,用于根據(jù)所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)拷貝方式,將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)、和/或、所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī);
第三傳輸模塊305,用于將非磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)傳輸?shù)剿瞿康乃拗饔?jì)算機(jī),其中,所述非磁盤(pán)工作集為所述源虛擬機(jī)中除所述磁盤(pán)工作集以外的磁盤(pán)塊集合。
進(jìn)一步地,虛擬機(jī)在線(xiàn)遷移裝置30還包括:
第四傳輸模塊,用于將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存,并將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
進(jìn)一步地,虛擬機(jī)在線(xiàn)遷移裝置30還包括:
獲取模塊,用于獲取所述磁盤(pán)工作集的磁盤(pán)臟塊數(shù)據(jù)產(chǎn)生率P1、當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2;
計(jì)算模塊,用于根據(jù)所述當(dāng)前所述磁盤(pán)工作集中剩余的磁盤(pán)臟塊個(gè)數(shù)M、以及所述磁盤(pán)工作集的磁盤(pán)塊數(shù)據(jù)向目的宿主計(jì)算機(jī)傳輸?shù)膫鬏斔俾蔖2,計(jì)算停機(jī)拷貝時(shí)間段長(zhǎng)度、以及所述停機(jī)拷貝時(shí)間段內(nèi)最大剩余磁盤(pán)臟塊個(gè)數(shù)N;
其中,M和N為大于0的正整數(shù),P1和P2大于0。
進(jìn)一步地,所述確定模塊303具體用于:
M小于或等于N時(shí),執(zhí)行步驟A:停止所述源虛擬機(jī),且將所述磁盤(pán)工作集中磁盤(pán)臟塊數(shù)據(jù)和所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸;或者,
P1小于P2、且M大于N時(shí),繼續(xù)將所述磁盤(pán)工作集中的磁盤(pán)臟塊數(shù)據(jù)寫(xiě)入所述緩存直至在預(yù)設(shè)超時(shí)時(shí)間段內(nèi)M小于或等于N時(shí),執(zhí)行步驟A;否則,執(zhí)行步驟B;
P1大于或等于P2、且M大于N時(shí),執(zhí)行步驟B:停止所述源虛擬機(jī),將所述磁盤(pán)工作集中的磁盤(pán)臟塊變更為非磁盤(pán)工作集的磁盤(pán)塊,并將所述源虛擬機(jī)的內(nèi)存頁(yè)面臟數(shù)據(jù)向所述目的宿主計(jì)算機(jī)傳輸。
進(jìn)一步地,所述處理模塊301還用于:
截獲所述磁盤(pán)工作集中已寫(xiě)入所述緩存的磁盤(pán)數(shù)據(jù)塊的寫(xiě)操作;
根據(jù)所述寫(xiě)操作將待寫(xiě)數(shù)據(jù)寫(xiě)入所述緩存中。
進(jìn)一步地,虛擬機(jī)在線(xiàn)遷移裝置30還包括:
截獲模塊,用于截獲預(yù)設(shè)時(shí)間段內(nèi)的所有IO讀寫(xiě)操作;
確定模塊,用于根據(jù)所述IO讀寫(xiě)操作以及工作集選擇算法,確定磁盤(pán)工作集/非工作集信息;其中,所述磁盤(pán)工作集/非工作集信息包括:磁盤(pán)工作集的指示信息以及非磁盤(pán)工作集的指示信息。
可選地,本實(shí)施例的虛擬機(jī)在線(xiàn)遷移裝置中各模塊的功能可以通過(guò)上述圖2所示的源宿主計(jì)算機(jī)中的相應(yīng)單元實(shí)現(xiàn),具體實(shí)現(xiàn)方式詳見(jiàn)上述本發(fā)明虛擬機(jī)在線(xiàn)遷移方法實(shí)施例二,此處不再贅述。
本實(shí)施例的虛擬機(jī)在線(xiàn)遷移裝置,可以用于執(zhí)行本發(fā)明上述虛擬機(jī)在線(xiàn)遷移方法任意實(shí)施例中的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類(lèi)似,此處不再贅述。
本發(fā)明實(shí)施例還提供一種虛擬機(jī)在線(xiàn)遷移系統(tǒng),參照?qǐng)D1A所示,本實(shí)施例提供的虛擬機(jī)在線(xiàn)遷移系統(tǒng),包括:運(yùn)行源虛擬機(jī)的源宿主計(jì)算機(jī)以及運(yùn)行目的虛擬機(jī)的目的宿主計(jì)算機(jī),其中,所述源宿主計(jì)算機(jī)中包含上述虛擬機(jī)在線(xiàn)遷移裝置實(shí)施例一中所述的虛擬機(jī)在線(xiàn)遷移裝置,對(duì)應(yīng)地,可以執(zhí)行本發(fā)明上述虛擬機(jī)在線(xiàn)遷移方法任意實(shí)施例中的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類(lèi)似,此處不再贅述。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本領(lǐng)域技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:本文中涉及的第一、第二等各種數(shù)字編號(hào)僅為描述方便進(jìn)行的區(qū)分,并不用來(lái)限制本發(fā)明實(shí)施例的范圍。
本領(lǐng)域普通技術(shù)人員可以理解,在本發(fā)明的各種實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過(guò)程構(gòu)成任何限定。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。