一種虛擬機(jī)間數(shù)據(jù)遷移的方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無(wú)線(xiàn)通信技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)間數(shù)據(jù)遷移的方法和設(shè)備。
【背景技術(shù)】
[0002]虛擬機(jī)是云計(jì)算平臺(tái)(尤其是基于IaaS模式的服務(wù)平臺(tái))的一種重要資源,支持虛擬機(jī)在不同物理主機(jī)上進(jìn)行動(dòng)態(tài)遷移是云計(jì)算平臺(tái)必須具備的基礎(chǔ)功能之一。
[0003]虛擬機(jī)熱遷移技術(shù)研究的關(guān)鍵問(wèn)題在于保證遷移前后虛擬機(jī)數(shù)據(jù)存儲(chǔ)和運(yùn)行狀態(tài)的完整性和一致性。實(shí)現(xiàn)服務(wù)在虛擬機(jī)內(nèi)存遷移過(guò)程中完全不受影響,是此類(lèi)技術(shù)研究的最大挑戰(zhàn)。
[0004]目前解決虛擬機(jī)熱遷移問(wèn)題的技術(shù)方案主要包括以下四個(gè)關(guān)鍵步驟:1、在源虛擬機(jī)和目標(biāo)虛擬機(jī)之間建立連接;2、傳送虛擬機(jī)間的配置信息和設(shè)備信息;3、暫?;蛘邟炱鹪刺摂M機(jī)并將源虛擬機(jī)的當(dāng)前狀態(tài)信息發(fā)送給目標(biāo)虛擬機(jī);4、啟動(dòng)目標(biāo)虛擬機(jī)處理業(yè)務(wù)。
[0005]經(jīng)研究發(fā)現(xiàn),目前解決虛擬機(jī)熱遷移問(wèn)題的技術(shù)方案存在以下問(wèn)題:通過(guò)暫?;蛘邟炱鹪刺摂M機(jī)的方式,使得源虛擬動(dòng)態(tài)的內(nèi)存運(yùn)行狀態(tài)轉(zhuǎn)化為可遷移的靜止數(shù)據(jù),這樣從源虛擬機(jī)掛起到目標(biāo)虛擬機(jī)重啟這一段時(shí)間內(nèi)存在數(shù)據(jù)丟失的風(fēng)險(xiǎn),并且使得目標(biāo)虛擬機(jī)重啟之后一段時(shí)間內(nèi)業(yè)務(wù)處理壓力較大。
[0006]因此,亟需一種虛擬機(jī)間數(shù)據(jù)遷移的方法,用于解決目前虛擬機(jī)熱遷移問(wèn)題的技術(shù)方案中存在的數(shù)據(jù)丟失、增加目標(biāo)虛擬機(jī)業(yè)務(wù)處理壓力的問(wèn)題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例提供了一種虛擬機(jī)間數(shù)據(jù)遷移的方法和設(shè)備,用于解決目前虛擬機(jī)熱遷移問(wèn)題的技術(shù)方案中存在的數(shù)據(jù)丟失、增加目標(biāo)虛擬機(jī)業(yè)務(wù)處理壓力的問(wèn)題。
[0008]一種虛擬機(jī)間數(shù)據(jù)遷移的方法,包括:
[0009]在確定與目標(biāo)虛擬機(jī)間啟動(dòng)數(shù)據(jù)遷移時(shí),確定當(dāng)前內(nèi)存數(shù)據(jù)信息和系統(tǒng)狀態(tài)信息,并將包含了所述內(nèi)存數(shù)據(jù)信息和所述系統(tǒng)狀態(tài)信息的遷移日志發(fā)送給所述目標(biāo)虛擬機(jī),使得所述目標(biāo)虛擬機(jī)根據(jù)所述遷移日志獲取內(nèi)存數(shù)據(jù)信息和系統(tǒng)狀態(tài)信息;
[0010]檢測(cè)在向所述目標(biāo)虛擬機(jī)執(zhí)行數(shù)據(jù)遷移的過(guò)程中接收到的待執(zhí)行任務(wù)的類(lèi)型信息,并根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略。
[0011]所述類(lèi)型信息包含了本地進(jìn)程任務(wù)和遠(yuǎn)程任務(wù)請(qǐng)求,其中,所述本地進(jìn)程任務(wù)中至少包含了執(zhí)行本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)和用戶(hù)設(shè)備提交的新業(yè)務(wù)請(qǐng)求,所述遠(yuǎn)程任務(wù)請(qǐng)求中至少包含了所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求、所述目標(biāo)虛擬機(jī)發(fā)起的更新遷移日志請(qǐng)求以及所述目標(biāo)虛擬機(jī)發(fā)起的遷移終止請(qǐng)求。
[0012]根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略,包括:
[0013]當(dāng)檢測(cè)到的類(lèi)型信息是本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)時(shí),檢測(cè)當(dāng)前內(nèi)存數(shù)據(jù)處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)的能力,并判斷處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)是否能夠引起所述內(nèi)存數(shù)據(jù)的變化;
[0014]在判斷結(jié)果是處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)能夠引起所述內(nèi)存數(shù)據(jù)的變化時(shí),掛起所述任務(wù)、并保存所述任務(wù)對(duì)應(yīng)的進(jìn)程,并向所述目標(biāo)虛擬機(jī)發(fā)送同步遷移指令,其中,所述同步遷移指令中包含了掛起的所述任務(wù);
[0015]在判斷結(jié)果是處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)不能夠引起所述內(nèi)存數(shù)據(jù)的變化時(shí),處理所述任務(wù),更新系統(tǒng)狀態(tài),并將更新后的系統(tǒng)狀態(tài)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0016]根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略,包括:
[0017]當(dāng)檢測(cè)到的類(lèi)型信息是用戶(hù)設(shè)備提交的新業(yè)務(wù)請(qǐng)求時(shí),檢測(cè)處理所述新業(yè)務(wù)請(qǐng)求需要的進(jìn)程狀態(tài);
[0018]在檢測(cè)得到的進(jìn)程狀態(tài)是本地進(jìn)程時(shí),將所述新業(yè)務(wù)請(qǐng)求添加至處理本地進(jìn)程任務(wù)隊(duì)列中;
[0019]在檢測(cè)得到的進(jìn)程狀態(tài)是遠(yuǎn)程進(jìn)程時(shí),將接收到的所述業(yè)務(wù)請(qǐng)求的原始數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0020]根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略,包括:
[0021]當(dāng)檢測(cè)到的類(lèi)型信息是所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求時(shí),確定所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)所屬進(jìn)程;
[0022]判斷確定的所述進(jìn)程地址空間中是否包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù);
[0023]在判斷結(jié)果是確定的所述進(jìn)程地址空間中包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)時(shí),將所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī);
[0024]在判斷結(jié)果是確定的所述進(jìn)程地址空間中未包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)時(shí),向所述目標(biāo)虛擬機(jī)發(fā)送本地加載指令。
[0025]所述方法還包括:
[0026]在將所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī)之后,更新系統(tǒng)狀態(tài),并將更新后的系統(tǒng)狀態(tài)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0027]根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略,包括:
[0028]當(dāng)檢測(cè)到的類(lèi)型信息是所述目標(biāo)虛擬機(jī)發(fā)起的更新遷移日志請(qǐng)求時(shí),創(chuàng)建用于記錄后續(xù)系統(tǒng)狀態(tài)變更的日志文件;
[0029]確定當(dāng)前系統(tǒng)狀態(tài)信息,并將確定的所述系統(tǒng)狀態(tài)信息發(fā)送給所述目標(biāo)虛擬機(jī)。
[0030]根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略,包括:
[0031]當(dāng)檢測(cè)到的類(lèi)型信息是所述目標(biāo)虛擬機(jī)發(fā)起的遷移終止請(qǐng)求時(shí),中斷系統(tǒng)內(nèi)存中的系統(tǒng)任務(wù),更新系統(tǒng)狀態(tài),并將更新后的系統(tǒng)狀態(tài)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0032]一種虛擬機(jī)間數(shù)據(jù)遷移的方法,包括:
[0033]在確定與源虛擬機(jī)間啟動(dòng)數(shù)據(jù)遷移時(shí),接收所述源虛擬機(jī)發(fā)送的遷移日志,其中,所述遷移日志中包含了所述源虛擬機(jī)發(fā)生數(shù)據(jù)遷移時(shí)的內(nèi)存數(shù)據(jù)信息和系統(tǒng)狀態(tài)信息;
[0034]根據(jù)所述遷移日志中包含的系統(tǒng)狀態(tài)信息和內(nèi)存數(shù)據(jù)信息,從所述源虛擬機(jī)中獲取待遷移的數(shù)據(jù)。
[0035]根據(jù)所述遷移日志中包含的系統(tǒng)狀態(tài)信息,從所述源虛擬機(jī)中獲取待遷移的數(shù)據(jù),包括:
[0036]判斷接收到的所述系統(tǒng)狀態(tài)信息是否更新;
[0037]在確定接收到的所述系統(tǒng)狀態(tài)信息發(fā)生更新時(shí),掃描所述系統(tǒng)狀態(tài)信息,并合并相同資源的狀態(tài)變化序列,加載更新的內(nèi)存數(shù)據(jù),使得與所述源虛擬機(jī)的系統(tǒng)狀態(tài)同步。
[0038]根據(jù)所述遷移日志中包含的內(nèi)存數(shù)據(jù)信息,從所述源虛擬機(jī)中獲取待遷移的數(shù)據(jù),包括:
[0039]向所述源虛擬機(jī)發(fā)送遷移數(shù)據(jù)請(qǐng)求,其中,所述遷移數(shù)據(jù)請(qǐng)求中包含了待遷移的數(shù)據(jù);
[0040]接收所述源虛擬機(jī)發(fā)送的待遷移數(shù)據(jù),并將接收到的待遷移數(shù)據(jù)加載至內(nèi)存中。
[0041]根據(jù)所述遷移日志中包含的內(nèi)存數(shù)據(jù)信息,從所述源虛擬機(jī)中獲取待遷移的數(shù)據(jù),包括:
[0042]向所述源虛擬機(jī)發(fā)送遷移數(shù)據(jù)請(qǐng)求,其中,所述遷移數(shù)據(jù)請(qǐng)求中包含了待遷移的數(shù)據(jù);
[0043]接收所述源虛擬機(jī)發(fā)送的本地加載指令,并根據(jù)所述本地加載指令,確定數(shù)據(jù)文件在外存中的訪問(wèn)路徑,利用所述訪問(wèn)路徑得到待遷移的數(shù)據(jù);
[0044]將得到的待遷移數(shù)據(jù)加載至內(nèi)存中。
[0045]在將待遷移數(shù)據(jù)加載至內(nèi)存中之后,所述方法還包括:
[0046]確定加載至內(nèi)存中的數(shù)據(jù)需要的進(jìn)程,并與所述進(jìn)程對(duì)應(yīng)的進(jìn)程地址空間內(nèi)已有的數(shù)據(jù)進(jìn)行合并。
[0047]所述方法還包括:
[0048]在待遷移的數(shù)據(jù)遷移完畢后,向所述源虛擬機(jī)發(fā)送遷移終止請(qǐng)求。
[0049]一種虛擬機(jī)間數(shù)據(jù)遷移的設(shè)備,包括:
[0050]確定發(fā)送模塊,用于在確定與目標(biāo)虛擬機(jī)間啟動(dòng)數(shù)據(jù)遷移時(shí),確定當(dāng)前內(nèi)存數(shù)據(jù)信息和系統(tǒng)狀態(tài)信息,并將包含了所述內(nèi)存數(shù)據(jù)信息和所述系統(tǒng)狀態(tài)信息的遷移日志發(fā)送給所述目標(biāo)虛擬機(jī),使得所述目標(biāo)虛擬機(jī)根據(jù)所述遷移日志獲取內(nèi)存數(shù)據(jù)信息和系統(tǒng)狀態(tài)信息;
[0051]業(yè)務(wù)處理模塊,用于檢測(cè)在向所述目標(biāo)虛擬機(jī)執(zhí)行數(shù)據(jù)遷移的過(guò)程中接收到的待執(zhí)行任務(wù)的類(lèi)型信息,并根據(jù)所述類(lèi)型信息,觸發(fā)執(zhí)行與所述類(lèi)型信息相匹配的數(shù)據(jù)處理策略。
[0052]所述類(lèi)型信息包含了本地進(jìn)程任務(wù)和遠(yuǎn)程任務(wù)請(qǐng)求,其中,所述本地進(jìn)程任務(wù)中至少包含了執(zhí)行本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)和用戶(hù)設(shè)備提交的新業(yè)務(wù)請(qǐng)求,所述遠(yuǎn)程任務(wù)請(qǐng)求中至少包含了所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求、所述目標(biāo)虛擬機(jī)發(fā)起的更新遷移日志請(qǐng)求以及所述目標(biāo)虛擬機(jī)發(fā)起的遷移終止請(qǐng)求。
[0053]所述業(yè)務(wù)處理模塊,具體用于當(dāng)檢測(cè)到的類(lèi)型信息是本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)時(shí),檢測(cè)當(dāng)前內(nèi)存數(shù)據(jù)處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)的能力,并判斷處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)是否能夠引起所述內(nèi)存數(shù)據(jù)的變化;
[0054]在判斷結(jié)果是處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)能夠引起所述內(nèi)存數(shù)據(jù)的變化時(shí),掛起所述任務(wù)、并保存所述任務(wù)對(duì)應(yīng)的進(jìn)程,并向所述目標(biāo)虛擬機(jī)發(fā)送同步遷移指令,其中,所述同步遷移指令中包含了掛起的所述任務(wù);
[0055]在判斷結(jié)果是處理本地進(jìn)程任務(wù)隊(duì)列的已有任務(wù)不能夠引起所述內(nèi)存數(shù)據(jù)的變化時(shí),處理所述任務(wù),更新系統(tǒng)狀態(tài),并將更新后的系統(tǒng)狀態(tài)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0056]所述業(yè)務(wù)處理模塊,具體用于當(dāng)檢測(cè)到的類(lèi)型信息是用戶(hù)設(shè)備提交的新業(yè)務(wù)請(qǐng)求時(shí),檢測(cè)處理所述新業(yè)務(wù)請(qǐng)求需要的進(jìn)程狀態(tài);
[0057]在檢測(cè)得到的進(jìn)程狀態(tài)是本地進(jìn)程時(shí),將所述新業(yè)務(wù)請(qǐng)求添加至處理本地進(jìn)程任務(wù)隊(duì)列中;
[0058]在檢測(cè)得到的進(jìn)程狀態(tài)是遠(yuǎn)程進(jìn)程時(shí),將接收到的所述業(yè)務(wù)請(qǐng)求的原始數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0059]所述業(yè)務(wù)處理模塊,具體用于當(dāng)檢測(cè)到的類(lèi)型信息是所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求時(shí),確定所述目標(biāo)虛擬機(jī)發(fā)起的遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)所屬進(jìn)程;
[0060]判斷確定的所述進(jìn)程地址空間中是否包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù);
[0061]在判斷結(jié)果是確定的所述進(jìn)程地址空間中包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)時(shí),將所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī);
[0062]在判斷結(jié)果是確定的所述進(jìn)程地址空間中未包含了所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)時(shí),向所述目標(biāo)虛擬機(jī)發(fā)送本地加載指令。
[0063]所述設(shè)備還包括:
[0064]更新模塊,用于在將所述遷移數(shù)據(jù)請(qǐng)求所要遷移的數(shù)據(jù)發(fā)送給所述目標(biāo)虛擬機(jī)之后,更新系統(tǒng)狀態(tài),并將更新后的系統(tǒng)狀態(tài)發(fā)送給所述目標(biāo)虛擬機(jī)。
[0065]所述業(yè)務(wù)處理模塊,具體用于當(dāng)檢測(cè)到的類(lèi)型信息是所述