首页> 中国专利> 一种虚拟机访问控制方法,及虚拟机访问控制系统

一种虚拟机访问控制方法,及虚拟机访问控制系统

摘要

本发明实施例公开了一种虚拟机访问控制方法,及虚拟机访问控制系统,虚拟机访问控制系统包含至少一个映射器和至少两个访问代理,映射器用于建立进程与进程对应的访问代理之间的映射关系,方法包括第一访问代理接收由与第一访问代理有映射关系的进程产生的访问请求;第一访问代理为虚拟机访问控制系统中任一访问代理;第一访问代理将访问请求发送给访问请求指定的目的端。访问代理会接收到与其对应的进程产生的访问请求,各访问代理之间外发的访问请求并行,也即对应不同访问代理的进程所产生的访问请求被并行执行,提升了虚拟机的性能。

著录项

  • 公开/公告号CN104731635A

    专利类型发明专利

  • 公开/公告日2015-06-24

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201410788273.7

  • 发明设计人 章宇;魏治安;

    申请日2014-12-17

  • 分类号G06F9/455(20060101);G06F9/54(20060101);

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人王仲凯

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 09:23:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-19

    授权

    授权

  • 2015-07-22

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20141217

    实质审查的生效

  • 2015-06-24

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,特别涉及一种虚拟机访问控制方法,及虚拟机访问控制系统。

背景技术

虚拟机(Virtual Machine,VM)的卷(volume)访问性能(读写性能),是虚拟机性能的重要指标。因此,提升虚拟机的卷读写带宽,对运行在虚拟机上应用的性能有重要意义。同时,虚拟机卷读写性能管理,也是虚拟机性能服务质量(Quality of Service,QoS)的重要组成部分。

目前虚拟机访问卷采用的是串行访问,例如:基于内核的虚拟机(kernel-based Virtual Machine,KVM)管理程序(Hypervisor),块存储部分采用主流的存储设备或者开源存储技术。开源的存储技术如:逻辑卷管理器(Logical Volume Manager,LVM)。

串行访问的实现方案如下:虚拟机上运行着很多个进程(Process,Proc),进程会产生数据访问操作的需求,这些数据访问操作可能针对同一个卷,即:针对单一卷的数据访问操作;来自多个进程的数据访问请求由虚拟机的磁盘控制器获得并通过串行的方式发送给单一卷,然后由磁盘控制器接收卷返回访问结果并转发给对应各访问结果的进程。

任意一个VM,可以与一个或多个卷相连接。每个卷均由一个控制器控制。这个虚拟机上的所有进程对某一个卷的访问,均需经过这个卷的磁盘控制器串行发出。卷的磁盘控制器是虚拟机hypervisor的一个模块,可以采用软件形式实现。

以上串行访问的方案,可以避免访问操作并行发出造成访问结果乱序以及因此引入潜在错误的问题,但是串行访问的速度慢,会严重影响虚拟机的性能提升。

发明内容

本发明实施例提供了一种虚拟机访问控制方法,及虚拟机访问控制系统,用于提升虚拟机对存储设备的访问速度,提升虚拟机的性能。

本发明实施例一方面提供了一种访问控制方法,所述方法应用于虚拟机访问控制系统,所述虚拟机访问控制系统包含至少一个映射器和至少两个访问代理,所述映射器用于建立进程与所述进程对应的访问代理之间的映射关系,所述方法包括:

第一访问代理接收由与所述第一访问代理有映射关系的进程产生的访问请求;所述第一访问代理为所述虚拟机访问控制系统中任一访问代理;

所述第一访问代理将所述访问请求发送给所述访问请求指定的目的端。

结合一方面的实现方式,在第一种可能的实现方式中,所述虚拟机访问控制系统包含的所述映射器数量为一个;所述映射器的虚拟硬件接口与所述虚拟机访问控制系统管理的所有进程建立通信连接。

结合一方面的实现方式,在第二种可能的实现方式中,所述虚拟机访问控制系统包含的所述映射器的数量与所述访问代理的数量相同;

所述映射器由所述映射器的驱动上下文驱动后与进程建立通信连接;所述映射器用于建立进程与所述进程对应的访问代理之间的映射关系,包括:所述映射器将待映射进程映射到与所述待映射进程对应的访问代理的虚拟硬件接口,所述待映射进程是与所述映射器建立通信连接的进程。

