基于操作系统层的虚拟方法及虚拟装置的制作方法

文档序号:6484192阅读:262来源:国知局
专利名称:基于操作系统层的虚拟方法及虚拟装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于操作系统层的虚拟方法 及虚拟装置。
背景技术
随着计算机和互联网的普及,安全威胁事件逐年攀升,恶意程序造成的 危害越来越严重,对故障容忍和入侵容忍系统的需求也不断提高。这类系统 要求具有在现实环境中执行不安全程序时,不会遭受永久性伤害的能力。
虚拟机技术能够完美地满足上述需求,因为它提供了与主机系统隔离的 可执行环境。虚拟机技术是在一个物理主机上创建一个或多个可执行环境的 技术。每个虚拟机代表了一个潜在的物理主机的实例,并且互不干扰。这种 隔离的属性使虚拟机可以成为安全系统和错误容忍应用程序的基石。
发明人在实现本发明过程中发现,现有虚拟机系统大部分为硬件层虚拟 机系统,虚拟机技术需要硬件抽象层的支持,虚拟机建立的环境相当于整个 实际的操作环境,初始化这样的虚拟机可能需要耗费大量的硬盘空间,而 且,现有的虚拟机系统在具体实现过程中,经常需要占用大量的系统资源, 并存在对系统性能造成损耗的可能。对于频繁要求启动和终止虛拟机的应用 程序来讲,显得不够灵活,且有些现有虚拟机系统操作速度过于緩慢,不适 合实际应用。

发明内容
本发明实施例提供了 一种基于操作系统层的虚拟方法及虚拟装置,在满 足故障容忍和入侵容忍系统的需求下,具有占用系统资源少、灵活性高、启 动延迟少的优点。。
本发明实施例提供了一种基于操作系统层的虚拟方法,包括 在系统调用层截获对系统资源的调用请求;
根据所述调用请求,将所述系统资源的主机路径重定向为虚拟机目录下 乂于应的^4圣;
根据重定向后的路径,对所述系统资源执行调用请求。 本发明实施例还提供了 一种基于操作系统层虚拟装置,包括 拦截模块,用于在系统调用层截获对系统资源的调用请求;
重定向模块,用于根据所述拦截模块截获的调用请求,将所述系统资源 的主冲;u洛径重定向为虚拟一几目录下对应的^各径;
执行模块,用于根据所述重定向模块重定向后的路径,对所述系统资源 执行调用请求。
由上述本发明实施例提供的技术方案可以看出,本发明实施例中,通过 在系统调用层截获对系统资源的调用请求;将所述系统资源的主机路径重定 向为虚拟机目录下对应的路径;可以实现基于操作系统层的虚拟化,由于不 需要硬件抽象层的支持,所以在满足了故障容忍和入侵容忍系统的需求下, 还具有占用系统资源少、灵活性高、启动延迟少的特点。


