实现存储设备的虚拟化的方法、存储设备、数据处理系统

文档序号:36229759发布日期:2023-11-30 19:37阅读:47来源:国知局
实现存储设备的虚拟化的方法

本公开涉及存储领域,特别涉及存储设备虚拟化技术。


背景技术:

1、nvme(non-volatile memory express,非易失内存高速协议)主要是面向pcie(peripheral component interconnect express,外部组件互联总线)接口的ssd(solidstatedrive,固态硬盘)制定的标准接口协议,能够充分发挥高速存储介质性能,解除了旧标准施放在ssd上的各种限制。它具有低延迟、低能耗、高性能,并有良好的扩展性等优点,已逐渐在云计算数据中心中成为主流。

2、nvme存储设备虚拟化是云计算中一项必不可少的关键技术之一,它能够将存储资源有效共享。目前的nvme存储设备虚拟化技术主要存在硬件加速和软件模拟两大类。

3、典型的硬件加速方案有通过vfio、sr-iov技术实现硬件直通(passthrough),或使用fpga(field programmable gate arrays,现场可编程逻辑门阵列)或asic(applicationspecific integrated circuit,特定用途集成电路)等额外硬件虚拟化nvme ssd等。

4、典型的软件模拟的虚拟化方案有linux cgroups等。linux cgroups的全称是linux control groups,它是linux内核的特性,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、内存、i/o等)。cgroups为进程提供资源控制,它主要的功能包括:限制进程使用的资源上限,比如最大内存、文件系统缓存使用限制;进行优先级控制,可以给不同的组赋予不同的优先级,比如cpu使用和磁盘io吞吐;计算组的资源使用情况,可以用来计费;挂起一组进程,或者重启一组进程等。目前cgroups已经成为很多技术的基础。cgroups是在操作系统层面的资源隔离技术,但无法做到nvme设备内部的资源(如i/o队列等)隔离。

5、nvme存储设备在服务使用过程中,也面临另外一个常见需求和挑战:qos(qualityof service,服务质量),即可以根据上层服务特点或需求,有区别地提供不同优先级或者不同水平(如99.99%延时等)的i/o读写服务。常见的qos服务可以采用操作系统的cgroup机制来实现,但该机制并不能有效保障qos,且需要消耗较多的操作系统资源。

6、为此,需要一种改进的存储设备虚拟化方案。


技术实现思路

1、本公开要解决的一个技术问题是提供一种改进的存储设备虚拟化方案,其能够提升资源隔离的安全性能。

2、根据本公开的第一个方面,提供了一种实现存储设备的虚拟化的方法,包括:主机将存储设备虚拟化为多个虚拟存储设备,并且至少为每个虚拟存储设备分配用于访问存储设备的至少一种主机内存资源中的互不重叠的一部分;存储设备的控制器获得分配给各个虚拟存储设备的主机内存资源部分,并且还获得给各个虚拟存储设备分配的存储设备中的互不重叠的存储地址范围;以及存储设备的控制器在处理来自主机的命令之前,根据所述主机内存资源部分与存储地址范围的信息,检查所述命令的合法性。

3、可选地,存储设备的控制器还获得给各个虚拟存储设备分配的存储设备中的互不重叠的存储地址范围的步骤包括:存储设备的控制器从主机获得主机为各个虚拟存储设备分配的存储设备中的互不重叠的存储地址范围;或者存储设备的控制器为各个虚拟存储设备分配存储设备中的互不重叠的存储地址范围。

4、可选地,存储设备的控制器检查所述命令的合法性的步骤包括:存储设备的控制器检查所述命令使用的主机内存资源与所述命令指定的存储地址是否属于分配给同一个虚拟存储设备的主机内存资源部分与存储地址范围。

5、可选地,该方法还包括:主机在发送所述命令之前,根据分配给各个虚拟存储设备的主机内存资源部分、和/或存储地址范围的信息,检查所述命令的合法性。

6、可选地,该方法还包括:主机为分配给各个虚拟存储设备的主机内存资源部分、和/或存储地址范围设置优先级;以及存储设备的控制器根据优先级来获取和/或处理来自主机的命令。

7、可选地,所述存储设备为ssd。可选地,所述存储设备采用nvme协议。可选地,所述主机内存资源包括用于存放主机发送给存储设备的命令的队列、和/或用于存放读取数据的内存区域。可选地,所述存储地址包括逻辑块地址。可选地,所述存储地址范围包括一个或更多个命名空间。可选地,所述主机内存资源部分与存储地址范围的信息包括分配给相同虚拟存储设备的主机内存资源部分与存储地址范围绑定形成的资源域的信息。

8、可选地,主机上安装的应用程序能够在使用虚拟存储设备时直通使用分配给虚拟存储设备的主机内存资源部分。

9、根据本公开的第二个方面,提供了一种实现存储设备的虚拟化的方法,在存储设备上执行,所述存储设备包括控制器,所述方法包括:所述控制器获得分配给各个虚拟存储设备的主机内存资源部分,并且还获得给各个虚拟存储设备分配的存储设备中的互不重叠的存储地址范围;以及所述控制器在处理来自主机的命令之前,根据所述主机内存资源部分与存储地址范围的信息,检查所述命令的合法性。

10、根据本公开的第三个方面,提供了一种实现存储设备的虚拟化的方法,在主机上执行,所述方法包括:主机将存储设备虚拟化为多个虚拟存储设备,并且至少为每个虚拟存储设备分配用于访问存储设备的至少一种主机内存资源中的互不重叠的一部分;以及主机至少将分配给各个虚拟存储设备的主机内存资源部分的信息传送给存储设备的控制器以供其对来自主机的命令进行合法性检查。

11、根据本公开的第四个方面,提供了一种存储设备,包括:存储介质模块;以及控制器,被配置为:获得分配给各个虚拟存储设备的主机内存资源部分,并且还获得给各个虚拟存储设备分配的存储设备中的互不重叠的存储地址范围;以及在处理来自主机的命令之前,根据所述主机内存资源部分与存储地址范围的信息,检查所述命令的合法性。

12、可选地,所述控制器包括:信息管理编程接口,能被主机调用来配置主机内存资源部分的信息和/或存储地址范围的信息;以及服务模块,用于检查所述命令的合法性。

13、根据本公开的第五个方面,提供了一种数据处理系统,包括:如上述第四方面所述的存储设备;以及主机,被配置为:将存储设备虚拟化为多个虚拟存储设备,并且至少为每个虚拟存储设备分配用于访问存储设备的至少一种主机内存资源中的互不重叠的一部分;以及至少将分配给各个虚拟存储设备的主机内存资源部分的信息传送给存储设备的控制器以供其对来自主机的命令进行合法性检查。

14、根据本公开的第六个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面至第三方面中任意方面所述的方法。

15、根据本公开的第七个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第一方面至第三方面中任意方面所述的方法。

16、根据本公开的第八个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面至第三方面中任意方面所述的方法。

17、由此,根据本公开的方案,能够简单且通用地实现存储设备的虚拟化,并且提升了各虚拟设备之间的安全隔离性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1