与客户端虚拟机交互的技术的制作方法

文档序号:6361414阅读:183来源:国知局
专利名称:与客户端虚拟机交互的技术的制作方法
与客户端虚拟机交互的技术披露领域本披露总体上涉及虚拟机间通信,更具体地涉及与客户端虚拟机交互的技术。披露背景可以将虚拟机设计为利用配置它们拥有的无论任何资源,而不考虑底层物理平台的状态如何。底层物理平台可以包含多个客户端虚拟机,这些虚拟机全部被配置为使用多于实际出现在物理平台上的资源(例如,当底层主机只包含20千兆字节的内存时,可以将三个虚拟客户端虚拟机各自配置为使用10千兆字节的内存)。客户端虚拟机不能确定底层平台的状态(例如,可利用资源)和运行在底层平台上的其他虚拟机的状态。结果,客户端虚拟机可能试图使用比当前在底层平台上可利用的资源更多的资源。运行在客户端虚拟机上的进程可能无法接收表示另一个虚拟机的状态的信息。有鉴于前述情况,可以理解的是,存在与当前虚拟机通信技术有关的严重问题和缺陷。披露综述在此披露了虚拟机间通信的多种技术。在一个具体示例性实施方案中,这些技术可以实现为一种与客户端虚拟机交互的方法,该方法包括利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载,识别具有指定格式的内存结构,并且利用该安全虚拟机执行以下内容中的至少一项:读取该识别的内存结构中的一个或多个部分和在该识别的内存结构中设置一个值。根据该具体示例性实施方案的其他方面,镜像负载可以包括以下内容中的至少一种:可执行代码的负载和动态链接库的负载。根据该具体示例性实施方案的另一些方面,指定的格式可以包括标记控制块。根据该具体示例性实施方案的附加方面,该方法可以进一步包括识别一个处理程序以便至少部分地基于该识别内存结构中的数据的一部分来处理该识别的内存结构。根据该具体示例性实施方案的附加方面,该识别的内存结构中的数据的一部分可以包括以下内容中的至少一项:版本数据(指示虚拟机间的通信语法的具体版本)、类型字符串(指示虚拟机间通信的类型)、以及长度数据(指示该通信数据的长度)。根据该具体示例性实施方案的附加方面,该方法可以进一步包括利用该客户端虚拟机读取在该识别的内存结构中设置的值,并且响应于读取该至少一个值由该客户端虚拟机执行至少一个动作。根据该具体示例性实施方案的附加方面,该方法可以进一步包括利用该安全虚拟机监控底层物理平台的一个或多个平台环境属性。根据该具体示例性实施方案的附加方面,该一个或多个平台环境属性可以包括以下内容中的至少一项:=CUP利用率、内存利用率;网络利用率;以及存储器利用率。根据该具体示例性实施方案的附加方面,该方法可以包括确定一个或多个平台属性超出了一个指定阈值,识别将减少其资源消耗的客户端虚拟机进程,在对应于该识别的客户端虚拟机进程的所识别的内存结构中设置一个值,利用该客户端虚拟机读取在对应于该识别的客户端虚拟机进程的该识别内存结构中设置的值;并且响应于读取该至少一个值由该客户端虚拟机执行至少一个动作,以减少该识别的客户端虚拟机进程的资源消耗。根据该具体示例性实施方案的附加方面,在该识别的内存结构中设置的值可以包括一项设置,该设置为该识别的客户端虚拟机进程指示一个可配置节流值,该可配置节流值使得该识别的客户端虚拟机进程减少与该可配置节流值相称的CPU资源的使用。根据该具体示例性实施方案的附加方面,该进程可以包括病毒扫描进程、反病毒更新进程、数据备份进程以及数据恢复进程中的至少一项。根据该具体示例性实施方案的附加方面,识别将减少其资源消耗的客户端虚拟机进程包括使用通过输出的标记控制块提供给该安全虚拟机的客户端虚拟机进程信息。根据该具体示例性实施方案的附加方面,利用安全虚拟机监控到客户端虚拟机的电子内存的镜像负载可以包括检测该安全虚拟机已知的一个进程的载入,以提供输出的标记控制块。根据该具体示例性实施方案的附加方面,读取该识别的内存结构的一个或多个部分可以包括读取输出的客户端虚拟机进程信息。根据该具体示例性实施方案的附加方面,该输出的客户端虚拟机进程信息可以包括在该客户端虚拟机上运行的一个具体进程的多个副本的当前编号。根据该具体示例性实施方案的附加方面,这些技术可以实现为至少一个永久处理器可读存储介质,该存储介质用于存储由指令构成的一个计算机程序,该指令被配置成可由至少一个处理器读取,以指示该至少一个处理器执行实施该方法的一个计算机进程。在另一个具体示例性实施方案中,这些技术可以实现为一种与客户端虚拟机交互的制品,该制品可以包括至少一个永久处理器可读介质,以及存储在该至少一个介质上的指令,其中该指令被配置成可由至少一个处理器从该至少一个介质读取并因此使得该至少一个处理器操作用于利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载,识别具有指定格式的内存结构,并且利用该安全虚拟机执行以下内容中的至少一项:读取该识别的内存结构中的一个或多个部分,以及在该识别的内存结构中设置一个值。在另一个具体示例性实施方案中,这些技术可以实现为一种与客户端虚拟机交互的系统,该系统包括通信地连接至网络的一个或多个处理器;其中该一个或多个处理器被配置成利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载,识别具有指定格式的内存结构,并且利用该安全虚拟机执行以下内容中的至少一项:读取该识别的内存结构中的一个或多个部分;并且在该识别的内存结构中设置一个值。根据该具体示例性实施方案的附加方面,该指定格式可以包括标记控制块。根据该具体示例性实施方案的附加方面,该一个或多个处理器可以进一步被配置成:识别一个处理程序以便至少部分地基于该识别内存结构中的数据的一部分来处理该识别的内存结构。根据该具体示例性实施方案的附加方面,该一个或多个处理器可以进一步被配置成:利用该客户端虚拟机读取在该识别的内存结构中设置的值,并且响应于读取该至少一个值由该客户端虚拟机执行至少一个动作。现在将参考附图中所示的本披露的示例性实施方案更为详细地描述本披露。尽管以下参考示例性实施方案描述了本披露,但应当理解本披露不限制于这些实施方案。使用这些技术的本领域普通技术人员会识别附加的实现方式、修改形式、和实施方案以及其他领域的使用,它们在本文描述的本披露的范围内,并且根据它们本披露可以具有重大效用。附图简要说明为了帮助更充分地理解本发明,现在参考附图,其中相似的元素以相似的标号来引用。不应当将这些附图解释为限制本披露,而是仅用于示例。

