支持sr-iov的存储资源访问方法、存储控制器及存储设备的制作方法

文档序号:6632916阅读:319来源:国知局
支持sr-iov的存储资源访问方法、存储控制器及存储设备的制作方法
【专利摘要】本发明实施例公开了一种支持SR-IOV的存储资源访问方法,包括:将存储介质整合为统一存储资源,并将统一存储资源划分为多个存储子资源;根据预设分配原则将存储子资源分配给PF和VF中的至少一个,并维护一个资源分配表,其中,资源分配表包括存储子资源与PF以及VF中的至少一个的映射关系;接收虚拟机发送给目的VF或者虚拟机监控器发送给目的PF的主机命令;根据目的VF或目的PF查找资源分配表,根据资源分配表中的存储子资源与PF或者VF的映射关系对目的PF或者目的VF对应的存储子资源进行与主机命令对应的操作。
【专利说明】支持SR-IOV的存储资源访问方法、存储控制器及存储设备

【技术领域】
[0001] 本发明涉及通信【技术领域】,尤其涉及一种支持单根输入/输出虚拟化SR-IOV的存 储资源访问方法、存储控制器及存储设备。

【背景技术】
[0002] 单根输入 / 输出(Input/Output, I/O)虚拟化(Single Root 1/ 0 Virtualization,SR-I0V)是对快速外设互连总线接口(Peripheral Component Interconnect,PCIe)规范的延伸,它促使各类系统镜像或用户随机存取物理1/0资源上的 子集,从而获得更好的数据移动,达到基础硬件资源的共享。
[0003] PCIe 固态硬盘(Solid State Driver,SSD)具备高带宽、高 IOPS(Input/Output Operations Per Second,每秒输入/输出操作)、低延时的特点,硬件潜力大。
[0004] 然而,现在技术并没有提供让存储设备(如PCIe SSD)支持SR-IOV的实现方法, 从而使得现有存储设备无法支持SR-I0V,无法更好地实现硬件资源共享以提升存储设备中 存储资源的利用率。


【发明内容】