结合一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述映射器将待映射进程映射到与所述待映射进程对应的访问代理的虚拟硬件接口包括:

所述映射器接收配置信息,并按照所述配置信息将待映射进程映射到与所述待映射进程对应的访问代理的虚拟硬件接口。

结合一方面的第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述映射器包含应用程序二进制接口ABI;所述ABI包括:协议标准ABI、配置接口ABI、至少两个硬件接口ABI;

所述协议标准ABI用于指定所述至少两个硬件接口ABI以及所述配置接口ABI使用的通信协议;所述配置接口ABI用于接收配置信息。

结合一方面、一方面的第一种、第二种或第三种可能的实现方式,在第 五种可能的实现方式中,所述进程包含进程标识ID和用于标识所述进程来自系统态或用户态的状态标识;具有相同进程ID的进程为一个进程,或者,具有相同进程ID并且具有相同状态标识的进程为一个进程。

结合一方面、一方面的第一种、第二种或第三种可能的实现方式,在第六种可能的实现方式中,在所述第一访问代理将所述访问请求发送给所述访问请求指定的目的端之前,还包括:

所述第一访问代理缓存接收到的访问请求;

所述第一访问代理将所述访问请求发送给所述访问请求指定的目的端包括:

所述第一访问代理按照产生访问请求的进程的优先级从高到低依次将缓存的访问请求发送给所述访问请求指定的目的端;或者,所述第一访问代理按照先进先出的原则将缓存的访问请求发送给所述访问请求指定的目的端。

结合一方面、一方面的第一种、第二种或第三种可能的实现方式,在第七种可能的实现方式中,在所述第一访问代理将所述访问请求发送给所述访问请求指定的目的端之前,还包括:

所述第一访问代理向所述访问请求置顶的目的端发送认证请求,在接收认证通过的许可信息后,将所述许可信息添加在所述访问请求中。

本发明实施例二方面提供了一种虚拟机访问控制系统,所述虚拟机访问控制系统包括:至少一个映射器和至少两个访问代理;

所述映射器,用于建立进程与所述进程对应的访问代理之间的映射关系;

每个访问代理包括:

接收单元,用于接收由与所述访问代理有映射关系的进程产生的访问请求;

发送单元,用于将所述访问请求发送给所述访问请求指定的目的端。

结合二方面的实现方式,在第一种可能的实现方式中,所述虚拟机访问控制系统包含的所述映射器数量为一个;所述映射器的虚拟硬件接口与所述虚拟机访问控制系统管理的所有进程建立通信连接。

结合二方面的实现方式,在第二种可能的实现方式中,所述虚拟机访问控制系统包含的所述映射器的数量与所述访问代理的数量相同;所述映射器 由所述映射器的驱动上下文驱动后与进程建立通信连接;

所述映射器,具体用于将待映射进程映射到与所述待映射进程对应的访问代理的虚拟硬件接口,所述待映射进程是与所述映射器建立通信连接的进程。

结合二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述映射器包括:

信息接收单元,用于接收配置信息;

映射子单元,用于按照所述信息接收单元接收到的配置信息将待映射进程映射到与所述待映射进程对应的访问代理的虚拟硬件接口。

结合二方面的第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述映射器包含应用程序二进制接口ABI;所述ABI包括:协议标准ABI、配置接口ABI、至少两个硬件接口ABI;所述协议标准ABI用于指定所述至少两个硬件接口ABI以及所述配置接口ABI使用的通信协议;

所述配置接口ABI,用于接收配置信息。

结合二方面、二方面的第一种、第二种或第三种可能的实现方式,在第五种可能的实现方式中,所述进程包含进程标识ID和用于标识所述进程来自系统态或用户态的状态标识;

所述映射器,还用于确定具有相同进程ID并且具有不同状态标识的进程属于不同的进程,或者,确定具有相同进程ID的进程属于一个进程。

结合二方面、二方面的第一种、第二种或第三种可能的实现方式,在第六种可能的实现方式中,所述访问代理还包括:

缓存单元,用于在所述发送单元将所述访问请求发送给所述访问请求指定的目的端之前,缓存接收到的访问请求;

所述发送单元,具体用于按照产生访问请求的进程的优先级从高到低依次将缓存的访问请求发送给所述访问请求指定的目的端;或者,按照先进先出的原则将缓存的访问请求发送给所述访问请求指定的目的端。

结合二方面、二方面的第一种、第二种或第三种可能的实现方式,在第七种可能的实现方式中,所述访问代理还包括:

