CN114691037A - 卸载卡命名空间管理、输入输出请求处理系统和方法 - Google Patents
卸载卡命名空间管理、输入输出请求处理系统和方法 Download PDFInfo
- Publication number
- CN114691037A CN114691037A CN202210273112.9A CN202210273112A CN114691037A CN 114691037 A CN114691037 A CN 114691037A CN 202210273112 A CN202210273112 A CN 202210273112A CN 114691037 A CN114691037 A CN 114691037A
- Authority
- CN
- China
- Prior art keywords
- nvme
- hardware
- card
- namespace
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Abstract
本公开实施例公开了卸载卡命名空间管理、输入输出请求处理系统和方法。卸载卡命名空间管理系统包括主机和与主机连接的卸载卡,其中,所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
Description
技术领域
本公开涉及计算机技术领域,具体涉及卸载卡命名空间管理、输入输出请求处理系统和方法。
背景技术
NVMe(Non-Volatile Memory express,非易失性内存主机控制器接口规范)存储器是服务器技术领域常见的固态存储器,例如,NVMe SSD(Solid State Drive,固态硬盘)。随着产品应用情景的复杂性,直连NVMe设备需要占用中央处理器(CPU)大量计算空间,从而影响到CPU的性能。
当前已经采用命名空间(namespace)技术来对NVME存储器进行空间划分/管理,主要用于为不同的应用划分磁盘逻辑空间和建立安全隔离机制。不同的命名空间采用软件技术隔离,共用一部分硬件资源,例如,硬件队列。
相关技术中已知的命名空间技术的优势:通过软件实现,提供灵活的空间管理能力,满足软件定义存储诉求。
相关技术中已知的命名空间技术的劣势:在命名空间上不同应用会共用NVMe设备的例如硬件队列的硬件资源,会产生性能干扰问题,而且故障隔离能力比较差。
发明内容
为了解决相关技术中的问题,本公开实施例提供卸载卡命名空间管理、输入输出请求处理系统和方法。
第一方面,本公开实施例中提供了一种卸载卡命名空间管理系统,包括主机和与主机连接的卸载卡,其中,
所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,
所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,
所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
结合第一方面,本公开在第一方面的第一种实现方式中,所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括:
驱动器,其用于管理所述多个硬件队列,所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述卸载卡包括控制器和硬件加速器,其中,
所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
结合第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,
其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,
其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,
其中,所述主机通过所述卸载卡连接到NVMe设备,
其中,所述NVMe设备挂载到所述虚拟机内部,
其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,
其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,
其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
第二方面,本公开实施例中提供了一种卸载卡命名空间管理方法,所述方法运行于卸载卡命名空间管理系统,所述卸载卡命名空间管理系统包括主机和与主机连接的卸载卡,其中,所述方法包括:
基于所述主机上运行的发出输入输出请求的多个应用,所述主机向所述卸载卡发送创建命名空间请求;
所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间;
所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
结合第二方面,本公开在第二方面的第一种实现方式中,所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:
所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述卸载卡包括控制器和硬件加速器,其中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,包括:
所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,
其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:
所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
结合第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,
其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,
其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
结合第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,
其中,所述主机通过所述卸载卡连接到NVMe设备,
其中,所述方法还包括:
将所述NVMe设备挂载到所述虚拟机内部;
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
第三方面,本公开实施例中提供了一种输入输出请求处理系统,其包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,
其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,
其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
第四方面,本公开实施例中提供了一种输入输出请求处理方法,所述方法运行于输入输出请求处理系统,所述输入输出请求处理系统包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述方法包括:
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡;
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
根据本公开实施例提供的技术方案,通过卸载卡命名空间管理系统,包括主机和与主机连接的卸载卡,其中,所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,相较于所有应用进程共用统一由一个命名空间管理的多个硬件队列的方案,本公开实施例的方案在单一硬件队列出现故障的情况下不影响其他硬件队列的应用,在性能隔离能力以及故障隔离能力方面有很大提升。
根据本公开实施例提供的技术方案,通过所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括:驱动器,其用于管理所述多个硬件队列,所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述卸载卡包括控制器和硬件加速器,其中,所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机通过所述卸载卡连接到NVMe设备,其中,所述NVMe设备挂载到所述虚拟机内部,其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
根据本公开实施例提供的技术方案,通过卸载卡命名空间管理方法,所述方法运行于卸载卡命名空间管理系统,所述卸载卡命名空间管理系统包括主机和与主机连接的卸载卡,其中,所述方法包括:基于所述主机上运行的发出输入输出请求的多个应用,所述主机向所述卸载卡发送创建命名空间请求;所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间;所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,相较于所有应用进程共用统一由一个命名空间管理的多个硬件队列的方案,本公开实施例的方案在单一硬件队列出现故障的情况下不影响其他硬件队列的应用,在性能隔离能力以及故障隔离能力方面有很大提升。
根据本公开实施例提供的技术方案,通过所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述卸载卡包括控制器和硬件加速器,其中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,包括:所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
根据本公开实施例提供的技术方案,通过所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机通过所述卸载卡连接到NVMe设备,其中,所述方法还包括:将所述NVMe设备挂载到所述虚拟机内部;所述用户空间中运行的应用向所述通用块层发出输入输出请求;通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
根据本公开实施例提供的技术方案,通过利用前述卸载卡命名空间管理方案进行输入输出请求处理,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,避免不同应用输入输出请求相互干扰问题,并提升了故障隔离能力大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据相关技术的卸载卡命名空间管理系统的实施场景的示例性示意图;
图2示出根据本公开实施例的卸载卡命名空间管理系统的实施场景的示例性示意图;
图3示出根据本公开实施例的卸载卡命名空间管理系统的结构框图;
图4示出根据本公开实施例的卸载卡命名空间管理方法的流程图;
图5示出根据本公开实施例的输入输出请求处理系统的结构框图;
图6示出根据本公开实施例的输入输出请求处理方法的流程图;
图7示出根据本公开一实施方式的电子设备的结构框图;
图8是适于用来实现根据本公开各实施方式的方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
在本公开中,对用户信息或用户数据的获取均为经用户授权、确认,或由用户主动选择的操作。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
以下对本公开实施例可能涉及术语进行简要描述。
DMA(Direct Memory Access):直接内存访问,是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬件子系统(电脑外设)可以独立地直接读写系统内存,而不需中央处理器(CPU)介入处理。在同等程度的处理器负担下,DMA是一种快速的数据传送方式。很多硬件的系统会使用DMA,包含硬盘控制器、绘图显卡、网卡和声卡等。
卸载卡(offloading card):它通过硬件实现本来由软件实现的功能,这样就可以将本来在操作系统上进行的一些数据处理放到硬件上去做,降低系统CPU消耗的同时,提高处理性能。
PCIe(Peripheral Component Interconnect express):是一种高速串行计算机扩展总线标准,它沿用现有的PCI编程概念及信号标准,并且构建了更加高速的串行通信系统标准。
FPGA(Field-Programmable Gate Array):现场可编程逻辑门阵列,它以PAL、GAL、CPLD等可编程逻辑器件为技术基础发展而成。作为专用集成电路中的一种半客制电路,它既弥补专用集成电路电路不足,又克服原有可编程逻辑器件门电路数有限的缺点。
ASIC(Application Specific Integrated Circuit):是指依产品需求不同而全定制的特殊规格集成电路,是一种有别于标准工业IC的集成电路产品。
ioctl(input/output control):输入/输出控制,是一个专用于设备输入输出操作的系统调用的函数,其传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。
如上所述,当前已经采用命名空间(namespace)技术来对NVME存储器进行空间划分/管理,主要用于为不同的应用划分磁盘逻辑空间和建立安全隔离机制。不同的命名空间采用软件技术隔离,共用一部分硬件资源,例如,硬件队列,会产生性能干扰问题,而且,故障隔离能力比较差。命名空间技术除了提供空间划分功能之外,每个命名空间可以具备独立的格式化、加密能力,也就相当于独立的配置功能。
以下参照图1描述相关技术中的卸载卡命名空间管理系统。图1示出根据相关技术的卸载卡命名空间管理系统的实施场景的示例性示意图。
如图1所示,相关技术的卸载卡命名空间管理系统可以采用硬件卸载(offloading)架构,该系统可以包括主机1100和卸载卡1200。主机1100可以通过卸载卡1200访问NVMe设备1300。卸载卡1200和NVMe设备1300一起可以被用作存储系统。卸载卡1200和NVMe设备1300之间可以通过PCIe接口连接。具体的PCIe接口规范可以从相关技术中获取,本公开对此不做赘述。
如图1所示,主机1100上运行有虚拟机1110,虚拟机1110可以包括用户空间(userspace)1111和内核空间(kernel space)1115。在本公开的一个实施例中,虚拟机1110可以是Linux虚拟机。在本公开的一个实施例中,用户空间1111中运行有应用1112(或者应用的线程),并且应用1112通过中央处理器(CPU)核心1113下发数据。虚拟机1110的内核空间1115中具有通用块层(Linux内核中的Blk-mq)1116。通用块层1116为上层应用1112提供软件队列,每个CPU核心1113对应一个软件队列11161。虚拟机1110的内核空间1115中还具有驱动器(例如,NVMe驱动器)1117,用于维护和管理硬件队列11171,并且可以将输入输出(IO,Input Output)请求通过例如设置硬件寄存器的方式下发到具体的物理硬件(例如,卸载卡)上处理。通用块层1116可以维护从软件队列11161到硬件队列11171的映射关系。软件队列11161可以用于转发CPU核心1113下发的数据。硬件队列11171用于转发需要下发到NVMe设备的数据。
在相关技术的卸载卡命名空间管理系统中,因为通用块层1116需要通过NVMe驱动器1117与硬件交互,因此需要硬件也支持多队列。最理想的情况是,硬件支持的队列足够多,通用块层1116的每个软件队列11161都有硬件队列11171和其关联。但是,相关技术中硬件支持的硬件队列有限,就形成如图1所示的关联关系。图1中有4个硬件队列11171,但是通用块层1116总共形成了8个软件队列11161。因此,通用块层1116将2个软件队列11161和1个硬件队列11171关联起来,即,建立从2软件队列11161到1个硬件队列11171的映射关系。
在相关技术的卸载卡命名空间管理系统中,卸载卡1200包括NVMe控制器1210和加速器1220。卸载卡1200可以通过软硬件技术模拟标准NVMe控制器1210,负责处理虚拟机1110中的内核空间1115中的NVMe驱动器1117的配置请求,完成NVMe设备1300的初始化、挂载/卸载等管理任务。加速器1220例如是基于FPGA硬件或ASIC硬件的加速器,负责将虚拟机1110中的IO请求以DMA方式搬运到卸载卡1200并通过例如网卡、PCI之类的连接方式发送到NVMe设备1300。例如,在卸载卡1200中,NVMe控制器1210包含的4硬件队列11171是在加速器1220中对应于硬件部分1221预先分配的,由一个命名空间1211管理。
在相关技术的卸载卡命名空间管理系统中,NVMe控制器1210通过一个命名空间管理设备1300的磁盘空间以及块设备相关的属性,例如,扇区大小、容量等等。在卸载卡1200中,一个NVMe控制器1210可以包含4个硬件队列,统一由一个命名空间1211管理。相关技术的NVMe控制器1210实际上可能做到包含更多的硬件队列,但是核心的问题在于即使硬件队列数量可以匹配应用的数量,也无法通过划分命名空间做到为每个应用分配独立的硬件队列。所有应用进程共用NVMe控制器1210的硬件队列,NVMe控制器1210的命名空间1211上不同应用会共用NVMe设备1300的硬件资源,因此存在一定的性能资源争抢问题以及故障隔离能力较弱的问题。
在利用相关技术的卸载卡命名空间管理系统处理IO请求的情况中,虚拟机1110中的应用1112可以通过系统调用接口向内核空间1115中的通用块层1116下发IO请求。内核空间1115中的通用块层1116接收IO请求,并将其封装成bio请求(通用块层的请求)。NVMe驱动器1117负责将bio请求转成符合NVMe协议的IO请求,并可通过设备硬件寄存器下发符合NVMe协议的IO请求。NVMe驱动器1117可以通过设置硬件寄存器,通知卸载卡1200上的NVMe控制器1210处理符合NVMe协议的IO请求。加速器1220将虚拟机1110的IO请求通过DMA方式搬运到卸载卡1200并通过例如网卡、PCI之类接口发送到NVMe设备1300。
在利用相关技术的卸载卡命名空间管理系统处理IO请求的过程中,NVMe设备1300的硬件队列统一由一个命名空间管理,不同的应用共用硬件队列资源,存在性能干扰问题,而且故障隔离能力比较差。例如,应用A为低延时IO模型,应用B为高吞吐IO模型,如果共用一个硬件队列,会造成应用A的IO请求被应用B拖慢的问题。在一定情况下,单一硬件队列故障会导致上面所有的应用IO挂起,影响范围大,故障隔离能力差。
为了解决上述问题,本公开提出了卸载卡命名空间管理、输入输出请求处理系统和方法。
根据本公开实施例提供的技术方案,通过卸载卡命名空间管理系统,包括主机和与主机连接的卸载卡,其中,所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,相较于不能为每个应用分配独立的硬件队列的相关技术的方案,本公开实施例的方案在单一硬件队列出现故障的情况下不影响其他硬件队列的应用,在性能隔离能力以及故障隔离能力方面有很大提升。
以下参照图2描述根据本公开实施例的卸载卡命名空间管理系统的实施场景。图2示出根据本公开实施例的卸载卡命名空间管理系统的实施场景的示例性示意图。
如图2所示,根据本公开实施例的卸载卡命名空间管理系统与相关技术中的卸载卡命名空间管理系统类似,可以采用硬件卸载(offloading)架构,该系统可以包括主机2100和卸载卡2200。主机2100可以通过卸载卡2200访问NVMe设备2300。卸载卡2200和NVMe设备2300一起可以被用作存储系统。卸载卡2200和NVMe设备2300之间可以通过PCIe接口连接。具体的PCIe接口规范可以从相关技术中获取,本公开对此不做赘述。
如图2所示,主机2100上运行有虚拟机2110,虚拟机2110可以包括用户空间(userspace)2111和内核空间(kernel space)2115。在本公开的一个实施例中,虚拟机2110可以是Linux虚拟机。在本公开的一个实施例中,用户空间2111中运行有应用2112(或者应用的线程),并且应用2112通过中央处理器(CPU)核心2113下发数据。虚拟机2110的内核空间2115中具有通用块层(Linux内核中的Blk-mq)2116。通用块层2116为上层应用2112提供软件队列,每个CPU核心2113对应一个软件队列21161。虚拟机2110的内核空间2115中还具有驱动器(例如,NVMe驱动器)2117,用于维护和管理硬件队列21171,并且可以将输入输出(IO,Input Output)请求通过例如设置硬件寄存器的方式下发到具体的物理硬件(例如,卸载卡)上处理。通用块层2116可以维护从软件队列21161到硬件队列21171的映射关系。软件队列21161可以用于转发CPU核心2113下发的数据。硬件队列21171用于转发需要下发到NVMe设备的数据。
在根据本公开实施例的卸载卡命名空间管理系统中,因为通用块层2116需要通过NVMe驱动器2117与硬件交互,因此需要硬件也支持多队列。最理想的情况是,硬件支持的队列足够多,通用块层2116的每个软件队列11161都有硬件队列21171和其关联。图2中有8个硬件队列21171,通用块层2116总共形成了8个软件队列11161。因此,通用块层2116将1个软件队列21161和1个硬件队列21171关联起来,即,建立软件队列11161到硬件队列11171的一一对应的映射关系。以下描述中本公开实施例中利用卸载卡创建多个命名空间以分配硬件队列的具体方式。
在根据本公开实施例的卸载卡命名空间管理系统中,卸载卡2200包括NVMe控制器2210和加速器2220。卸载卡2200可以通过软硬件技术模拟标准NVMe控制器2210,负责处理虚拟机2110中的内核空间2115中的NVMe驱动器2117的配置请求,完成NVMe设备2300的初始化、挂载/卸载等管理任务。加速器2220例如是基于FPGA硬件或ASIC硬件的加速器,负责将虚拟机2110中的IO请求以DMA方式搬运到卸载卡2200并通过例如网卡、PCI之类的连接方式发送到NVMe设备2300。
在根据本公开实施例的卸载卡命名空间管理系统中,可以将NVMe设备2300挂载到虚拟机2110内部。虚拟机2110内部可以通过例如nvme-cli(Linux的用于监控和配置管理NVMe设备的命令行工具)之类的工具为每个应用2112创建独立的命名空间。具体而言,虚拟机2110可以通过ioctl系统调用向NVMe驱动器2117下发NVMe Admin Command命令,具体为,创建命名空间请求(也可以称作命名空间创建请求)。在NVMe驱动器2117收到创建命名空间请求后,可以向卸载卡2200发送创建命名空间请求。例如,NVMe驱动器2117可以通过设置硬件寄存器向卸载卡2200发送配置信息请求的方式向卸载卡2200发送创建命名空间请求。卸载卡2200上的NVMe控制器2210收到创建命名空间请求后,为各个应用2112创建对应的命名空间NS1、NS2、NS3、NS4、NS5、NS6、NS7、NS8,并且从加速器2220中对应的硬件部分2221分配硬件队列21171,分别并绑定在创建的命名空间NS1、NS2、NS3、NS4、NS5、NS6、NS7、NS8上。例如,在卸载卡2200中,NVMe控制器2210根据创建命名空间请求从加速器2220的对应硬件部分2221分配8硬件队列21171,由八个命名空间NS1、NS2、NS3、NS4、NS5、NS6、NS7、NS8分别管理。加速器2220中的硬件部分2221以外的其他硬件部分2222并不被分配用于由命名空间NS1、NS2、NS3、NS4、NS5、NS6、NS7、NS8管理。
从图2可见,一个应用2112对应于一个软件队列21161,对应于一个硬件队列21171,一个硬件队列21171由与其绑定的一个命名空间管理。因此,在根据本公开实施例的卸载卡命名空间管理系统中,可以通过动态的为每个NVMe命名空间分配专属硬件队列,实现硬件级别的命名空间资源,大幅提升了命名空间的性能隔离能力以及可靠性。相比于相关技术的卸载卡命名空间管理系统,在性能隔离能力以及性能隔离能力方面有很大提升。而且,随着硬件卸载技术的发展,现有的卸载卡已经可以支持一千或数千硬件队列。根据本公开实施例的卸载卡命名空间管理系统采用软硬件结合的技术架构,支持多命名空间的设备形态,并且为每个命名空间分配独立的硬件队列,避免不同应用的IO请求相互干扰问题,并提升了故障隔离能力。
在利用根据本公开实施例的卸载卡命名空间管理系统处理IO请求的情况中,虚拟机2110中的应用2112可以通过系统调用接口向内核空间2115中的通用块层2116下发IO请求。内核空间2115中的通用块层1116接收IO请求,并将其封装成bio请求(通用块层的请求)。NVMe驱动器2117负责将bio请求转成符合NVMe协议的IO请求,并可通过设备硬件寄存器下发符合NVMe协议的IO请求。NVMe驱动器2117可以通过设置硬件寄存器,通知卸载卡2200上的NVMe控制器2210处理符合NVMe协议的IO请求。加速器2220通过独立的硬件队列(即,与各个命名空间一一对应的硬件队列)21171将虚拟机2110的IO请求通过DMA方式搬运到卸载卡2200并通过例如网卡、PCI之类接口发送到NVMe设备2300。
在根据本公开实施例的卸载卡命名空间管理系统中,与相关技术的卸载卡命名空间管理系统一样,每个CPU核心2113对应一个软件队列21161,但是在通用块层2116中,与相关技术的卸载卡命名空间管理系统不同,驱动器2117管理和维护的不是预设好的硬件队列,而是由卸载卡2200的NVMe控制器2210根据命名空间创建请求创建多个与软件队列数量相同的命名空间后,从加速器2220分配的硬件队列。硬件队列21171的数量可以与软件队列21161一样,二者可以一一对应,这样NVMe设备2300的硬件队列分别由独立的命名空间管理,不同的应用使用各自的硬件队列资源,不再存在性能干扰,而且故障隔离能力很好。
以下参照图3描述根据本公开实施例的卸载卡命名空间管理系统。图3示出根据本公开实施例的卸载卡命名空间管理系统300的结构框图。
图3所示的卸载卡命名空间管理系统300包括主机301和卸载卡302。其中,所述主机301上运行有发出输入输出请求的多个应用,并且所述主机301向所述卸载卡302发送创建命名空间请求,所述卸载卡302根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,所述卸载卡302根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
根据本公开实施例提供的技术方案,通过卸载卡命名空间管理系统,包括主机和与主机连接的卸载卡,其中,所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,相较于所有应用进程共用统一由一个命名空间管理的多个硬件队列的方案,本公开实施例的方案在单一硬件队列出现故障的情况下不影响其他硬件队列的应用,在性能隔离能力以及故障隔离能力方面有很大提升。
在本公开的一个实施例中,所述主机301上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括:驱动器,其用于管理所述多个硬件队列,所述虚拟机通过所述驱动器向所述卸载卡302发送所述创建命名空间请求。
根据本公开实施例提供的技术方案,通过所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括:驱动器,其用于管理所述多个硬件队列,所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述卸载卡302包括控制器和硬件加速器,其中,所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
根据本公开实施例提供的技术方案,通过所述卸载卡包括控制器和硬件加速器,其中,所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述主机301包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
根据本公开实施例提供的技术方案,通过所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机301通过所述卸载卡302连接到NVMe设备303,其中,所述NVMe设备303挂载到所述虚拟机内部,其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡302,其中,所述卸载卡302将符合NVMe协议的输入输出请求发送到所述NVMe设备303。
在本公开的一个实施例中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器的具体方式可以包括:通用块层将应用下发的输入输出请求请求转换成符合通用块设备协议(例如,bio结构体)的输入输出请求请求,而NVMe驱动器将符合通用块设备协议的输入输出请求请求转成符合NVMe协议的输入输出请求,并通过设备硬件寄存器下发输入输出请求。
根据本公开实施例提供的技术方案,通过所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机通过所述卸载卡连接到NVMe设备,其中,所述NVMe设备挂载到所述虚拟机内部,其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
本领域技术人员可以理解,参照图3描述的技术方案的可以与参照图1和图2描述的实施场景结合,从而具备参照图1和图2描述的实施场景所实现的技术效果。具体内容可以参照以上根据图1和图2进行的描述,其具体内容在此不再赘述。
以下参照图4描述根据本公开实施例的卸载卡命名空间管理方法。
图4示出根据本公开实施例的卸载卡命名空间管理方法的流程图。
图4示出的根据本公开实施例的卸载卡命名空间管理方法运行于卸载卡命名空间管理系统,所述卸载卡命名空间管理系统包括主机和与主机连接的卸载卡。该卸载卡命名空间管理系统是参照图3所述的卸载卡命名空间管理系统。
如图4所示,根据本公开实施例的卸载卡命名空间管理方法包含步骤S401、S402、S403。
在步骤S401中,基于所述主机上运行的发出输入输出请求的多个应用,所述主机向所述卸载卡发送创建命名空间请求。
在步骤S402中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间。
在步骤S403中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
在本公开的一个实施例中,所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
根据本公开实施例提供的技术方案,通过所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述卸载卡包括控制器和硬件加速器,其中,步骤S402包括:所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
根据本公开实施例提供的技术方案,通过所述卸载卡包括控制器和硬件加速器,其中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,包括:所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
根据本公开实施例提供的技术方案,通过所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。
在本公开的一个实施例中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机通过所述卸载卡连接到NVMe设备,其中,所述方法还包括:将所述NVMe设备挂载到所述虚拟机内部;
所述用户空间中运行的应用向所述通用块层发出输入输出请求;通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
根据本公开实施例提供的技术方案,通过所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,其中,所述主机通过所述卸载卡连接到NVMe设备,其中,所述方法还包括:将所述NVMe设备挂载到所述虚拟机内部;所述用户空间中运行的应用向所述通用块层发出输入输出请求;通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
本领域技术人员可以理解,参照图4描述的技术方案的可以与参照图1至图3描述的实施场景结合,从而具备参照图1至图3描述的实施场景所实现的技术效果。具体内容可以参照以上根据图1至图3进行的描述,其具体内容在此不再赘述。
以下参照图5描述根据本公开实施例的输入输出请求处理系统。
图5示出根据本公开实施例的输入输出请求处理系统500的结构框图。输入输出请求处理系统500是利用图3所示的卸载卡命名空间管理系统300实现的。
如图5所示,输入输出请求处理系统500包括主机501、卸载卡502和通过所述卸载卡502与所述主机501连接的NVMe设备503。
其中,所述主机501上运行有虚拟机,所述主机501包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡502发送创建命名空间请求。
其中,所述卸载卡502包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,
其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,
其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡502,
其中,所述卸载卡502将符合NVMe协议的输入输出请求发送到所述NVMe设备503。
根据本公开实施例提供的技术方案,通过利用前述卸载卡命名空间管理方案进行输入输出请求处理,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,避免不同应用输入输出请求相互干扰问题,并提升了故障隔离能力大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
以下参照图6描述根据本公开实施例的输入输出请求处理方法。
图6示出根据本公开实施例的输入输出请求处理方法的流程图。图6示出的输入输出请求处理方法是利用图5所示的输入输出请求处理系统500实现的。图5所示的输入输出请求处理系统500是利用图3所示的卸载卡命名空间管理系统300实现的。
运行有输入输出请求处理方法的输入输出请求处理系统包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述方法包括步骤S601、S602、S603和S604。
在步骤S601,所述用户空间中运行的应用向所述通用块层发出输入输出请求;
在步骤S602,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
在步骤S603,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡;
在步骤S604,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
根据本公开实施例提供的技术方案,通过利用前述卸载卡命名空间管理方案进行输入输出请求处理,可以创建多个命名空间,并且动态地为每个命名空间分配专属硬件队列,实现了硬件级别的命名空间资源,应用可以使用自身对应的硬件队列,避免不同应用输入输出请求相互干扰问题,并提升了故障隔离能力大幅提升了命名空间的性能隔离能力以及可靠性。而且,对现有的NVMe命名空间能力进行了加强扩展,并结合软硬件一体化的技术架构,实现了性能隔离能力和故障隔离能力的大幅提升,并且完全兼容上层应用的软件生态。
图7示出根据本公开一实施方式的电子设备的结构框图。
本公开实施方式还提供了一种电子设备,如图7所示,包括至少一个处理器701;以及与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令运行于卸载卡命名空间管理系统,所述卸载卡命名空间管理系统包括主机和与主机连接的卸载卡,指令被至少一个处理器701执行以实现以下步骤:
基于所述主机上运行的发出输入输出请求的多个应用,所述主机向所述卸载卡发送创建命名空间请求;
所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间;
所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
在本公开的一个实施例中,存所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:
所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
在本公开的一个实施例中,所述卸载卡包括控制器和硬件加速器,其中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,包括:
所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,
其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:
所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
在本公开的一个实施例中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,
其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,
其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
在本公开的一个实施例中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,
其中,所述主机通过所述卸载卡连接到NVMe设备,
其中,所述方法还包括:
将所述NVMe设备挂载到所述虚拟机内部;
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
本公开实施方式还提供了一种电子设备,如图7所示,包括至少一个处理器701;以及与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令运行于输入输出请求处理系统,所述输入输出请求处理系统包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述方法包括:
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡;
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
图8是适于用来实现根据本公开各实施方式的方法的计算机系统的结构示意图。如图8所示,计算机系统800包括处理单元801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行上述附图所示的实施方式中的各种处理。在RAM803中,还存储有系统800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。其中,所述处理单元801可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。例如,本公开的实施方式包括一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现用于执行附图中的方法的程序代码。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述节点中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种卸载卡命名空间管理系统,包括主机和与主机连接的卸载卡,其中,
所述主机上运行有发出输入输出请求的多个应用,并且所述主机向所述卸载卡发送创建命名空间请求,
所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,
所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
2.根据权利要求1所述的系统,其中,所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括:
驱动器,其用于管理所述多个硬件队列,所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
3.根据权利要求2所述的系统,其中,所述卸载卡包括控制器和硬件加速器,其中,
所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
4.根据权利要求3所述的系统,其中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,
其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,
其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
5.根据权利要求4所述的系统,其中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,
其中,所述主机通过所述卸载卡连接到NVMe设备,
其中,所述NVMe设备挂载到所述虚拟机内部,
其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,
其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,
其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
6.一种卸载卡命名空间管理方法,所述方法运行于卸载卡命名空间管理系统,所述卸载卡命名空间管理系统包括主机和与主机连接的卸载卡,其中,所述方法包括:
基于所述主机上运行的发出输入输出请求的多个应用,所述主机向所述卸载卡发送创建命名空间请求;
所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间;
所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
7.根据权利要求6所述的方法,其中,所述主机上运行有虚拟机,所述多个应用运行于所述虚拟机中,所述虚拟机包括用于管理所述多个硬件队列的驱动器,其中,所述主机向所述卸载卡发送创建命名空间请求,包括:
所述虚拟机通过所述驱动器向所述卸载卡发送所述创建命名空间请求。
8.根据权利要求7所述的方法,其中,所述卸载卡包括控制器和硬件加速器,其中,所述卸载卡根据所述创建命名空间请求为所述多个应用创建对应的多个命名空间,包括:
所述控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,
其中,所述卸载卡根据所述创建命名空间请求分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,包括:
所述控制器从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间。
9.根据权利要求8所述的方法,其中,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,
其中,所述用户空间中运行有所述多个应用,所述应用由对应的核心执行,
其中,所述内核空间包括通用块层和所述驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,并且建立从所述多个软件队列到所述多个硬件队列的一一对应关系。
10.根据权利要求9所述的方法,其中,所述驱动器是NVMe驱动器,所述控制器是NVMe控制器,
其中,所述主机通过所述卸载卡连接到NVMe设备,
其中,所述方法还包括:
将所述NVMe设备挂载到所述虚拟机内部;
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
11.一种输入输出请求处理系统,其包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述用户空间中运行的应用向所述通用块层发出输入输出请求,
其中,通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器,
其中,所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡,
其中,所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
12.一种输入输出请求处理方法,所述方法运行于输入输出请求处理系统,所述输入输出请求处理系统包括主机、卸载卡和通过所述卸载卡与所述主机连接的NVMe设备,
其中,所述主机上运行有虚拟机,所述主机包括多核心中央处理器,所述虚拟机包括用户空间和内核空间,其中,所述用户空间中运行有发出输入输出请求的多个应用,所述应用由对应的核心执行,其中,所述内核空间包括通用块层和NVMe驱动器,所述通用块层包括与所述多个核心对应的多个软件队列,其中,所述虚拟机通过所述NVMe驱动器向所述卸载卡发送创建命名空间请求,
其中,所述卸载卡包括NVMe控制器和硬件加速器,其中,所述NVMe控制器根据所述创建命名空间请求为所述多个应用创建各自的命名空间,并且从所述硬件加速器中分配与所创建的多个命名空间对应的多个硬件队列并且将所分配的多个硬件队列分别绑定到所对应的命名空间,
其中,所述NVMe驱动器用于管理所述多个硬件队列,所述通用块层建立从所述多个软件队列到所述多个硬件队列的一一对应关系,
其中,所述方法包括:
所述用户空间中运行的应用向所述通用块层发出输入输出请求;
通过所述通用块层和所述NVMe驱动器的处理将所述输入输出请求转换成符合NVMe协议的输入输出请求,并且发送到所述NVMe控制器;
所述NVMe控制器通过与所创建的命名空间对应的硬件队列将所述符合NVMe协议的输入输出请求搬运到所述卸载卡;
所述卸载卡将符合NVMe协议的输入输出请求发送到所述NVMe设备。
13.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求6-10、12任一项所述的方法步骤。
14.一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现权利要求6-10、12任一项所述的方法步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210273112.9A CN114691037A (zh) | 2022-03-18 | 2022-03-18 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
PCT/CN2023/080410 WO2023174146A1 (zh) | 2022-03-18 | 2023-03-09 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210273112.9A CN114691037A (zh) | 2022-03-18 | 2022-03-18 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691037A true CN114691037A (zh) | 2022-07-01 |
Family
ID=82140049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210273112.9A Pending CN114691037A (zh) | 2022-03-18 | 2022-03-18 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114691037A (zh) |
WO (1) | WO2023174146A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023174146A1 (zh) * | 2022-03-18 | 2023-09-21 | 阿里巴巴(中国)有限公司 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
WO2024082985A1 (zh) * | 2022-10-17 | 2024-04-25 | 杭州阿里云飞天信息技术有限公司 | 一种安装有加速器的卸载卡 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6877018B2 (en) * | 2001-03-15 | 2005-04-05 | Microsoft Corporation | System and method for unloading namespace devices |
US10768820B2 (en) * | 2017-11-16 | 2020-09-08 | Samsung Electronics Co., Ltd. | On-demand storage provisioning using distributed and virtual namespace management |
CN111198663B (zh) * | 2020-01-03 | 2022-09-20 | 苏州浪潮智能科技有限公司 | 控制数据存取操作的方法、系统、装置以及存储介质 |
CN111459406B (zh) * | 2020-03-08 | 2022-10-25 | 苏州浪潮智能科技有限公司 | 一种存储卸载卡下识别nvme硬盘的方法及系统 |
CN114691037A (zh) * | 2022-03-18 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
-
2022
- 2022-03-18 CN CN202210273112.9A patent/CN114691037A/zh active Pending
-
2023
- 2023-03-09 WO PCT/CN2023/080410 patent/WO2023174146A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023174146A1 (zh) * | 2022-03-18 | 2023-09-21 | 阿里巴巴(中国)有限公司 | 卸载卡命名空间管理、输入输出请求处理系统和方法 |
WO2024082985A1 (zh) * | 2022-10-17 | 2024-04-25 | 杭州阿里云飞天信息技术有限公司 | 一种安装有加速器的卸载卡 |
Also Published As
Publication number | Publication date |
---|---|
WO2023174146A1 (zh) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
EP3798835A1 (en) | Method, device, and system for implementing hardware acceleration processing | |
US9063793B2 (en) | Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
CN110659245A (zh) | 具有可编程多上下文加速器电路的系统 | |
US20070263642A1 (en) | Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理系统和方法 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
US11829309B2 (en) | Data forwarding chip and server | |
US8930568B1 (en) | Method and apparatus for enabling access to storage | |
US7827343B2 (en) | Method and apparatus for providing accelerator support in a bus protocol | |
JP2022105146A (ja) | アクセラレーションシステム、アクセラレーション方法、及びコンピュータプログラム | |
US9063929B2 (en) | Information processing apparatus, information processing method, computer-readable recording medium having stored therein program | |
CN116204456A (zh) | 数据访问方法及计算设备 | |
US10649915B1 (en) | Disaggregated computing architecture using device pass-through wherein independent physical address spaces between systems nodes are implemented in a single execution environment | |
EP1703413B1 (en) | Partition allocation method and computer system | |
US11029847B2 (en) | Method and system for shared direct access storage | |
US20240061802A1 (en) | Data Transmission Method, Data Processing Method, and Related Product | |
CN110311843B (zh) | 基于PCIe链路的通信方法、装置、电子设备、存储介质 | |
CN116501666B (zh) | 一种PCIe Switch仿真器的实现方法 | |
KR20220014276A (ko) | 명령들을 처리하는 저장 장치 및 방법 | |
KR20220146835A (ko) | 컴퓨팅 자원 분할 운용 방법 및 장치 | |
CN113535087A (zh) | 数据迁移过程中的数据处理方法、服务器及存储系统 | |
CN114253704A (zh) | 一种分配资源的方法及装置 | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |