首页> 中国专利> 一种面向虚拟化存储应用的HBA控制器I/O虚拟化方法

一种面向虚拟化存储应用的HBA控制器I/O虚拟化方法

摘要

本发明提供了一种面向虚拟化存储应用的HBA控制器I/O虚拟化方法,该方法包括:将HBA控制器与服务器主机建立连接并与多个存储设备分别建立连接,服务器主机设置有多个虚拟机VM实例;在HBA控制器中建立多个虚拟功能接口VF,并将多个VF分别映射为服务器主机系统内核下的多个存储节点;将存储设备映射到对应的VF;为每个VM实例分配所述存储节点,基于对应的VF与存储设备的映射,将每个VM实例的I/O请求并行发送到对应存储设备。本发明的方法为每个VM实例提供了独立的存储设备访问通道,各存储节点共享PCIe总线资源,支持并发访问存储设备,有效提升了存储I/O访问带宽,通过存储节点资源的动态分配和回收,充分利用硬件存储资源。

著录项

  • 公开/公告号CN114860387A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 无锡众星微系统技术有限公司;

    申请/专利号CN202210642538.7

  • 申请日2022-06-08

  • 分类号G06F9/455(2006.01);G06F13/42(2006.01);

  • 代理机构北京动力号知识产权代理有限公司 11775;

  • 代理人董钢

  • 地址 214000 江苏省无锡市新吴区菱湖大道111号无锡软件园天鹅座C座2101室

  • 入库时间 2023-06-19 16:16:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-18

    授权

    发明专利权授予

  • 2022-08-23

    实质审查的生效 IPC(主分类):G06F 9/455 专利申请号:2022106425387 申请日:20220608

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本发明属于I/O虚拟化领域,特别涉及一种面向虚拟化存储应用的HBA控制器I/O虚拟化方法。

背景技术

在服务器存储系统架构中,HBA(Host Bus Adapter,总线适配器)通常作为主机和外围设备之间连接的桥梁,不仅可以扩展服务器外围设备连接的数量,而且能够支持不同接口协议之间的转换,极大地丰富了服务器系统的功能,同时满足了多样化系统应用场景。例如,用于存储设备的典型HBA控制器如图1所示,上游采用服务器领域流行的PCIe(PCI-Express)总线接口与服务器主机连接,下游兼容与存储设备连接的SAS(串行SCSI)、SATA(串行ATA)和PCIe三种总线接口形态。通过HBA既能够简化服务器主机系统的外围接口设计,又可以提供服务器主机系统对各种形态存储设备的灵活访问,以及硬件加速的RAID功能。从服务器主机角度来看,通过单一类型的通用PCIe接口,就可以实现SAS、SATA或者PCIe多种协议接口类型的存储设备的灵活访问,满足不同产品对性能、成本、规模和可靠性的需求差异。

随着云计算技术的发展,虚拟化成为云数据中心的重要技术,能够有效改善服务器资源利用率。当多个虚拟机(VM)系统共享服务器的计算、存储、网络等物理硬件资源时,不仅可以满足多用户的并发需求,又可以充分利用服务器硬件资源,避免硬件资源浪费并且降低了硬件成本。如图2所示,在面向虚拟化的存储服务器系统中,根据用户的使用场景需求,虚拟机管理系统SV(Supervisor)可以动态生成多个虚拟机VM实例,多个虚拟机VM通过SV共享硬件存储设备资源。SV控制并管理HBA下游的硬件存储设备(图2中以虚线表示SV与存储设备的虚拟连接),响应各个VM的存储请求,分配VM所需的存储资源。各个VM分时共享SV的调度器,实现对HBA的控制交互,完成系统存储的I/O事务。

然而,在传统模式下,虚拟机管理系统SV一方面是整个虚拟化存储应用的关键节点,另一方面也可能成为整个系统的性能瓶颈。因为SV实际是在服务器主机上运行的、用于虚拟机VM的实例化、注销以及多个虚拟机VM共享物理资源的协调、分配和回收的一套管理软件。该管理软件运行时刻本身会占用额外的服务器的主机CPU、内存、总线等物理资源。随着云计算应用中虚拟机VM实例化数量的增加,SV的运行开销也相应增加,包括CPU利用率、内存占用率等,调度延迟也随之增大,各个虚拟机VM单位时间内能够分配到共享资源控制的时间片也随之减少,严重影响了虚拟机VM对共享资源使用的实时性。

例如,当图2中的虚拟机VM#1和VM#2同一时刻向SV发出存储设备的访问请求时,SV需要根据既定的优先级或者循环方式,依次序处理VM#1和VM#2的服务请求,并控制HBA完成存储设备的访问。如果先处理VM#1的存储访问请求需要耗时T1,则通常在T1时间段内,SV的设备驱动程序被VM#1独占,而VM#2只能处于等待状态,难以支持多个VM的并发请求,增加了调度延迟,无法充分发挥主机和HBA之间的PCIe物理链路的高性能,影响了终端用户的体验。

发明内容

本发明的目的在于提供一种面向虚拟化存储应用的HBA控制器I/O虚拟化方法,旨在提升存储I/O访问带宽,实现存储设备的并发访问,解决SV作为存储访问的瓶颈问题。

本发明提供的面向虚拟化存储应用的HBA控制器I/O虚拟化方法,包括:

将所述HBA控制器与服务器主机建立连接,其中所述服务器主机设置有多个虚拟机实例;

根据硬件存储设备的类型,将所述HBA控制器与多个硬件存储设备分别建立连接;

在所述HBA控制器中建立多个虚拟功能接口,并将所述多个虚拟功能接口分别映射为服务器主机系统内核下的多个存储节点;

将所述多个硬件存储设备映射到相对应的虚拟功能接口;

为服务器主机中的每个虚拟机实例分配所述存储节点;

基于所述虚拟功能接口与所述硬件存储设备的映射,将所述每个虚拟机实例的I/O请求并行发送到对应的硬件存储设备。

优选地,所述硬件存储设备的类型包括SAS、SATA或者NVMe类型。

优选地,所述根据硬件存储设备的类型,将所述HBA控制器与多个硬件存储设备分别建立连接,进一步包括:

通过SATA总线与SATA存储设备建立连接,通过SAS总线与SAS存储设备或SASExpander建立连接,和/或通过PCIe总线与PCIe存储设备或PCIe Switch建立连接。

优选地,所述HBA控制器与所述服务器主机通过PCIe总线建立连接。

优选地,所述HBA控制器设置有内部软件,所述方法进一步包括:

通过所述HBA控制器的内部软件动态地配置所述虚拟功能接口的数量。

优选地,所述服务器主机设置有虚拟机管理系统,所述方法进一步包括:

根据所述虚拟机管理系统的请求,动态调整多个虚拟功能接口和存储节点之间的映射关系。

优选地,在所述为服务器主机中的每个虚拟机实例分配所述存储节点之后,所述虚拟机实例在其生命周期内独占所分配的存储节点。

优选地,在所述为服务器主机中的每个虚拟机实例分配所述存储节点之后,进一步包括:

利用所述虚拟机管理系统将分配给所述虚拟机实例的存储节点进行回收。

优选地,所述多个虚拟机实例与对应的硬件存储设备执行的并行I/O业务交互过程对虚拟机管理系统完全透明。

优选地,所述将多个硬件存储设备映射到相对应的虚拟功能接口,进一步包括:

将硬件存储设备划分为多个物理分区,并将不同物理分区分别映射到不同的虚拟功能接口。

相比于现有技术,本发明的方案通过HBA控制器内部实例化数量动态可配置的PCIe虚拟功能接口VF,并将每个PCIe VF实例映射为服务器主机系统的一个存储节点。虚拟机管理系统SV根据VM实例的存储需求查找合适的存储节点并分配给VM实例,为每个VM实例提供了独立的存储设备访问通道,各节点共享PCIe总线资源,支持并发访问存储设备,有效提升存储I/O访问带宽,实现了存储节点资源的动态分配和回收,既满足了虚拟化应用场景的多样化用户需求,又能够充分利用硬件存储资源,避免硬件资源浪费。

本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。

附图说明

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

图1是根据现有技术的HBA控制器的连接结构示意图。

图2是根据现有技术的支持虚拟化存储服务器的HBA控制器的连接结构示意图。

图3是根据本发明的面向虚拟化存储应用的HBA控制器的连接结构示意图。

图4是根据本发明的面向虚拟化存储应用的HBA控制器I/O虚拟化方法的流程图。

具体实施方式

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

通过对传统技术的总结,本发明提出面向虚拟化存储应用的HBA控制器I/O虚拟化方法,基于PCIe协议的单根I/O虚拟化(SR-IOV)技术,通过在HBA控制器内部实例化多个PCIe虚拟功能接口VF,动态配置PCIe VF的数量,并将每个PCIe VF映射为主机系统的一个逻辑存储节点,而每个PCIe VF与真实的硬件存储设备建立连接。各个存储节点统一由虚拟机管理系统SV实施管理。在此基础之上,SV可以根据VM实例的存储需求,查找合适的逻辑存储节点并分配给VM实例,即将对应的VF实例分配给具体的VM实例,为每个VM实例提供独立的存储设备访问通道。

图3是根据本发明的面向虚拟化存储应用的HBA控制器的连接结构示意图。如图3所示,HBA控制器通过上游接口L1与服务器主机建立连接。优选地,上游接口L1可以采用PCIe总线连接。HBA控制器通过下游接口L2.1~L2.n与物理存储设备建立连接。L2的连接支持SAS、SATA或者PCIe三种总线形态,兼容SAS、SATA或者NVMe(NVM Express)类型的永久存储设备D1.0~D1.n,自适应建立各种总线类型的物理连接,同时支持通过PCIe Switch C5扩展NVMe类型存储设备接入,支持通过SAS Expander C4扩展SAS或SATA类型存储设备接入。

所述上游接口L1以PCIe Endpoint实例的形式支持PCIe单根I/O虚拟化特性,并支持多个PCIe虚拟功能接口VF C3.1-C3.n,其中虚拟功能接口VF的数量可以通过HBA控制器内部软件动态配置,通过软件在线增加或者注销VF实例。在实际的实现方式中,Function#0C3.0可以作为物理功能接口,也是其它虚拟Function的根源,虚拟机管理系统SV的控制命令通过Function#0来传递给HBA控制的软件,以便控制不同的VF C3.1~C3.n。每个功能接口可以独立地映射为控制一个或者多个SAS、SATA或NVMe接口类型的存储设备D1.0~D1.n,如图3中C3.0~C3.n与D1.0~D1.n之间的虚线所表示。

例如,可以将Function#1连接到存储设备Disk 1和SAS Expander C4,并通过SASExpander C4连接到Disk 2和Disk 3,而存储设备D1.0~D1.n可以是SAS、SATA或NVMe总线类型的设备。

在进一步的实施例中,可以将硬件存储设备D1.0~D1.n中的任何一个进一步划分为一个以上的物理分区,并可以将不同物理分区分别映射到不同的VF。

服务器主机的系统驱动程序将HBA控制器中的每个VF映射为一个系统内核的存储节点N1.1~N1.n,如图3中C3.1~C3.n与N1.1~N1.n之间的虚线所表示。

HBA控制器的内部软件可以根据虚拟机管理系统SV的系统请求,动态调整VF C3.1~C3.n和存储设备D1.0~D1.n或者其分区之间的映射。服务器主机中的虚拟机管理系统SVC1用于管理存储节点,按照用户需求动态生成或者注销VM实例C2.1~C2.n,并分配或回收虚拟机VM实例的存储节点资源,如图3中C2.1~C2.n与N1.1~N1.n之间的虚线所表示。

通过虚拟机管理系统SV的资源分配,每个虚拟机VM可以获得至少一个存储节点资源,并且在其生命周期内独占分配的存储节点资源。虚拟化任务完成后,SV负责VM实例的注销,并且回收为VM实例分配的存储节点资源。通过虚拟机管理系统SV动态地分配和回收存储节点资源,既能够满足虚拟化应用场景的多样化用户需求,又能够充分利用硬件存储资源,避免硬件资源浪费。

多个虚拟机VM的存储节点N1.1~N1.n共享主机和HBA之间的PCIe高速物理总线连接L1,并且支持多个VM并发访问下游硬件存储设备D1.0~D1.n。各个VM实例通过存储节点N1.1~N1.n发送I/O请求访问下游硬件存储设备,I/O业务交互过程对虚拟机管理系统SV是完全透明的,无需SV进行消息传递或仲裁。因此,主机系统下各个VM实例能够拥有独立的存储节点,而各个存储节点共享PCIe总线资源,支持并发访问存储设备,有效提升存储I/O访问带宽,多个VM不再分时共享SV的调度,从而避免了SV成为存储访问的瓶颈。

在图3的连接结构的基础上,参见图4的流程图,本发明的所述面向虚拟化存储应用的HBA控制器I/O虚拟化方法包括:

步骤101:将所述HBA控制器与服务器主机建立连接,其中所述服务器主机设置有多个虚拟机VM实例,并且根据硬件存储设备的类型,将所述HBA控制器与多个硬件存储设备分别建立连接。

在优选的实施例中,HBA控制器用于与服务器主机建立连接的上游接口L1采用PCIe总线连接。对于HBA控制器的下游接口L2.1~L2.n,为了使所述硬件存储设备兼容SAS、SATA或者NVMe类型的永久存储设备,所述下游接口L2.1~L2.n动态地适配接入的存储设备类型,根据存储设备类型自适应建立SAS、SATA或者PCIe等多种形态的总线连接。可选地,为了兼容PCIe Switch或SAS Expander类型,下游接口L2.1~L2.n还可进一步通过PCIeSwitch扩展接入NVMe类型存储设备,和/或通过SAS Expander扩展接入SAS或SATA类型存储设备。

步骤102:在所述HBA控制器中建立多个虚拟功能接口VF,并将所述多个虚拟功能接口VF分别映射为服务器主机系统内核下的多个存储节点N1.1~N1.n。

由于PCIe Endpoint实例支持PCIe单根I/O虚拟化特性,上游接口L1通过PCIeEndpoint实例支持在所述HBA控制器创建多个虚拟功能接口VF实例(图3表示为C3.1~C3.n)。每个虚拟功能接口VF相当于一个轻量级的PCIe存储设备,虚拟机管理系统SV可将其直接分配给某个虚拟机VM。虚拟功能接口VF的数量可以通过HBA控制器内部软件动态配置,例如,HBA控制器内部软件可以根据当前服务器主机中的虚拟机VM数量,在线增加或者注销VF实例。当完成VF实例创建之后,HBA控制器将虚拟功能接口VF的相关信息通知服务器主机,以使服务器主机的系统驱动程序将HBA控制器中的每个VF映射为一个系统内核的存储节点N1.1~N1.n,如图3中的虚线所表示。例如为虚拟机VM#2分配存储节点N1.1,并且将虚拟功能接口VF Function#1映射为存储节点N1.1,因而等同于为虚拟机VM#2分配了虚拟功能接口VF Function#1。在存储系统运行中,HBA控制器内部软件也可以进一步根据SV系统请求,动态调整存储节点和VM之间的映射。

步骤103:将多个硬件存储设备映射到相对应的虚拟功能接口VF。

通过建立硬件存储设备与虚拟功能接口VF的映射,每个VF实例可以映射为控制一个或者多个SAS、SATA或NVMe接口类型的物理存储设备。例如,根据图3所示的结构,可以将VF Function#n连接到存储设备D1.n,而由于虚拟机VM#n被分配存储节点N1.n,因此虚拟功能接口VF Function#n被映射到存储节点N1.n,使得从服务器主机侧的视角来看,虚拟机VM#n被分配的资源为存储设备D1.n。即虚拟机VM#n可以向存储设备D1.n发送I/O请求。

在进一步的实施例中,一个SAS、SATA或NVMe类型存储设备D1.0~D1.n可以被划分为多个物理分区,并可以将不同物理分区分别映射到不同的VF。例如,可以将存储设备D1.n物理分区为D1.n1和D1.n2(图中未示出),并将VF C3.n-1和C3.n-2分别连接到D1.n1和D1.n2,相当于同时连接到存储设备D1.n。

步骤104:为每个虚拟机VM实例分配所述存储节点,基于对应的虚拟功能接口VF与硬件存储设备的映射,将每个虚拟机VM实例的I/O请求并行发送到对应的硬件存储设备。

在服务器主机中,各个VM实例可以由虚拟机管理系统SV C1来管理,例如按照用户需求对VM实例进行动态生成或者注销。如图3所示,虚拟机管理系统SV还负责管理系统内核下的各个存储节点,并分配或回收VM实例的存储节点资源。在一个具体的实施例中,可以在检测到某个VM实例结束I/O会话之后,利用虚拟机管理系统SV回收先前为该VM实例分配的存储节点。在进一步优选的实施例中,当完成存储节点的回收之后,还可以通知HBA控制器的内部软件,将存储节点映射到的虚拟功能接口VF进行停用或注销等。

通过虚拟机管理系统SV的分配回收策略,服务器主机内每个虚拟机VM可以获得至少一个存储节点资源,在其生命周期内独占所分配的存储节点资源,使得多个虚拟机VM存储节点共享主机和HBA之间的PCIe高速物理总线连接L1,支持多个VM并发访问下游硬件存储设备。通过存储节点实际对应的虚拟功能接口VF,以及虚拟功能接口VF与硬件存储设备的映射,各个VM实例可以通过存储节点N1.1~N1.n发送I/O请求,访问对应的下游硬件存储设备。参见图3建立的映射,当虚拟机VM#1通过Function#2对PCIe Switch C5即Disk 4和Disk 5发送I/O请求的同时,虚拟机VM#2也可以并行地通过Function#1对SAS Expander C4即Disk 2和Disk 3发送I/O请求。整个并行I/O业务交互过程对虚拟机管理系统SV是完全透明的,无需通过SV进行消息传递或仲裁操作。

本发明提出的面向虚拟化存储应用的HBA控制器I/O虚拟化方法,基于PCIe协议的单根I/O虚拟化技术,在有限的服务器系统硬件资源前提下,既满足云计算虚拟化应用场景的多样化用户需求,又能够有效提升存储I/O访问的并发性能,避免SV成为存储访问的瓶颈。与现有技术相比较,根据本发明的实施例具备以下方面的优点:

1)主机系统中的每个虚拟机VM生命周期内独占分配获得的存储节点资源,多个VM实例并发访问下游硬件存储设备,I/O业务交互过程对虚拟机管理系统SV透明,能够充分发挥主机和HBA之间的PCIe高速物理总线连接带宽性能;

2)随着虚拟机VM实例的生成或者注销,虚拟机管理系统SV动态分配或者回收主机系统的存储节点,能够将硬件资源利用率最大化,避免资源浪费;

3)下游接口动态适配SAS、SATA和NVMe等多接口形态的存储设备硬件,并支持SASExpander和PCIe Switch扩展,满足了用户对容量、性能、成本和尺寸等多方面产品需求。

可以理解,上述实施例中描述的节点映射关系、元件拓扑结构和功能模块的数量仅为举例。本领域技术人员还可以根据使用需要,对以上多个实施例的结构特征进行容易想到的组合和调整,或调整上述方法流程的个别步骤的参数或顺序,而不应将本发明的构思限制于上述示例的具体结构和步骤。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号