认证单元,用于在所述发送单元将所述访问请求发送给所述访问请求指 定的目的端之前,向所述访问请求置顶的目的端发送认证请求;

添加单元,在接收认证通过的许可信息后,将所述许可信息添加在所述访问请求中。

从以上技术方案可以看出,本发明实施例具有以下优点:映射器建立了进程与访问代理之间的映射关系,那么访问代理会接收到与其对应的进程产生的访问请求,那么各访问代理之间外发的访问请求都是并行的,也即:对应不同访问代理的进程所产生的访问请求被并行执行,因此可以提升虚拟机对存储设备的访问速度,提升虚拟机的性能。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例方法流程示意图;

图2A为本发明实施例系统结构示意图;

图2B为本发明实施例系统结构示意图;

图2C为本发明实施例系统结构示意图;

图3为本发明实施例分布式块存储系统的结构示意图;

图4为本发明实施例虚拟磁盘控制器结构示意图;

图5为本发明实施例ABI设计结构示意图;

图6为本发明实施例访问代理内部结构示意图;

图7为本发明实施例访问乱序流程示意图;

图8为本发明实施例另一虚拟磁盘控制器结构示意图;

图9为本发明实施例系统结构示意图;

图10为本发明实施例系统结构示意图;

图11为本发明实施例系统结构示意图;

图12为本发明实施例系统结构示意图;

图13为本发明实施例系统结构示意图;

图14为本发明实施例访问控制装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供了一种访问控制方法,如图2A、图2B和图2C所示,上述方法应用于虚拟机访问控制系统,上述虚拟机访问控制系统包含至少一个映射器和至少两个访问代理,上述映射器用于建立进程与上述进程对应的访问代理之间的映射关系;在本实施例中,区分不同的进程可以采用进程标识(Identity,ID)来识别,也可以采用进程ID和用于标识上述进程来自系统态或用户态的状态标识来识别。两种区别不同进程的方式均不会影响本发明实施例的实现,后一种方式可以作为优选的实现方式使用。另外,虚拟机访问控制系统为虚拟机管理器(hypervisor)的一部分,用于管理虚拟机上运行的各个进程对数据存储卷的访问。如图1所示,上述方法包括:

101:第一访问代理接收由与上述第一访问代理有映射关系的进程产生的访问请求;上述第一访问代理为上述虚拟机访问控制系统中任一访问代理;

102:上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端。

在图2A~图2C所示的结构图中,箭头方向为访问请求的发送方向,访问的结果是访问请求发送方向的逆方向。

本实施例,映射器建立了进程与访问代理之间的映射关系,那么访问代理会接收到与其对应的进程产生的访问请求,那么各访问代理之间外发的访问请求都是并行的,也即:对应不同访问代理的进程所产生的访问请求被并行执行,因此可以提升虚拟机对存储设备的访问速度,提升虚拟机的性能。

在本发明实施例中,访问代理和进程的对应关系具体可以如下:一个访问代理与一个进程对应,或者,一个访问代理与设定个数的进程对应,进程 的优先级越高上述设定个数越少,上述设定个数大于1。

其中图2A和图2C为一个访问代理与一个进程对应的示意图,图2B为一个访问代理与设定个数的进程对应的示意图。以整个虚拟机访问控制系统来看,无论是图2A还是图2B,各访问代理之间的访问请求都是并行的;其中图2A的各进程之间的访问请求也都是并行的。

在本发明实施例中,映射器的个数可以任意设定,具体如下:上述虚拟机访问控制系统包含的上述映射器数量为一个;上述映射器的虚拟硬件接口与上述虚拟机访问控制系统管理的所有进程建立通信连接。

在本发明实施例中,映射器的个数可以任意设定,具体如下:上述虚拟机访问控制系统包含的上述映射器的数量与访问代理数量相同;上述映射器由上述映射器的驱动上下文驱动后与进程建立通信连接;

上述映射器用于建立进程与上述进程对应的访问代理之间的映射关系,包括:上述映射器将待映射进程映射到与上述待映射进程对应的访问代理的虚拟硬件接口,上述待映射进程是与上述映射器建立通信连接的进程。

