CN103793330B - 在虚拟机环境中进行数据交换的方法和装置 - Google Patents
在虚拟机环境中进行数据交换的方法和装置 Download PDFInfo
- Publication number
- CN103793330B CN103793330B CN201210430038.3A CN201210430038A CN103793330B CN 103793330 B CN103793330 B CN 103793330B CN 201210430038 A CN201210430038 A CN 201210430038A CN 103793330 B CN103793330 B CN 103793330B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- host
- machine
- memory
- space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的各实施方式提供了在虚拟机环境中进行数据交换的方法和装置。在本发明的一个实施方式中,提供了一种在虚拟机环境中进行数据交换的方法,包括:响应于来自虚拟机的交换请求,查找与交换请求相关联的存储空间将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间;其中虚拟机在宿主机上运行,以及存储空间是宿主机中的物理存储空间。在本发明的一个实施方式中,提供了一种在虚拟机环境中进行数据交换的装置。
Description
技术领域
本发明的各实施方式涉及存储器管理,更具体地,涉及用于在虚拟机(VirtualMachine)环境中进行数据交换(Swap)的方法和装置。
背景技术
虚拟机是指一种由软件实现的机器,其可以像物理机那样执行各种应用程序。虚拟机可以在宿主机(Host)上运行,虚拟机的虚拟地址可以被映射至宿主机的物理地址,从而支持对于宿主机上的物理存储器的访问。
数据交换是在存储器管理中经常使用的一种技术。例如,在计算机的存储器管理***中,当存储器资源紧张时可以使用频率较低的某些数据交换到其他存储装置(例如,硬盘、闪存等)中,以便释放存储器资源。被释放资源可以被临时保存到其他存储装置中,并且可以在需要时进行访问。
目前已经开发出用于执行数据交换的各种技术方案。然而,当将这些现有技术方案应用于虚拟机环境中时,可能会存在诸多问题。尽管虚拟机在逻辑上对外呈现为一***立的计算机,然而该虚拟机在物理上有可能是分布在多个物理机上。因而在虚拟机环境中,当将存储器中的数据交换到其他存储装置时,由于该其他处装置很可能是远程设备,因而在执行数据交换时有可能会造成大量额外开销。另外,即使在虚拟机所在的宿主机本地存在空闲的存储资源,虚拟机也无权使用这些空闲的存储资源,而是只能使用预先被分配的那些存储资源。
随着虚拟机技术的广泛应用,虚拟机的提供商越来越关注于虚拟机的运行效率,因而如何提高虚拟机环境中的数据交换效率成为一个关注的焦点。
发明内容
因而,期望开发一种能够在虚拟环境中进行本地数据交换的技术方案,期望该技术方案能够在不进行远程和/或本地数据拷贝的情况下实现数据交换的目的。进一步,还期望可以在尽量不改变现有虚拟机配置的情况下实现该技术方案。
在本发明的一个方面中,提供了一种在虚拟机环境中进行数据交换的方法。该方法包括:响应于来自虚拟机的交换请求,查找与交换请求相关联的存储空间;以及将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间;其中虚拟机在宿主机上运行。
在本发明的一个方面中,交换请求至少包括:虚拟机的标识符以及存储空间在虚拟机中的虚拟地址。
在本发明的一个方面中,在查找步骤与分配步骤之间进一步包括:将所述存储空间在宿主机中的物理地址的范围标识为交换空间。
在本发明的一个方面中,进一步包括:响应于对所述存储空间的访问请求,经由所述交换空间访问所述存储空间。
在本发明的一个方面中,提供了一种在虚拟机环境中进行数据交换的装置。该装置包括:查找模块,配置用于响应于来自虚拟机的交换请求,查找与交换请求相关联的存储空间;以及分配模块,配置用于将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间;其中虚拟机在宿主机上运行,以及存储空间是宿主机中的物理存储空间。
在本发明的一个方面中,交换请求至少包括:虚拟机的标识符以及存储空间在虚拟机中的虚拟地址。
在本发明的一个方面中,进一步包括:标识模块,配置用于将所述存储空间在宿主机中的物理地址的范围标识为交换空间。
在本发明的一个方面中,进一步包括:访问模块,配置用于对于访问存储空间的访问请求,经由交换空间访问存储空间。
采用本发明所述的方法和装置,可以在尽可能地少改变现有虚拟机配置的情况下,大大降低数据交换的时间开销,进而提高虚拟机的运行效率。另外,本发明的方法和装置实现了一种在虚拟机的宿主机本地实现的数据交换方案,可以大大降低数据交换对于传输资源方面的依赖,进而降低数据交换所造成的各种负载。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图;
图2A示意性示出了在虚拟机和宿主机之间的地址映射关系,以及和图2B示意性示出了根据一个解决方案的数据交换的图示;
图3示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的技术方案的架构图;
图4示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的流程图;
图5示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的地址映射关系;
图6示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的初始化步骤;
图7示意性示出了根据本发明的一个实施方式的对支持数据交换的虚拟机进行迁移的步骤的流程图;以及
图8示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图1显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、—个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与—个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
应当注意,一个或者多个虚拟机可以运行在上文所述的一个或者多个计算机***/服务器上,单一的虚拟机在物理上可以分布于一个或者多个计算机***/服务器上。参见图1示出的计算机***/服务器仅仅是可以用于实现本发明所述的方法和装置的示例,随着硬件技术和虚拟机技术的发展,本发明的方法和装置还可以在具有数据处理能力的其他设备上实现。
图2A示意性示出了虚拟机和宿主机之间的地址映射关系200A。由于虚拟机运行在宿主之上,虚拟机所见的存储器实际上是宿主机的存储器的一部分。类似于普通计算机,虚拟机的地址也可以包括虚拟地址和物理地址,分别被称为虚拟机虚拟地址和虚拟机物理地址。如图2所示,虚拟机虚拟地址210A被映射至虚拟机物理地址220A,而虚拟机物理地址220A又被映射至宿主机物理地址230A。虚拟机虚拟地址和虚拟机物理地址对于虚拟机的用户是可见的,而用户可以并不知晓宿主机物理地址。
图2B示意性示出了根据一个解决方案的数据交换的图示200B。在此实施方式中,当存储器中可用空间不足时,可用将存储器中的数据块拷贝到特定的交换空间(例如硬盘空间)。此时被拷贝数据块所占用的空间则可以用于其他应用程序使用。而当需要使用该数据块中的数据时,则还可以从交换空间中进行加载。
具体地,虚拟机虚拟地址210B所对应的虚拟机物理地址220B处的数据块(例如,可以是由虚拟机物理地址表示的数据区间)可以被拷贝至交换空间240B(如箭头A所示)。此时,可以解除虚拟机虚拟地址210B和虚拟机物理地址220B之间的映射关系,并且宿主机物理地址230B表示的空间变为可用空间。然而在虚拟机环境中,交换空间240B可能是远程存储器,因而在如箭头A所示的拷贝步骤很可能会涉及网络数据传输。一方面将产生网络流量,另一方面还存在拷贝时间过长等影响数据交换效率的问题。
针对这些不足,本发明提供了一种在虚拟机环境中进行数据交换的方法。该方法将宿主机本地的空闲的物理存储空间分配给虚拟机,为虚拟机提供“本地”数据交换。另外,该方法通过调整虚拟机和宿主机之间的地址映射关系来实现,其中并不涉及数据拷贝操作,因而大大提高了数据交换的效率。
具体地,该方法包括:响应于来自虚拟机的交换请求,查找与交换请求相关联的存储空间;以及将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间;其中虚拟机在宿主机上运行,以及存储空间是宿主机中的物理存储空间。
图3示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的技术方案的架构图300。虚拟机1310、虚拟机2320和虚拟机3330分别运行于宿主机340之上,虚拟机1310可以包括:配置文件312,用于支持文件***来自动进行设备装载;交换驱动器314,用于驱动根据本发明各实施方式的数据交换;以及交换设备316,在本发明的实施方式中,该交换设备316并不是物理上的交换设备,而是对应于由宿主机本地的存储装置实现的“伪”交换设备,用于将来自虚拟机的本地数据交换请求重定向至宿主机处的交换服务代理(例如,宿主机340处的交换服务代理342)。类似地,虚拟机2320和虚拟机3330也可以具有类似的组件,在此不再赘述。
宿主机340可以包括交换代理服务器342和本地存储344。在本发明的实施方式中,交换服务代理342可以用于采集宿主机本地的存储器使用状况,并基于来自虚拟机的交换请求来形成交换空间;适当调整交换空间的大小以改进交换空间的使用效率;在进行虚拟机迁移时,与目标宿主机中的交换服务代理进行协调以完成数据同步。另外,宿主机还可以通过网络350连接至远程存储360。
在本发明的实施方式中,配置文件例如可以是“etc/fstab”,并且例如可以包括如下内容:
/path/swapfile none Swap sw,pri=300
其中“Swap”表示Swap类型的文件***,即支持根据本发明各实施方式的数据交换的文件***,sw表示超级写入(Super Write)权限。
图4示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的流程图400。首先,在步骤S402中,响应于来自虚拟机的交换请求,查找与交换请求相关联的存储空间。在虚拟机环境中,虚拟机虚拟地址被映射至虚拟机物理地址,并且虚拟机物理地址被进一步映射至宿主机物理地址。可以基于上述映射关系来查找与交换请求相关联的存储空间。该存储空间是虚拟机运行于其上的宿主机中的物理存储空间。
在步骤S404中,将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间;其中虚拟机在宿主机上运行,以及存储空间是宿主机中的物理存储空间。相对于参见图2B所示的、将待交换空间中的数据拷贝到交换区间并使得待交换空间变为可用的技术方案,本发明的方法并不需要进行数据拷贝,而是通过首先标记待交换存储空间在宿主机中的物理地址的范围,继而将空闲的物理存储空间分配给虚拟机实现,这样可以大大降低拷贝数据产生的时间开销。
在本发明的一个实施方式中,在查找步骤与分配步骤之间进一步包括:将所述存储空间在宿主机中的物理地址的范围标识为交换空间。
在此实施方式中,将该存储空间在宿主机中的物理地址的范围标识为交换空间的目的在于,标记存储空间在宿主机中的物理地址的范围,以便当再次需要使用该存储空间中的数据时,可以快速获取该数据。
在本发明的一个实施方式中,进一步包括:响应于对存储空间的访问请求,经由交换空间访问存储空间。应当注意,根据本发明的实施方式,将宿主机中的空闲的物理存储空间分配给虚拟机,并不产生任何数据覆盖操作,因而在需要时还可以经由标记的物理地址来访问存储空间。
在本发明的一个实施方式中,交换请求至少包括:虚拟机的标识符以及存储空间在虚拟机中的虚拟地址。由于在一个宿主机上可以运行一个或者多个虚拟机,因而在交换请求中需要包括虚拟机的标识符。可以采用虚拟地址的范围来描述待交换的存储空间的位置。本领域技术人员可以设计数据交换请求的格式,例如以如下形式表示:
Local Swap Request:VM 001,Address[A,B]
该请求可以解释为:执行根据本发明的本地数据交换,其中待交换数据空间是在虚拟机001上的地址范围[A,B]。应当注意,上述数据交换请求仅仅是示意性而非限制性的。基于本说明书中的记载,本领域技术人员还可以自行设计其他格式来表示数据交换请求。
在本发明的一个实施方式中,将存储空间在宿主机中的物理地址的范围标识为交换空间包括:基于虚拟机的标识符以及虚拟地址,获取存储空间在虚拟机中的虚拟机物理地址;基于虚拟机物理地址获取存储空间在宿主机中的物理地址。
由于在虚拟机和宿主机之间存储地址映射关系,因而在获取宿主机中的物理地址范围需要按照“虚拟机虚拟地址->虚拟机物理地址->宿主机物理地址”的顺序来获取。
在本发明的一个实施方式中,将宿主机中与存储空间相匹配的空闲的物理存储空间分配给虚拟机,以便空闲的物理存储空间在逻辑上成为虚拟机的可用存储空间包括:选择宿主机中与存储空间大小相等的空闲的物理存储空间;将空闲的物理存储空间在宿主机中的物理地址关联于存储空间在虚拟机中的虚拟机物理地址。在下文中参见图5详细说明。
图5示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的地址映射关系500。在进行根据本发明的数据交换方法之前,虚拟机虚拟地址510被映射至虚拟机物理地址520(如实线箭头A所示),而虚拟机物理地址520又被映射至宿主机物理地址530(如实线箭头B所示)。
当执行根据本发明的方法时,将存储空间在宿主机中的物理地址的范围标识为交换空间540(如虚线箭头C所示)。此时宿主机的空闲的物理存储空间550是与待交换空间大小相等的空闲的物理存储空间。将空闲的物理存储空间在宿主机中的物理地址550关联于存储空间在虚拟机中的虚拟机物理地址520(虚线箭头D所示)。
另外,由于此时虚拟机物理地址520已经指向空闲的物理存储空间,因而虚拟机虚拟地址510与虚拟机物理地址520、以及虚拟机物理地址520与宿主机物理地址530之间的关联关系可以被解除。
应当注意,由于虚拟机运行于宿主机上,虚拟机的物理地址并不是真正的物理地址,而实际上对应于宿主机的物理地址。因而,在如箭头C和D所示的步骤中仅进行了地址的重新映射,而并不执行数据拷贝操作。地址映射操作的执行效率远远高于数据拷贝操作的效率,因而本发明所述的各个实施方式可以大大提高数据交换效率。还应当注意,宿主机物理地址530表示的存储空间内的数据并没有被覆盖,当需要时可以基于交换空间540来访问已经进行了“本地数据交换”的数据(如箭头E、C所示)。
在本发明的一个实施方式中,进一步包括初始化步骤:响应于来自虚拟机的设备加载(Mounting)请求,建立用于传输与交换请求相关联数据的通道。初始化步骤可以在虚拟机和宿主机之间建立特殊的通信通道,以便支持根据本发明各实施方式的数据交换。例如,当在虚拟机处检测到虚拟机期望执行数据交换时,可以通过该通道向宿主机发送数据交换请求;而当在宿主机处完成了本地交换后,可以向虚拟机返回执行结果。例如,返回值“真”可以表示成功,而返回值“假”可以表示不成功;另外,还可以定义例如错误代码等其他返回值。
在本发明的一个实施方式中,设备加载请求由以下步骤生成:驱动由配置文件定义的交换设备;以及基于交换设备生成设备加载请求。具体地,参见图6进行描述。
图6示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的方法的初始化步骤600。步骤S602-S608示出了生成并发送设备加载请求的具体步骤。在步骤S602中,读取配置文件。其中配置文件定义了虚拟机需要加载何种类型的文件***,例如在上文的“etc/fstab”中定义了用于本地数据交换的Swap文件***。接着,调取交换驱动器(步骤S604)来驱动在配置文件中指定的“伪”交换设备(步骤S606)。继而,在步骤S608中发送设备加载请求(在此实施方式中设备加载请求是对“伪”交换设备进行设备加载的请求)。在步骤S610处,向虚拟机分配空间并返回设备加载地址。此时即可在虚拟机与宿主机之间建立用于实现本地交换请求的通道。
在上文中参见附图6示出了对支持本地交换请求的“伪”交换设备进行设备加载的过程,本领域技术人员应当注意,基于不同的虚拟机环境,还可以设计并实现其他的设备加载方案。
在上文中描述了在虚拟环境中进行本地数据交换的方法,现在将详细描述如何对本发明中的虚拟机进行迁移。虚拟机的迁移是指将运行于一台宿主机上的虚拟机迁移到新的目标宿主机。对虚拟机进行迁移的原因例如,当前的宿主机的存储资源、计算能力等不能满足虚拟机的需求,等。
当对支持本发明所述的数据交换的虚拟机进行迁移时,除了需要执行传统迁移步骤以外,当有数据被“本地交换”到交换空间中时,还需要对交换空间中的数据进行特殊处理;否则,可以以常规方式来迁移虚拟机。
应当注意,在迁移虚拟机期间可能会产生额外的工作量,然而由于对虚拟机进行迁移将会涉及多方面的协调,因而仅在较少情况下(例如,源虚拟机出现故障或者各项资源不能满足虚拟机的要求)才会进行迁移。然而,在虚拟机中的数据交换则是虚拟机正常运行期间的常规操作,并且很可能会被频繁地执行。因而,尽管本发明的技术方案会给虚拟机迁移带来一定程度的负担,然而相对于可以大幅度提高虚拟机性能的优势而言,这些负担是可接受的。应当注意,在执行迁移之前还需要判断目标宿主机是否支持本发明所述的本地数据交换,在下文中将详细描述迁移的具体步骤。
在本发明的一个实施方式中,响应于将虚拟机从宿主机迁移至目标宿主机的迁移请求,判断目标宿主机是否支持本地数据交换;响应于目标宿主机不支持本地数据交换:将交换空间作为迁移后的虚拟机的远程存储空间,或将交换空间中的数据发送至迁移后的虚拟机可访问的存储装置。
当目标宿主机不支持本地数据交换(即,目标宿主机是普通的宿主机,并不具备如参见图3所示***架构)时,可以使得迁移后的虚拟机按照传统数据交换方式(例如,参见图2B所示)进行操作。此时,可以将虚拟机在源宿主机中的交换空间作为迁移后的虚拟机的普通交换空间(即,类似于常规数据交换,虚拟机将数据交换到远程存储空间中)。当在迁移后的虚拟机中需要访问先前被交换的数据时,可以从源宿主机处的交换空间中读取数据。另外,还可以将交换空间中的数据发送至迁移后的虚拟机可访问的任何存储装置。在此并不限制存储装置的物理位置,只要迁移后的虚拟机能够访问该存储装置即可。
在本发明的一个实施方式中,进一步包括:响应于目标宿主机支持本地数据交换,判断宿主机与目标宿主机之间是否存在共享空间;响应于宿主机与目标宿主机之间存在共享空间,将交换空间中的数据移至共享空间,以及通知目标宿主机。
当目标宿主机支持根据本发明的本地数据交换时,需要将源宿主机的交换空间中的数据移至目标宿主机的本地存储器中,以便在需要时读取。本领域技术人员应当理解,当源宿主机与目标宿主机之间存在共享空间时,将交换空间中的数据移至共享空间是一种向目标宿主机传输数据的高效方式。当将交换空间中的数据移至共享空间后,可以通知目标宿主机来完成虚拟机迁移的后续步骤,例如重新激活迁移后的虚拟机等。
在本发明的一个实施方式中,响应于宿主机与目标宿主机之间不存在共享空间,将交换空间中的数据发送至目标宿主机的本地存储空间,以及通知目标宿主机。当源宿主机与目标宿主机之间没有共享空间时,可以向目标宿主机发送交换空间中的数据。此时,可以在目标宿主机的物理存储空间中建立本地交换空间,以便在需要是访问该数据。
图7示意性示出了根据本发明的一个实施方式的对支持数据交换的虚拟机进行迁移的步骤的流程图700。首先在步骤S702中接收迁移请求,接着在步骤S704中判断目标宿主机是否支持本地数据交换。当判断结果为“是”时流程前进至步骤S706,将交换空间中的数据移至源宿主机与目标宿主机之间的共享空间,或者将其发送至目标宿主机的本地存储空间。当目标宿主机不支持本地数据交换时,则可以将源宿主机中的交换空间作为迁移后的虚拟机的远程存储空间(即,不需要经由网络向目标宿主机发送数据),或者将交换空间中的数据发送至迁移后的虚拟机可访问的存储装置。在步骤S710中,可以向目标宿主机通知:是否向目标宿主机发送了源宿主机的交换空间中的数据以及采用何种方式发送,以便目标宿主机可以进行响应处理。
在本发明的一个实施方式中,可以在宿主机处的交换服务代理中实现本地数据交换。
图8示意性示出了根据本发明的一个实施方式的用于在虚拟机环境中进行数据交换的装置的框图800。该装置包括:查找模块810,配置用于响应于来自虚拟机的交换请求,查找与所述交换请求相关联的存储空间;分配模块830,配置用于将所述宿主机中与所述存储空间相匹配的空闲的物理存储空间分配给所述虚拟机,以便所述空闲的物理存储空间在逻辑上成为所述虚拟机的可用存储空间;其中所述虚拟机在所述宿主机上运行,以及所述存储空间是所述宿主机中的物理存储空间。
在本发明的一个实施方式中,所述交换请求至少包括:所述虚拟机的标识符以及所述存储空间在所述虚拟机中的虚拟地址。
在本发明的一个实施方式中,进一步包括:标识模块820,配置用于将所述存储空间在宿主机中的物理地址的范围标识为交换空间;以及访问模块,配置用于响应于对所述存储空间的访问请求,经由所述交换空间访问所述存储空间。
在本发明的一个实施方式中,所述标识模块820包括:第一获取模块,配置用于基于所述虚拟机的标识符以及所述虚拟地址,获取所述存储空间在所述虚拟机中的虚拟机物理地址;第二获取模块,配置用于基于所述虚拟机物理地址获取所述存储空间在所述宿主机中的物理地址。
在本发明的一个实施方式中,所述分配模块包括:选择模块,配置用于选择所述宿主机中与所述存储空间大小相等的空闲的物理存储空间;关联模块,配置用于将所述空闲的物理存储空间在所述宿主机中的物理地址关联于所述存储空间在所述虚拟机中的虚拟机物理地址。
在本发明的一个实施方式中,进一步包括:初始化模块,配置用于响应于来自虚拟机的设备加载请求,建立用于传输与所述交换请求相关联数据的通道。
在本发明的一个实施方式中,所述设备加载请求由以下模块生成:驱动模块,配置用于驱动由配置文件定义的交换设备;以及生成模块,配置用于基于所述交换设备生成所述设备加载请求。
在本发明的一个实施方式中,进一步包括:第一判断模块,配置用于响应于将所述虚拟机从所述宿主机迁移至目标宿主机的迁移请求,判断所述目标宿主机是否支持本地数据交换;第一迁移模块,配置用于响应于所述目标宿主机不支持本地数据交换:将所述交换空间作为迁移后的虚拟机的远程存储空间,或将所述交换空间中的数据发送至迁移后的虚拟机可访问的存储装置。
在本发明的一个实施方式中,进一步包括:第二判断模块,配置用于响应于所述目标宿主机支持本地数据交换,判断所述宿主机与所述目标宿主机之间是否存在共享空间;第二迁移模块,配置用于响应于所述宿主机与所述目标宿主机之间存在共享空间,将所述交换空间中的数据移至所述共享空间,以及通知所述目标宿主机。
在本发明的一个实施方式中,进一步包括:第三迁移模块,配置用于响应于所述宿主机与所述目标宿主机之间不存在共享空间,将所述交换空间中的数据发送至所述目标宿主机的本地存储空间,以及通知所述目标宿主机。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种在虚拟机环境中进行数据交换的方法,包括:
响应于来自虚拟机的交换请求,查找与所述交换请求相关联的存储空间;
将所述存储空间在宿主机中的物理地址的范围标识为交换空间;
将宿主机中与所述存储空间相匹配的空闲的物理存储空间分配给所述虚拟机,以便所述空闲的物理存储空间在逻辑上成为所述虚拟机的可用存储空间,其中所述虚拟机在所述宿主机上运行,
响应于将所述虚拟机从所述宿主机迁移至目标宿主机的迁移请求,判断所述目标宿主机是否支持所述数据交换;
响应于所述目标宿主机不支持所述数据交换:将交换空间作为迁移后的虚拟机的远程存储空间,或将交换空间中的数据发送至迁移后的虚拟机可访问的存储装置。
2.根据权利要求1所述的方法,其中所述交换请求至少包括:
所述虚拟机的标识符以及所述存储空间在所述虚拟机中的虚拟地址。
3.根据权利要求1或2所述的方法,其中将所述宿主机中与所述存储空间相匹配的空闲的物理存储空间分配给所述虚拟机,以便所述空闲的物理存储空间在逻辑上成为所述虚拟机的可用存储空间包括:
选择所述宿主机中与所述存储空间大小相等的空闲的物理存储空间;以及
将所述空闲的物理存储空间在所述宿主机中的物理地址关联于所述存储空间在所述虚拟机中的虚拟机物理地址。
4.根据权利要求1所述的方法,进一步包括:
响应于对所述存储空间的访问请求,经由所述交换空间访问所述存储空间。
5.根据权利要求1所述的方法,其中将所述存储空间在宿主机中的物理地址的范围标识为交换空间包括:
基于所述虚拟机的标识符以及所述虚拟地址,获取所述存储空间在所述虚拟机中的虚拟机物理地址;以及
基于所述虚拟机物理地址获取所述存储空间在所述宿主机中的物理地址。
6.根据权利要求1或2所述的方法,进一步包括初始化步骤:
响应于来自虚拟机的设备加载请求,建立用于传输与所述交换请求相关联数据的通道。
7.根据权利要求6所述的方法,其中所述设备加载请求由以下步骤生成:
驱动由配置文件定义的交换设备;以及
基于所述交换设备生成所述设备加载请求。
8.根据权利要求1所述的方法,进一步包括:
响应于所述目标宿主机支持所述数据交换,判断所述宿主机与所述目标宿主机之间是否存在共享空间;以及
响应于所述宿主机与所述目标宿主机之间存在共享空间,将所述交换空间中的数据移至所述共享空间,以及通知所述目标宿主机。
9.根据权利要求8所述的方法,进一步包括:
响应于所述宿主机与所述目标宿主机之间不存在共享空间,将所述交换空间中的数据发送至所述目标宿主机的本地存储空间,以及通知所述目标宿主机。
10.一种在虚拟机环境中进行数据交换的装置,包括:
查找模块,配置用于响应于来自虚拟机的交换请求,查找与所述交换请求相关联的存储空间;
标识模块,配置用于将所述存储空间在宿主机中的物理地址的范围标识为交换空间;
分配模块,配置用于将宿主机中与所述存储空间相匹配的空闲的物理存储空间分配给所述虚拟机,以便所述空闲的物理存储空间在逻辑上成为所述虚拟机的可用存储空间;其中所述虚拟机在所述宿主机上运行;
第一判断模块,配置用于响应于将所述虚拟机从所述宿主机迁移至目标宿主机的迁移请求,判断所述目标宿主机是否支持所述数据交换;以及
第一迁移模块,配置用于响应于所述目标宿主机不支持所述数据交换:将所述交换空间作为迁移后的虚拟机的远程存储空间,或将所述交换空间中的数据发送至迁移后的虚拟机可访问的存储装置。
11.根据权利要求10的装置,其中所述交换请求至少包括:
所述虚拟机的标识符以及所述存储空间在所述虚拟机中的虚拟地址。
12.根据权利要求10或11所述的装置,其中所述分配模块包括:
选择模块,配置用于选择所述宿主机中与所述存储空间大小相等的空闲的物理存储空间;以及
关联模块,配置用于将所述空闲的物理存储空间在所述宿主机中的物理地址关联于所述存储空间在所述虚拟机中的虚拟机物理地址。
13.根据权利要求10所述的装置,进一步包括:
访问模块,配置用于响应于对所述存储空间的访问请求,经由所述交换空间访问所述存储空间。
14.根据权利要求10所述的装置,其中所述标识模块包括:
第一获取模块,配置用于基于所述虚拟机的标识符以及所述虚拟地址,获取所述存储空间在所述虚拟机中的虚拟机物理地址;
第二获取模块,配置用于基于所述虚拟机物理地址获取所述存储空间在所述宿主机中的物理地址。
15.根据权利要求10或11所述的装置,进一步包括:
初始化模块,配置用于响应于来自虚拟机的设备加载请求,建立用于传输与所述交换请求相关联数据的通道。
16.根据权利要求15所述的装置,其中所述设备加载请求由以下模块生成:
驱动模块,配置用于驱动由配置文件定义的交换设备;以及
生成模块,配置用于基于所述交换设备生成所述设备加载请求。
17.根据权利要求10所述的装置,进一步包括:
第二判断模块,配置用于响应于所述目标宿主机支持所述数据交换,判断所述宿主机与所述目标宿主机之间是否存在共享空间;
第二迁移模块,配置用于响应于所述宿主机与所述目标宿主机之间存在共享空间,将所述交换空间中的数据移至所述共享空间,以及通知所述目标宿主机。
18.根据权利要求17所述的装置,进一步包括:
第三迁移模块,配置用于响应于所述宿主机与所述目标宿主机之间不存在共享空间,将所述交换空间中的数据发送至所述目标宿主机的本地存储空间,以及通知所述目标宿主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210430038.3A CN103793330B (zh) | 2012-10-31 | 2012-10-31 | 在虚拟机环境中进行数据交换的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210430038.3A CN103793330B (zh) | 2012-10-31 | 2012-10-31 | 在虚拟机环境中进行数据交换的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793330A CN103793330A (zh) | 2014-05-14 |
CN103793330B true CN103793330B (zh) | 2017-03-01 |
Family
ID=50669029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210430038.3A Active CN103793330B (zh) | 2012-10-31 | 2012-10-31 | 在虚拟机环境中进行数据交换的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793330B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354670A (zh) * | 2015-07-16 | 2017-01-25 | 阿里巴巴集团控股有限公司 | 一种用于虚拟化环境下传输数据的方法与设备 |
CN111831588A (zh) | 2015-10-21 | 2020-10-27 | 华为技术有限公司 | 一种存储设备访问方法、装置和*** |
CN106549800A (zh) * | 2016-10-31 | 2017-03-29 | 北京奇鱼时代科技有限公司 | 用于在网络***中批量校验数据接口的方法和装置 |
CN109582592B (zh) * | 2018-10-26 | 2021-06-15 | 华为技术有限公司 | 资源管理的方法和装置 |
CN112052100B (zh) * | 2019-06-06 | 2023-05-12 | 华为技术有限公司 | 基于共享内存的虚拟机通信方法及设备 |
CN113326004B (zh) * | 2021-06-10 | 2023-03-03 | 深圳市移卡科技有限公司 | 云计算环境下高效日志集中化方法及设备 |
CN117631958A (zh) * | 2022-08-19 | 2024-03-01 | 成都华为技术有限公司 | 一种dpu的存储空间扩展方法、装置及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681257A (zh) * | 2007-04-26 | 2010-03-24 | 惠普开发有限公司 | 虚拟机控制 |
CN102467408A (zh) * | 2010-11-12 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484065B2 (en) * | 2004-04-20 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Selective memory allocation |
US7428626B2 (en) * | 2005-03-08 | 2008-09-23 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
-
2012
- 2012-10-31 CN CN201210430038.3A patent/CN103793330B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681257A (zh) * | 2007-04-26 | 2010-03-24 | 惠普开发有限公司 | 虚拟机控制 |
CN102467408A (zh) * | 2010-11-12 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103793330A (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793330B (zh) | 在虚拟机环境中进行数据交换的方法和装置 | |
CA2758304C (en) | Converting luns into files or files into luns in real time | |
US9009437B1 (en) | Techniques for shared data storage provisioning with thin devices | |
CN103064927B (zh) | 分布式文件***的数据访问方法和装置 | |
US8370833B2 (en) | Method and system for implementing a virtual storage pool in a virtual environment | |
CN101727331B (zh) | 升级活动虚拟机的客户操作***的方法和设备 | |
US7966470B2 (en) | Apparatus and method for managing logical volume in distributed storage systems | |
US9952782B1 (en) | Method and system for accessing data between different virtual disk formats in a virtualization environment | |
US11132290B2 (en) | Locality domain-based memory pools for virtualized computing environment | |
US11119942B2 (en) | Facilitating access to memory locality domain information | |
CN105808167B (zh) | 一种基于sr-iov的链接克隆的方法、存储设备及*** | |
KR101650424B1 (ko) | 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송 | |
US10970106B1 (en) | Storage device sharing among virtual machines | |
KR20090082781A (ko) | 다중 코어 시스템에서 접근 시간에 기초한 메모리 관리방법 및 장치 | |
US20150236974A1 (en) | Computer system and load balancing method | |
US10691590B2 (en) | Affinity domain-based garbage collection | |
CN103207805A (zh) | 基于虚拟化的硬盘复用*** | |
CN114424180A (zh) | 增加跨帧实时更新的性能 | |
CN106293994A (zh) | 网络文件***中的虚拟机克隆方法和网络文件*** | |
KR101512716B1 (ko) | 가상 스토리지 이미지 경량화 시스템 및 가상 스토리지 이미지 경량화 시스템의 입출력 방법 및 가상 스토리지 이미지 생성 방법 | |
JP2012079245A (ja) | 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム | |
KR20120063946A (ko) | 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법 | |
US11106543B2 (en) | Application image cloning system | |
JP6657990B2 (ja) | ストレージ装置、仮想ボリューム制御システム、仮想ボリューム制御方法および仮想ボリューム制御プログラム | |
JP2022031363A (ja) | 制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |