在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明的各實(shí)施方式提供了在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法和裝置。在本發(fā)明的一個(gè)實(shí)施方式中,提供了一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法,包括:響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間;其中虛擬機(jī)在宿主機(jī)上運(yùn)行,以及存儲(chǔ)空間是宿主機(jī)中的物理存儲(chǔ)空間。在本發(fā)明的一個(gè)實(shí)施方式中,提供了一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的裝置。
【專(zhuān)利說(shuō)明】在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的各實(shí)施方式涉及存儲(chǔ)器管理,更具體地,涉及用于在虛擬機(jī)(VirtualMachine)環(huán)境中進(jìn)行數(shù)據(jù)交換(Swap)的方法和裝置。
【背景技術(shù)】
[0002]虛擬機(jī)是指一種由軟件實(shí)現(xiàn)的機(jī)器,其可以像物理機(jī)那樣執(zhí)行各種應(yīng)用程序。虛擬機(jī)可以在宿主機(jī)(Host)上運(yùn)行,虛擬機(jī)的虛擬地址可以被映射至宿主機(jī)的物理地址,從而支持對(duì)于宿主機(jī)上的物理存儲(chǔ)器的訪問(wèn)。
[0003]數(shù)據(jù)交換是在存儲(chǔ)器管理中經(jīng)常使用的一種技術(shù)。例如,在計(jì)算機(jī)的存儲(chǔ)器管理系統(tǒng)中,當(dāng)存儲(chǔ)器資源緊張時(shí)可以使用頻率較低的某些數(shù)據(jù)交換到其他存儲(chǔ)裝置(例如,硬盤(pán)、閃存等)中,以便釋放存儲(chǔ)器資源。被釋放資源可以被臨時(shí)保存到其他存儲(chǔ)裝置中,并且可以在需要時(shí)進(jìn)行訪問(wèn)。
[0004]目前已經(jīng)開(kāi)發(fā)出用于執(zhí)行數(shù)據(jù)交換的各種技術(shù)方案。然而,當(dāng)將這些現(xiàn)有技術(shù)方案應(yīng)用于虛擬機(jī)環(huán)境中時(shí),可能會(huì)存在諸多問(wèn)題。盡管虛擬機(jī)在邏輯上對(duì)外呈現(xiàn)為一臺(tái)獨(dú)立的計(jì)算機(jī),然而該虛擬機(jī)在物理上有可能是分布在多個(gè)物理機(jī)上。因而在虛擬機(jī)環(huán)境中,當(dāng)將存儲(chǔ)器中的數(shù)據(jù)交換到其他存儲(chǔ)裝置時(shí),由于該其他處裝置很可能是遠(yuǎn)程設(shè)備,因而在執(zhí)行數(shù)據(jù)交換時(shí)有可能會(huì)造成大量額外開(kāi)銷(xiāo)。另外,即使在虛擬機(jī)所在的宿主機(jī)本地存在空閑的存儲(chǔ)資源,虛擬機(jī)也無(wú)權(quán)使用這些空閑的存儲(chǔ)資源,而是只能使用預(yù)先被分配的那些存儲(chǔ)資源。
[0005]隨著虛擬機(jī)技術(shù)的廣泛應(yīng)用,虛擬機(jī)的提供商越來(lái)越關(guān)注于虛擬機(jī)的運(yùn)行效率,因而如何提高虛擬機(jī)環(huán)境中的數(shù)據(jù)交換效率成為一個(gè)關(guān)注的焦點(diǎn)。
【發(fā)明內(nèi)容】
[0006]因而,期望開(kāi)發(fā)一種能夠在虛擬環(huán)境中進(jìn)行本地?cái)?shù)據(jù)交換的技術(shù)方案,期望該技術(shù)方案能夠在不進(jìn)行遠(yuǎn)程和/或本地?cái)?shù)據(jù)拷貝的情況下實(shí)現(xiàn)數(shù)據(jù)交換的目的。進(jìn)一步,還期望可以在盡量不改變現(xiàn)有虛擬機(jī)配置的情況下實(shí)現(xiàn)該技術(shù)方案。
[0007]在本發(fā)明的一個(gè)方面中,提供了一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法。該方法包括:響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間;以及將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間;其中虛擬機(jī)在宿主機(jī)上運(yùn)行。
[0008]在本發(fā)明的一個(gè)方面中,交換請(qǐng)求至少包括:虛擬機(jī)的標(biāo)識(shí)符以及存儲(chǔ)空間在虛擬機(jī)中的虛擬地址。
[0009]在本發(fā)明的一個(gè)方面中,在查找步驟與分配步驟之間進(jìn)一步包括:將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間。
[0010]在本發(fā)明的一個(gè)方面中,進(jìn)一步包括:響應(yīng)于對(duì)所述存儲(chǔ)空間的訪問(wèn)請(qǐng)求,經(jīng)由所述交換空間訪問(wèn)所述存儲(chǔ)空間。[0011]在本發(fā)明的一個(gè)方面中,提供了一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的裝置。該裝置包括:查找模塊,配置用于響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間;以及分配模塊,配置用于將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間;其中虛擬機(jī)在宿主機(jī)上運(yùn)行,以及存儲(chǔ)空間是宿主機(jī)中的物理存儲(chǔ)空間。
[0012]在本發(fā)明的一個(gè)方面中,交換請(qǐng)求至少包括:虛擬機(jī)的標(biāo)識(shí)符以及存儲(chǔ)空間在虛擬機(jī)中的虛擬地址。
[0013]在本發(fā)明的一個(gè)方面中,進(jìn)一步包括:標(biāo)識(shí)模塊,配置用于將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間。
[0014]在本發(fā)明的一個(gè)方面中,進(jìn)一步包括:訪問(wèn)模塊,配置用于對(duì)于訪問(wèn)存儲(chǔ)空間的訪問(wèn)請(qǐng)求,經(jīng)由交換空間訪問(wèn)存儲(chǔ)空間。
[0015]采用本發(fā)明所述的方法和裝置,可以在盡可能地少改變現(xiàn)有虛擬機(jī)配置的情況下,大大降低數(shù)據(jù)交換的時(shí)間開(kāi)銷(xiāo),進(jìn)而提高虛擬機(jī)的運(yùn)行效率。另外,本發(fā)明的方法和裝置實(shí)現(xiàn)了一種在虛擬機(jī)的宿主機(jī)本地實(shí)現(xiàn)的數(shù)據(jù)交換方案,可以大大降低數(shù)據(jù)交換對(duì)于傳輸資源方面的依賴,進(jìn)而降低數(shù)據(jù)交換所造成的各種負(fù)載。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0016]通過(guò)結(jié)合附圖對(duì)本公開(kāi)示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開(kāi)的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開(kāi)示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0017]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖;
[0018]圖2A示意性示出了在虛擬機(jī)和宿主機(jī)之間的地址映射關(guān)系,以及和圖2B示意性示出了根據(jù)一個(gè)解決方案的數(shù)據(jù)交換的圖示;
[0019]圖3示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的技術(shù)方案的架構(gòu)圖;
[0020]圖4示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的流程圖;
[0021]圖5示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的地址映射關(guān)系;
[0022]圖6示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的初始化步驟;
[0023]圖7示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的對(duì)支持?jǐn)?shù)據(jù)交換的虛擬機(jī)進(jìn)行遷移的步驟的流程圖;以及
[0024]圖8示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的裝置的框圖。
【具體實(shí)施方式】
[0025]下面將參照附圖更詳細(xì)地描述本公開(kāi)的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開(kāi)的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0026]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開(kāi)可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱(chēng)為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0027]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0028]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0029]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0030]可以以一種或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-諸如Java、Smalltalk、C++,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言-諸如“C”語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
[0031]下面將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0032]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0033]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。
[0034]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來(lái)任何限制。
[0035]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0036]總線18表示幾類(lèi)總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0037]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0038]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM) 30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫(xiě)不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱(chēng)為“硬盤(pán)驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(pán)(例如“軟盤(pán)”)讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(pán)(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0039]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0040]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤(pán)、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0041]應(yīng)當(dāng)注意,一個(gè)或者多個(gè)虛擬機(jī)可以運(yùn)行在上文所述的一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)/服務(wù)器上,單一的虛擬機(jī)在物理上可以分布于一個(gè)或者多個(gè)計(jì)算機(jī)系統(tǒng)/服務(wù)器上。參見(jiàn)圖1示出的計(jì)算機(jī)系統(tǒng)/服務(wù)器僅僅是可以用于實(shí)現(xiàn)本發(fā)明所述的方法和裝置的示例,隨著硬件技術(shù)和虛擬機(jī)技術(shù)的發(fā)展,本發(fā)明的方法和裝置還可以在具有數(shù)據(jù)處理能力的其他設(shè)備上實(shí)現(xiàn)。
[0042]圖2A示意性示出了虛擬機(jī)和宿主機(jī)之間的地址映射關(guān)系200A。由于虛擬機(jī)運(yùn)行在宿主之上,虛擬機(jī)所見(jiàn)的存儲(chǔ)器實(shí)際上是宿主機(jī)的存儲(chǔ)器的一部分。類(lèi)似于普通計(jì)算機(jī),虛擬機(jī)的地址也可以包括虛擬地址和物理地址,分別被稱(chēng)為虛擬機(jī)虛擬地址和虛擬機(jī)物理地址。如圖2所示,虛擬機(jī)虛擬地址2IOA被映射至虛擬機(jī)物理地址220A,而虛擬機(jī)物理地址220A又被映射至宿主機(jī)物理地址230A。虛擬機(jī)虛擬地址和虛擬機(jī)物理地址對(duì)于虛擬機(jī)的用戶是可見(jiàn)的,而用戶可以并不知曉宿主機(jī)物理地址。
[0043]圖2B示意性示出了根據(jù)一個(gè)解決方案的數(shù)據(jù)交換的圖示200B。在此實(shí)施方式中,當(dāng)存儲(chǔ)器中可用空間不足時(shí),可用將存儲(chǔ)器中的數(shù)據(jù)塊拷貝到特定的交換空間(例如硬盤(pán)空間)。此時(shí)被拷貝數(shù)據(jù)塊所占用的空間則可以用于其他應(yīng)用程序使用。而當(dāng)需要使用該數(shù)據(jù)塊中的數(shù)據(jù)時(shí),則還可以從交換空間中進(jìn)行加載。
[0044]具體地,虛擬機(jī)虛擬地址210B所對(duì)應(yīng)的虛擬機(jī)物理地址220B處的數(shù)據(jù)塊(例如,可以是由虛擬機(jī)物理地址表示的數(shù)據(jù)區(qū)間)可以被拷貝至交換空間240B(如箭頭A所示)。此時(shí),可以解除虛擬機(jī)虛擬地址210B和虛擬機(jī)物理地址220B之間的映射關(guān)系,并且宿主機(jī)物理地址230B表示的空間變?yōu)榭捎每臻g。然而在虛擬機(jī)環(huán)境中,交換空間240B可能是遠(yuǎn)程存儲(chǔ)器,因而在如箭頭A所示的拷貝步驟很可能會(huì)涉及網(wǎng)絡(luò)數(shù)據(jù)傳輸。一方面將產(chǎn)生網(wǎng)絡(luò)流量,另一方面還存在拷貝時(shí)間過(guò)長(zhǎng)等影響數(shù)據(jù)交換效率的問(wèn)題。
[0045]針對(duì)這些不足,本發(fā)明提供了一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法。該方法將宿主機(jī)本地的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),為虛擬機(jī)提供“本地”數(shù)據(jù)交換。另夕卜,該方法通過(guò)調(diào)整虛擬機(jī)和宿主機(jī)之間的地址映射關(guān)系來(lái)實(shí)現(xiàn),其中并不涉及數(shù)據(jù)拷貝操作,因而大大提高了數(shù)據(jù)交換的效率。
[0046]具體地,該方法包括:響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間;以及將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間;其中虛擬機(jī)在宿主機(jī)上運(yùn)行,以及存儲(chǔ)空間是宿主機(jī)中的物理存儲(chǔ)空間。
[0047]圖3示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的技術(shù)方案的架構(gòu)圖300。虛擬機(jī)1310、虛擬機(jī)2320和虛擬機(jī)3330分別運(yùn)行于宿主機(jī)340之上,虛擬機(jī)1310可以包括:配置文件312,用于支持文件系統(tǒng)來(lái)自動(dòng)進(jìn)行設(shè)備裝載;交換驅(qū)動(dòng)器314,用于驅(qū)動(dòng)根據(jù)本發(fā)明各實(shí)施方式的數(shù)據(jù)交換;以及交換設(shè)備316,在本發(fā)明的實(shí)施方式中,該交換設(shè)備316并不是物理上的交換設(shè)備,而是對(duì)應(yīng)于由宿主機(jī)本地的存儲(chǔ)裝置實(shí)現(xiàn)的“偽”交換設(shè)備,用于將來(lái)自虛擬機(jī)的本地?cái)?shù)據(jù)交換請(qǐng)求重定向至宿主機(jī)處的交換服務(wù)代理(例如,宿主機(jī)340處的交換服務(wù)代理342)。類(lèi)似地,虛擬機(jī)2320和虛擬機(jī)3330也可以具有類(lèi)似的組件,在此不再贅述。
[0048]宿主機(jī)340可以包括交換代理服務(wù)器342和本地存儲(chǔ)344。在本發(fā)明的實(shí)施方式中,交換服務(wù)代理342可以用于采集宿主機(jī)本地的存儲(chǔ)器使用狀況,并基于來(lái)自虛擬機(jī)的交換請(qǐng)求來(lái)形成交換空間;適當(dāng)調(diào)整交換空間的大小以改進(jìn)交換空間的使用效率;在進(jìn)行虛擬機(jī)遷移時(shí),與目標(biāo)宿主機(jī)中的交換服務(wù)代理進(jìn)行協(xié)調(diào)以完成數(shù)據(jù)同步。另外,宿主機(jī)還可以通過(guò)網(wǎng)絡(luò)350連接至遠(yuǎn)程存儲(chǔ)360。
[0049]在本發(fā)明的實(shí)施方式中,配置文件例如可以是“etc/fstab”,并且例如可以包括如下內(nèi)容:
[0050]/path/swapfile none Swap sw, pri = 300
[0051]其中“Swap”表示Swap類(lèi)型的文件系統(tǒng),即支持根據(jù)本發(fā)明各實(shí)施方式的數(shù)據(jù)交換的文件系統(tǒng),sw表示超級(jí)寫(xiě)入(Super Write)權(quán)限。
[0052]圖4示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的流程圖400。首先,在步驟S402中,響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間。在虛擬機(jī)環(huán)境中,虛擬機(jī)虛擬地址被映射至虛擬機(jī)物理地址,并且虛擬機(jī)物理地址被進(jìn)一步映射至宿主機(jī)物理地址。可以基于上述映射關(guān)系來(lái)查找與交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間。該存儲(chǔ)空間是虛擬機(jī)運(yùn)行于其上的宿主機(jī)中的物理存儲(chǔ)空間。
[0053]在步驟S404中,將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間;其中虛擬機(jī)在宿主機(jī)上運(yùn)行,以及存儲(chǔ)空間是宿主機(jī)中的物理存儲(chǔ)空間。相對(duì)于參見(jiàn)圖2B所示的、將待交換空間中的數(shù)據(jù)拷貝到交換區(qū)間并使得待交換空間變?yōu)榭捎玫募夹g(shù)方案,本發(fā)明的方法并不需要進(jìn)行數(shù)據(jù)拷貝,而是通過(guò)首先標(biāo)記待交換存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍,繼而將空閑的物理存儲(chǔ)空間分配給虛擬機(jī)實(shí)現(xiàn),這樣可以大大降低拷貝數(shù)據(jù)產(chǎn)生的時(shí)間開(kāi)銷(xiāo)。
[0054]在本發(fā)明的一個(gè)實(shí)施方式中,在查找步驟與分配步驟之間進(jìn)一步包括:將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間。
[0055]在此實(shí)施方式中,將該存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間的目的在于,標(biāo)記存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍,以便當(dāng)再次需要使用該存儲(chǔ)空間中的數(shù)據(jù)時(shí),可以快速獲取該數(shù)據(jù)。
[0056]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:響應(yīng)于對(duì)存儲(chǔ)空間的訪問(wèn)請(qǐng)求,經(jīng)由交換空間訪問(wèn)存儲(chǔ)空間。應(yīng)當(dāng)注意,根據(jù)本發(fā)明的實(shí)施方式,將宿主機(jī)中的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),并不產(chǎn)生任何數(shù)據(jù)覆蓋操作,因而在需要時(shí)還可以經(jīng)由標(biāo)記的物理地址來(lái)訪問(wèn)存儲(chǔ)空間。
[0057]在本發(fā)明的一個(gè)實(shí)施方式中,交換請(qǐng)求至少包括:虛擬機(jī)的標(biāo)識(shí)符以及存儲(chǔ)空間在虛擬機(jī)中的虛擬地址。由于在一個(gè)宿主機(jī)上可以運(yùn)行一個(gè)或者多個(gè)虛擬機(jī),因而在交換請(qǐng)求中需要包括虛擬機(jī)的標(biāo)識(shí)符??梢圆捎锰摂M地址的范圍來(lái)描述待交換的存儲(chǔ)空間的位置。本領(lǐng)域技術(shù)人員可以設(shè)計(jì)數(shù)據(jù)交換請(qǐng)求的格式,例如以如下形式表示:
[0058]Local Swap Request:VM 001, Address[A, B]
[0059]該請(qǐng)求可以解釋為:執(zhí)行根據(jù)本發(fā)明的本地?cái)?shù)據(jù)交換,其中待交換數(shù)據(jù)空間是在虛擬機(jī)001上的地址范圍[A,B]。應(yīng)當(dāng)注意,上述數(shù)據(jù)交換請(qǐng)求僅僅是示意性而非限制性的?;诒菊f(shuō)明書(shū)中的記載,本領(lǐng)域技術(shù)人員還可以自行設(shè)計(jì)其他格式來(lái)表示數(shù)據(jù)交換請(qǐng)求。
[0060]在本發(fā)明的一個(gè)實(shí)施方式中,將存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間包括:基于虛擬機(jī)的標(biāo)識(shí)符以及虛擬地址,獲取存儲(chǔ)空間在虛擬機(jī)中的虛擬機(jī)物理地址;基于虛擬機(jī)物理地址獲取存儲(chǔ)空間在宿主機(jī)中的物理地址。
[0061]由于在虛擬機(jī)和宿主機(jī)之間存儲(chǔ)地址映射關(guān)系,因而在獲取宿主機(jī)中的物理地址范圍需要按照“虛擬機(jī)虛擬地址- >虛擬機(jī)物理地址- >宿主機(jī)物理地址”的順序來(lái)獲取。
[0062]在本發(fā)明的一個(gè)實(shí)施方式中,將宿主機(jī)中與存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給虛擬機(jī),以便空閑的物理存儲(chǔ)空間在邏輯上成為虛擬機(jī)的可用存儲(chǔ)空間包括:選擇宿主機(jī)中與存儲(chǔ)空間大小相等的空閑的物理存儲(chǔ)空間;將空閑的物理存儲(chǔ)空間在宿主機(jī)中的物理地址關(guān)聯(lián)于存儲(chǔ)空間在虛擬機(jī)中的虛擬機(jī)物理地址。在下文中參見(jiàn)圖5詳細(xì)說(shuō)明。
[0063]圖5示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的地址映射關(guān)系500。在進(jìn)行根據(jù)本發(fā)明的數(shù)據(jù)交換方法之前,虛擬機(jī)虛擬地址510被映射至虛擬機(jī)物理地址520 (如實(shí)線箭頭A所示),而虛擬機(jī)物理地址520又被映射至宿主機(jī)物理地址530 (如實(shí)線箭頭B所示)。
[0064]當(dāng)執(zhí)行根據(jù)本發(fā)明的方法時(shí),將存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間540 (如虛線箭頭C所示)。此時(shí)宿主機(jī)的空閑的物理存儲(chǔ)空間550是與待交換空間大小相等的空閑的物理存儲(chǔ)空間。將空閑的物理存儲(chǔ)空間在宿主機(jī)中的物理地址550關(guān)聯(lián)于存儲(chǔ)空間在虛擬機(jī)中的虛擬機(jī)物理地址520 (虛線箭頭D所示)。
[0065]另外,由于此時(shí)虛擬機(jī)物理地址520已經(jīng)指向空閑的物理存儲(chǔ)空間,因而虛擬機(jī)虛擬地址510與虛擬機(jī)物理地址520、以及虛擬機(jī)物理地址520與宿主機(jī)物理地址530之間的關(guān)聯(lián)關(guān)系可以被解除。
[0066]應(yīng)當(dāng)注意,由于虛擬機(jī)運(yùn)行于宿主機(jī)上,虛擬機(jī)的物理地址并不是真正的物理地址,而實(shí)際上對(duì)應(yīng)于宿主機(jī)的物理地址。因而,在如箭頭C和D所示的步驟中僅進(jìn)行了地址的重新映射,而并不執(zhí)行數(shù)據(jù)拷貝操作。地址映射操作的執(zhí)行效率遠(yuǎn)遠(yuǎn)高于數(shù)據(jù)拷貝操作的效率,因而本發(fā)明所述的各個(gè)實(shí)施方式可以大大提高數(shù)據(jù)交換效率。還應(yīng)當(dāng)注意,宿主機(jī)物理地址530表示的存儲(chǔ)空間內(nèi)的數(shù)據(jù)并沒(méi)有被覆蓋,當(dāng)需要時(shí)可以基于交換空間540來(lái)訪問(wèn)已經(jīng)進(jìn)行了 “本地?cái)?shù)據(jù)交換”的數(shù)據(jù)(如箭頭E、C所示)。
[0067]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括初始化步驟:響應(yīng)于來(lái)自虛擬機(jī)的設(shè)備加載(Mounting)請(qǐng)求,建立用于傳輸與交換請(qǐng)求相關(guān)聯(lián)數(shù)據(jù)的通道。初始化步驟可以在虛擬機(jī)和宿主機(jī)之間建立特殊的通信通道,以便支持根據(jù)本發(fā)明各實(shí)施方式的數(shù)據(jù)交換。例如,當(dāng)在虛擬機(jī)處檢測(cè)到虛擬機(jī)期望執(zhí)行數(shù)據(jù)交換時(shí),可以通過(guò)該通道向宿主機(jī)發(fā)送數(shù)據(jù)交換請(qǐng)求;而當(dāng)在宿主機(jī)處完成了本地交換后,可以向虛擬機(jī)返回執(zhí)行結(jié)果。例如,返回值“真”可以表示成功,而返回值“假”可以表示不成功;另外,還可以定義例如錯(cuò)誤代碼等其他返回值。
[0068]在本發(fā)明的一個(gè)實(shí)施方式中,設(shè)備加載請(qǐng)求由以下步驟生成:驅(qū)動(dòng)由配置文件定義的交換設(shè)備;以及基于交換設(shè)備生成設(shè)備加載請(qǐng)求。具體地,參見(jiàn)圖6進(jìn)行描述。
[0069]圖6示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法的初始化步驟600。步驟S602-S608示出了生成并發(fā)送設(shè)備加載請(qǐng)求的具體步驟。在步驟S602中,讀取配置文件。其中配置文件定義了虛擬機(jī)需要加載何種類(lèi)型的文件系統(tǒng),例如在上文的“etc/fstab”中定義了用于本地?cái)?shù)據(jù)交換的Swap文件系統(tǒng)。接著,調(diào)取交換驅(qū)動(dòng)器(步驟S604)來(lái)驅(qū)動(dòng)在配置文件中指定的“偽”交換設(shè)備(步驟S606)。繼而,在步驟S608中發(fā)送設(shè)備加載請(qǐng)求(在此實(shí)施方式中設(shè)備加載請(qǐng)求是對(duì)“偽”交換設(shè)備進(jìn)行設(shè)備加載的請(qǐng)求)。在步驟S610處,向虛擬機(jī)分配空間并返回設(shè)備加載地址。此時(shí)即可在虛擬機(jī)與宿主機(jī)之間建立用于實(shí)現(xiàn)本地交換請(qǐng)求的通道。
[0070]在上文中參見(jiàn)附圖6示出了對(duì)支持本地交換請(qǐng)求的“偽”交換設(shè)備進(jìn)行設(shè)備加載的過(guò)程,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)注意,基于不同的虛擬機(jī)環(huán)境,還可以設(shè)計(jì)并實(shí)現(xiàn)其他的設(shè)備加載方案。
[0071]在上文中描述了在虛擬環(huán)境中進(jìn)行本地?cái)?shù)據(jù)交換的方法,現(xiàn)在將詳細(xì)描述如何對(duì)本發(fā)明中的虛擬機(jī)進(jìn)行遷移。虛擬機(jī)的遷移是指將運(yùn)行于一臺(tái)宿主機(jī)上的虛擬機(jī)遷移到新的目標(biāo)宿主機(jī)。對(duì)虛擬機(jī)進(jìn)行遷移的原因例如,當(dāng)前的宿主機(jī)的存儲(chǔ)資源、計(jì)算能力等不能滿足虛擬機(jī)的需求,等。
[0072]當(dāng)對(duì)支持本發(fā)明所述的數(shù)據(jù)交換的虛擬機(jī)進(jìn)行遷移時(shí),除了需要執(zhí)行傳統(tǒng)遷移步驟以外,當(dāng)有數(shù)據(jù)被“本地交換”到交換空間中時(shí),還需要對(duì)交換空間中的數(shù)據(jù)進(jìn)行特殊處理;否則,可以以常規(guī)方式來(lái)遷移虛擬機(jī)。
[0073]應(yīng)當(dāng)注意,在遷移虛擬機(jī)期間可能會(huì)產(chǎn)生額外的工作量,然而由于對(duì)虛擬機(jī)進(jìn)行遷移將會(huì)涉及多方面的協(xié)調(diào),因而僅在較少情況下(例如,源虛擬機(jī)出現(xiàn)故障或者各項(xiàng)資源不能滿足虛擬機(jī)的要求)才會(huì)進(jìn)行遷移。然而,在虛擬機(jī)中的數(shù)據(jù)交換則是虛擬機(jī)正常運(yùn)行期間的常規(guī)操作,并且很可能會(huì)被頻繁地執(zhí)行。因而,盡管本發(fā)明的技術(shù)方案會(huì)給虛擬機(jī)遷移帶來(lái)一定程度的負(fù)擔(dān),然而相對(duì)于可以大幅度提高虛擬機(jī)性能的優(yōu)勢(shì)而言,這些負(fù)擔(dān)是可接受的。應(yīng)當(dāng)注意,在執(zhí)行遷移之前還需要判斷目標(biāo)宿主機(jī)是否支持本發(fā)明所述的本地?cái)?shù)據(jù)交換,在下文中將詳細(xì)描述遷移的具體步驟。
[0074]在本發(fā)明的一個(gè)實(shí)施方式中,響應(yīng)于將虛擬機(jī)從宿主機(jī)遷移至目標(biāo)宿主機(jī)的遷移請(qǐng)求,判斷目標(biāo)宿主機(jī)是否支持本地?cái)?shù)據(jù)交換;響應(yīng)于目標(biāo)宿主機(jī)不支持本地?cái)?shù)據(jù)交換:將交換空間作為遷移后的虛擬機(jī)的遠(yuǎn)程存儲(chǔ)空間,或?qū)⒔粨Q空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的存儲(chǔ)裝置。
[0075]當(dāng)目標(biāo)宿主機(jī)不支持本地?cái)?shù)據(jù)交換(S卩,目標(biāo)宿主機(jī)是普通的宿主機(jī),并不具備如參見(jiàn)圖3所示系統(tǒng)架構(gòu))時(shí),可以使得遷移后的虛擬機(jī)按照傳統(tǒng)數(shù)據(jù)交換方式(例如,參見(jiàn)圖2B所示)進(jìn)行操作。此時(shí),可以將虛擬機(jī)在源宿主機(jī)中的交換空間作為遷移后的虛擬機(jī)的普通交換空間(即,類(lèi)似于常規(guī)數(shù)據(jù)交換,虛擬機(jī)將數(shù)據(jù)交換到遠(yuǎn)程存儲(chǔ)空間中)。當(dāng)在遷移后的虛擬機(jī)中需要訪問(wèn)先前被交換的數(shù)據(jù)時(shí),可以從源宿主機(jī)處的交換空間中讀取數(shù)據(jù)。另外,還可以將交換空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的任何存儲(chǔ)裝置。在此并不限制存儲(chǔ)裝置的物理位置,只要遷移后的虛擬機(jī)能夠訪問(wèn)該存儲(chǔ)裝置即可。
[0076]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:響應(yīng)于目標(biāo)宿主機(jī)支持本地?cái)?shù)據(jù)交換,判斷宿主機(jī)與目標(biāo)宿主機(jī)之間是否存在共享空間;響應(yīng)于宿主機(jī)與目標(biāo)宿主機(jī)之間存在共享空間,將交換空間中的數(shù)據(jù)移至共享空間,以及通知目標(biāo)宿主機(jī)。
[0077]當(dāng)目標(biāo)宿主機(jī)支持根據(jù)本發(fā)明的本地?cái)?shù)據(jù)交換時(shí),需要將源宿主機(jī)的交換空間中的數(shù)據(jù)移至目標(biāo)宿主機(jī)的本地存儲(chǔ)器中,以便在需要時(shí)讀取。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,當(dāng)源宿主機(jī)與目標(biāo)宿主機(jī)之間存在共享空間時(shí),將交換空間中的數(shù)據(jù)移至共享空間是一種向目標(biāo)宿主機(jī)傳輸數(shù)據(jù)的高效方式。當(dāng)將交換空間中的數(shù)據(jù)移至共享空間后,可以通知目標(biāo)宿主機(jī)來(lái)完成虛擬機(jī)遷移的后續(xù)步驟,例如重新激活遷移后的虛擬機(jī)等。
[0078]在本發(fā)明的一個(gè)實(shí)施方式中,響應(yīng)于宿主機(jī)與目標(biāo)宿主機(jī)之間不存在共享空間,將交換空間中的數(shù)據(jù)發(fā)送至目標(biāo)宿主機(jī)的本地存儲(chǔ)空間,以及通知目標(biāo)宿主機(jī)。當(dāng)源宿主機(jī)與目標(biāo)宿主機(jī)之間沒(méi)有共享空間時(shí),可以向目標(biāo)宿主機(jī)發(fā)送交換空間中的數(shù)據(jù)。此時(shí),可以在目標(biāo)宿主機(jī)的物理存儲(chǔ)空間中建立本地交換空間,以便在需要是訪問(wèn)該數(shù)據(jù)。
[0079]圖7示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的對(duì)支持?jǐn)?shù)據(jù)交換的虛擬機(jī)進(jìn)行遷移的步驟的流程圖700。首先在步驟S702中接收遷移請(qǐng)求,接著在步驟S704中判斷目標(biāo)宿主機(jī)是否支持本地?cái)?shù)據(jù)交換。當(dāng)判斷結(jié)果為“是”時(shí)流程前進(jìn)至步驟S706,將交換空間中的數(shù)據(jù)移至源宿主機(jī)與目標(biāo)宿主機(jī)之間的共享空間,或者將其發(fā)送至目標(biāo)宿主機(jī)的本地存儲(chǔ)空間。當(dāng)目標(biāo)宿主機(jī)不支持本地?cái)?shù)據(jù)交換時(shí),則可以將源宿主機(jī)中的交換空間作為遷移后的虛擬機(jī)的遠(yuǎn)程存儲(chǔ)空間(即,不需要經(jīng)由網(wǎng)絡(luò)向目標(biāo)宿主機(jī)發(fā)送數(shù)據(jù)),或者將交換空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的存儲(chǔ)裝置。在步驟S710中,可以向目標(biāo)宿主機(jī)通知:是否向目標(biāo)宿主機(jī)發(fā)送了源宿主機(jī)的交換空間中的數(shù)據(jù)以及采用何種方式發(fā)送,以便目標(biāo)宿主機(jī)可以進(jìn)行響應(yīng)處理。
[0080]在本發(fā)明的一個(gè)實(shí)施方式中,可以在宿主機(jī)處的交換服務(wù)代理中實(shí)現(xiàn)本地?cái)?shù)據(jù)交換。
[0081]圖8示意性示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的裝置的框圖800。該裝置包括:查找模塊810,配置用于響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與所述交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間;分配模塊830,配置用于將所述宿主機(jī)中與所述存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給所述虛擬機(jī),以便所述空閑的物理存儲(chǔ)空間在邏輯上成為所述虛擬機(jī)的可用存儲(chǔ)空間;其中所述虛擬機(jī)在所述宿主機(jī)上運(yùn)行,以及所述存儲(chǔ)空間是所述宿主機(jī)中的物理存儲(chǔ)空間。
[0082]在本發(fā)明的一個(gè)實(shí)施方式中,所述交換請(qǐng)求至少包括:所述虛擬機(jī)的標(biāo)識(shí)符以及所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬地址。
[0083]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:標(biāo)識(shí)模塊820,配置用于將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間;以及訪問(wèn)模塊,配置用于響應(yīng)于對(duì)所述存儲(chǔ)空間的訪問(wèn)請(qǐng)求,經(jīng)由所述交換空間訪問(wèn)所述存儲(chǔ)空間。
[0084]在本發(fā)明的一個(gè)實(shí)施方式中,所述標(biāo)識(shí)模塊820包括:第一獲取模塊,配置用于基于所述虛擬機(jī)的標(biāo)識(shí)符以及所述虛擬地址,獲取所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址;第二獲取模塊,配置用于基于所述虛擬機(jī)物理地址獲取所述存儲(chǔ)空間在所述宿主機(jī)中的物理地址。
[0085]在本發(fā)明的一個(gè)實(shí)施方式中,所述分配模塊包括:選擇模塊,配置用于選擇所述宿主機(jī)中與所述存儲(chǔ)空間大小相等的空閑的物理存儲(chǔ)空間;關(guān)聯(lián)模塊,配置用于將所述空閑的物理存儲(chǔ)空間在所述宿主機(jī)中的物理地址關(guān)聯(lián)于所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址。
[0086]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:初始化模塊,配置用于響應(yīng)于來(lái)自虛擬機(jī)的設(shè)備加載請(qǐng)求,建立用于傳輸與所述交換請(qǐng)求相關(guān)聯(lián)數(shù)據(jù)的通道。
[0087]在本發(fā)明的一個(gè)實(shí)施方式中,所述設(shè)備加載請(qǐng)求由以下模塊生成:驅(qū)動(dòng)模塊,配置用于驅(qū)動(dòng)由配置文件定義的交換設(shè)備;以及生成模塊,配置用于基于所述交換設(shè)備生成所述設(shè)備加載請(qǐng)求。
[0088]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:第一判斷模塊,配置用于響應(yīng)于將所述虛擬機(jī)從所述宿主機(jī)遷移至目標(biāo)宿主機(jī)的遷移請(qǐng)求,判斷所述目標(biāo)宿主機(jī)是否支持本地?cái)?shù)據(jù)交換;第一遷移模塊,配置用于響應(yīng)于所述目標(biāo)宿主機(jī)不支持本地?cái)?shù)據(jù)交換:將所述交換空間作為遷移后的虛擬機(jī)的遠(yuǎn)程存儲(chǔ)空間,或?qū)⑺鼋粨Q空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的存儲(chǔ)裝置。
[0089]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:第二判斷模塊,配置用于響應(yīng)于所述目標(biāo)宿主機(jī)支持本地?cái)?shù)據(jù)交換,判斷所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間是否存在共享空間;第二遷移模塊,配置用于響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間存在共享空間,將所述交換空間中的數(shù)據(jù)移至所述共享空間,以及通知所述目標(biāo)宿主機(jī)。
[0090]在本發(fā)明的一個(gè)實(shí)施方式中,進(jìn)一步包括:第三遷移模塊,配置用于響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間不存在共享空間,將所述交換空間中的數(shù)據(jù)發(fā)送至所述目標(biāo)宿主機(jī)的本地存儲(chǔ)空間,以及通知所述目標(biāo)宿主機(jī)。
[0091]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0092]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說(shuō)明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說(shuō)明的各實(shí)施例的范圍和精神的情況下,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。本文中所用術(shù)語(yǔ)的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.一種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的方法,包括: 響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與所述交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間;以及將所述宿主機(jī)中與所述存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給所述虛擬機(jī),以便所述空閑的物理存儲(chǔ)空間在邏輯上成為所述虛擬機(jī)的可用存儲(chǔ)空間; 其中所述虛擬機(jī)在所述宿主機(jī)上運(yùn)行。
2.根據(jù)權(quán)利要求1所述的方法,其中所述交換請(qǐng)求至少包括: 所述虛擬機(jī)的標(biāo)識(shí)符以及所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬地址。
3.根據(jù)權(quán)利要求1或2所述的方法,其中將所述宿主機(jī)中與所述存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給所述虛擬機(jī),以便所述空閑的物理存儲(chǔ)空間在邏輯上成為所述虛擬機(jī)的可用存儲(chǔ)空間包括: 選擇所述宿主機(jī)中與所述存儲(chǔ)空間大小相等的空閑的物理存儲(chǔ)空間;以及將所述空閑的物理存儲(chǔ)空間在所述宿主機(jī)中的物理地址關(guān)聯(lián)于所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址。
4.根據(jù)權(quán)利要求1或2所述的方法,其中在查找步驟與分配步驟之間進(jìn)一步包括: 將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間。
5.根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括: 響應(yīng)于對(duì)所述存儲(chǔ)空 間的訪問(wèn)請(qǐng)求,經(jīng)由所述交換空間訪問(wèn)所述存儲(chǔ)空間。
6.根據(jù)權(quán)利要求4所述的方法,其中將所述存儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間包括: 基于所述虛擬機(jī)的標(biāo)識(shí)符以及所述虛擬地址,獲取所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址;以及 基于所述虛擬機(jī)物理地址獲取所述存儲(chǔ)空間在所述宿主機(jī)中的物理地址。
7.根據(jù)權(quán)利要求1或2所述的方法,進(jìn)一步包括初始化步驟: 響應(yīng)于來(lái)自虛擬機(jī)的設(shè)備加載請(qǐng)求,建立用于傳輸與所述交換請(qǐng)求相關(guān)聯(lián)數(shù)據(jù)的通道。
8.根據(jù)權(quán)利要求7所述的方法,其中所述設(shè)備加載請(qǐng)求由以下步驟生成: 驅(qū)動(dòng)由配置文件定義的交換設(shè)備;以及 基于所述交換設(shè)備生成所述設(shè)備加載請(qǐng)求。
9.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括: 響應(yīng)于將所述虛擬機(jī)從所述宿主機(jī)遷移至目標(biāo)宿主機(jī)的遷移請(qǐng)求,判斷所述目標(biāo)宿主機(jī)是否支持所述數(shù)據(jù)交換; 響應(yīng)于所述目標(biāo)宿主機(jī)不支持所述數(shù)據(jù)交換:將所述交換空間作為遷移后的虛擬機(jī)的遠(yuǎn)程存儲(chǔ)空間,或?qū)⑺鼋粨Q空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的存儲(chǔ)裝置。
10.根據(jù)權(quán)利要求9所述的方法,進(jìn)一步包括: 響應(yīng)于所述目標(biāo)宿主機(jī)支持所述數(shù)據(jù)交換,判斷所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間是否存在共享空間;以及 響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間存在共享空間,將所述交換空間中的數(shù)據(jù)移至所述共享空間,以及通知所述目標(biāo)宿主機(jī)。
11.根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包括:響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間不存在共享空間,將所述交換空間中的數(shù)據(jù)發(fā)送至所述目標(biāo)宿主機(jī)的本地存儲(chǔ)空間,以及通知所述目標(biāo)宿主機(jī)。
12.—種在虛擬機(jī)環(huán)境中進(jìn)行數(shù)據(jù)交換的裝置,包括: 查找模塊,配置用于響應(yīng)于來(lái)自虛擬機(jī)的交換請(qǐng)求,查找與所述交換請(qǐng)求相關(guān)聯(lián)的存儲(chǔ)空間; 分配模塊,配置用于將所述宿主機(jī)中與所述存儲(chǔ)空間相匹配的空閑的物理存儲(chǔ)空間分配給所述虛擬機(jī),以便所述空閑的物理存儲(chǔ)空間在邏輯上成為所述虛擬機(jī)的可用存儲(chǔ)空間; 其中所述虛擬機(jī)在所述宿主機(jī)上運(yùn)行。
13.根據(jù)權(quán)利要求12的裝置,其中所述交換請(qǐng)求至少包括: 所述虛擬機(jī)的標(biāo)識(shí)符以及所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬地址。
14.根據(jù)權(quán)利要求12或13所述的裝置,其中所述分配模塊包括: 選擇模塊,配置用于選擇所述宿主機(jī)中與所述存儲(chǔ)空間大小相等的空閑的物理存儲(chǔ)空間;以及 關(guān)聯(lián)模塊,配置用于將所述空閑的物理存儲(chǔ)空間在所述宿主機(jī)中的物理地址關(guān)聯(lián)于所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址。
15.根據(jù)權(quán)利要求11或12所述的裝置,進(jìn)一步包括: 標(biāo)識(shí)模塊,配置用于將所述存`儲(chǔ)空間在宿主機(jī)中的物理地址的范圍標(biāo)識(shí)為交換空間。
16.根據(jù)權(quán)利要求15所述的裝置,進(jìn)一步包括: 訪問(wèn)模塊,配置用于響應(yīng)于對(duì)所述存儲(chǔ)空間的訪問(wèn)請(qǐng)求,經(jīng)由所述交換空間訪問(wèn)所述存儲(chǔ)空間。
17.根據(jù)權(quán)利要求15所述的裝置,其中所述標(biāo)識(shí)模塊包括: 第一獲取模塊,配置用于基于所述虛擬機(jī)的標(biāo)識(shí)符以及所述虛擬地址,獲取所述存儲(chǔ)空間在所述虛擬機(jī)中的虛擬機(jī)物理地址; 第二獲取模塊,配置用于基于所述虛擬機(jī)物理地址獲取所述存儲(chǔ)空間在所述宿主機(jī)中的物理地址。
18.根據(jù)權(quán)利要求12或13所述的裝置,進(jìn)一步包括: 初始化模塊,配置用于響應(yīng)于來(lái)自虛擬機(jī)的設(shè)備加載請(qǐng)求,建立用于傳輸與所述交換請(qǐng)求相關(guān)聯(lián)數(shù)據(jù)的通道。
19.根據(jù)權(quán)利要求18所述的裝置,其中所述設(shè)備加載請(qǐng)求由以下模塊生成: 驅(qū)動(dòng)模塊,配置用于驅(qū)動(dòng)由配置文件定義的交換設(shè)備;以及 生成模塊,配置用于基于所述交換設(shè)備生成所述設(shè)備加載請(qǐng)求。
20.根據(jù)權(quán)利要求14所述的裝置,進(jìn)一步包括: 第一判斷模塊,配置用于響應(yīng)于將所述虛擬機(jī)從所述宿主機(jī)遷移至目標(biāo)宿主機(jī)的遷移請(qǐng)求,判斷所述目標(biāo)宿主機(jī)是否支持所述數(shù)據(jù)交換; 第一遷移模塊,配置用于響應(yīng)于所述目標(biāo)宿主機(jī)不支持所述數(shù)據(jù)交換:將所述交換空間作為遷移后的虛擬機(jī)的遠(yuǎn)程存儲(chǔ)空間,或?qū)⑺鼋粨Q空間中的數(shù)據(jù)發(fā)送至遷移后的虛擬機(jī)可訪問(wèn)的存儲(chǔ)裝置。
21.根據(jù)權(quán)利要求20所述的裝置,進(jìn)一步包括:第二判斷模塊,配置用于響應(yīng)于所述目標(biāo)宿主機(jī)支持所述數(shù)據(jù)交換,判斷所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間是否存在共享空間; 第二遷移模塊,配置用于響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間存在共享空間,將所述交換空間中的數(shù)據(jù)移至所述共享空間,以及通知所述目標(biāo)宿主機(jī)。
22.根據(jù)權(quán)利要求21所述的裝置,進(jìn)一步包括: 第三遷移模塊,配置用于響應(yīng)于所述宿主機(jī)與所述目標(biāo)宿主機(jī)之間不存在共享空間,將所述交換空間中的數(shù)據(jù)發(fā)送至所述目標(biāo)宿主機(jī)的本地存儲(chǔ)空間,以及通知所述目標(biāo)宿主機(jī)。
【文檔編號(hào)】G06F9/455GK103793330SQ201210430038
【公開(kāi)日】2014年5月14日 申請(qǐng)日期:2012年10月31日 優(yōu)先權(quán)日:2012年10月31日
【發(fā)明者】戈弋, 劉亮, 李立, 曲俊媚, 陳春海 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司