一種數(shù)據(jù)流的遷移方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)流的遷移方法和設(shè)備。
【背景技術(shù)】
[0002]虛擬化技術(shù)作為云計(jì)算的一個(gè)重要支撐技術(shù),已經(jīng)成為數(shù)據(jù)中心或者云環(huán)境下的基本資源管理技術(shù)。
[0003]網(wǎng)絡(luò)功能虛擬化(英文:NetworkFunct1n Virtualizat1n,縮寫(xiě):NFV)是一種計(jì)算機(jī)資源的抽象表示方法,目標(biāo)是在通用計(jì)算機(jī)上運(yùn)行網(wǎng)絡(luò)功能。網(wǎng)絡(luò)功能虛擬化能夠?qū)崿F(xiàn)計(jì)算機(jī)資源的共享,并且允許多個(gè)虛擬化網(wǎng)絡(luò)功能(英文:virtual Network Funct1n,縮寫(xiě):vNF)實(shí)例(例如:虛擬機(jī)(英文:Virtual Machine,縮寫(xiě):VM))在一個(gè)物理計(jì)算機(jī)上并行運(yùn)行,實(shí)現(xiàn)了物理資源的高效使用。
[0004]虛擬機(jī)的遷移是網(wǎng)絡(luò)功能虛擬化的重要技術(shù)之一。虛擬機(jī)的動(dòng)態(tài)遷移(英文:livemigrat1n),又稱為虛擬機(jī)的在線遷移,是指在源虛擬機(jī)與目標(biāo)虛擬機(jī)之間啟動(dòng)遷移操作時(shí),源虛擬機(jī)的對(duì)外服務(wù)不發(fā)生中斷。也就是說(shuō),在動(dòng)態(tài)遷移的初始階段,服務(wù)仍在源虛擬機(jī)上運(yùn)行;隨著源虛擬機(jī)與目標(biāo)虛擬機(jī)間遷移操作的進(jìn)行,當(dāng)目標(biāo)虛擬機(jī)上有了足夠的系統(tǒng)運(yùn)行資源后,源虛擬機(jī)上運(yùn)行的服務(wù)經(jīng)過(guò)一個(gè)短暫的切換時(shí)間,切換至目標(biāo)虛擬機(jī)上繼續(xù)運(yùn)行,此時(shí)該服務(wù)在源虛擬機(jī)上的操作被終止。由于服務(wù)切換時(shí)間短暫,使得用戶感覺(jué)不到動(dòng)態(tài)遷移過(guò)程中服務(wù)執(zhí)行出現(xiàn)的停頓。
[0005]通常,虛擬機(jī)間采用動(dòng)態(tài)遷移方式的比較常見(jiàn)。目前,動(dòng)態(tài)遷移的研究和應(yīng)用主要集中在局域網(wǎng)環(huán)境中,內(nèi)存數(shù)據(jù)和中央處理器(英文:central processing unit,縮寫(xiě):CPU)狀態(tài)是動(dòng)態(tài)遷移過(guò)程中需要被遷移的主要數(shù)據(jù)。
[0006]其中,內(nèi)存數(shù)據(jù)是指虛擬機(jī)的內(nèi)存中的數(shù)據(jù),可以是CPU中計(jì)算需要的數(shù)據(jù),也可以是需要存儲(chǔ)在存儲(chǔ)設(shè)備中的數(shù)據(jù)等等,通常以頁(yè)為單位進(jìn)行存儲(chǔ)。
[0007]CPU狀態(tài)是指VM的CPU中運(yùn)行的進(jìn)程和啟動(dòng)的服務(wù)等。
[0008]內(nèi)存數(shù)據(jù)和CPU狀態(tài)在虛擬機(jī)間遷移的階段包括:推送復(fù)制階段、停機(jī)拷貝階段和按需復(fù)制階段。
[0009]其中,推送復(fù)制階段:在源虛擬機(jī)與目標(biāo)虛擬機(jī)之間啟動(dòng)遷移時(shí),源虛擬機(jī)繼續(xù)運(yùn)行,虛擬機(jī)監(jiān)視器(英文:virtual machine monitor,縮寫(xiě):VMM)將源虛擬機(jī)中已產(chǎn)生的內(nèi)存數(shù)據(jù)和正在修改的內(nèi)存數(shù)據(jù)復(fù)制到目標(biāo)虛擬機(jī)上。
[0010]為了保證源虛擬機(jī)與目標(biāo)虛擬機(jī)內(nèi)存數(shù)據(jù)的一致性,源虛擬機(jī)在推送復(fù)制內(nèi)存數(shù)據(jù)的過(guò)程中,接收到待處理的數(shù)據(jù),并對(duì)該數(shù)據(jù)進(jìn)行處理導(dǎo)致已復(fù)制過(guò)的內(nèi)存數(shù)據(jù)發(fā)生變化,此時(shí)VMM將發(fā)生變化后的內(nèi)存數(shù)據(jù)發(fā)送給目標(biāo)虛擬機(jī)。
[0011]停機(jī)拷貝階段:在源虛擬機(jī)停止運(yùn)行時(shí),VMM將發(fā)生剩余的變化后的內(nèi)存數(shù)據(jù)拷貝至目標(biāo)虛擬機(jī)。
[0012]按需復(fù)制階段:目標(biāo)虛擬機(jī)啟動(dòng)運(yùn)行后,對(duì)接收到的數(shù)據(jù)進(jìn)行處理時(shí),發(fā)現(xiàn)內(nèi)存數(shù)據(jù)中缺少了處理該數(shù)據(jù)需要的內(nèi)存數(shù)據(jù),此時(shí)通過(guò)內(nèi)存數(shù)據(jù)缺失的方式從源虛擬機(jī)中復(fù)制得到處理該數(shù)據(jù)需要的內(nèi)存數(shù)據(jù)。
[0013]其中,停機(jī)拷貝和按需復(fù)制方式屬于推送復(fù)制方式的補(bǔ)充方式。動(dòng)態(tài)遷移主要采用推送復(fù)制的方式完成源虛擬機(jī)與目標(biāo)虛擬機(jī)之間的內(nèi)存數(shù)據(jù)遷移,也就意味著只要源虛擬機(jī)中內(nèi)存數(shù)據(jù)發(fā)生變化,那么源虛擬機(jī)就將發(fā)生變化的內(nèi)存數(shù)據(jù)發(fā)送給目標(biāo)虛擬機(jī)。
[0014]由此可見(jiàn),目前虛擬機(jī)的遷移所采用的動(dòng)態(tài)遷移方式,只要源虛擬機(jī)接收到待處理的數(shù)據(jù),那么源虛擬機(jī)中內(nèi)存數(shù)據(jù)將發(fā)生變化,這樣就增加了源虛擬機(jī)向目標(biāo)虛擬機(jī)發(fā)送發(fā)生變化的內(nèi)存數(shù)據(jù)的次數(shù),影響源虛擬機(jī)與目標(biāo)虛擬機(jī)之間的內(nèi)存數(shù)據(jù)遷移性能。
【發(fā)明內(nèi)容】
[0015]有鑒于此,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)流的遷移方法和設(shè)備,用于解決目前動(dòng)態(tài)遷移在應(yīng)用時(shí)出現(xiàn)的內(nèi)存數(shù)據(jù)發(fā)送頻繁導(dǎo)致遷移性能降低的問(wèn)題。
[0016]第一方面,本發(fā)明提供了一種數(shù)據(jù)流的遷移方法,包括:
[0017]在確定源虛擬機(jī)和目標(biāo)虛擬機(jī)之間啟動(dòng)遷移時(shí),確定用于處理數(shù)據(jù)流遷移的靜默時(shí)間;并
[0018]在所述靜默時(shí)間內(nèi),接收交換節(jié)點(diǎn)發(fā)送的包含了數(shù)據(jù)流標(biāo)識(shí)的報(bào)文;
[0019]根據(jù)接收到的所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)和數(shù)據(jù)流的遷移策略,將所述報(bào)文發(fā)送至所述目標(biāo)虛擬機(jī)。
[0020]在本發(fā)明第一方面可能的實(shí)施方式中,第一種可能的實(shí)施方式,根據(jù)接收到的所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)和數(shù)據(jù)流的遷移策略,將所述報(bào)文發(fā)送至所述目標(biāo)虛擬機(jī),包括:
[0021]判斷接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)是否存在于第一數(shù)據(jù)流狀態(tài)表中,其中,所述第一數(shù)據(jù)流狀態(tài)表中包含了源虛擬機(jī)正在處理的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識(shí);
[0022]當(dāng)判斷結(jié)果是接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)不存在于所述第一數(shù)據(jù)流狀態(tài)表中時(shí),將所述報(bào)文發(fā)送至所述目標(biāo)虛擬機(jī)。
[0023]在本發(fā)明第一方面的第一種可能的實(shí)施方式中,第二種可能的實(shí)施方式,所述方法還包括:
[0024]當(dāng)判斷結(jié)果是接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)存在于所述第一數(shù)據(jù)流狀態(tài)表中時(shí),將所述報(bào)文發(fā)送至所述源虛擬機(jī)。
[0025]在本發(fā)明第一方面可能的實(shí)施方式中,或者在本發(fā)明第一方面的第一種可能的實(shí)施方式中,或者在本發(fā)明第一方面的第二種可能的實(shí)施方式中,第三種可能的實(shí)施方式,所述方法還包括:
[0026]將所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)增加至第二數(shù)據(jù)流狀態(tài)表中,其中,所述第二數(shù)據(jù)流狀態(tài)表包含了目標(biāo)虛擬機(jī)正在處理的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識(shí)。
[0027]在本發(fā)明第一方面的第三種可能的實(shí)施方式中,第四種可能的實(shí)施方式,在將所述報(bào)文發(fā)送至所述源虛擬機(jī)之后,所述方法還包括:
[0028]在所述靜默時(shí)間結(jié)束時(shí),確定所述源虛擬機(jī)尚未處理結(jié)束的數(shù)據(jù)流標(biāo)識(shí);
[0029]將確定的所述數(shù)據(jù)流標(biāo)識(shí)移動(dòng)至所述第二數(shù)據(jù)流狀態(tài)表中,并將所述源虛擬機(jī)中包含的與所述數(shù)據(jù)流標(biāo)識(shí)相關(guān)聯(lián)的內(nèi)存數(shù)據(jù)遷移至所述目標(biāo)虛擬機(jī)中。
[0030]第二方面,本發(fā)明提供了一種數(shù)據(jù)流的遷移設(shè)備,包括:
[0031]確定模塊,用于在確定源虛擬機(jī)和目標(biāo)虛擬機(jī)之間啟動(dòng)遷移時(shí),確定用于處理數(shù)據(jù)流遷移的靜默時(shí)間;
[0032]接收模塊,用于在所述確定模塊確定的所述靜默時(shí)間內(nèi),接收交換節(jié)點(diǎn)發(fā)送的包含了數(shù)據(jù)流標(biāo)識(shí)的報(bào)文;
[0033]發(fā)送模塊,用于根據(jù)所述接收模塊接收到的所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)和數(shù)據(jù)流的遷移策略,將所述報(bào)文發(fā)送至所述目標(biāo)虛擬機(jī)。
[0034]在本發(fā)明第二方面可能的實(shí)施方式中,第一種可能的實(shí)施方式,所述發(fā)送模塊,具體用于判斷所述接收模塊接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)是否存在于第一數(shù)據(jù)流狀態(tài)表中,其中,所述第一數(shù)據(jù)流狀態(tài)表中包含了源虛擬機(jī)正在處理的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識(shí);
[0035]當(dāng)判斷結(jié)果是接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)不存在于所述第一數(shù)據(jù)流狀態(tài)表中時(shí),將所述報(bào)文發(fā)送至所述目標(biāo)虛擬機(jī)。
[0036]在本發(fā)明第一方面的第一種可能的實(shí)施方式中,第二種可能的實(shí)施方式,所述發(fā)送模塊,還用于當(dāng)判斷結(jié)果是所述接收模塊接收到所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)存在于所述第一數(shù)據(jù)流狀態(tài)表中時(shí),將所述報(bào)文發(fā)送至所述源虛擬機(jī)。
[0037]在本發(fā)明第一方面可能的實(shí)施方式中,或者在本發(fā)明第一方面的第一種可能的實(shí)施方式中,或者在本發(fā)明第一方面的第二種可能的實(shí)施方式中,第三種可能的實(shí)施方式,所述遷移設(shè)備還包括:
[0038]修改模塊,用于將所述接收模塊接收到的所述報(bào)文中包含的數(shù)據(jù)流標(biāo)識(shí)增加至第二數(shù)據(jù)流狀態(tài)表中,其中,所述第二數(shù)據(jù)流狀態(tài)表包含了目標(biāo)虛擬機(jī)正在處理的數(shù)據(jù)流的數(shù)據(jù)流標(biāo)識(shí)。
[0039]在本發(fā)明第一方面的第三種可能的實(shí)施方式中,第四種可能的實(shí)施方式,所述遷移設(shè)備還包括:
[0040]遷移模塊,用于在所述發(fā)送模塊將所述報(bào)文發(fā)送至所述源虛擬機(jī)之后,在所述確定模塊確定的所述靜默時(shí)間結(jié)束時(shí),確定所述源虛擬機(jī)尚未處理結(jié)束的數(shù)據(jù)流標(biāo)識(shí);將確定的所述數(shù)據(jù)流標(biāo)識(shí)移動(dòng)至所述第二數(shù)據(jù)流狀態(tài)表中,并將所述源虛擬機(jī)中包含的與所述數(shù)據(jù)流標(biāo)識(shí)相關(guān)聯(lián)的內(nèi)存數(shù)據(jù)遷移至所述目標(biāo)虛擬機(jī)