[0005] 本发明实施例提供一种支持SR-IOV的存储资源访问方法、存储控制器及存储设 备,用于解决现有技术存在着的存储设备无法更好地实现硬件资源共享以提升存储设备中 存储资源的利用率的问题。
[0006] 第一方面,本发明实施例提供了一种支持单根输入/输出虚拟化的控制器实现方 法,由存储设备中的存储控制器执行,所述存储设备还包括存储介质,所述存储控制器用于 分别连接主机以及所述存储介质,其中,所述主机运行有虚拟机监控器以及一个或多个虚 拟机,所述存储控制器中包括物理功能PF以及与所述PF关联的一个或多个虚拟功能VF,所 述PF与所述虚拟机监控器进行直接通信,每个所述VF与一个所述虚拟机进行直接通信,所 述方法包括:
[0007] 将所述存储介质整合为统一存储资源,并将所述统一存储资源划分为多个存储子 资源;
[0008] 根据预设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一个,并 维护一个资源分配表,其中,所述资源分配表包括存储子资源与所述PF以及所述VF中的至 少一个的映射关系;
[0009] 接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机命 令;
[0010] 根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的存储 子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的存储子资 源进行与所述主机命令对应的操作。
[0011] 在第一方面的第一种可能的实现方式中,所述主机包括内存,所述内存包括至少 一个队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列;
[0012] 所述接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机 命令包括:
[0013] 当获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内 存存取DMA操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中 获取所述主机命令。
[0014] 结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述存储控 制器还包括多个中断资源,所述多个中断资源被分配给所述主机内存中的队列,使得一个 或多个所述队列对应一个中断资源,所述方法还包括:
[0015] 通过所述DM操作将需要发送给所述主机的控制器命令传输到主机中的内存;
[0016] 通过与所述目的VF或者所述目的PF的目的队列对应的中断资源通知所述主机去 获取控制器命令;
[0017] 其中,所述目的VF或者所述目的PF的目的队列为:所述主机内存中的队列中所述 目的VF或者所述目的PF对应的队列。
[0018] 结合第一方面第二种可能的实现方式,在第三种可能的实现方式中:
[0019] 所述中断资源为MSI-x中断,所述主机内存中每个所述队列对应一个MSI-x中断。
[0020] 结合第一方面,或者第一方面第一至第三种任意一种可能的实现方式,在第四种 可能的实现方式中,所述主机命令中包括用于标识所述存储子资源的存储子资源相对标识 ID,所述资源分配表中的存储子资源用存储子资源绝对ID来标识;
[0021] 所述根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的 存储子资源与所述PF或者所述VF的映射关系对所述目的VF或者所述目的VF对应的存储 子资源进行与所述主机命令对应的操作包括:
[0022] 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所 述目的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对 ID之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源 绝对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
[0023] 结合第一方面,或者第一方面第一至第四种任意一种可能的实现方式,在第五种 可能的实现方式中,所述根据预设分配原则将所述存储子资源分配给所述PF和所述VF中 的至少一个,并维护一个资源分配表包括:
[0024] 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储 子资源与所述PF的映射关系保存至所述资源分配表;或者
[0025] 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少 一个所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者
[0026] 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资 源与各个所述VF的映射关系保存至所述资源分配表。
[0027] 结合第一方面,或者第一方面第一至第五种任意一种可能的实现方式,在第六种 可能的实现方式中,所述PF用于执行全局性的存储控制器功能;
[0028] 其中,所述全局性的存储控制器功能包括:Firmware Download或者Firmware Active命令的实现、Format命令的实现,或者全盘复位的关机功能中的至少一种。
[0029] 第二方面,本发明实施例提供了一种支持单根输入/输出虚拟化的存储控制器, 所述存储控制器用于分别连接主机以及存储介质,其中,所述主机运行有虚拟机监控器以 及一个或多个虚拟机,所述存储控制器中包括物理功能PF以及与所述PF关联的一个或者 多个虚拟功能VF,所述VF与所述虚拟机监控器进行直接通信,每个所述VF与一个所述虚拟 机进行直接通信,包括:
[0030] 整合模块,用于将所述存储介质整合为统一存储资源,并将所述统一存储资源划 分为多个存储子资源;
[0031] 分配模块,用于根据预设分配原则将所述整合模块所划分的所述存储子资源分配 给所述PF和所述VF中的至少一个,并维护一个资源分配表,其中,所述资源分配表包括存 储子资源与所述PF以及所述VF中的至少一个的映射关系;
[0032] 接收模块,用于接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目 的PF的主机命令;
[0033] 操作模块,用于根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分 配表中的存储子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对 应的存储子资源进行与所述接收模块接收到的所述主机命令对应的操作。
[0034] 在第二方面的第一种可能的实现方式中,所述主机包括内存,所述内存包括至少 一个队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列;
[0035] 所述接收模块具体用于:
[0036] 在获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内 存存取DMA操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中 获取所述主机命令。
[0037] 结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述存储控 制器还包括多个中断资源,所述多个中断资源被分配给所述主机内存中的队列,使得一个 或多个所述队列对应一个中断资源;
[0038] 所述存储控制器还包括:
[0039] 传输模块,用于通过所述DM操作将需要发送给所述主机的控制器命令传输到主 机中的内存;
[0040] 通知模块,用于通过与所述目的VF或者所述目的PF的目的队列对应的中断资源 通知所述主机去获取控制器命令;
[0041] 其中,所述目的VF或者所述目的PF的目的队列为:所述主机内存中的队列中所述 目的VF或者所述目的PF对应的队列。
[0042] 结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述中断资 源为MSI-x中断,所述主机内存中每个所述队列对应一个MSI-x中断。
[0043] 结合第二方面,或者第二方面第一至第三种任意一种可能的实现方式,在第四种 可能的实现方式中,所述主机命令中包括用于标识所述存储子资源的存储子资源相对标识 ID,所述资源分配表中的存储子资源用存储子资源绝对ID来标识;
[0044] 所述操作模块具体用于:
[0045] 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所 述目的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对 ID之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源 绝对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
[0046] 结合第二方面,或者第二方面第一至第四种任意一种可能的实现方式,在第五种 可能的实现方式中,所述分配模块具体用于:
[0047] 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储 子资源与所述PF的映射关系保存至所述资源分配表;或者
[0048] 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少 一个所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者
[0049] 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资 源与各个所述VF的映射关系保存至所述资源分配表。
[0050] 结合第二方面,或者第二方面第一至第五种任意一种可能的实现方式,在第六种 可能的实现方式中,所述PF用于执行全局性的存储控制器功能;
[0051] 其中,所述全局性的存储控制器功能包括:Firmware Download或者Firmware Active命令的实现、Format命令的实现,或者全盘复位的关机功能中的至少一种。
[0052] 第三方面,本发明实施例提供了一种存储设备,包括:存储控制器以及存储介质;
[0053] 所述存储控制器与所述存储介质相连,并且用于与外部的主机相连,以使所述主 机通过所述存储控制器读写所述存储介质中的数据,所述主机运行有虚拟机监控器以及一 个或多个虚拟机,所述存储控制器中包括物理功能PF以及与所述PF关联的一个或多个虚 拟功能VF,所述PF与所述虚拟机监控器进行直接通信,每个所述VF与一个所述虚拟机进行 直接通信;
[0054] 所述存储控制器用于:
[0055] 将所述存储介质整合为统一存储资源,并将所述统一存储资源划分为多个存储子 资源;
[0056] 根据预设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一个,并 维护一个资源分配表,其中,所述资源分配表包括存储子资源与所述PF以及所述VF中的至 少一个的映射关系;
[0057] 接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机命 令;
[0058] 根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的存储 子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的存储子资 源进行与所述主机命令对应的操作。
[0059] 在第三方面的第一种可能的实现方式中,所述主机包括内存,所述内存包括至少 一个队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列;
[0060] 所述存储控制器用于所述接收所述虚拟机发送给目的VF或者所述虚拟机监控器 发送给目的PF的主机命令时,具体用于:
[0061] 当获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内 存存取DMA操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中 获取所述主机命令。
[0062] 在第三方面的第一种可能的实现方式中,所述存储控制器还包括多个中断资源, 所述多个中断资源被分配给所述主机内存中的队列,使得一个或多个所述队列对应一个中 断资源,所述存储控制器还用于:
[0063] 通过所述DM操作将需要发送给所述主机的控制器命令传输到主机中的内存;
[0064] 通过与所述目的VF或者所述目的PF的目的队列对应的中断资源通知所述主机去 获取控制器命令;
[0065] 其中,所述目的VF或者所述目的PF的目的队列为:所述主机内存中的队列中所述 目的VF或者所述目的PF对应的队列。
[0066] 结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,
[0067] 所述中断资源为MSI-x中断,所述主机内存中每个所述队列对应一个MSI-x中断。
[0068] 结合第三方面,或者第三方面第一至第三种任意一种可能的实现方式,在第四种 可能的实现方式中,所述主机命令中包括用于标识所述存储子资源的存储子资源相对标识 ID,所述资源分配表中的存储子资源用存储子资源绝对ID来标识;
[0069] 所述存储控制器用于根据所述目的VF或目的PF查找所述资源分配表,根据所述 资源分配表中的存储子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目 的VF对应的存储子资源进行与所述主机命令对应的操作时,具体用于:
[0070] 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所 述目的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对 ID之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源 绝对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
[0071] 结合第三方面,或者第三方面第一至第四种任意一种可能的实现方式,在第五种 可能的实现方式中,所述存储控制器用于根据预设分配原则将所述存储子资源分配给所述 PF和所述VF中的至少一个,并维护一个资源分配表时,具体用于:
[0072] 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储 子资源与所述PF的映射关系保存至所述资源分配表;或者
[0073] 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少 一个所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者
[0074] 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资 源与各个所述VF的映射关系保存至所述资源分配表
[0075] 第四方面,本发明实施例提供了一种存储系统,所述存储系统包括主机以及第三 方面或者第三方面任一种可能的实现方式中的存储设备。
[0076] 在本发明实施例中,本发明实施例通过对存储设备中的存储介质进行整合、分配, 并根据虚拟机或者虚拟机监控器发送的命令对接收命令的VF或者PF对应的存储子资源进 行操作,给出了存储设备如何具体实现对SR-IOV支持的实现方式,从而可以提高存储设备 中存储资源的利用率以及提高存储设备的性能。