其中图2A和图2B仅包含一个映射器,图2C包含了多个映射器。采用多个映射器的方案是为了防止仅包含一个映射器时,由于所有进程的访问请求都会先发送到这个映射器,访问请求在这个映射器的虚拟硬件接口串行,可能受到虚拟硬件接口保护的限制而无法发挥虚拟机访问控制系统的最大性能。因此图2C所示的结构可以作为一个优选的实现方案。

进程与访问代理之间的映射关系可以是固定的,也可以是可配置的,如果是可配置的那么可以通过配置实现对各进程实现初步的服务质量(Quality of Service,Qos)管理。具体如下:若上述映射器的数量与访问代理数量相同,上述映射器将待映射进程映射到与上述待映射进程对应的访问代理的硬件接口包括:

上述映射器接收配置信息,并按照上述配置信息将待映射进程映射到与上述待映射进程对应的访问代理的硬件接口。

本发明实施例还提供了映射器的接口的可选实现方案具体如下:上述映射器包含应用程序二进制接口ABI;上述ABI包括:协议标准ABI、配置接口ABI、至少两个硬件接口ABI;

上述协议标准ABI用于指定上述至少两个硬件接口ABI以及上述配置接口ABI使用的通信协议;上述配置接口ABI用于接收配置信息。

由于部分操作系统中,系统态和用户态进程的进程标识(Identity,ID)空间可能重叠,也即,在系统态和用户态中存在进程ID相同的进程,为了更准确地确定不同进程,本发明实施例还提供了如下解决方案:上述进程包含进程标识ID和用于标识上述进程来自系统态或用户态的状态标识;具有相同进程ID的进程为一个进程,或者,具有相同进程ID并且具有相同状态标识的进程为一个进程。其中后一种方案可以更准确的确定不同进程。可以理解的是,在后一种方案中,具有相同进程ID但是状态标识不同则属于不同的进程。

本发明实施例还提供了缓存访问请求的来实现对访问请求的管理的技术方案,如下:在上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端之前,还包括:

上述第一访问代理缓存接收到的访问请求;

上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端包括:

上述第一访问代理按照产生访问请求的进程的优先级从高到低依次将缓存的访问请求发送给上述访问请求指定的目的端;或者,上述第一访问代理按照先进先出的原则将缓存的访问请求发送给上述访问请求指定的目的端。

具体的缓存方式可以采用缓存队列的方式,也可以采用其他缓存方式本实施例不作唯一性限定。通过在访问代理中缓存访问请求,再通过访问请求的发送策略可以实现对进程的Qos管理。

由于本实施例中执行访问请求的主体数量不止一个,本实施例还提供了访问代理进行认证的实现方案,具体如下:在上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端之前,还包括:

上述第一访问代理向上述访问请求置顶的目的端发送认证请求,在接收认证通过的许可信息后,将上述许可信息添加在上述访问请求中。

以下实施例将给出一个具体的应用场景作为举例,对本发明实施例进行更详细的说明。

如图3所示,目前卷采用分布式块存储系统的逻辑结构,也可称为分布式块存储资源池的逻辑结构。分布式块存储资源池的硬件部分,主要包含多台通用服务器。在每台服务器上有多块物理硬盘,即:物理硬盘驱动器(Hard Disk Drive,HDD),每块物理硬盘与运行在通用服务器上针对该物理硬盘的守护进程相结合形成一个逻辑上的对象存储器(Object Storage Device,OSD)。卷在逻辑上包含众多的数据块,数据块被映射至对应的对象存储器。进程(Proc)产生的访问请求到达VM的控制器以后,VM,将访问请求发送卷里面的数据块,如虚线连接关系,或者直接发送给访问请求指定的数据块。

本实施例,通过在虚拟机侧引入基于并行架构的虚拟磁盘控制器(对应图3中的控制器),以及与磁盘控制器相应的驱动程序,用来消除虚拟机侧的单点性能瓶颈,使得虚拟机上的多个进程可以并行访问一个卷的多个数据块,以提高性能。另外,本实施例在基于并行架构的虚拟磁盘控制器中,通过引入访问策略控制机制,可以对每个进程的卷读写性能进行控制。

本实施例主要在VM一侧实现,以下实施例将给出VM一侧的两个举例实现方案举例,可一并参阅图3所示的结构。

图4所示的是基于并行架构的虚拟磁盘控制器内部的逻辑结构,在图4中,操作系统是虚拟机的客户机用户操作系统,管理程序是虚拟机的管理程序,管理程序内实现了控制器(即虚拟磁盘控制器)。在图4中,示意了3个进程(Proc0~Proc2),每个进程与由驱动上下文驱动的映射器连接,映射器连接到虚拟硬件接口,虚拟硬件接口连接到访问代理,访问代理连接到存储系统,例如图3中的分布式块存储资源池。