图1根据本披露的一个实施方案展示了描绘一种网络架构的框图,该网络架构包含用于虚拟机间通信的平台。图2根据本披露的一个实施方案描绘了一种计算机系统的框图。图3根据本披露的一个实施方案展示了一个用于虚拟机间通信的模块。图4根据本披露的一个实施方案展示了一种用于虚拟机间通信的方法。图5根据本披露的一个实施方案展示了一种用于虚拟机间通信的方法。示例性实施方案的详细说明图1根据本披露的一个实施方案展示了描绘一种用于虚拟机间的通信的网络架构100的框图。图1是网络架构100的简化视图,该网络架构可以包括未绘出的附加元素。网络架构100可以包含客户端系统110以及服务器140A和140B(可以利用图2中所示的计算机系统200来实施它们中的一个或多个)。客户端系统110可以通信地连接至网络150。服务器140A可以通信地连接至存储装置160A (I) - (N),并且服务器140B可以通信地连接至存储装置160B(1)-(N)。服务器140A和140B可以包含管理模块(例如,服务器140A的标记内存交互管理模块154)。服务器140A和140B可以通信地连接至SAN (存储区域网络)结构170。SAN结构170可以支持服务器140A和140B以及客户端系统110通过网络150来访问存储装置ISO(I)-(N)。服务器140A可以通信地连接至网络190。服务器140A可以是托管虚拟化环境145的平台。虚拟化环境145能够支持一个或多个虚拟机,例如像客户端虚拟机156A-156C和安全虚拟机158。客户端虚拟机156A-156C可以包含标记内存模块165A-165C。安全虚拟机156可以包含内存监控模块168。如以下更为详细讨论的,标记内存模块165A-165C和内存监控模块168可以允许虚拟机之间(例如,在一些客户端虚拟机和一个安全虚拟机之间)的通信和交互。参见图2的计算机系统200,调制解调器247、网络接口 248或某一其他方法可用于提供从客户端系统Iio中的一个或多个到网络150的连接。客户端系统110能够利用例如网络浏览器或其他客户端软件访问服务器140A或140B上的信息。这种客户端可以允许客户端系统110访问由服务器140A或140B或者存储装置160A (I) - (N)、160B (I) - (N)、和/或ISO(I)-(N)之一托管的数据。网络150和190可以是局域网(LAN)、广域网(WAN)、互联网、蜂窝网络、卫星网络、或允许在客户端110、服务器140和通信连接至150和190的其他装置之间进行通信的其他网络。网络150和190可以进一步包括作为一个独立网络或彼此配合操作的上述示例类型的网络中的一个或任意数量。网络150和190可以利用它们所通信性地连接到其上的一个或多个客户端或服务器的一个或多个协议。网络150和190可以转换到其他协议或从其他协议转换到网络装置的一个或多个协议。尽管网络150和190各自被描绘为一个网络,应当理解的是,根据一个或多个实施方案,网络150和190各自可以包括多个互联的网络。存储装置160A(1)-(N)、160B(1)-(N)JP/*180(1)-(N)可以是网络可访问存储器并且可以是位于服务器140A或140B本地、远离它们或两者结合。存储装置160A (I) - (N)、16( (1)-沏、和/或180(1)-(沁可以利用廉价磁盘冗余阵列(“RAID”)、磁带、磁盘、存储区域网络(“SAN”)、互联网小型计算机系统接口(“iSCSI”)SAN、光纤信道SAN、通用互联网文件系统(“CIFS”)、网络连接存储(“NAS”)、网络文件系统(“NFS”)、光基存储器、或其他计算机可访问存储器。存储装置160A⑴-(N)、160B(l)-(N)、和/或180(l)-(N)可用于备份或归档目的。根据一些实施方案,客户端110可以是智能电话、PDA、桌上计算机、膝上计算机、服务器、另一个计算机、或通过无线或有线连接与网络150相连接的另一个装置。客户端110可以从用户输入、数据库、文件、网络服务、和/或应用程序编程接口接收数据。服务器140A或140B可以是应用服务器、归档平台、备份服务器、网络存储装置、媒体服务器、电子邮件服务器、文档管理平台、娱乐搜索服务器、或通信地连接至网络150的其他装置。服务器140A和140B可以利用存储装置160A(1)-(N)、160B(1)-(N)和/或ISO(I)-(N)之一来存储应用数据、备份数据或其他数据。服务器140A和140B可以是主机(例如应用服务器),这些主机可以处理客户端110与备份平台、备份进程和/或存储器之间传输的数据根据一些实施方案,服务器140A和140B可以是用于对数据进行备份和/或归档的平台。虚拟化环境145的客户端虚拟机156A-156C可以使用具有安全虚拟机158的预定义通信方案。客户端虚拟机156A-156C可以包含标记内存模块165A-165C,这些标记内存模块可以利用与安全虚拟机158 (例如,标记控制块)约定的格式来输出一个或多个内存结构。客户端虚拟机的输出内存结构可以向安全虚拟机提供信息或可以允许安全虚拟机设置一个或多个参数。例如,客户端虚拟机156A的标记内存模块165A可以输出内存结构,该内存结构包含与运行在客户端虚拟机156A上的一个或多个进程(例如,病毒扫描进程、反病毒更新进程等)相关的信息。安全虚拟机156可以使用内存监控模块168以利用约定的或指定的格式来检测内存结构。安全虚拟机156可以耗用或读取这些输出的内存结构。输出内存结构的耗用可以允许安全虚拟机1 56监控客户端虚拟机上的一个或多个进程的数量、类型和状态。客户端虚拟机还可以在输出内存结构中提供其他数据。客户端虚拟机156A的标记内存模块165还可以输出包含一个或多个参数的内存结构,这些参数可以由安全虚拟机156的内存监控模块168来设置。安全虚拟机156可以利用指定的格式检测内存结构并可以在输出的内存结构中设置一个或多个参数。例如,客户端虚拟机156A可以利用标记内存模块165A输出标记内存结构。根据一些实施方案,标记内存结构可以提供一个或多个参数,这些参数可以管理在客户端虚拟机156A上运行的进程的资源消耗。标记内存结构可以默认为一个值,该值可以允许客户端虚拟机使用与分配给该虚拟机的资源同样多的资源。安全虚拟机156可以监控底层平台,例如像服务器140A。安全虚拟机156的内存监控模块168可以监控存储器、CPU利用率、内存、网络输入/输出(I/O)以及其他标准。安全虚拟机156可以是虚拟化平台的管理组件,例如管理程序。安全虚拟机156因此可以访问客户端虚拟机不可利用的平台资源信息。根据一些实施方案,安全虚拟机156还可以包括一个或多个管理程序API以监控客户端虚拟机的内存负载。根据一些实施方案,可以指定一个或多个利用率阈值,例如像最大CUP利用率、最大内存利用率或其他阈值。如果满足或超出阈值,内存监控模块168可以确定是否可以降低一个或多个虚拟机的资源利用率。内存监控模块168可以使用与运行客户端虚拟机上的进程相关的信息,该信息可以由输出标记内存结构(包含进程数据)的客户端虚拟机来提供。根据一些实施方案,内存监控模块168可以包含或访问与客户端虚拟机进程优先级有关的数据,该优先级可以帮助客户端虚拟机进程的识别。根据一些实施方案,内存监控模块168可以识别在所识别的多个客户端虚拟机进程中最消耗资源的一个客户端虚拟机进程。其他因素(例如,进程开始时间、估计的进程完成时间等)可用于识别客户端虚拟机进程。当已经识别了一个客户端虚拟机进程时,内存监控模块168可以修改对应于该进程的输出内存结构中的一个或多个参数。参数可以由内存监控模块168使用以便向客户端虚拟机进程发送信号以减少消耗、停止消耗或用于其他目的。例如,参数可以是“节流值”,其中大于零的任意值表示资源消耗的减少(例如,参数可以表示动作(例如文件扫描)之间的毫秒等候时间)。其他值可以提供其他进程输入。例如,可以设置参数以表示将要停止或暂停客户端虚拟机上的进程。因此,识别具有特定格式或命名规范的输出内存结构允许安全虚拟机从客户端虚拟机接收信息或向客户端虚拟机提供信息。根据一些实施方案,安全虚拟机156可以使用内存监控模块168以观察客户端VM(GVM)中的EXE和DLL的镜像负载。安全虚拟机156可以观察并查找具有特定命名规范的输出。软件开发商可以支持在客户端虚拟机上运行的软件中的命名规范并且这种软件的进程可以输出内存结构以便与管理组件(例如,像安全虚拟机)进行通信。输出可以是包含由安全虚拟机(SVM)进行耗用或填充(或两者兼有)数据的数据结构。根据一些实施方案,根据规范命名的输出数据结构可以称为“标记控制块”。根据至少一个具体实施方案,命名规范或格式可以使用其名称以“SymSVM”开始的输出内存结构。这些输出内存结构各自可以位于它们自己的页面中,对齐以开始该页面的第一字节,并且封装输出的标记控制块的页面可以标记为非分页。根据至少一个实施方案,将控制块置于非分页内存中是可以实现的,因为页面写断点可由SVM使用以跟踪标记控制块中的状态变化。如果控制块是分页的,每次环境切换时它都可以产生断点。根据一些实施方案,当SVM首先发现了标记控制块时,关联该进程的CR3 (控制寄存器3)值可以与信息(与该跟踪的控制块有关)一起保存。如果该页面的页面写断点以不同的CR3值来识别,这可以表示相关的进程已经关闭或冲突,因为该页面未锁定并且由另一个进程重复使用。根据一个或多个实施方案,这些标记控制块各自可以开始于标准表头,该标准表头可以包括三条信息: 1.版本,这样可以识别具体格式、命名规范、或方案。2.类型字符串。3.遵循的特定类型数据的长度。类型字符串可以指定与标记控制块的具体类型相关的名称。例如,标记控制块的类型可以包括:.ClientDataStruct-包含可以允许SVM识别管理服务器的客户端的数据。.VMEnvironmentInfo-由SVM填充与GVM (客户端虚拟机)和物理主机(进程在该物理主机上运行)有关的数据。
.ScanControlStruct-可以允许SVM知道在包含的GVM中正在进行多少个扫描并且可以允许SVM指定一个值,该值可以使得GVM通过在它所处理的文件之间暂停指定的毫秒数来节流它的扫描。利用具有公共表头(具有类型和长度)的这种方案可以允许SVM类属地处理标记控制块的发现和管理并将控制块类型具体处理切换至注册的控制块类型具体处理程序。根据一个实施方案,可以实施ScanControlStruct的标记控制块。在此实施方案中,实施安全端点保护的客户端虚拟机(SEP客户端)可以节流扫描功能。如果SVM已经提供了非零节流值,根据本说明书,SEP客户端现在还可以进行节流。如果SEP客户端开始或停止一次扫描,它还可以持续更新ScanControlStruct中当前扫描的计数,这样SVM可以拥有该信息。SEP客户端可以利用最新的数据信息(用于识别一个管理服务器的客户端)持续填充ClientDataStruct中的数据。SVM可以使用该信息以便在管理系统中得到或设置与该客户端相关的信息。用于这种方案的相应SVM组件(例如内存监控模块168)现在可以在其权限下监控封装GVM的给定物理主机上的总负载。SVM现在可以使用该物理主机负载信息以及来自GVM的与它们的扫描状态有关的信息,以便对由于扫描GVM内的活动而产生的负载模式进行成形。例如,如果物理系统的负载由于在多个GVM中进行的若干扫描而变高,SVM可以指令节流一个或多个GVM扫描,直到物理系统上的重负载降至所需阈值以下。SVM可以实现各种方法以管理物理系统上的负载,同时仍确保每个GVM得到扫描(例如,节流GVM,直到负载是可容许的或只保留一个GVM进行扫描,使得剩余的扫描GVM继续,直到一个扫描GVM完成,然后一次一个地释放其他扫描GVM中的每一个,直到所有都完成它们的扫描,同时对全部GVM扫描的最大负载贡献进行限制)。除了节流病毒扫描进程、反病毒更新进程、或其他进程以外,标记存储块协议或方案可用于为各种目的而在客户端虚拟机和管理组件(例如,SVM)之间进行通信。

根据一个实施方案,SVM发现和标记控制块的处理可以在如下的高级别上进行描
O可以检测包含标记控制块的进程的镜像负载。根据一些实施方案,这可以通过监控与进程相关的内存来执行,安全虚拟机已知这些进程包含标记内存模块。安全虚拟机可以包含或访问列表、表格或指示包含标记存储块的一个或多个进程的其他数据。可以利用虚拟化环境的API和/或监控程序的API由安全虚拟机进程来监控内存。例如,根据一些实施方案,页面断点中断可用在调试服务程序上。这种中断可以对用户模式和内核模式镜像每镜像负载一次地或者在其他间隔或触发点上激活。中断、API或其他内存访问机制可以使SVM能够观察在客户虚拟机中载入的多个镜像的一个或多个。镜像负载信息可以包含文件名称、文件大小和其他数据(例如,“LoadImage Filename0x80548ef4Info0x80548ec4 Filename(27bytes) ”:\ffIND0WS\system32\KDC0M.DLL”)。监控进程或安全虚拟机可以等待特定进程名称(例如,“\ProgramFiles\Symantec\rtvscan.exe”)的镜像负载事件并且当检测到该特定进程名称时检查包含相关输出内存结构的输出表。监控进程或安全虚拟机可以识别其名称遵循指定规范(例如,像SymSVM_ScanContorlStruct这样的标记控制块)的输出。一旦发现,监控进程或安全虚拟机可以记录这些位置并在发现的页面上建立页面写入断点。监控进程可以确定哪个虚拟机在发现的页面上产生了触发事件或页面写入断点。如果存在五个虚拟机,那么在五个独立的物理页面(每个页面包含该VM的标记控制块结构)上可以存在五个页面写入断点。我们可以在SVM中保留阵列、哈希表或其他数据结构或可以访问将物理页面地址(产生页面写入断点)与VM相关联的SVM。标记内存控制块可以提供一种通用机制以用于客户端VM (GVM)中的具体进程与实施这种方案的安全VM (SVM)之间的简单且高效的通信(这种通信可以允许控制)。安全虚拟机监控客户端虚拟机的内存负载可以利用监控程序的API或虚拟化环境来执行。这只需要对面向传统的物理基础设施的软件进行微小添加。图2根据本披露的一个实施方案描绘了计算机系统200的框图。计算机系统200适于实施与本披露相一致的技术。计算机系统200可以包括总线212,该总线将计算机系统210的主要子系统相互连接,如中央处理器214、系统内存217(例如RAM(随机存取存储器)、ROM (只读存储器)、闪存RAM、或类似的存储器)、输入/输出(I/O)控制器218、外部音频装置(例如经由音频输出接口 222的扬声器系统220)、外部装置(例如经由显示适配器226的显示屏224)、串行端口 228和230、键盘232 (与键盘控制器233连接)、存储接口 234、可操作用于接收软盘238的软盘驱动器237、可操作用于与光纤通道网络290相连接的主机总线适配器(HBA)接口卡235A、可操作用于连接至SCSI总线239的主机总线适配器(HBA)接口卡235B、以及可操作用于接收光盘242的光盘驱动器240。还可以包括鼠标246 (或其他点击装置,经由串行端口 228连接至总线212)、调制解调器247(经由串行端口 230连接至总线212)、以及网络接口 248 (直接连接至总线212)、电源管理器250、以及电池252。如前所述,总线212允许中央处理器214与系统内存217之间的数据通信,该系统内存可以包括只读存储器(ROM)或闪存(均未示出)、以及随机存取存储器(RAM)(未示出)。RAM可以是可加载操作系统和应用程序的主存储器。除其他代码之外,ROM或闪存可以包含基本输入输出系统(BIOS),该系统控制基本的硬件操作,如与外围部件的交互。与计算机系统210共同驻留的多个应用程序通常存储在一种计算机可读介质上,例如硬盘驱动器(例如,固定盘244)、光盘驱动器(例如,光盘驱动器240)、软盘单元237、或者其他存储介质,并且可以通过该计算机可读介质来访问这些应用程序。例如,标记内存交互管理模块154可以驻留在系统内存217中。如计算机系统210的其他存储器接口一样,存储器接口 234可以连接至标准计算机可读介质用于信息的存储和/或检索,例如固定盘驱动器244。固定盘驱动器244可以是计算机系统210的一部分或可以是分离的并且可以通过其他接口系统来访问。调制解调器247可以通过一个电话链路提供到远程服务器上的直接连接、或者通过互联网服务提供商(ISP)提供到互联网的直接连接。网络接口 248可以通过一个直接网络链路提供到一个远程服务器的直接连接、或者通过一个POP(存在点)提供到互联网的直接连接。网络接口 248还可以使用无线技术提供此类连接,包括数字蜂窝电话连接、蜂窝数字包数据(CDPD )连接、数字卫星数据连接或类似的连接。许多其他装置或子系统(未示出)可以以类似的方式(例如,文档扫描仪、数码照相机等等)进行连接。相反,实施本披露并不要求图2中示出的所有装置都存在。装置和子系统可以采用与图2中所示的不同方式相互连接。实施本披露的代码可以存储在计算机刻度存储介质中,例如系统内存217、固定盘244、光盘242或软盘238中的一种或多种。实施本披露的代码还可以经由一个或多个接口来接收并存储在存储器中。在计算机系统210上所提供的操作系统可以是MS-DOS 、MS-WINDOWS 、OS/2 、OS X 、UN丨X 、Linux 、或另一种已知的操作系统。电源管理器250可以监控电池252的功率等级。电源管理器250可以提供一个或多个API (应用程序接口)以允许确定功率等级、在计算机系统200关机之前余留的时间窗、电源耗用速率、是否计算机系统接通主电源(例如,AC电源)或电池电源)的指示、以及其他电源相关信息。根据一些实施方案,电源管理器250的API可以远程接入(例如,可通过网络连接接入远程备份管理模块)。根据一些实施方案,电池252可以是位于计算机系统200本地或远离它的不间断电源供应器(UPS)。在这些实施方案中,电源管理器250可以提供与UPS的功率等级相关的信息。参见图3,示出了与本披露一致的标记内存交互管理模块310。如图所示,标记内存交互管理模块310可以包含一个或多个组件,这些组件包括内存输出模块312、内存负载监控模块314、输出内存处理程序模块316以及错误记录和上报模块318。以下说明描述了一种用于虚拟机间通信的系统及方法的网络元件、计算机和/或组件,可以包括一个或多个模块。如本文所用,术语“模块”可以理解为指代计算软件、固件、硬件、和/或它们的各种组合。然而,不应将模块理解为不在硬件、固件上实施的或不在处理器可读可记录存储介质(即,模块不是软件本身)上记录的软件。需要注意,这些模块是示例性的。模块可以进行组合、集成、分离和/或复制以支持各种应用。另外,代替或除了在具体模块上实施的功能外,在此描述的在该具体模块上实施的该功能可以在一个或多个其他模块上和/或由一个或其他装置来实施。进一步地,模块可以跨越多个装置和/或彼此接近或远离的其他组件来实施。另外,模块可以从一个装置移除并添加到另一个装置,和/或可以包括在两个装置中。内存输出模块312可以利用指定格式或与虚拟化管理组件(例如,安全虚拟机158)约定的规范从客户端虚拟机输出内存的一个或多个部分。客户端虚拟机的输出内存结构可以向安全虚拟机提供信息或可以允许安全虚拟机设置一个或多个参数。例如,内存输出模块312可以驻留在客户端虚拟机中并可以输出内存结构,该内存结构包含与运行在该客户端虚拟机上的一个或多个进程(例如,病毒扫描进程、反病毒更新进程)有关的信息。客户端虚拟机还可以在输出的内存结构中提供其他数据。内存输出模块312还可以输出包含一个或多个参数的内存结构,这些参数可由安全虚拟机设置。例如,内存输出模块312可以输出标记内存结构,该标记内存结构可以提供一个或多个参数,这些参数可以管理在客户端虚拟机上运行的进程的资源消耗。可以输出其他标记内存结构,以控制虚拟机的其他进程。内存负载监控模块314可以利用约定的或指定的格式检测内存结构。内存负载监控模块314可以驻留在安全虚拟机上。内存负载监控模块314可以耗用或读取这些输出的内存结构。输出的内存结构的耗用可以允许安全虚拟机监控客户端虚拟机上的一个或多个进程的数量、类型和状态。内存负载监控模块314可以利用指定的格式检测内存结构并可以设置输出的内存结构中的一个或多个参数。根据一些实施方案,当检测标记控制块时,内存负载监控模块314可以使用该标记控制块中的信息以确定具体的处理程序。例如,这些标记控制块各自可以开始于标准的表头,该表头可以包括三条信息:
1.版本,这样可以识别具体格式、命名规范、或方案。2.类型字符串。3.遵循的特定类型数据的长度。类型字符串可以指定与标记控制块的具体类型相关的名称。名称可以由内存负载监控模块314使用以调用或实例化该类型的具体处理程序。根据一些实施方案,内存负载监控模块314可以观察客户端VM (GVM)中的EXE和DLL的镜像负载。内存负载监控模块314可以利用特定的命名规范查找输出。软件开发者可以在运行于客户端虚拟机上的软件中支持命名规范并且这种软件的进程可以输出内存结构以便与管理组件(例如,像安全虚拟机)进程通信。输出可以是包含由安全虚拟机(SVM)使用或填入(或两者兼有)数据的数据结构。根据一些实施方案,根据该规范命名的输出数据结构可以称为“标记控制块”。输出内存处理程序模块316可以是一个或多个特定处理程序以处理具体类型的标记内存结构(例如,标记控制块)。输出内存处理程序模块316可以驻留在安全虚拟机上。可以存在多个不同的处理程序,它们各自被设计用于处理具体类型的标记内存结构。这可以允许标记内出通信方案的方便扩展性和灵活性。输出内存处理程序模块316可以耗用或填入其所引用的标记内存结构。错误记录和上报模块318可以产生日志、报告、或与虚拟机间通信相关的信息。参见图4,描绘了根据本披露的一个实施方案的一种用于虚拟机间通信的方法400。方法400可以开始于模块402。在模块404,标记内存结构可以利用指定的标记格式从客户端虚拟机输出。在模块406,客户端虚拟机的镜像负载可以从安全虚拟机进行监控。根据一些实施方案,镜像负载的扫描可以只针对实施标记内存通信方案的进程的镜像负载进行。这种进程的表或其他内存结构可用于安全虚拟机。在模块408,安全虚拟机可以确定是否已经在镜像负载中识别了标记内存结构。标记内存结构可以是例如标记控制块。例如,命名规范或格式可以使用其名称以“SymSVM_”开始的输出内存结构。输出内存结构各自可以位于它们自己的页面上,对齐以开始该页面的第一字节,并且封装输出标记控制块的页面可以标记非分页。如果检测到了标记内存结构,该方法可以在模块410继续进行。如果未检测到标记内存结构,该方法可以返回至模块 406。在模块410,所识别的标记内存结构可以发送至具体的处理程序,或者具体的处理程序可以实例化或调用并配备有标记内存结构的地址。处理程序可以由标记内存结构的类型来确定。可以存在将标记内存结构类型映射至处理程序的查找、将标记内存结构类型映射至处理程序的特定规则、或另一种方法,该方法识别用于特定类型的标记内存结构的处
理程序。在模块412,具体处理程序可以确定是否耗用或填入标记内存结构(例如,读取数据或设置数据值)。根据一些实施方案,两者都可以进行。如果将要读取标记内存结构将,该方法可以在模块414继续进行。如果将要填入标记内存结构,该方法可以在模块416继续进行。在模块414,用于特定类型的标记内存结构的处理程序可以读取输出的控制结构值。例如,内存结构可以包含在客户端虚拟机上运行的一个或多个进程(例如,病毒扫描进程、反病毒更新进程等)的信息。在模块416,可以设置或填入输出内存结构值或参数。例如,所填入的值可以提供一个或多个参数,这些参数可以管理在客户端虚拟机上运行的进程的资源消耗。可以输出其他标记内存结构,以控制虚拟机的其他进程。在模块418,方法400可以结束。参见图5,描绘了根据本披露的一个实施方案的一种用于虚拟机间通信的方法500。方法500开始于模块502。在模块504,安全虚拟机或虚拟平台的其他管理组件可监控平台环境状态指示(例如,CPU利用率、内存利用率、忘了利用率和存储器利用率)。安全虚拟机可以获取对客户端虚拟机不可利用的平台资源信息。根据一些实施方案,安全虚拟机还可以使用一个或多个管理程序API以监控客户端虚拟机的内存负载。在模块506,可以确定表示利用率的参数是否超出指定的阈值。根据一些实施方案,可以指定一个或多个利用率阈值,例如像最大CUP利用率、最大存储利用率或其他阈值。如果满足或超出阈值,该方法可以在模块508继续。如果不满足或超出阈值,该方法可以返回至模块504。在模块508,该方法可以确定是否可以降低一个或多个虚拟机的资源利用率。该方法可以使用与运行在客户端虚拟机上的进程有关的信息,该信息可以由输出包含进程数据的标记内存结构的客户端虚拟机来提供。根据一些实施方案,可以使用与客户端虚拟机进程优先级相关的数据,该优先级可以帮助识别客户端虚拟机进程。根据一些实施方案,可以识别在所识别的多个客户端虚拟机进程中最消耗资源的客户端虚拟机进程。可以使用其他因素来识别客户端虚拟机进程(例如,进程起始时间、估计的进程完成时间等)。在模块510,安全虚拟机可以在对应于识别的客户端虚拟机进程的输出内存结构中填入一个值。填入的值可用于向客户端虚拟机进程发送信号以减少消耗、停止消耗或用于其他目的。例如,填入的值或参数可以是“节流值”,其中大于零的任意值表示资源消耗的减少(例如,参数可以表示动作(例如文件扫描)之间的毫秒等候时间)。其他值可以提供其他进程输入。例如,可以设置参数以表示将要停止或暂停客户端虚拟机上的进程。在模块512,客户端虚拟机可以读取填入的输出内存结构值。在模块514,客户端虚拟机可以根据填入的内存结构值修改资源(例如,CPU)的使用。例如,虚拟机进程可以实现进程的循环之间的暂停或等候。在模块516,方法500可以结束。此时应当注意的是,如以上描述的根据本披露的虚拟机间通信通常包括在某种程度上处理输入数据和参数输出数据。这种输入数据处理和输出数据产生可以在硬件或软件上实施。例如,特定的电子组件可以用在虚拟机间通信模块或类似的或相关的电路中,以便根据本披露实施以上描述的与虚拟机间通信相关的功能。可替代地,根据指令操作的一个或多个处理器可以根据本披露实施以上描述的与虚拟机间通信相关的功能。如果是这种情况,这些指令可以存储在一个或多个处理器可读存储介质(例如,磁盘或其他存储介质)中或通过一个或多个信号(体现在一个或多个载波中)传输至一个或多个处理器,这是在本披露的范围内的。
本披露在范围上不受在此描述的具体实施方案的限制。的确,除了在此描述的那些实施方案外,对本领域普通技术人员而言,本披露的其他各种实施方案和修改形式将从前述描述和附图中变得明显。因此,这些其他实施方案和修改形式的目的是落入本披露的范围之内。另外,尽管已经出于特定目的在具体环境的具体实施方案的环境中描述了本披露,但本领域普通技术人员将认识到它的益处不限制于这些实施方案并且本披露可以出于任意数量的目的在任意数量的环境中有利地实施。因此,以下提出的权利要求应当根据本披露的全部范围和精神来解释。
权利要求
1.一种与客户端虚拟机交互的方法,包括: 利用安全虚拟机监控到客户端虚拟机中的一个或多个镜像负载; 识别具有指定格式的受监控负载镜像中的内存结构;并且 利用该安全虚拟机执行以下内容中的至少一项: 读取该识别的内存结构中的一个或多个部分;并且 在该识别的内存结构中设置一个值。
2.根据权利要求1所述的方法,其中该镜像负载包括以下内容中至少一项:可执行代码的负载和动态链接库的负载。
3.根据权利要求1所述的方法,其中该指定格式包括标记控制块。
4.根据权利要求1所述的方法,进一步包括: 识别一个处理程序以便至少部分地基于该识别内存结构中的数据的一部分来处理该识别的内存结构。
5.根据权利要求4所述的方法,其中该识别的内存结构中的数据的一部分包括以下内容中的至少一项:版本数据,指示虚拟机间的通信语法的具体版本;类型字符串,指示虚拟机间通信的类型;以及长度数据,指示该通信数据的长度。
6.根据权利要求1所述的方法,进一步包括: 利用该客户端虚拟机读取在该识别的内存结构中设置的值;并且 响应于读取该至少一个值由该客户端虚拟机执行至少一个动作。
7.根据权利要求 1所述的方法,进一步包括: 利用该安全虚拟机监控底层物理平台的一个或多个平台环境属性。
8.根据权利要求7所述的方法,其中该一个或多个平台环境属性包括以下内容中的至少一项:CUP利用率、内存利用率;网络利用率;以及存储器利用率。
9.根据权利要求7所述的方法,进一步包括: 确定该一个或多个平台属性超出了一个指定阈值; 识别将减少其资源消耗的客户端虚拟机进程; 在对应于该识别的客户端虚拟机进程的所识别的内存结构中设置一个值; 利用该客户端虚拟机读取在对应于该识别的客户端虚拟机进程的该识别内存结构中设置的值;并且 响应于读取该至少一个值由该客户端虚拟机执行至少一个动作,以减少该识别的客户端虚拟机进程的资源消耗。
10.根据权利要求9所述的方法,其中在该识别的内存结构中设置的值包括一项设置,该设置为该识别的客户端虚拟机进程指示一个可配置节流值,该可配置节流值使得该识别的客户端虚拟机进程减少与该可配置节流值相称的CPU资源的使用。
11.根据权利要求9所述的方法,其中该进程包括病毒扫描进程、反病毒更新进程、数据备份进程以及数据恢复进程中的至少一项。
12.根据权利要求9所述的方法,其中识别将减少其资源消耗的客户端虚拟机进程包括使用通过输出的标记控制块提供给该安全虚拟机的客户端虚拟机进程信息。
13.根据权利要求1所述的方法,其中利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载包括检测该安全虚拟机已知的一个进程的载入,以提供输出的标记控制块。
14.根据权利要求1所述的方法,其中读取该识别的内存结构的一个或多个部分包括读取输出的客户端虚拟机进程信息。
15.根据权利要求14所述的方法,其中该输出的客户端虚拟机进程信息包括在该客户端虚拟机上运行的一个具体进程的多个副本的当前编号。
16.至少一个永久处理器可读存储介质,用于存储由指令构成的一个计算机程序,该指令被配置成可由至少一个处理器读取,以指示该至少一个处理器执行一个计算机进程从而执行根据权利要求1中所述的方法。
17.一种与客户端虚拟机交互的制品,该制品包括: 至少一个永久处理器可读介质;以及 存储在该至少一个 介质上的指令; 其中该指令被配置成可由至少一个处理器从该至少一个介质读取并因此使得该至少一个处理器操作用于: 利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载; 识别具有指定格式的内存结构;并且 利用该安全虚拟机执行以下内容中的至少一项: 读取该识别的内存结构中的一个或多个部分;并且 在该识别的内存结构中设置一个值。
18.一种与客户端虚拟机交互的系统,包括: 通信地连接至网络的一个或多个处理器;其中该一个或多个处理器被配置成: 利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载; 识别具有指定格式的内存结构;并且 利用该安全虚拟机执行以下内容中的至少一项: 读取该识别的内存结构中的一个或多个部分;并且 在该识别的内存结构中设置一个值。
19.根据权利要求18所述的系统,其中该指定格式包括标记控制块。
20.根据权利要求18所述的系统,其中该一个或多个处理器进一步被配置成: 利用该客户端虚拟机读取在该识别的内存结构中设置的值;并且 响应于读取该至少一个值由该客户端虚拟机执行至少一个动作。
全文摘要
在此披露了虚拟机间通信的多种技术。在一个具体示例性实施方案中,这些技术可以实现为一种与客户端虚拟机交互的方法,该方法包括利用安全虚拟机监控到客户端虚拟机的电子内存中的镜像负载,识别具有指定格式的内存结构,并且利用该安全虚拟机执行以下内容中的至少一项读取该识别的内存结构中的一个或多个部分和设置该识别的内存结构中的值。
文档编号G06F9/455GK103210395SQ201180039989
公开日2013年7月17日 申请日期2011年6月21日 优先权日2010年7月8日
发明者M·柯诺瓦, B·麦科肯德尔, W·E·曹贝乐 申请人:赛门铁克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1