【专利附图】

【附图说明】
[0077] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0078] 图1是本发明实施例提供的PCIe SSD的系统结构示意图;
[0079] 图2是本发明实施例提供的支持SR-IOV的存储资源访问方法的一实施例流程示 意图;
[0080] 图3是本发明实施例提供的支持SR-IOV的存储资源访问方法的另一实施例流程 示意图;
[0081] 图4是本发明实施例提供的NAND Flash资源的映射示意图;
[0082] 图5是本发明实施例提供的支持SR-IOV的存储控制器的一实施例结构示意图;
[0083] 图6是本发明实施例提供的支持SR-IOV的存储控制器的另一实施例结构示意 图;
[0084] 图7是本发明实施例提供的存储控制器的又一实施例结构示意图;
[0085] 图8是本发明实施例提供的存储设备结构示意图。

【具体实施方式】
[0086] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0087] 实施例一
[0088] 本发明实施例中所描述的支持单根输入/输出虚拟化的控制器实现方法可由存 储设备中的存储控制器执行。例如,如图1所示,该存储设备可以是固态硬盘SSD,SSD包括 存储控制器(SSD控制器)以及存储介质(也可以称"存储资源"或者"物理存储资源",具 体可以为NAND Flash),存储控制器与存储介质相连,同时,也与主机相连(可通过PCIe等 高速接口与主机相连),以使主机通过存储控制器来读写存储介质中的数据。
[0089] 本发明实施例中的主机可以是服务器,或者PC,或者其他需要连接存储设备的计 算单元。主机中包括虚拟机监控器VMM、一个或者多个虚拟机VM(包括VM0、VM1、VM2……VM n,其中,η为自然数)。上述存储控制器中包括PF,以及与PF关联的一个或者多个VF(如 图中所示的犯0、¥?1、¥?2,*",¥?11等,其中,11为自然数)。在本发明实施例中,主机与存 储控制器之间可以基于NVMe协议进行通信,上述PF与虚拟机监控器进行直接通信,每个VF 与一个虚拟机进行直接通信,例如,PF可与虚拟机监控器VMM进行直接通信,VFl可与VMl 直接通信,VF2可与VM2直接通信等。上述PF与虚拟机监控器之间、以及VF与VM之间的 直接通信技术为本领域技术人员所公知的技术,这里不进行具体描述。
[0090] 参见图2,本发明实施例中所描述的支持SR-IOV的存储资源访问方法包括:
[0091] S101,将存储设备中的存储介质整合为统一存储资源,并将所述统一存储资源划 分为多个存储子资源。
[0092] 可选地,本发明实施例中所描述的存储设备具体可为PCIe SSD (即接口为PCIe接 口的SSD),上述存储设备中包括的存储介质具体可为NAND Flash。具体实现中,为了将PCIe SSD中的存储介质更好地分配给PF和各个VF,存储控制器可将PCIe SSD中的存储介质整 合为统一存储资源,将统一存储资源划分为多个存储子资源,以将上述多个存储子资源分 配给PF和各个VF。
[0093] 具体的,如图1,存储控制器可通过闪存转换层(Flash Translation Layer, FTL) 技术将NAND Flash映射成单一的逻辑空间(即SSD逻辑空间),用绝对逻辑区块地址 (Logical Block Address,LBA)来表不,例如:Abs_Start_LBA ?Abs_End_LAB ;其中,上述 单一的逻辑空间即为将NAND Flash进行整合得到的统一存储资源。将上述NAND Flash映 射为单一的逻辑空间之后,再将单一的逻辑空间划分为不同的区段,即,将上述单一的逻辑 空间划分为多个LBA范围,每个区段(即每个LBA范围)为一个命名空间Namespace (简称 NS),其中,上述各个NS的大小可相同,也可不同,在此不做限制。其中,上述由单一的逻辑 空间划分得到的NS即为有统一存储资源划分得到的存储子资源。存储控制器可记录每个 NS在上述单一的逻辑空间(即全局逻辑空间)的绝对LBA范围,进而可将上述各个NS分配 给PF或者VF使用。
[0094] S102,根据预设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一 个,并维护一个资源分配表,其中,所述资源分配表包括存储子资源与所述PF以及所述VF 中的至少一个的映射关系。
[0095] 在一些可行的是实施方式中,存储控制器通过PF将PCIe SSD中的存储介质整合 成统一存储资源,并将统一存储资源划分为多个存储子资源之后,则可根据预设分配原则 将上述存储子资源分配给PF或者VF,并维护一个资源分配表。具体的,存储控制器可根据 虚拟机监控器发送的分配命令将上述存储子资源分配给PF和VF,其中,上述资源分配表中 包括存储子资源和PF或者VF的映射关系。具体的,上述资源分配表还包括PF的标识信息、 与上述PF关联的每个VF的标识信息。存储控制器可建立PF的标识信息与分配给该PF的 存储介质的映射关系,以通过上述PF的标识信息查询分配给该PF的存储介质。存储控制 器还可建立VF的标识信息与分配给该VF的存储介质的映射关系,以通过上述VF的标识信 息查询分配给该VF的存储介质。其中,存储控制器可根据虚拟机监控器发送的分配命令将 上述存储子资源分配给PF和VF。
[0096] S103,接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主 机命令。
[0097] 本实施例中,"主机命令"即为主机发送的命令,如I/O命令。具体可以由主机中运 行的虚拟机或者虚拟机监控器来发送。
[0098] 可选地,在具体实现中,本实施例所描述的主机包括内存,在运行时,主机的内存 中包括至少一个队列,上述PF或者VF对应一个或者多个不同的队列。虚拟机或者虚拟机 监控器发送主机命令时可使用队列来发送,虚拟机或者虚拟机监控器发送主机命令时具体 使用哪个队列,则往该队列对应的存储空间写该主机命令对应的数据。本实施例中,主机中 的虚拟机或者虚拟机监控器可将主机命令放到主机内存中的目的VF或者目的PF对应的队 列,再通知存储控制器从主机内存的队列中获取主机命令。
[0099] 存储控制器获知主机将主机命令放到主机内存中的队列后,则可发起直接内存存 取(Direct Memory Access, DMA)操作,从主机内存的队列中上述目的VF或者目的PF对应 的队列中获取上述主机命令。
[0100] S104,根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的 存储子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的存储 子资源进行与所述主机命令对应的操作。
[0101] 可选地,具体实现中,上述虚拟机监控器给PF发送命令采用的是直通的方式,存 储控制器通过上述目的PF对应的队列接收到主机命令时可获得上述PF的标识信息。此 夕卜,存储控制器中实现PCIe通信的功能模块采用SR-IOV直通模式,可得知虚拟机发送的1/ 0命令直通到哪个VF (例如VF1),即目的VF,进而可在PCIe报文中控制字段添加上VFl的 标识信息(例如VFl的ID),将上述携带VFl的标识信息的报文发送至存储控制器中的处理 模块。存储控制器中的处理模块可解析上述携带VFl的标识信息的PCIe报文,从上述PCIe 报文中获取VFl的标识信息。
[0102] 具体实现中,存储控制器获取得到PF的标识信息或者VF的标识信息之后,则可根 据上述PF的标识信息或者VF的标识信息查询资源分配表,从上述资源分配表中查找得到 分配给PF或者VF的存储子资源,进而可对PF对应的存储子资源或者VF对应的存储子资 源进行与上述主机命令对应的操作。存储控制器获取得到PF对应的存储子资源(具体可 为NS)之后,则可将上述NS中的数据通过DMA的方式传输到主机物理内存地址中。数据传 输完成之后,存储控制器可生成响应主机命令的控制器命令,通过DM的方式将控制器命 令传输到主机中的内存,并通过上述目的PF或者目的VF的目的队列对应的中断资源发送 中断通知主机去获取控制器命令。
[0103] 可选地,在本发明实施例中,上述PF可以用于执行上述NVMe协议中的全局性 的存储控制器功能。其中,上述全局性的存储控制器功能包括:Firmware Download或者 Firmware Active命令的实现、Format命令的实现,或者全盘复位的关机功能等。在本发 明实施例中,VF用于实现轻量级的SSD控制器功能,包括磁盘IO功能以及少部分SSD控制 功能,对于上述全局性的功能,只能在PF中实现。例如,以主机接口协议NVMe为例,类似 Firmware Download, Firmware Active等命令,因为是全局性的命令,仅在PF实现,VF不 支持,虚拟机如果下发Firmware Download或者Firmware Active, VF将返回失败。对于 Format 命令,PF 和 VF 均可支持 Namespace 的 secure erase,对应 Chang LBA Format 则只 有PF支持。对于关机策略,VF接收到关机指令之后,仅对自身相关资源进行复位,包括10 队列等;PF接收到关机指令之后,除了复位自身资源之外,还得通知全盘进行复位,包括后 端NAND Flash管理表项的保存等。
[0104] 在本发明实施例中,存储控制器中的PF还可用于实现单根1/0虚拟化的使能,存 储设备中的存储介质的查询、分配以及资源分配表的维护等功能。具体的,主机中的虚拟机 监控器可加载PF驱动,使能SR-IOV功能,创建管理队列,并通过PF驱动管理队列下发资源 查询命令给PF,PF接收到上述查询命令之后,则可将存储设备中包括的存储介质、中断资 源以及队列资源的状态返回给虚拟机监控器。虚拟机监控器接收到PF返回的存储介质中 断资源以及队列资源的状态之后,则可向PF发送分配命令,PF可对分配命令进行解析,根 据上述分配命令将统一存储资源划分为多个存储子资源,进而将存储子资源、队列资源和 中断资源分配给PF或者VF。
[0105] 在本发明实施例中,存储控制器可将存储设备中的存储介质整合为统一存储资 源,将上述统一存储资源划分为多个存储子资源,进而根据主机发送的分配命令将多个存 储子资源分配给PF或者VF,将存储子资源与PF或者VF的映射关系保存至资源分配表。当 存储控制器接收到虚拟机或者虚拟机监控器发送的命令时,则可根据接收命令的PF或者 VF的标识查询资源分配表,根据子资源与PF或者VF的映射关系对存储子资源进行操作。 本发明实施例所描述的方法,可支持单根输入/输出虚拟化技术,提高存储设备的I/O性能 和存储设备中存储资源的利用率。
[0106] 实施例二
[0107] 参见图3,基于上述实施例,本发明实施例提供了一种支持SR-IOV的存储资源访 问方法,包括:
[0108] S201,将存储设备中的存储介质整合为统一存储资源,并将所述统一存储资源划 分为多个存储子资源。
[0109] 可选地,本发明实施例中所描述的支持单根输入/输出虚拟化的控制器实现方法 可由存储控制器执行,其中,如图1,上述存储控制器与主机、存储介质的结构关系可参见本 发明实施例提供的支持单根输入/输出虚拟化的控制器实现方法的第一实施例前面的描 述内容,在此不再赘述。
[0110] 具体实现中,本发明实施例中所描述的将存储设备中的存储介质整合为统一存储 资源,并将统一存储资源划分为多个存储子资源的具体实现过程可参见上述本发明实施例 一中的步骤S101,在此不再赘述。
[0111] 进一步的,如图4,图4是本发明实施例中描述的NAND Flash资源的映射示意图。 存储控制器通过FTL技术功能将NAND Flash映射成单一的逻辑空间(SSD逻辑空间),记为 Abs_NS,并以绝对LBA的起点和终点来表示单一的逻辑空间的范围(即统一存储资源),例 如:Abs_Start_LBA?Abs_End_LAB。存储控制器可根据预设划分规则将上述单一的逻辑空 间划分为N个(N为自然数)大小不同的LBA范围(或者大小相同的LBA范围,下面将以大 小不同的LBA范围为例进行具体说明)(即区段NS,可记为Abs_NSl、Abs_NS2、Abs_NS3,…, Abs_NSn等)。具体的,可先将单一的逻辑空间划分为N个NS,并记录每个NS在上述单一的 逻辑空间中的位置(即绝对逻辑空间地址),包括起始位置和终止位置,如下表1 :
[0112] 表 1
[0113]

【权利要求】
1. 一种支持SR-IOV的存储资源访问方法,由存储设备中的存储控制器执行,所述存储 设备还包括存储介质,所述存储控制器用于分别连接主机W及所述存储介质,其中,所述主 机运行有虚拟机监控器W及一个或多个虚拟机,所述存储控制器中包括物理功能PF W及 与所述PF关联的一个或多个虚拟功能VF,所述PF与所述虚拟机监控器进行直接通信,每个 所述VF与一个所述虚拟机进行直接通信,其特征在于,所述方法包括: 将所述存储介质整合为统一存储资源,并将所述统一存储资源划分为多个存储子资 源; 根据预设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一个,并维护 一个资源分配表,其中,所述资源分配表包括存储子资源与所述PF W及所述VF中的至少一 个的映射关系; 接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机命令; 根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的存储子资 源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的存储子资源进 行与所述主机命令对应的操作。
2. 如权利要求1所述的方法,其特征在于,所述主机包括内存,所述内存包括至少一个 队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列; 所述接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机命令 包括: 当获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内存存 取DM操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中获取 所述主机命令。
3. 如权利要求2所述的方法,其特征在于,所述存储控制器还包括多个中断资源,所述 多个中断资源被分配给所述主机内存中的队列,使得一个或多个所述队列对应一个中断资 源,所述方法还包括: 通过所述DMA操作将需要发送给所述主机的控制器命令传输到主机中的内存; 通过与所述目的VF或者所述目的PF的目的队列对应的中断资源通知所述主机去获取 控制器命令; 其中,所述目的VF或者所述目的PF的目的队列为;所述主机内存中的队列中所述目的 VF或者所述目的PF对应的队列。
4. 如权利要求3所述的方法,其特征在于: 所述中断资源为MSI-X中断,所述主机内存中每个所述队列对应一个MSI-X中断。
5. 如权利要求1-4任一所述的方法,其特征在于;所述主机命令中包括用于标识所述 存储子资源的存储子资源相对标识ID,所述资源分配表中的存储子资源用存储子资源绝对 ID来标识; 所述根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的存储 子资源与所述PF或者所述VF的映射关系对所述目的VF或者所述目的VF对应的存储子资 源进行与所述主机命令对应的操作包括: 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所述目 的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对ID 之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源绝 对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
6. 如权利要求1-5任一所述的方法,其特征在于,所述根据预设分配原则将所述存储 子资源分配给所述PF和所述VF中的至少一个,并维护一个资源分配表包括: 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储子资 源与所述PF的映射关系保存至所述资源分配表;或者 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少一个 所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资源与 各个所述VF的映射关系保存至所述资源分配表。
7. 如权利要求1-6任一所述的方法,其特征在于:所述PF用于执行全局性的存储控制 器功能; 其中,所述全局性的存储控制器功能包括;Firmware Download或者Firmware Active 命令的实现、Format命令的实现,或者全盘复位的关机功能中的至少一种。
8. -种支持SR-I0V的存储控制器,所述存储控制器用于分别连接主机W及存储介质, 其中,所述主机运行有虚拟机监控器W及一个或多个虚拟机,所述存储控制器中包括物理 功能PF W及与所述PF关联的一个或者多个虚拟功能VF,所述VF与所述虚拟机监控器进行 直接通信,每个所述VF与一个所述虚拟机进行直接通信,其特征在于,包括: 整合模块,用于将所述存储介质整合为统一存储资源,并将所述统一存储资源划分为 多个存储子资源; 分配模块,用于根据预设分配原则将所述整合模块所划分的所述存储子资源分配给所 述PF和所述VF中的至少一个,并维护一个资源分配表,其中,所述资源分配表包括存储子 资源与所述PF W及所述VF中的至少一个的映射关系; 接收模块,用于接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF 的主机命令; 操作模块,用于根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表 中的存储子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的 存储子资源进行与所述接收模块接收到的所述主机命令对应的操作。
9. 如权利要求8所述的存储控制器,其特征在于,所述主机包括内存,所述内存包括至 少一个队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列; 所述接收模块具体用于: 在获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内存存 取DM操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中获取 所述主机命令。
10. 如权利要求9所述的方法,其特征在于,所述存储控制器还包括多个中断资源,所 述多个中断资源被分配给所述主机内存中的队列,使得一个或多个所述队列对应一个中断 资源; 所述存储控制器还包括: 传输模块,用于通过所述DMA操作将需要发送给所述主机的控制器命令传输到主机中 的内存; 通知模块,用于通过与所述目的VF或者所述目的PF的目的队列对应的中断资源通知 所述主机去获取控制器命令; 其中,所述目的VF或者所述目的PF的目的队列为;所述主机内存中的队列中所述目的 VF或者所述目的PF对应的队列。
11. 如权利要求10所述的存储控制器,其特征在于,所述中断资源为MSI-X中断,所述 主机内存中每个所述队列对应一个MSI-X中断。
12. 如权利要求8-11任一所述的存储控制器,其特征在于,所述主机命令中包括用于 标识所述存储子资源的存储子资源相对标识ID,所述资源分配表中的存储子资源用存储子 资源绝对ID来标识; 所述操作模块具体用于: 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所述目 的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对ID 之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源绝 对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
13. 如权利要求8-12任一所述的存储控制器,其特征在于,所述分配模块具体用于: 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储子资 源与所述PF的映射关系保存至所述资源分配表;或者 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少一个 所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资源与 各个所述VF的映射关系保存至所述资源分配表。
14. 如权利要求8-13任一所述的存储控制器,其特征在于,所述PF用于执行全局性的 存储控制器功能; 其中,所述全局性的存储控制器功能包括;Firmware Download或者Firmware Active 命令的实现、Format命令的实现,或者全盘复位的关机功能中的至少一种。
15. -种存储设备,其特征在于,包括:存储控制器W及存储介质; 所述存储控制器与所述存储介质相连,并且用于与外部的主机相连,W使所述主机通 过所述存储控制器读写所述存储介质中的数据,所述主机运行有虚拟机监控器W及一个或 多个虚拟机,所述存储控制器中包括物理功能PF W及与所述PF关联的一个或多个虚拟功 能VF,所述PF与所述虚拟机监控器进行直接通信,每个所述VF与一个所述虚拟机进行直接 通信; 所述存储控制器用于: 将所述存储介质整合为统一存储资源,并将所述统一存储资源划分为多个存储子资 源; 根据预设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一个,并维护 一个资源分配表,其中,所述资源分配表包括存储子资源与所述PF W及所述VF中的至少一 个的映射关系; 接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送给目的PF的主机命令; 根据所述目的VF或目的PF查找所述资源分配表,根据所述资源分配表中的存储子资 源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF对应的存储子资源进 行与所述主机命令对应的操作。
16. 如权利要求15所述的存储设备,其特征在于,所述主机包括内存,所述内存包括至 少一个队列,所述PF或者所述VF中的至少一个分别对应一个或多个不同的所述队列; 所述存储控制器用于所述接收所述虚拟机发送给目的VF或者所述虚拟机监控器发送 给目的PF的主机命令时,具体用于: 当获知所述主机将所述主机命令放到所述主机内存中的所述队列后,发起直接内存存 取DM操作,从所述主机内存中的队列中所述目的VF或者所述目的PF对应的队列中获取 所述主机命令。
17. 如权利要求16的存储设备,其特征在于,所述存储控制器还包括多个中断资源,所 述多个中断资源被分配给所述主机内存中的队列,使得一个或多个所述队列对应一个中断 资源,所述存储控制器还用于: 通过所述DMA操作将需要发送给所述主机的控制器命令传输到主机中的内存; 通过与所述目的VF或者所述目的PF的目的队列对应的中断资源通知所述主机去获取 控制器命令; 其中,所述目的VF或者所述目的PF的目的队列为;所述主机内存中的队列中所述目的 VF或者所述目的PF对应的队列。
18. 如权利要求17所存储设备,其特征在于,所述中断资源为MSI-X中断,所述主机内 存中每个所述队列对应一个MSI-X中断。
19. 如权利要求15-18任一所述的存储设备,其特征在于,所述主机命令中包括用于标 识所述存储子资源的存储子资源相对标识ID,所述资源分配表中的存储子资源用存储子资 源绝对ID来标识; 所述存储控制器用于根据所述目的VF或目的PF查找所述资源分配表,根据所述资源 分配表中的存储子资源与所述PF或者所述VF的映射关系对所述目的PF或者所述目的VF 对应的存储子资源进行与所述主机命令对应的操作时,具体用于: 根据所述资源分配表中的存储子资源与所述PF或者所述VF的映射关系找到与所述目 的VF或所述目的PF对应的存储子资源,并根据存储子资源相对ID与存储子资源绝对ID 之间的对应关系找到与携带在所述主机命令中的存储子资源相对ID对应的存储子资源绝 对ID,对与找到的存储子资源绝对ID对应的存储子资源进行操作。
20. 如权利要求15-19任一所述的存储设备,其特征在于,所述存储控制器用于根据预 设分配原则将所述存储子资源分配给所述PF和所述VF中的至少一个,并维护一个资源分 配表时,具体用于: 根据预设分配原则将至少一个所述存储子资源分配给一个所述PF,并将所述存储子资 源与所述PF的映射关系保存至所述资源分配表;或者 根据预设分配原则将至少一个所述存储子资源分配给一个所述VF,并将所述至少一个 所述存储子资源与所述VF的映射关系保存至所述资源分配表;或者 根据预设分配原则将一个所述存储子资源分配给多个所述VF,并将所述存储子资源与 各个所述VF的映射关系保存至所述资源分配表。
【文档编号】G06F12/02GK104461958SQ201410607052
【公开日】2015年3月25日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】胡海燕, 沈绍锋, 唐苗 申请人:杭州华为数字技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1