在图4中,虚拟机侧的虚拟磁盘控制器采用多进程并行结构,每个进程对应的逻辑实体是一个访问代理。访问代理与虚拟硬件接口一一对应,访问代理通过与自己对应的虚拟硬件接口与客户机操作系统中的驱动上下文(context)驱动的映射器交互,因此对于每个进程而言存在一个独立的逻辑通道,访问请求在逻辑通道中的下行方向为:进程、映射器、虚拟硬件接口,最后经访问代理转发到访问请求指定的目的端。因此,每个进程都可以通过独立的逻辑通道访问分布式块存储资源池。

管理员可以通过图4所示的虚拟磁盘控制器的管理模块对接口模块内的 虚拟硬件接口进行配置,还可以对访问代理进行配置。该处配置的具体实现可以是虚拟硬件配置与管理方式,通过VM内部的客户(guest)系统对虚拟寄存器的访问实现。配置的具体内容可以包括使用的协议、通信使用的端口号等等,具体内容本实施例不作限制。

客户机操作系统中的控制器驱动模块通过配置模块读取配置的信息。配置模块读取的配置信息可以包括:虚拟硬件接口的个数,以及每个虚拟硬件接口的起始硬件地址等。由于,驱动上下文与虚拟硬件接口之间需要具有对应关系。具体而言,每个驱动上下文会被配置模块告知应该访问哪一个虚拟硬件接口。为此,配置模块需要首先从管理模块中读取出虚拟硬件接口的个数,以确定最多能够支持几个驱动上下文。然后再将不同的虚拟硬件接口的起始地址分别配置给各个驱动上下文,以实现驱动上下文对接口的分别访问。

在图4所示的结构中,进程数和访问代理的数量是相等的,所以可以每个进程对应到一个访问代理,如果进程数少于访问代理的数量也可以每个进程对应到一个访问代理;但是如果进程数大于访问代理的数量,那么会存在多个进程对应到一个访问代理的情况。当进程数小于等于访问代理的数量时,所有进程对卷的访问完全是并行的;当进程数大于访问代理数时,多个代理之间仍为并行,同一访问代理负责的进程间是串行的。

为实现客户机操作系统中的驱动上下文与管理程序(Hypervisor)中的虚拟磁盘控制器的接口模块的虚拟硬件接口之间的控制命令与数据交互,本实施例为虚拟磁盘控制器设计了ABI(application binary interface,应用程序二进制接口),并据此开发驱动上下文。ABI设计如图5所示,包括:协议标准ABI,配置接口ABI,虚拟硬件接口0~虚拟接口N的ABI。接口ABI对应物理地址范围。

在本实施例中,ABI的设计前向兼容系统体系结构规范,当前通常采用外围设备接口(Peripheral Component Interconnect Express,PCI-e)总线协议),以便操作系统正确识别虚拟磁盘控制器的虚拟硬件接口,ABI的设计为客户机操作系统中的控制器驱动模块提供配置读写的接口ABI。设计的ABI为每个虚拟硬件接口提供了单独的ABI,来允许多个进程的驱动上下文能够对多个虚拟硬件接口ABI进行并行访问。

在虚拟磁盘控制器的实现当中,访问代理是核心的结构。访问代理的内部结构如图6所示。包括如下几个部分:

读写队列:虚拟硬件接口接收到的读写请求发送到该读写队列中,读写请求针对的是数据块的读写任务,读写队列可以记录读写队列中的各读写请求当前的状态。

配置接口模块:是一个接口模块,可以用来接收管理模块下发的配置信息并将配置信息发送给需要使用的模块。配置信息可以包含:访问策略的配置信息,集群认证的配置信息等。

访问策略模块:该模块按照访问策略确定读写队列中的读写请求的执行策略,例如先进先出(First-In First-Out,FIFO)策略,优先级控制策略等。访问策略可以依据接收配置接口发送的访问策略配置信息确定。

访问策略通常可以有两种:FIFO和优先级调度。如果采用优先级调度方式,则不同进程的I/O访问请求被赋予不同的优先级。访问策略模块根据不同优先级数值,对访问进行排序处理。优先级数值的指定方式不作限定,通常可由系统管理员直接指定。在本实施例中,可以默认采用FIFO策略,可以通过配置访问策略模块实现调整到优先级调度。

集群访问认证模块:该模块复制代表访问代理与分布式存储资源池进行认证。认证的流程可以如下:集群访问认证模块向分布式存储资源池发送认证申请,在认证申请中携带的信息包括:存储集群认证模块的IP地址,用户名,用户密码等。如果分布式存储资源池允许该认证申请,则会返回认证许可信息(如标志访问身份与权限信息的字节串),给上述集群访问认证模块,此时上述集群访问认证模块可以告知集群读写模块可以开始执行读写请求对上述分布式存储资源池进行读写操作。集群访问认证模块需要将上述认证许可信息告知给集群读写模块。

集群读写模块:该模块在集群访问认证模块认证通过后,依据访问策略模块确定的执行策略,执行读写队列中的读写请求。执行过程可以是:将上述认证许可信息附加在读写请求中,发送给分布式存储资源池。

本发明实施例还可以解决来自同一进程的、针对同一数据块的读写操作可能导致的乱序问题。具体请参阅图7所示,Proc1先后发出了写请求和读请 求,读请求和写请求被发送给了不同的访问代理:访问代理A和访问代理B,则可能出现访问乱序,引发错误。如图7所示流程如下:

1、进程Proc1产生了针对同一个数据块的,写请求和读请求。其中写请求在先。

2、读请求对应的数据读出操作由访问代理A处理,写请求对应的数据写入操作由访问代理B处理。数据读出操作先于数据写入操作到达对应的数据块。

基于以上流程,读出的数据返回Proc1,Proc1得到的读出数据事实上是写入数据操作发生以前的旧数据,从而导致错误。

基于以上流程可能产生的乱序错误,本发明实施例提出的如图4所示的结构解决访问乱序错误。在图4中,引入了进程与访问代理间的映射机制。具体而言,通过将来自于同一个进程的所有访问请求映射到同一个访问代理,那么可以保证同一个进程的访问操作为串行,从而保证访问操作的正确性。

另外,由于部分操作系统中,客户态和用户态进程的进程ID空间可能重叠,也即,在系统态和用户态中存在进程ID相同的进程。为在映射时唯一确定进程,本实施例在确定进程时候需要以下信息:

(1)当前访问来自系统态还是用户态。

(2)当前访问的进程ID。

上述进程的信息均可由虚拟硬盘驱动程序通过客户机操作系统获取。具体的进程与访问代理之间的映射机制和策略可以通过配置加以选择,具体如何映射本发明实施例不做唯一限定。

另外,由于图4和图6所示的结构中,通过对多个访问代理中的多个读写队列分别进行访问策略控制,可以实现对不同进程的读写性能进行QoS控制。

相对于图4所示的结构,本发明实施例还提供了简化构架的另一个可选实现方案。本实施例可以应用于客户机操作系统中的控制器驱动无法被替换,或者无法支持多个完全并行的驱动上下文的场景下。本实施例的简化架构的实现示意图如图8所示。

采用图8所示的简化架构,在客户机操作系统一侧可以不引入修改。可 以对比图4所示的结构,多个进程通过同一个虚拟硬件接口连接到映射器,映射器将进程映射到与各进程对应的访问代理。虽然多个进程对控制器的访问为串行,而控制器通过多个访问代理对数据块的访问仍为并行,仍可提高卷访问性能。若虚拟硬件接口在客户机的操作系统中没有锁保护,那么采用图8所示的结构可以获得较好的效果。如果客户机的操作系统对虚拟硬件接口有锁保护,那么多个进程的读写请求在这个虚拟机硬件接口会存在串行导致的性能损失,此时采用图4所示的结构则可以突破串行导致的问题,使整个系统达到并行的目的,从而获得最好读写性能。

本发明实施例还提供了一种虚拟机访问控制系统,如图9所示,包含虚拟机访问控制系统900,上述虚拟机访问控制系统900包括:至少一个映射器901和至少两个访问代理902;

上述映射器901,用于建立进程与上述进程对应的访问代理902之间的映射关系;

每个上述访问代理902包括:

接收单元9021,用于接收由与上述访问代理902有映射关系的进程产生的访问请求;

发送单元9022,用于将上述访问请求发送给上述访问请求指定的目的端。

本实施例,映射器建立了进程与访问代理之间的映射关系,那么访问代理会接收到与其对应的进程产生的访问请求,那么各访问代理之间外发的访问请求都是并行的,也即:对应不同访问代理的进程所产生的访问请求被并行执行,因此可以提升虚拟机对存储设备的访问速度,提升虚拟机的性能。

可选地,在本发明实施例中,映射器的个数可以任意设定,具体如下:如图9所示,上述虚拟机访问控制系统900包含的上述映射器901数量为一个;上述映射器901的虚拟硬件接口与上述虚拟机访问控制系统900管理的所有进程建立通信连接。

可选地,在本发明实施例中,映射器的个数可以任意设定,具体如下:上述虚拟机访问控制系统900包含的上述映射器901的数量与访问代理902数量相同;上述映射器901由上述映射器901的驱动上下文驱动后与进程建立通信连接;

上述映射器901,具体用于将待映射进程映射到与上述待映射进程对应的访问代理902的虚拟硬件接口,上述待映射进程是与上述映射器901建立通信连接的进程。

采用多个映射器的方案是为了防止仅包含一个映射器时,由于所有进程的访问请求都会先发送到这个映射器,访问请求在这个映射器的虚拟硬件接口串行,可能受到虚拟硬件接口保护的限制而无法发挥虚拟机访问控制系统的最大性能。因此可以作为一个优选的实现方案。

进程与访问代理之间的映射关系可以是固定的,也可以是可配置的,如果是可配置的那么可以通过配置实现对各进程实现初步的Qos管理。具体如下:如图10所示,上述映射器901包括:

信息接收单元1001,用于接收配置信息;

映射子单元1002,用于按照上述信息接收单元1001接收到的配置信息将待映射进程映射到与上述待映射进程对应的访问代理902的虚拟硬件接口。

本发明实施例还提供了映射器的接口的可选实现方案具体如下:可选地,如图11所示,上述映射器901包含应用程序二进制接口ABI;上述ABI包括:协议标准ABI、配置接口ABI、至少两个硬件接口ABI;上述协议标准ABI用于指定上述至少两个硬件接口ABI以及上述配置接口ABI使用的通信协议;

上述配置接口ABI,用于接收配置信息。

由于部分操作系统中,系统态和用户态进程的进程ID空间可能重叠,也即,在系统态和用户态中存在进程ID相同的进程,为了更准确地确定不同进程,本发明实施例还提供了如下解决方案:进一步地,上述进程包含进程标识ID和用于标识上述进程来自系统态或用户态的状态标识;

上述映射器901,还用于确定具有相同进程ID并且具有不同状态标识的进程属于不同的进程,或者,确定具有相同进程ID的进程属于一个进程。

进一步地,本发明实施例还提供了缓存访问请求的来实现对访问请求的管理的技术方案,如下:如图12所示,上述访问代理902还包括:

缓存单元1201,用于在上述发送单元9022将上述访问请求发送给上述访问请求指定的目的端之前,缓存接收到的访问请求;

上述发送单元9022,具体用于按照产生访问请求的进程的优先级从高到低依次将缓存的访问请求发送给上述访问请求指定的目的端;或者,按照先进先出的原则将缓存的访问请求发送给上述访问请求指定的目的端。

在本发明实施例中,具体的缓存方式可以采用缓存队列的方式,也可以采用其他缓存方式本实施例不作唯一性限定。通过在访问代理中缓存访问请求,再通过访问请求的发送策略可以实现对进程的Qos管理。

进一步地,由于本实施例中执行访问请求的主体数量不止一个,本实施例还提供了访问代理进行认证的实现方案,具体如下:如图13所示,上述访问代理902还包括:

认证单元1301,用于在上述发送单元9022将上述访问请求发送给上述访问请求指定的目的端之前,向上述访问请求置顶的目的端发送认证请求;

添加单元1302,在接收认证通过的许可信息后,将上述许可信息添加在上述访问请求中。

可选地,在本发明实施例中,访问代理和进程的对应关系具体可以如下:上述映射器901,具体用于将一个进程之间映射到一个访问代理902,或者,将设定个数的进程映射到一个访问代理902,且进程的优先级越高上述设定个数越少,上述设定个数大于1。

本发明实施例还提供了一种虚拟机访问控制设备,应用于具有虚拟机访问控制系统,如图14所示,包括:处理器1401以及存储器1402;其中存储器1402可以用于缓存处理器1401在数据处理过程中产生的数据或者在数据处理过程中需要的数据;

上述处理器1401,用于构造上述虚拟机访问控制系统,上述虚拟机访问控制系统包含至少一个映射器和至少两个访问代理,上述映射器用于建立进程与上述进程对应的访问代理之间的映射关系;第一访问代理接收由与上述第一访问代理有映射关系的进程产生的访问请求;上述第一访问代理为上述虚拟机访问控制系统中任一访问代理;上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端。

本实施例,映射器建立了进程与访问代理之间的映射关系,那么访问代理会接收到与其对应的进程产生的访问请求,那么各访问代理之间外发的访 问请求都是并行的,也即:对应不同访问代理的进程所产生的访问请求被并行执行,因此可以提升虚拟机对存储设备的访问速度,提升虚拟机的性能。

在本发明实施例中,访问代理和进程的对应关系具体可以如下:一个访问代理与一个进程对应,或者,一个访问代理与设定个数的进程对应,进程的优先级越高上述设定个数越少,上述设定个数大于1。

在本发明实施例中,映射器的个数可以任意设定,具体如下:上述虚拟机访问控制系统包含的上述映射器数量为一个;上述映射器的虚拟硬件接口与上述虚拟机访问控制系统管理的所有进程建立通信连接。

在本发明实施例中,映射器的个数可以任意设定,具体如下:上述虚拟机访问控制系统包含的上述映射器的数量与访问代理数量相同;上述映射器由上述映射器的驱动上下文驱动后与进程建立通信连接;

上述处理器1401构建的虚拟机访问控制系统中的映射器用于建立进程与上述进程对应的访问代理之间的映射关系,包括:上述映射器将待映射进程映射到与上述待映射进程对应的访问代理的虚拟硬件接口,上述待映射进程是与上述映射器建立通信连接的进程。

采用多个映射器的方案是为了防止仅包含一个映射器时,由于所有进程的访问请求都会先发送到这个映射器,访问请求在这个映射器的虚拟硬件接口串行,可能受到虚拟硬件接口保护的限制而无法发挥访问控制系统的最大性能。因此采用多个映射器的虚拟机结构可以作为一个优选的实现方案。

进程与访问代理之间的映射关系可以是固定的,也可以是可配置的,如果是可配置的那么可以通过配置实现对各进程实现初步的Qos管理。具体如下:若上述映射器的数量与访问代理数量相同,上述处理器1401构建的虚拟机中的映射器用于将待映射进程映射到与上述待映射进程对应的访问代理的硬件接口包括:接收配置信息,并按照上述配置信息将待映射进程映射到与上述待映射进程对应的访问代理的虚拟硬件接口。

本发明实施例还提供了映射器的接口的可选实现方案具体如下:上述映射器包含应用程序二进制接口ABI;上述ABI包括:协议标准ABI、配置接口ABI、至少两个硬件接口ABI;上述协议标准ABI用于指定上述至少两个硬件接口ABI以及上述配置接口ABI使用的通信协议;上述配置接口ABI用 于接收配置信息。

本发明实施例还提供了缓存访问请求的来实现对访问请求的管理的技术方案,如下:在上述处理器1401构建的虚拟机访问控制系统中的上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端之前,上述第一访问代理缓存接收到的访问请求;上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端包括:上述第一访问代理按照产生访问请求的进程的优先级从高到低依次将缓存的访问请求发送给上述访问请求指定的目的端;或者,上述第一访问代理按照先进先出的原则将缓存的访问请求发送给上述访问请求指定的目的端。

具体的缓存方式可以采用缓存队列的方式,也可以采用其他缓存方式本实施例不作唯一性限定。通过在访问代理中缓存访问请求,再通过访问请求的发送策略可以实现对进程的Qos管理。

由于本实施例中执行访问请求的主体数量不止一个,本实施例还提供了访问代理进行认证的实现方案,具体如下:在上述处理器1401构建的虚拟机访问控制系统中的上述第一访问代理将上述访问请求发送给上述访问请求指定的目的端之前,上述第一访问代理向上述访问请求置顶的目的端发送认证请求,在接收认证通过的许可信息后,将上述许可信息添加在上述访问请求中。

以上实施例,可以支持单一虚拟机内的多个进程对单一卷进行并行访问,从而显著提高虚拟机对卷的访问带宽。可以支持单一虚拟机内的多个进程的进程级访问的QoS管理。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号