图l为本发明实施例提供的所述方法流程示意图一; 图2为本发明实施例提供的所述方法流程示意图二; 图3为本发明实施例提供的所述方法流程示意图三;图4为本发明实施例^是供的所述方法流程示意图四;
图5为本发明实施例提供的所述方法流程示意图五; 图6为本发明实施例提供的所述方法流程示意图六; 图7为本发明实施例提供的所述方法流程示意图七; 图8为本发明实施例提供的所述方法流程示意图八; 图9为本发明实施例提供的所述方法流程示意图九; 图IO为本发明实施例提供的所述方法流程示意图十; 图11为本发明实施例提供的所述方法流程示意图十一; 图12为本发明实施例提供的所述方法流程示意图十二; 图13为本发明实施例提供的所述方法流程示意图十三; 图14为本发明实施例提供的所述方法流程示意图十四; 图15为本发明实施例提供的所述系统结构示意图一; 图16为本发明实施例提供的所述系统结构示意图二; 图17为本发明实施例提供的所述系统结构示意图三; 图18为本发明实施例提供的所述执行模块结构示意图。
具体实施例方式
本发明实施例提供了一种基于操作系统层的虚拟方法,如附图1所示,该 方法具体可以包括
步骤0101,在系统调用层截获对系统资源的调用请求。
步骤0102,根据调用请求,将系统资源的主机路径重定向为虛拟机目录 下对应的3各径。
步骤0103,根据重定向后的路径,对系统资源执行调用请求。 本发明实施例中,还可以对系统资源进行写时拷贝操作,具体为 如果调用请求为读取系统资源,则向主机系统发送调用请求;如果调用请求为更改系统资源,则将主机系统中的系统资源拷贝至重定 向后路径,并对拷贝后的系统资源进行调用操作。
本发明实施例中所涉及的重定向,具体可以为将系统资源的主机路径重 定向为虚拟才几目录下对应的^各径。
本发明实施例所提供的基于操作系统层的虚拟方法,通过在系统调用层 截获对系统资源的调用请求;将所述系统资源的主机路径重定向为虚拟机目
录下对应的路径;可以实现基于操作系统层的虚拟化,由于不需要硬件抽象 层的支持,所以在满足了故障容忍和入侵容忍系统的需求下,还具有占用系 统资源少、灵活性高、启动延迟少的特点。
由于用户进程在运行时,可能访问或修改各种系统资源,为实现轻量级 的真实并隔离的操作系统层虚拟执行环境,本发明实施例提供的基于操作系
统层的虚拟机方法采用了命名空间虚拟化和写时拷贝技术。
本发明实施例所涉及的命名空间虚拟化技术是指在系统调用层(System Call Level)上截获调用请求,在用户进程请求访问各种系统资源时控制这些 被访问的系统资源的命名,这些系统资源包括文件系统、注册表、内核对象 等。通过重定向系统资源路径或重命名系统资源,使得最终被调用的系统资 源对请求的用户进程是正常的,但是对于主机系统可能是不存在(系统资源 是虚拟出来的),或者仅仅是主机系统资源的拷贝。这样就可以达到以进程 为单元,将对系统资源的虚拟化进程与主机操作系统隔绝开的目的。
此外,为了使虚拟机既共享主机系统的资源和环境,又能将自身对系统 资源的更改与主机系统隔绝开,本发明实施例中还采用了写时拷贝(Copy-On-Write )机制。具体为当虚拟机被创建时,它共享主机系统中的系统资源。 当运行在虚拟机中的进程仅仅是请求读取某个系统资源时,该进程的读请求 被发送给主机操作系统,完成读取操作,此时虚拟机并不占用任何系统资 源;但当进程请求更改某个系统资源时,虚拟机会拷贝一个原系统资源到虚
9拟机目录中,该更改请求实际操作的是经拷贝后虚拟机中的系统资源,而不 会影响主机系统中原有的系统资源。
需要说明的是,对于不同类型的系统资源,读写调用请求是基于系统资 源的句柄来实现的,这些句柄在先前由虚拟机中执行的进程创建或打开系统 资源时生成。虚拟机只需在创建或打开这些系统资源时重定向调用请求,当 后续再有对这些系统资源的读写调用请求发生时,相关的句柄已经是被重定 向版本,该类读写调用请求无需再被重定向。
需要说明的是,本发明实施例提供的虚拟方法,在执行对不同类型系统 资源的虚拟操作之前,还可以先加载并安装各种驱动程序,完成虚拟冲几启动 操作。
为了便于对本发明实施例提供的技术方案的理解,下面结合附图,对本 发明实施例提供的基于操作系统层的虚拟方法,对不同类型系统资源,包括 文件系统、注册表、内核对象以及服务进程进行虚拟操作的过程进行详细说 明。
(一)文件系统
本发明实施例中所涉及的文件系统,具体可以包括普通磁盘文件(文 件、目录)和特殊设备文件(命名管道、油槽)。
为了提高虚拟机性能,本发明实施例可以采用以单个对象(普通磁盘文 件或特殊设备文件)为单位的写时拷贝机制。
本发明实施例中,首先在核心态虚拟层拦截并控制与文件系统相关的调 用请求。当截获到与文件系统相关的调用请求时,首先检查发起该调用请求 的进程是否为被虚拟化的进程。如果不是,则将该调用请求直接传递到主机
系统调用函数,由主机系统调用函数负责后续处理;否则,则根据不同的调 用请求,对文件系统资源进行不同的处理。 具体可以包括1)若调用请求为创建文件请求,则本发明实施例的具体操作过程如附图
2所示,包括
步骤0201,将文件路径重定向为虚拟机目录下路径。
若调用请求为创建文件请求,则将需要创建的文件路径修改、即重定向 为虚拟机根目录下对应的路径,此过程即为重定向过程。
例如当主才几系统上的"C:\WINDOWS\infector.exe"文件^皮打开时,可以 将其拷贝至为"C:\VMStore\HardVolumel\WINDOWS\infector.exe"。其中, "C:WMStore"为虚拟机根目录。
步骤0202,使用重定向后的^4圣创建文件。
根据创建文件请求,使用重定向后的路径,即虚拟机根目录下对应的路 径创建文件,可称这时创建的文件为虚拟文件。
在 一 个具体实施例中,可以使用ZwCreateFile()函数创建文件, ZwCreateFile()函数中的ObjectAttributes参数中有需要创建的目标文件的路径, 这时,可以修改ObjectAttributes参数中目标文件中的路径为定向后的路径,使 其在虚拟机根目录下对应的路径创建文件。
步骤0203,记录重定向后路径与文件句柄之间的对应信息。
由于后续对文件系统的操作中,文件以及目录都是由句柄来标识的(句 柄在文件系统被创建时已由系统自动生成),因此,需要记录重定向后的路 径与该文件句柄之间的对应信息,使得当后续需要对该文件进行读写类调用 时,可以4艮据句柄来访问创建的虚拟文件。
需要说明的是,在执行上述步骤时,可能会因某一步骤的出错而导致整 个创建过程失败,为了提示用户及对出错位置进行快速定位,可在每个步骤 后执行判断此步骤是否成功,如果失败,则给出创建失败的提示信息。对文 件系统的其它操作以及对其它系统资源的操作都可以采用类似的处理方法, 在此不再赘述。
11另外,失败提示操作,也可以使用于对文件系统的其他调用操作,比如 打开、删除等。
2) 若调用请求为打开文件请求,则本发明实施例的具体操作过程如附图
3所示,包括
步骤0301,将文件的路径重定向为虚拟机目录下路径。
步骤0302,判断是否可以使用重定向后的路径打开文件,若成功,执行 步骤0307;若失败,则执行步骤0303。
步骤0303,判断打开文件请求的访问权限是否为只读权限,若是,则执 行步骤0304,打开文件请求使用主机文件路径打开文件,后续执行步骤 0307;否则,扭j亍步骤0305。
步骤0305,将文件拷贝至虚拟机目录下,此时文件的路径指向虚拟机目 录,那么,此时文件路径即可理解为重定向后的路径。
步骤0306,打开文件请求使用重定向后的路径打开文件。
在 一 个具体实施例中,可以使用ZwOpenFile()函数打开文件, ZwOpenFile()函数中的ObjectAttributes参数中有需要打开的目标文件的路径, 这时,可以修改Obj ectAttributes参数中目标文件中的路径为定向后的路径,使 其在虚拟机根目录下对应的路径创建文件。
步骤0307,记录文件重定向后的路径与文件句柄之间的对应信息。
3) 若调用请求为查询文件请求,则本发明实施例的具体操作过程如附图 4所示,包括
步骤0401 ,获取查询文件请求中包含的句柄。
由于查询文件请求所查询的文件是已经建立的文件,因此,该查询文件 请求中包含有与建立该文件时所采用的重定向路径相对应的句柄,获取查询 文件请求中包含的句柄信息。
步骤0402,根据句柄信息,获取对应的重定向后的路径信息。根据查询文件请求中包含的句柄信息,通过查询记录,获取与该句柄对
应的重定向后的路径信息。
步骤0403 ,查询文件请求使用重定向后的路径信息查询文件。 查询文件请求使用与查询文件请求中包含的句柄信息对应的、重定向后
的路径信息,查询文件的相关信息。
在一个具体实施例中,可以ZwQuerylnformationFile()函数查询文件,并通 过ZwQueryDirectoryFile()函凄t返回查询结果。
4) 若调用请求为重命名文件请求,则本发明实施例为防止对主机系统的 破坏,实现一个隔离的执行环境,需要做特殊处理。该处理如附图5所示,包 括
步骤0501,判断文件是否被写时拷贝(Copy-On-Write),若是,则执行 步骤0502;否则,#1行步骤0503。
步骤0502、将重命名请求传递给主机系统调用函数,后续执行步骤 0505。
步骤0503,对文件进行拷贝操作,将文件拷贝至虚拟机目录下,并重定 向该文件的路径。
步骤0504,重命名请求使用重定向后的路径对文件进行重命名操作。 步骤0505,记录此次重命名才喿作。
在一个具体实施例中,可以使用NtSetlnformationFile()函数对文件进行重
命名操作。
5) 若系统调用请求为删除文件请求,则本发明实施例的处理过程如附图 6所示,包括
步骤0601,判断文件是否被写时拷贝,若是,则执行步骤0602,将该删 除文件请求传递给主机系统调用函数,后续执行步骤0604,记录此次删除操 作;否则,执行步骤0603,删除文件请求直接删除文件,然后执行步骤0604,记录此次删除纟喿作。
在一个具体实施例中,可以使用NtSetlnformationFile()函数对文件进行删
除操作。
(二)注册表
注册表的数据存放和操作方式与文件系统类似。因此,注册表虚拟化可 以使用与文件系统虚拟化类似的方式,即同样采用命名空间虚拟化和写时拷 贝机制。在发生写时拷贝时,注册表键及其子键和键值会一同拷贝到虚拟机 新创建的键下,如VHKEY—CURRENT—USERWM根键下。
本发明实施例中,首先在核心态虚拟层拦截并控制与注册表相关的调用 请求。当截获到与注册表相关的调用请求时,首先^f企查发起该调用请求的进 程是否为被虛拟化的进程。如果不是,则将该调用请求直接传递到主机系统 调用函数,由主机系统调用函数负责后续处理;否则,则根据不同的调用请 求,对注册表系统资源进行不同的处理。
需要说明的是,对于注册表系统资源的调用操作所适用的相关函数,与 文件系统类似,具体可参照文件系统的相关描述,在此不再追述。
对于注册表的具体操作过程可以包括
1)若调用请求为创建注册表键请求时,则本发明实施例的具体操作过程
如附图7所示,包括
步骤0701,将注册表键的路径重定向为虚拟机目录下路径。
若调用请求为创建注册表键请求时,将需要创建的注册表键路径修改、
即重定向为虚拟才几才艮目录下对应的^各径。
步骤0702,根据创建注册表键请求使用重定向后的路径创建注册表键。 根据创建注册表键请求使用重定向后的路径,即虚拟机根目录下对应的
路径,创建注册表键。
步骤07Q3,记录重定向后路径与注册表键句柄之间的对应信息。由于后续对注册表键的操作中,注册表键是由句柄来标识的,因此,记 录重定向后路径与注册表键句柄之间的对应信息。
2) 若调用请求为打开注册表键请求时,则本发明实施例的具体操作过程
如附图8所示,包括
步骤0801,将注册表键的路径重定向为虚拟机目录下对应的路径。
步骤0802,判断是否可以使用重定向后的路径打开注册表键,若成功, 执^亍步骤0807;若失败,则执行步骤0803。
步骤0803,判断打开注册表键请求的访问权限是否为只读权限,若是, 则执行步骤0804,根据打开注册表键请求使用主机注册表键路径打开注册表 键,后续执行步骤0807;否则,执行步骤0805。
步骤0805,将主机注册表键拷贝至虛拟目录下。
此时注册表键的路径指向虚拟机目录,那么,此时注册表键的路径即可 理解为重定向后的^f各径。
步骤0806,根据打开注册表键请求使用重定向后的路径打开注册表键。 步骤O807,记录重定向后路径与注册表键句柄之间的对应信息。
3) 若调用请求为查询注册表键请求,则本发明实施例的具体操作过程如 附图9所示,包括
步骤0901,获取查询注册表键请求中包含的句柄信息。
步骤0902,根据句柄信息,获取对应的重定向后的路径信息。
步骤0903,根据查询注册表键请求使用重定向后的路径,查询注册表键。
4) 若调用请求为重命名注册表键请求,则本发明实施例的处理如附图IO 所示,包括
步骤IOOI,判断注册表键是否被写时拷贝,若是,则执行步骤1002,将 重命名注册表键请求传递给主机系统调用函数,后续执行步骤1005,记录此次重命名操作;否则,执行步骤1003。
步骤1003,将主机注册表键拷贝至虚拟机目录下,并重定向该注册表键 的^各径。
步骤1004,根据重命名请求使用重定向后的路径对注册表键进行重命名 操作。
步骤1005,记录此次重命名操作。
5)若调用请求为删除注册表键请求,则本发明实施例的处理过程如附图 ll所示,包括
步骤IIOI,判断注册表键是否被写时拷贝,若是,则执行步骤1102,将 删除注册表键请求传递给主机系统调用函数,后续执行步骤1103,记录此次 删除操作;否则,则直接执行步骤1103,记录此次删除操作。 (三)内核对象
现存的主机操作系统,如Windows,在内核中提供了多种命名对象,包括 互斥对象,事件对象,信号量对象,定时器对象,区域对象,端口对象等, 上述对象属于全局对象,为多个进程所使用。为避免虛拟机操作内核对象而 对主机系统带来影响,需要对内核对象进行虚拟化处理。
内核对象通常情况下以目录的方式层次管理,所有内核对象共有一个根 目录,不同类的对象有不同的目录,与文件系统、注册表虚拟化操作类似, 也可以采用重定向内核对象#^目录的方法,实现内核对象的虚拟化。
本发明实施例中,首先在核心态虚拟层拦截并控制与内核对象相关的调 用请求。当截获到与内核对象相关的调用请求时,首先检查发起该调用请求 的进程是否为被虚拟化的进程。如果不是,则将该调用请求直接传递到主机 系统调用函数,由主机系统调用函数负责后续处理;否则,则根据不同的调 用"i貪求,对内核对象资源进行不同的处理。
需要说明的是,对于内核对象系统资源的调用操作所适用的相关函数,与文件系统类似,具体可参照文件系统的相关描述,在此不再追述。
下面以事件对象为例,分别对本发明实施例对不同调用请求进行处理的 过程进行详细表述
1) 若调用请求为创建事件对象请求时,则本发明实施例的处理过程如附
图12所示,具体可以包括
步骤1201,判断目标事件对象是否存在。若目标事件对象不存在,则执
行步骤1202;否则,执行步骤1205,将创建事件请求传递至主机系统的创建
事件对象系统调用。
步骤1202,将该事件对象的路径重定向到虚拟机内核对象根目录,后续
执行步骤1203。
步骤1203,使用重定向后的路径创建事件对象。 步骤1204,记录该事件对象重定向后的路径与句柄之间的对应关系。 步骤1205,将创建事件请求传递至主机系统的创建事件对象系统调用。 若该事件对象已经存在,则该事件对象可能是系统关键进程(例如服
务)创建的,而该事件对象是进程运行所必需的资源,由于事件对象不能像
文件和注册表那样被复制,因此,如果创建事件对象请求所要创建的事件对
象已经存在于主机系统中,则需将创建事件请求传递至主机系统的创建事件
对象系统调用。
2) 若调用请求为打开事件对象请求,则本发明实施例的处理过程如附图 13所示,具体可以包括
步骤1301,重定向事件对象路径到虚拟机的内核对象根目录。
步骤1302,判断使用重定向后的路径是否能够打开事件对象。如果成
功,则执行步骤1304,返回该事件对象的句柄。否则,执行步骤1303。
步骤1303,根据打开事件对象请求尝试打开请求的事件对象。如果成
功,则执行步骤1304,返回该事件对象的句柄;否则执行1305,返回失败信息。
各种内核对象的虚拟处理方式与事件对象相似,因此不再进行描述。 (四)服务进程
主才几系统中的程序可以通过在月良务控制管理器(SCM: Service Control Manager )中添加服务名来安装一个服务进程,相应的服务进程镜像路径被写 入SCM数据库。SCM是关键系统进程,与操作系统组件有复杂的关联,不能 复制到虚拟机中。因此,虚拟才几与主机系统共享SCM和SCM数据库。
服务进程的虚拟化过程具体可以包括创建服务进程和启动服务进程两 步在创建服务进程时,可以采用与文件系统和注册表相同的虚拟化操作来 实现;在启动服务进程时,由于系统是依据服务进程的名称来启动服务进程 的,所以在启动服务进程时,需要将服务进程重定向为新的虚拟的服务名 称。
本发明实施例中,首先在核心态虚拟层拦截并控制与服务进程相关的调 用请求。当截获到与服务进程相关的调用请求时,首先检查发起该调用请求 的进程是否为被虚拟化的进程。如果不是,则将该调用请求直接传递到主机 系统调用函数,由主机系统调用函数负责后续处理;否则,则才艮据不同的调 用请求,对内核对象资源进行不同的处理。
具体可以包括
1)若调用请求为创建服务进程请求,则本发明实施例的处理过程如附图 14所示,包括
步骤1401,对所要创建的服务进程进行重命名及重定向程序路径操作。 例如,如果所要创建的服务进程名为Service,程序路径为/a/b.exe,则可
以将写入SCM数据库的服务名重命名为Service-VM,将程序路径重定向为
VM/a/b.exe。
步骤1402,将该服务进程文件拷贝至虚拟机下。2)若调用请求为启动服务请求,则可以将该启动服务请求重定向至之前 已经进行重命名后的服务进程。
本发明实施例中,对于文件系统、注册表以及内核对象的操作,具体可 以在操作系统和应用程序之间虚拟层的用户态虚拟层完成,而对于服务进程 的操作,则可以在虚拟层的内核态虚拟层完成。
通过上述描述可以看出,本发明实施例提供的基于操作系统层的虚拟方 法,在操作系统和应用程序之间部署虚拟层,能够使得虚拟机中的进程访问 不修改主机系统资源,而对资源的修改结果保存在虚拟机中,用户在实际操 作过程不会感知虚拟过程的存在,因此,这种虚拟方法对主机系统是透明 的。并且,本发明实施例提供了基于操作系统层的虚拟方法,由于不需要硬 件抽象层的支持,与当前采用硬件虚拟技术实现的虚拟机相比,在满足了故 障容忍和入侵容忍系统的需求下,还具有占用系统资源少、灵活性高、启动 延迟少的特点。该方法对操作系统绝大多数资源虚拟化,实现了一个轻量级 的,真实并隔离的虚拟操作环境,能够安全地执行恶意程序和非恶意程序, 并记录程序的行为,满足故障容忍和入侵容忍系统的需求。
本发明实施例还提供了一种基于操作系统层的虛拟装置,如附图15所
示,该装置包括
拦截模块1501,用于在系统调用层截获对系统资源的调用请求。
重定向模块1502,用于根据拦截模块1501截获的调用请求,将系统资源 的主机路径重定向为虚拟机目录下对应的路径。
重定向才莫块1502具体可以将系统资源在主才几系统中的目录,重定向至虚 拟才几才艮目录下。
比如,将"C:\infector.exe"重定向为 "C:\VMStore\HardVolumel\infector.exe",其中,"C:WMStore,,为虚 4以才几才艮目录。执行模块1503,用于根据重定向模块1502重定向后的路径,对系统资源
执行调用请求。
在本发明实施例提供的虚拟装置的一个具体实施例中,如附图16所示, 进一步还可以包括启动模块1504,用于加载并安装各种驱动程序,完成虚拟 机装置启动。
在本发明实施例提供的虚拟装置的一个具体实施例中,如附图17所示, 进一步还可以包括写时拷贝模块1505,用于当拦截模块1501截获的调用请求 为读取系统资源时,向主机系统发送该调用请求;当拦截模块1501截获的调 用请求为更改系统资源时,拷贝原系统资源至重定向后路径,即拷贝至虚拟 根目录下。
本发明实施例所涉及的执行模块1503,具体可如附图18所示,包括 第一执行单元1801,用于根据拦截模块1501截获的调用请求,采用重定
向模块1502重定向后的路径,对文件系统、或者注册表、或者内核系统资源
执行调用请求;
第二执行单元1802,用于根据拦截模块1501截获调用请求,采用重定向 模块1502重定向后的路径,对服务进程系统资源执行调用请求。
且所述第一执行单元应用于所述核心态虚拟层,所述第二执行单元应用 于所述用户态虛拟层。
本发明实施例中所涉及功能模块的具体操作流程,可以参照本发明方法 实施例中的相关部分,这里不再赘述。
通过上述描述可以看出,本发明实施例提供的基于操作系统层的虚拟装 置,在操作系统和应用程序之间部署虚拟层,能够使得虚拟机中的进程访问 不修改主机系统资源,而对资源的修改结果保存在虚拟机中,用户在实际操 作过程不会感知虚拟过程的存在,因此,该虚拟装置对主机系统是透明的。
并且,本发明实施例提供了基于操作系统层的虚拟装置,由于不需要硬件抽象层的支持,与当前采用硬件虚拟技术实现的虚拟机相比,在满足了故障容 忍和入侵容忍系统的需求下,还具有占用系统资源少、灵活性高、启动延迟 少的特点。该装置对操作系统绝大多数资源虚拟化,实现了一个轻量级的, 真实并隔离的虚拟操作环境,能够安全地执行恶意程序和非恶意程序,并记 录程序的行为,满足故障容忍和入侵容忍系统的需求。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可借助件加必需的^5更件平台的方式来实现,当然也可以全部通过^6更件来 实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技 术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出
来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘 等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种基于操作系统层的虚拟方法,其特征在于,包括在系统调用层截获对系统资源的调用请求;根据所述调用请求,将所述系统资源的主机路径重定向为虚拟机目录下对应的路径;根据重定向后的路径,对所述系统资源执行调用请求。
2、 根据权利要求l所述的方法,其特征在于,所述在系统调用层截获对 系统资源的调用请求包括判断所述调用请求所属进程是否为虚拟化进程;若所述调用请求所属进程为虚拟化进程,则根据所述调用请求,对系统 资源进行虛拟化处理;否则,则将所述调用请求传递至主机系统调用函数。
3、 如权利要求l所述的方法,其特征在于,所述方法还包括对所述系 统资源进行写时拷贝操作;所述写时拷贝操作包括如果所述调用请求为读取所述系统资源,则向主机系统发送所述调用请求;如果所述调用请求为更改所述系统资源,则将主机系统中的系统资源拷 贝至所述重定向后路径,对所述拷贝后的系统资源进行调用操作。
4、 根据权利要求3所述的方法,其特征在于,若所述调用请求为创建或 打开第一系统资源请求,所述第一系统资源包括文件系统、或者注册表、或 者内核对象时,则所述根据重定向后的路径,对所述系统资源执行调用请求 包括使用重定向后的路径创建或打开所述第 一系统资源; 记录所述重定向后的路径与所述第 一系统资源句柄之间的对应关系。
5、 根据权利要求4所述的方法,其特征在于,所述采用重定向后的路径打开所述第一系统资源具体为若打开所述第一系统资源失败,则判断所述打开第一系统资源请求是否 为只读权限;若判断结果为是,则采用所述系统资源主机路径打开所述第 一 系统资 源,否则,则将所述第一系统资源拷贝至虚拟机目录下,重定向所述第一系 统资源的路径,并使用重定向后的路径打开所述拷贝后的第一系统资源。
6、 根据权利要求4述的方法,其特征在于,若所述调用请求为查询系统 资源请求,则所述根据重定向后的路径,对所述系统资源执行调用请求包 括根据所述查询系统资源请求中包含的句柄信息,获取在创建或打开所述 第 一系统资源时,与所述句柄信息建立对应关系的重定向后的路径信息; 使用所述重定向后的路径信息查询所述第 一 系统资源。
7、 根据权利要求4所述的方法,其特征在于,若所述调用请求为重命名 所述第一系统资源请求,则所述根据重定向后的路径,对所述系统资源执行 调用请求包括判断所述第一系统资源是否被写时拷贝;若所述第一系统资源被写时拷贝,则将重命名请求发送至主机系统调用 函数,并记录此次重命名操作;若所述第一系统资源没有被写时拷贝,则将所述第一系统资源拷贝至虚 拟机目录下,重定向所述第 一 系统资源的路径,并使用重定向后的路径对所 述拷贝后的第一系统资源进行重命名操作,并记录此次重命名操作。
8、 根据权利要求4所述的方法,其特征在于,若所述调用请求为删除系 统资源请求,则所述根据重定向后的路径,对所述系统资源执行调用请求包 括判断所述第 一系统资源是否被写时拷贝;若所述第一系统资源被写时拷贝,则将所述删除请求发送至主机系统调 用函数,并记录此次删除才喿作;若所述第一系统资源没有被写时拷贝,则将记录所述删除操作。
9、 根据权利要求3所述的方法,其特征在于,若所述系统资源为第二系 统资源,所述第二系统资源包括服务进程时,则所述根据重定向后的路径, 对所述系统资源执行调用请求包括若所述调用请求为创建服务进程请求时,对所述服务进程进行重命名和 重定向路径操作,并将所述服务进程拷贝至虚拟机目录下;若所述调用请求为启动服务请求时,将所述启动服务进程请求重定向为 重命名后的所述服务进程。
10、 一种基于操作系统层虚拟装置,其特征在于,包括 拦截模块,用于在系统调用层截获对系统资源的调用请求; 重定向模块,用于根据所述拦截模块截获的调用请求,将所述系统资源的主才;a各径重定向为虚拟才几目录下对应的游4圣;执行模块,用于根据所述重定向模块重定向后的路径,对所述系统资源 执行调用请求。
11、 根据权利要求10所述的装置,其特征在于,所述系统还包括 启动模块,用于加载和安装驱动程序,完成虚拟机装置的启动。
12、 根据权利要求10所述的装置,其特征在于,所述装置还包括 写时拷贝模块,用于当所述拦截模块截获的调用请求为读取所述系统资源时,向主机系统发送所述调用请求;当所述拦截模块截获的调用请求为更 改所述系统资源时,拷贝原系统资源到所述重定向后路径,对所述拷贝后的 系统资源进行调用操作。
13、 根据权利要求10或12所述的装置,所述执行模块包括第一执行单元,用于根据所述拦截模块截获的调用请求,采用所述重定 向模块重定向后的路径,对文件系统、或者注册表、或者内核对象系统资源执行调用请求;第二执行单元,用于根据所述拦截模块截获的调用请求,采用所述重定 向模块重定向后的路径,对服务进程系统资源执行调用请求。
全文摘要
本发明实施例涉及一种基于操作系统层的虚拟方法及装置,通过在系统调用层截获对系统资源的调用请求;将所述系统资源的主机路径重定向为虚拟机目录下对应的路径;可以实现基于操作系统层的虚拟化,由于不需要硬件抽象层的支持,所以在满足了故障容忍和入侵容忍系统的需求下,还具有占用系统资源少、灵活性高、启动延迟少的特点。
文档编号G06F9/455GK101551756SQ20091008105
公开日2009年10月7日 申请日期2009年3月31日 优先权日2009年3月31日
发明者丹 刘, 跃 曹, 李毅超, 欢 杜, 杨广元, 杨玉奇, 白皓文, 尧 罗, 贾范兵, 顾凌志, 沾 黄 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1