CN115686341A - 一种处理访问请求的方法、装置、存储设备及存储介质 - Google Patents
一种处理访问请求的方法、装置、存储设备及存储介质 Download PDFInfo
- Publication number
- CN115686341A CN115686341A CN202110831258.6A CN202110831258A CN115686341A CN 115686341 A CN115686341 A CN 115686341A CN 202110831258 A CN202110831258 A CN 202110831258A CN 115686341 A CN115686341 A CN 115686341A
- Authority
- CN
- China
- Prior art keywords
- access request
- format
- nvme
- memory
- access
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/061—Improving I/O performance
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0661—Format or protocol conversion 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种处理访问请求的方法,该方法应用于包括内存以及持久性存储介质的存储设备,具体的,先从存储设备内存中获取RDMA格式的访问请求,该访问请求用于请求访问存储设备中的持久性存储介质;然后,将该RDMA格式的访问请求直接转换为NVMe格式的访问请求,并执行该NVMe格式的访问请求对应的目标操作以访问该持久性存储介质。如此,RDMA格式的访问请求在存储设备中传输时,无需经过块设备层的复杂处理,从而可以缩短访问请求的传输路径,减小传输时延,以此实现减小主机访问存储设备中的持久性存储介质的时延,提高NOF存储网络中存储设备的IOPS能力。此外,本申请还提供了一种处理访问请求的装置、存储设备及存储介质。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种处理访问请求的方法、装置、存储设备及存储介质。
背景技术
NOF(non-volatile memory express over fabric)存储网络中定义了通用的支持多种存储架构的存储网络协议,该存储网络协议可以扩展NOF系统中主机(host)本地的快速非易失存储器(non-volatile memory express,NVMe)设备,并增加了NVMe子系统(NVMe subsystem)对于访问NVMe设备的数据访问距离。在NOF系统中,可以包括NOF启动器(initiator,INI)以及NOF目标器(target,TGT),其中,NOF目标器上集成有一个或者多个存储盘。在NOF启动器和NOF目标器建立连接的过程中,NOF目标器可以将本设备上的存储盘映射到NOF启动器,从而NOF启动器能够像访问本地盘一样访问远端的NOF目标器上的存储盘。
目前,NOF启动器在访问NOF目标器上存储盘的过程中,访问时延通常较大,这就使得NOF存储网络中存储设备的每秒读写次数(input/output operations per second,IOPS)较低。
发明内容
本申请提供了一种处理访问请求的方法,用于降低NOF启动器访问NOF目标器上存储器(如存储盘等)的时延,提高NOF存储网络中存储设备的IOPS能力。此外,本申请还提供了一种处理访问请求的装置、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种处理访问请求的方法,该方法应用于包括内存以及持久性存储介质的存储设备,示例性地,该方法可以由存储设备中的处理器执行,具体实现时,先从存储设备内存中获取RDMA格式的访问请求,该访问请求用于请求访问存储设备中的持久性存储介质;然后,将该RDMA格式的访问请求直接转换为NVMe格式的访问请求,并执行该NVMe格式的访问请求对应的目标操作以访问该持久性存储介质。
如此,RDMA格式的访问请求在存储设备中传输时,无需经过块设备层的复杂处理,从而可以缩短访问请求的传输路径,减小传输时延,以此实现减小主机访问存储设备中的持久性存储介质的时延,提高NOF存储网络中存储设备的IOPS能力。并且,存储设备可以无需为每个访问请求申请和维护bio资源,从而可以减小存储设备的资源消耗。
在一种可能的实施方式中,在将RDMA格式的访问请求直接转换为NVMe格式的访问请求时,具体可以是先从内存中获取该RDMA格式的访问请求,该RDMA格式的访问请求例如可以预先由存储设备中的处理器从网卡中的队列中将其读取至内存;然后,将从内存中读取到的RDMA格式的访问请求转换为NVMe格式的访问请求,并将该NVMe格式的访问请求写入NVMe提交队列中。如此,可以实现将访问请求直接传输至NVMe提交队列,从而实现缩短访问请求的传输路径,减少传输时延。
在一种可能的实施方式中,在执行NVMe格式的访问请求对应的目标操作以访问持久性存储介质时,具体可以是从NVMe提交队列中获取该访问请求,并执行该访问请求以从持久性存储介质中读取数据或者写入数据,然后,将针对该访问请求的响应消息存储至NVMe完成队列。示例性地,该响应消息例如可以是指示数据写入成功或者失败的反馈消息,或者可以是从持久性存储介质中读取的数据等。如此,可以根据访问请求实现相应的数据写入或者读取。
在一种可能的实施方式中,在将响应消息存储至NVMe完成队列后,可以进一步将该NVMe完成队列中的响应消息直接由NVMe格式转化为RDMA格式,并基于RDMA协议传输该响应消息,例如可以是将该响应消息传输至发送该访问请求的主机等。如此,可以实现主机获取该访问请求对应的响应消息。
在一种可能的实施方式中,RDMA格式的访问请求所访问的数据的数据量不超过预设阈值,从而存储设备可以不用因为接收到的RDMA格式的访问请求所请求访问的数据量的数据量过大而将其拆分成多个数据访问请求。
第二方面,基于与第一方面的方法实施例同样的发明构思,本申请实施例提供了一种处理访问请求的装置。该装置具有实现上述第一方面的各实施方式对应的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供一种存储设备,包括:处理器和存储器;该存储器用于存储指令,当该存储设备运行时,该处理器执行该存储器存储的该指令,以使该存储设备执行上述第一方面或第一方面的任一实现方式中的处理访问请求的方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。存储设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的采用盘控分离架构的集中式存储系统的架构示意图;
图2为本申请实施例提供的采用盘控一体架构的集中式存储系统的架构示意图;
图3为本申请实施例提供的一示例性分布式存储系统示意图;
图4为本申请实施例提供的采用全融合架构的分布式存储系统的架构示意图;
图5为本申请实施例提供的采用存算一体架构的分布式存储系统的架构示意图;
图6为本申请实施例提供的采用存算分离架构的分布式存储系统的架构示意图;
图7为本申请实施例提供的采用结构化存储架构的分布式存储系统的架构示意图;
图8为一种在NOF系统中访问数据的场景示意图;
图9为本申请实施例提供的一种存储设备900的结构示意图;
图10为本申请实施例提供的一种处理访问请求的方法流程示意图;
图11为本申请实施例提供的一种处理访问请求的装置结构示意图;
图12为本申请实施例提供的另一种存储设备1200的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解,这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
本申请可以应用于集中式存储系统的应用场景中。所谓集中式存储系统就是指由一台或多台主设备组成中心节点,数据集中存储于这个中心节点中,并且整个系统的所有数据处理业务都集中部署在这个中心节点上。换言之,集中式存储系统中,终端或客户端仅负责数据的录入和输出,而数据的存储与控制处理完全交由中心节点来完成。集中式系统最大的特点就是部署结构简单,无需考虑如何对服务进行多个节点的部署,也就不用考虑多个节点之间的分布式协作问题。
参见图1,为一示例性采用盘控分离架构的集中式存储系统的架构示意图。在图1所示的集中式存储系统中,用户通过应用程序来存取数据。运行这些应用程序的计算机被称为“应用服务器”。应用服务器100可以是物理机,也可以是虚拟机。物理应用服务器包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。应用服务器通过光纤交换机110访问存储系统以存取数据。然而,交换机110只是一个可选设备,应用服务器100也可以直接通过网络与存储系统120通信。或者,光纤交换机110也可以替换成以太网交换机、InfiniBand交换机、RoCE(RDMA over Converged Ethernet)交换机等。
图1所示的存储系统120是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎121。引擎121是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图1所示,引擎121中有一个或多个控制器,图1以引擎包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其内存124后,可以通过所述镜像通道将所述数据的副本发送给控制器1,控制器1将所述副本存储在自己本地的内存124中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统120的不可用。当引擎121中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。
引擎121还包含前端接口125和后端接口126,其中前端接口125用于与应用服务器100通信,从而为应用服务器100提供存储服务。而后端接口126用于与硬盘134通信,以扩充存储系统的容量。通过后端接口126,引擎121可以连接更多的硬盘134,从而形成一个非常大的存储资源池。
在硬件上,如图1所示,控制器0至少包括处理器123、内存124。处理器123是一个中央处理器(central processing unit,CPU),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器123通过前端端口125接收应用服务器100发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存124中。当内存124中的数据总量达到一定阈值时,处理器123通过后端端口将内存124中存储的数据发送给硬盘134进行持久化存储。
内存124是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(Read Only Memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random Access Memory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,内存124还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,控制器0中可配置多个内存124,以及不同类型的内存124。本实施例不对内存113的数量和类型进行限定。此外,可对内存124进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存124中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存124中存储有软件程序,处理器123运行内存124中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储资源池,然后划分为LUN提供给服务器使用等。这里的LUN其实就是在服务器上看到的硬盘。当然,一些集中式存储系统本身也是文件服务器,可以为服务器提供共享文件服务。
控制器1(以及其他图1中未示出的控制器)的硬件组件和软件结构与控制器0类似,这里不再赘述。
图1所示的是一种盘控分离的集中式存储系统。在该系统中,引擎121可以不具有硬盘槽位,硬盘134需要放置在存储设备130中,后端接口126与存储设备130通信。后端接口126以适配卡的形态存在于引擎121中,一个引擎121上可以同时使用两个或两个以上后端接口126来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIE总线与处理器112通信。
需要说明的是,图1中只示出了一个引擎121,然而在实际应用中,存储系统中可包含两个或两个以上引擎121,多个引擎121之间做冗余或者负载均衡。
存储设备130包括控制单元131和若干个硬盘134。控制单元131可具有多种形态。一种情况下,存储设备130可以属于智能盘框,如图1所示,控制单元131包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘134的数据,或者从硬盘134读取出来将要发送给控制器的数据。另一种情况下,控制单元131是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-networkprocessing units,NPU)等处理芯片。通常情况下,控制单元131的数量可以是一个,也可以是两个或两个以上。当存储设备130包含至少两个控制单元131时,硬盘134与控制单元131之间可具有归属关系。如果硬盘134与控制单元131之间具有归属关系,那么每个控制单元只能访问归属于它的硬盘,这往往涉及到在控制单元131之间转发读/写数据请求,导致数据访问的路径较长。另外,如果存储空间不足,在存储设备130中增加新的硬盘134时需要重新绑定硬盘134与控制单元131之间的归属关系,操作复杂,导致存储空间的扩展性较差。因此在另一种实施方式中,控制单元131的功能可以卸载到网卡104上。换言之,在该种实施方式中,存储设备130内部不具有控制单元131,而是由网卡104来完成数据读写、地址转换以及其他计算功能。此时,网卡104是一个智能网卡。它可以包含CPU和内存。在某些应用场景中,网卡104也可能具有持久性存储介质,如持久性内存(Persistent Memory,PM),或者非易失性随机访问存储器(Non-Volatile Random Access Memory,NVRAM),或者相变存储器(phase change memory,PCM)等。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘134的数据,或者从硬盘134读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。存储设备130中的网卡104和硬盘134之间没有归属关系,网卡104可访问该存储设备130中任意一个硬盘134,因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎121与存储设备130之间通信协议的类型,存储设备130可能是SAS硬盘框,也可能是NVMe硬盘框,IP硬盘框以及其他类型的硬盘框。SAS硬盘框,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎121通过板载SAS接口或者SAS接口模块与存储设备130连接。NVMe硬盘框,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘框内。NVMe硬盘框再通过RDMA端口与引擎121连接。
当然,图1所示的采用盘控分离架构的集中式存储系统仅作为一种示例性说明,实际应用中,集中式存储系统也可以采用盘控一体架构,如图2所示。与图1所示的盘控分离架构不同的是,图2所示的盘控一体架构中,存储系统120具体可以是部署于存储设备中,即引擎121可以具有硬盘槽位,并通过该硬盘槽位将硬盘134需要放置在存储系统120中控制器0(以及控制器1)与硬盘134可以位于同一存储设备中。
实际应用时,本申请还可以应用于如图3所示的分布式存储系统。其中,分布式存储系统是指将数据分散存储在多台独立的存储节点上的系统,如图3所示。传统的网络存储系统采用集中式的存储阵列存放所有数据,存储阵列的性能既是系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储节点分担存储负荷,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
参阅图4,该分布式存储系统可以采用全融合架构。如图4所示,如图4所示,本实施例提供的分布式存储系统包括服务器集群。服务器集群包括一个或多个应用服务器110(图4中示出了三个服务器110,但不限于两个服务器110),各个服务器110之间可以相互通信。服务器110是一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。在软件上,每台服务器110上具有操作系统。在服务器110上可以创建虚拟机107,虚拟机107所需的计算资源来源于服务器110本地的处理器112和内存113,而虚拟机107所需的存储资源既可以来源于服务器110本地的硬盘105,也可以来自其他服务器110中的硬盘105。此外,虚拟机107中可运行各种应用程序,用户可通过虚拟机107中的应用程序触发读/写数据请求。
在硬件上,如图4所示,服务器110至少包括处理器112、内存113、网卡114和硬盘105。处理器112、内存113、网卡114和硬盘105之间通过总线连接。其中,处理器112和内存113用于提供计算资源。具体地,处理器112是一个中央处理器(central processing unit,CPU),用于处理来自服务器110外部的数据访问请求,或者服务器110内部生成的请求。示例性的,处理器112接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存113中。当内存113中的数据总量达到一定阈值时,处理器112将内存113中存储的数据发送给硬盘105进行持久化存储。除此之外,处理器112还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、数据校验、虚拟化存储空间以及地址转换等。图3中仅示出了一个CPU 112,在实际应用中,CPU 112的数量往往有多个,其中,一个CPU 112又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
内存113是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(Read Only Memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random Access Memory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,内存113还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,计算节点110中可配置多个内存113,以及不同类型的内存113。本实施例不对内存113的数量和类型进行限定。此外,可对内存113进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存113中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
硬盘105用于提供存储资源,例如存储数据。它可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。网卡114用于与其他应用服务器110通信。
当然,图4所示的采用全融合架构的分布式存储系统仅作为一种示例性说明,实际应用中,分布式存储系统也可以采用存算一体架构,如图5所示。与图4所示的全融合架构不同的是,图5所示的存算一体架构中,每台服务器110上可以不创建虚拟机,各服务器110上的处理器112可以接收外部的读/写数据请求进行相应的读写数据处理。
或者,分布式存储系统也可以采用存算分离架构,如图6所示。与图6所示的存算一体架构不同的是,计算节点(如前述服务器110等)与存储节点(如前述存储设备等)分离,并且,控制单元101与硬盘105可以位于同一存储节点。
又或者,分布式存储系统也可以是采用结构化存储(memory fabric,MF)架构,与图4至图6所示的分布式存储系统不同的是,图7所示的存储系统中,各个存储节点中包含不同类型的存储介质,如图7中存储节点同时包括DRAM、SCM以及硬盘等存储介质,这些不同类型的存储介质均提供内存接口可直接被处理器访问。并且这些存储节点所包含的各种类型内存组成一个内存池。数据在内存池可根据访问频率在不同类型的存储介质之间换入换出。
上述图1至图7所示的存储系统,可以应用于如图8所示的在NOF系统中访问数据的场景。以图6所示的存储系统应用于该NOF系统为例。如图8所示,NOF系统100中可以包括NOF启动器111以及NOF目标器102。其中,NOF启动器111例如可以是运行在图6中的计算节点110上的应用程序等,NOF目标器102例如可以是运行在存储节点100上的应用程序等。其中,NOF目标器102所在的存储节点100中可以包括一个或者多个存储器,如固态硬盘(solid statedisk,SSD)等NVMe设备。图1中以存储节点100包括SSD1以及SSD2为例进行示例性说明。
NOF启动器111在运行时可以为用户提供业务服务。当NOF启动器111需要访问SSD1中存储的数据或者向SSD1中写入数据时,NOF启动器111可以生成存储器存取(remotedirect memory access,RDMA)格式的访问请求,如输入输出(input output,io)请求等,并通过NOF启动器111上的RDMA驱动(driver)112,通过RDMA协议将访问请求发送给存储节点100。
存储节点100可以通过RDMA驱动101接收该RDMA格式的访问请求并将其读取至存储节点100中的内容,然后再将RDMA格式的访问请求从内存传输至存储器驱动1022。
其中,RDMA驱动可以通过前端网络将计算节点110存储空间中的数据作为消息,以RDMA报文形式传输至存储节点100的存储空间,或者,通过前端网络将存储节点100的存储空间中的数据作为消息,以RDMA报文形式传输至计算节点110的存储空间。这些传输和拷贝工作主要由计算节点110与存储设备100的网络接口卡(例如,RDMA网络接口卡(RDMAnetwork interface card,RNIC))执行,不需要处理器执行,因此不影响计算节点110与存储设备100的性能。
在传输访问请求的过程中,若将内存中的访问请求发送给存储节点100上的块设备层1021,则块设备层1021会为该访问请求申请较多的块设备输入输出(block inputoutput,bio)资源,该bio资源例如可以是多个具有不同功能的软件函数,构成软件函数调用栈。然后,块设备层1021再利用申请的bio资源对该访问请求进行处理。比如,块设备层1021可以先利用软件函数A创建软件队列,并将接收到的访问请求添加至该软件队列中,以实现访问请求的处理排序。然后,块设备层1021再利用软件函数B将该软件队列中存储的访问请求拆分成多个子访问请求,拆分得到的每个子访问请求所请求访问数据的数据量或请求写入的数据量均小于预设阈值,以限制每次访问存储器时读写数据的数据量。接着,针对每个子访问请求,块设备层1021可以利用软件函数C将该子访问请求的格式由RDMA格式转换为统一的通用格式,并进一步利用软件函数D将通用格式的子访问请求的格式,转换为符合持久性存储介质905的格式,如转换为NVMe格式等,该持久性存储介质905即为NOF启动器1021请求访问的存储器,以使得经过软件函数C以及D处理后的子访问请求能够适配NOF目标器102上任意一种类型的存储器,如适配NVMe设备或如机械硬盘(hard disk drive,HDD)等非易失性存储器(non-volatile memory,NVM)。实际应用时,块设备层1021还可以对访问请求的数量以及带宽进行控制等。
由于访问请求在从内存传输至存储器驱动1022的过程中,需要申请bio资源,并利用申请的bio资源对该访问请求执行的处理过程较多,这使得访问请求的传输时延较长,从而增加了NOF启动器111访问数据的时延,提高NOF存储网络中NOF目标器102的IOPS能力。并且NOF目标器102针对每个访问请求需要申请并维护较多的bio资源,这也增加了NOF目标器102的资源消耗。
基于此,本申请实施例提供了一种处理访问请求的方法,该可以应用于存储设备(如上述包括NOF目标器102的存储节点100)。访问请求在从内存传输至存储器驱动1022的过程中,存储设备可以将该访问请求由RDMA格式直接转换为NVMe格式,并执行该NVMe格式的访问请求对应的目标操作以访问存储节点100上的持久性存储介质,这使得访问请求在传输过程中无需经过块设备层的复杂处理,从而可以缩短访问请求的传输路径,减小传输时延,以此实现减小NOF启动器111访问存储设备上的持久性存储介质的时延,提高NOF存储网络中存储设备的IOPS能力。并且,存储设备可以无需为每个访问请求申请和维护bio资源,从而可以减小存储设备的资源消耗。
为便于理解,下面结合附图,对本申请的实施例进行进一步描述。
参加图9,图9为本申请实施例提供的一种存储设备的结构示意图。如图9所示,存储设备900包括网卡901、内存902、处理器903、存储器驱动904以及持久性存储介质904。其中,网卡901中可以包括至少一个队列对(queue pair,QP),图9中以为网卡901配置队列对801以及队列对9012为例进行示例性说明。同时,存储器驱动904包括至少一组提交队列(submit queue)、接收队列以及完成队列,图9中以存储器驱动904配置两组队列(分别为NVMe队列1以及NVMe队列2)为例进行示例性说明。实际应用时,网卡901以及存储器驱动904中配置的队列,可以通过软件队列实现,也可以是通过硬件队列实现,本实施例对此并不进行限定。
存储设备900可以通过网卡901与主机800(如服务器等设备)建立通信连接。这样,主机800可以向存储设备900发送访问请求,以请求访问存储设备900上的持久性存储介质905,如访问该持久性存储介质905中的目标数据或者向该持久性存储介质905中写入数据等。本实施例中,存储设备900与主机800之间可以通过RDMA协议进行数据通信,从而主机800在生成针对目标数据的访问请求后,可以通过该设备上的RDMA驱动将该访问请求发送给存储设备900。相应的,网卡901可以通过RDMA驱动接收访问请求。
其中,主机800向存储设备900发送的访问请求,其请求访问存储设备900中数据的数据量或者向存储设备900中写入数据的数据量不超过预设阈值。实际应用场景中,当主机800所需读写的数据的数据量超过该预设阈值时,主机800可以生成多个访问请求,分别用于请求读写不同部分的数据。以访问存储设备900中的数据为例,假设预设阈值为4KB(千字节),而主机800所需访问的数据量为9KB,则主机800可以针对该9KB的数据,分别生成3个访问请求,其中,第一个访问请求用于请求该9KB数据的前4KB数据,第二个访问请求用于请求该9KB的中间4KB数据,第三个访问请求用于请求该9KB的剩余1KB数据。为便于理解,本实施例中以存储设备900处理主机800发送的一个访问请求为例进行示例性说明。对于主机800发送的多个访问请求,存储设备900可以按照类似的处理方式逐个处理各个访问请求。
本实施例中,网卡901在接收到该访问请求后,可以将该访问请求添加至队列对9011中的接收队列(receive queue,RQ),并在将该访问请求成功写入RQ时,将该访问请求在RQ中的位置等信息写入该队列对9011中的完成队列(completion queue,CQ)。这样,处理器903可以从队列对9011的完成队列中读取访问请求在接收队列中存储的位置信息,从而根据该位置信息读取到队列对9011的接收队列中存储的访问请求,以便将该访问请求传输至存储器驱动904。
具体实现时,处理器903可以从队列对9011的接收队列中取出一个访问请求,并将该访问请求写入内存902中。然后,处理器903可以对内存902中的访问请求进行解析,获得该访问请求中携带的持久性存储介质905的标识,以便根据该持久性存储介质905的标识进一步确定接收访问请求的存储器驱动904。其中,存储设备900上可以包括一个或者多个持久性存储介质,并且当存储设备900上包括多个持久性存储介质时,不同持久性存储介质可以通过不同的存储器驱动进行实现访问。或者,在其它可能的实施方式中,存储设备900中可以预先配置有每个持久性存储介质与访问请求的标识范围之间的对应关系,如预先配置持久性存储介质与命名空间(namespace)之间的对应关系,不同持久性存储介质所对应的访问请求的标识范围之间不存在重叠。这样,处理器903可以根据接收到的访问请求的标识,确定该标识所属的标识范围,从而根据预先配置的对应关系,确定该标识范围所对应的持久性存储介质905,进而确定用于访问该持久性存储介质905所需的存储器驱动904。
由于存储设备900在与主机800基于RDMA协议进行数据交互,而存储器驱动904可能难以识别基于RDMA格式的访问请求,因此,处理器903在将访问请求发送给存储器驱动904之前,可以先将访问请求的格式由RDMA格式转换为存储器驱动904能够识别的NVMe格式,以便存储器驱动904识别该访问请求。例如,处理器903可以从初始的RDMA格式访问请求中解析出主机800所要访问的目标数据的标识、数据操作类型(如读操作)等关键数据,并结合目标数据在持久性存储介质905上存储时的逻辑地址等数据(该数据可以被预先记录在存储设备900中),重新生成NVMe格式的访问请求。实际应用时,该重新生成的访问请求可以表现为cmd指令。同时,处理器903还可以从存储器驱动904配置的多组NVMe队列中,选择一组NVMe队列中的提交队列对来接收该NVMe格式的访问请求。示例性地,处理器903可以通过预设的选择策略,选择NVMe队列2中的提交队列来接收访问请求。这样,处理器903可以将NVMe格式的访问请求,写入NVMe队列2中的提交队列。
本实施例中,由于处理器903能够将读取至内存902中的RDMA格式的访问请求直接进行格式转换并发送给存储器驱动904,这使得访问请求从内存902到存储器驱动904之间传输的时延较低,从而可以降低主机800访问持久性存储介质905的时延。
其中,处理器903发送给存储器驱动904的访问请求,可以通过存储器驱动904中的接收队列存储。因此,处理器903在发送访问请求之前,还可以确定存储器驱动904接收访问请求的一组NVMe队列。示例性地,直通模块3023例如可以是对存储器驱动904对应的多组队列进行轮流选择。比如,存储器驱动904包括5组NVMe队列,分别编号NVMe队列1、NVMe队列2、NVMe队列3、NVMe队列4以及NVMe队列5。则,处理器903在传输第一个访问请求时,可以将该第一个访问请求写入NVMe队列1中的提交队列;在传输第二个访问请求时,可以将第二个访问请求写入NVMe队列2中的提交队列,……。在将第五个访问请求写入NVMe队列5中的提交队列后,处理器903可以将第6个访问请求写入NVMe队列1中的提交队列,以此类推。
或者,处理器903可以采用哈希(Hash)算法选择接收访问请求的一组NVMe队列等。比如,处理器903通过下述公式(1)确定所选择的队列。
QPn=ID访问请求%QPmax (1)
其中,QPn为所选择的一组NVMe队列(或者该组队列中提交队列)的序号;ID访问请求为访问请求的标识,如可以是访问请求的编号等;QPmax为存储器驱动904包括的多组NVMe队列的数量(或者提交队列的数量),通常情况下可以是该多组NVMe队列的最大编号。
当然,实际应用场景中,处理器903也可以是采用其它方式确定用于接收访问请求的一组NVMe队列,如通过随机算法、负载均衡算法进行确定等,本实施例对此并不进行限定。
存储器驱动904在接收到NVMe格式的访问请求后,可以执行该访问请求对应的目标操作,访问持久性存储介质905中的目标数据,或者向持久性存储介质905中写入数据等。
在一种可能的实施方式中,存储器驱动904可以并发执行多个访问请求,以此提高存储器驱动904执行访问请求的效率。具体地,假设存储器驱动904可以并发执行32个访问请求,则,处理器903可以连续向存储器驱动904的一组或者多组NVMe队列中写入32个访问请求,以便由存储器驱动904并行执行该NVMe队列中的32个访问请求。在存储器驱动904并行执行32个访问请求的过程中,若处理器903确定存在新的访问请求需要传输给存储器驱动904,则处理器903可以尝试将新的访问请求发送给存储器驱动904。如果发送成功,表明存储器驱动904当前执行的32个访问请求中存在部分访问请求执行完毕,并可以接收、执行处理器903发送的新的访问请求。如果发送失败,表明存储器驱动904当前所执行的32个访问请求未执行完毕,无法同时执行更多数量的访问请求,则处理器903可以将该新的访问请求添加至预先创建的等待队列中,并将该访问请求的状态配置为超并发等待状态。当存储器驱动904正在执行的32个访问请求中,存在一个(或者多个)访问请求执行完成,则处理器903可以优先判断等待队列中是否存在访问请求,若存在,则处理器903可以先从等待队列中取出处于超并发等待状态的访问请求,并将该访问请求发送给存储器驱动904进行执行。而若等待队列中不存在未执行的访问请求,则存储器驱动904可以从网卡901的队列对中继续取出新的访问请求并将其发送给存储器驱动904进行执行。
其中,等待队列可以通过软件队列实现,也可以是通过硬件队列实现,本实施例对此并不进行限定。
存储器驱动904在执行访问请求对应的目标操作后,可以将执行该目标操作所得到的响应消息写入NVMe队列2中的接收队列,并在该响应消息成功写入接收队列后,可以将该响应消息在接收队列中的位置等信息写入NVMe队列2中的完成队列。示例性地,存储器驱动904执行目标操作所得到的响应消息,例如可以是从存储器中访问得到的数据,或者可以是向存储器中写入数据的结果(如写入成功或写入失败等)。
然后,处理器903可以读取NVMe队列2中的完成队列存储的位置信息,并进一步根据该位置信息从NVMe队列2的接收队列中读取响应消息。同时,处理器903可以通过查找预先保存该访问请求的队列对的记录,确定该访问请求预先在队列对9011中保存,从而处理器903在将接收队列中的响应消息传输至网卡901时,具体可以是将响应消息写入队列对9011中的发送队列。示例性地,存储器驱动904所生成的响应消息可以为NVMe格式,因此,处理器903在将该响应消息传输至网卡901时,可以将NVMe格式格式的响应消息转换为RDMA格式。
这样,网卡901可以将发送队列中存储的响应消息发送给主机800,以使得主机800获得该响应消息。示例性地,网卡901可以基于RDMA协议将响应消息发送给主机800。
实际应用时,主机800在与存储设备900进行通信时,可以在主机800上配置包括发送队列、接收队列以及完成队列的队列对801,如图9所示。主机800可以将生成的访问请求写入该队列对801中的发送队列,以便主机800上的网卡(图9中未示出)将发送队列中的访问请求发送给存储设备900。相应的,存储设备900在向主机800反馈响应消息时,存储设备900可以将该响应消息写入该队列对801中的接收队列。
本实施例中,处理器903可以建立主机800上的队列对与网卡901上的队列对之间的映射关系,从而主机800以及存储设备900之间在进行数据交互时,可以将访问请求以及响应消息在建立映射关系的队列对之间进行传输。实际应用时,网卡901中的不同队列对可以与不同主机中的队列对建立映射关系。例如,存储设备900上的队列对9011可以与主机800中的队列对801建立映射关系,队列对9012可以与其它主机中的队列对建立映射关系等。而且,存储设备900上的一个队列对可以与一个或者多个主机上的队列对建立映射关系等,本实施例对此并不进行限定。
另外,处理器903还可以建立网卡901的队列对与存储器驱动904的多组NVMe队列之间的映射关系,从而访问请求以及响应消息可以在存在映射的队列之间进行传输。如图9所示,处理器903可以将队列对9011中存储的访问请求,写入NVMe队列2中的提交队列;相应的,处理器903可以将NVMe队列2中接收队列存储的响应消息,写入队列对9011中。由于处理器903可以针对每个访问请求动态建立网卡901中的队列对与存储器驱动904的多组NVMe队列之间的映射关系,因此,可以使得存储设备900为网卡901配置的队列与为存储器驱动904配置的队列之间解耦。这样,即使网卡901的队列对数量增加或者减少(不减少为0),也可以不对存储器驱动904的多组NVMe队列产生影响;同时,存储器驱动904的多组NVMe队列发生数量变化,也可以不对网卡901的队列对产生影响。实际应用时,网卡901的不同队列对可以与不同的存储器驱动的一组或者多组队列建立映射关系。进一步地,网卡901的队列对9011可以与存储器驱动904的NVMe队列2建立映射关系,网卡901的队列对9012可以与其它存储器驱动的NVMe队列建立映射关系等。而且,网卡901中的一个队列对可以与一个或者多个存储器驱动的一组或者多组NVMe队列建立映射关系等,本实施例对此并不进行限定。
参见图10,图10为本申请实施例提供的一种处理访问请求的方法流程示意图。其中,图10所示的处理访问请求的方法可以应用于图9所示的存储设备,或者应用于其它可适用的存储设备中。为便于说明,本实施例中以应用于图9所示的存储设备为例进行示例性说明。并且,访问请求可以用于访问持久性存储介质905中的目标数据,或者可以是向持久性存储介质905中写入数据,为便于描述以及理解,下面以访问请求用于向持久性存储介质905中写入数据为例进行说明。
基于图9所示的存储设备900,图10所示的处理访问请求的方法具体可以包括:
S1001:主机800上的应用程序在需要向存储设备900中的持久性存储介质905写入数据时,生成针对该持久性存储介质905的RDMA格式的访问请求,并将该访问请求写入队列对801中的发送队列。
其中,主机800上的应用程序例如可以是主机上运行的数据库等。
S1002:主机800上的网卡从队列对801的发送队列中读取该访问请求,并通过RDMA协议将该访问请求发送给存储设备900。
实际应用时,主机800上的网卡可以通过RDMA驱动将该RDMA格式的访问请求发送至存储设备900。
S1003:存储设备900上的网卡901接收该访问请求,并将该访问请求写入队列对801中的接收队列,并且在该访问请求被成功写入接收队列时,将该访问请求在接收队列中的位置信息写入至该队列对801中的完成队列。
通常情况下,存储设备900与主机800之间在通过RDMA协议进行通信时,存储设备900所接收到的访问请求的格式为RDMA格式。
S1004:处理器903根据完成队列中存储的位置信息,从队列对801中的接收队列中读取RDMA格式的访问请求,并将该访问请求写入内存902。
S1005:处理器903解析出该访问请求对应的操作类型为写数据,则指示网卡901从主机800的内存中搬移所述访问请求对应待写入数据至所述存储设备900的内存902中。
作为一种实现示例,处理器903可以对该访问请求进行解析,确定该访问请求对应的处理操作为写入数据操作,则处理器可以生成数据传输命令(如RDMA读操作),并将该数据传输命令传输给网卡901。网卡901执行所述数据传输命令以将主机内存中的待写入数据读取至存储设备900的内存902。
S1006:在接收完待写入数据后,处理器903确定接收访问请求的存储器驱动904。
本实施例中,处理器903可以根据访问请求中携带的地址信息确定所述待写入数据需要写入的持久性存储介质905,其具体实现方式可参见前述实施例的相关之处描述,在此不做赘述。
S1007:处理器903将访问请求的格式由RDMA格式直接转换为存储器驱动904能够识别的NVMe格式。
在相关技术中,处理器903需要调用块设备层对RDMA格式的访问请求进行处理,而块设备层1021会为该访问请求申请较多的块设备输入输出(block input output,bio)资源,进行多次格式转换后,再转换为NVMe格式的访问请求,增加了访问请求的处理时延,且浪费了处理器的处理资源。本申请实施例中,处理器903调用直通模块,直接将RDMA格式的访问转换为NVMe格式的访问请求,不但减少了访问请求的时延,而且节省了处理器的资源。
示例性地,处理器903可以从访问请求中解析出数据操作类型(如写操作)等关键数据,并结合待写入数据写入持久性存储介质905时的逻辑地址等数据,重新生成NVMe格式的访问请求。
S1008:处理器903将NVMe格式的访问请求发送至存储器驱动904的NVMe队列2中的提交队列。
此时,处理器903可以建立网卡901中的队列对9011与该NVMe队列2(或者NVMe队列2中的提交队列)之间的映射关系。
S1009:处理器903判断NVMe格式的访问请求是否发送成功。若是,则继续执行步骤S1010;若否,则继续执行步骤S1015。
S1010:存储器驱动904执行该NVMe格式的访问请求对应的写数据操作,将内存902中存储的待写入数据写入持久性存储介质905。
S1011:存储器驱动904在完成将数据写入持久性存储介质905后,生成相应的响应消息,并将该响应消息写入NVMe队列2中的接收队列,并在写入成功后,将该响应消息在接收队列中的位置信息写入完成队列。
示例性地,该响应消息可以表征数据成功写入持久性存储介质905。实际应用时,当数据写入失败时,存储器驱动904可以生成指示数据写入失败的响应消息。
S1012:处理器903根据NVMe队列2中完成队列中存储的位置信息,读取NVMe队列2中接收队列存储的响应消息。
S1013:处理器903将读取的响应消息写入队列对9011中的发送队列。
其中,处理器903可以根据建立的映射关系,确定接收响应消息的队列对为队列对9011。并且,存储器驱动904生成的响应消息的格式可以是NVMe格式,而处理器903可以先将该NVMe格式的响应消息转换为RDMA格式的响应消息,再将RDMA格式的响应消息写入队列对9011中的发送队列。
S1014:网卡901从队列对9011中的发送队列中读取该响应消息,并将该响应消息通过RDMA协议发送给主机800。
S1015:处理器903将NVMe格式的访问请求设置为超并发等待状态,并将其添加至等待队列中。
S1016:处理器903从等待队列中取出访问请求,并继续执行步骤S1008。
实际应用时,处理器903对于从等待队列中取出的访问请求,还可以进一步判断该访问请求是否因为上一次发送存储器驱动904失败而被设置为超并发等待状态。若是,则可以继续执行步骤S1108,以完成对该访问请求的处理,而若不是,则该访问请求因为其它原因而导致被等待执行,此时,存储设备900可以对该访问请求进行其它处理。如当访问请求因为被指示中断执行而被设置为超并发等待状态时,存储设备900可以对该访问请求进行删除处理等。
并且,在将向存储器驱动904发送访问请求之前,处理器903可以判断预先创建的等待队列中是否存在处于超并发等待状态的访问请求。若是,则优先从等待队列中读取访问请求并将其发送给存储器驱动904,而若不是,则可以从队列对9011中的接收队列中读取访问请求并将其发送给存储器驱动904。
实际应用时,当主机800连续向存储设备900发送多个访问请求时,处理器903在将一个访问请求传输至存储器驱动904后,可以继续执行步骤S1103,以处理下一个访问请求。
上述实施例中,是以存储设备900处理主机800发送的用于请求写入数据的访问请求为例进行示例性说明,当主机800发送的访问请求用于请求访问持久性存储介质905中的数据时,存储设备900对该访问请求的处理过程与上述过程类似,可以参照上述过程进行理解。其区别在于,存储设备900在接收到该访问请求后,无需与主机800执行上述针对待写入数据的交互过程,而可以直接由处理器903将内存902中的RDMA格式的访问请求直接转换为NVMe格式的访问请求并传输至NVMe队列2中的提交队列;相应的,存储器驱动904在执行访问请求对应的读数据操作后,所得到的响应消息具体可以是从持久性存储介质905中读取的数据。
如此,访问请求在存储设备900中进行传输时,无需经过块设备层的复杂处理,而可以直接由处理器903进行格式转换并发送给存储器驱动904,从而可以缩短访问请求的传输路径,减小传输时延,以此实现减小主机访问存储设备900上的持久性存储介质905的时延,提高存储设备900的IOPS能力,并减小存储设备900的资源消耗。
上文中结合图1至图10,详细描述了本申请所提供的处理访问请求的方法,下面将结合图11至图12,描述根据本申请所提供的处理访问请求的装置和计算设备。
图11为本申请提供的一种处理访问请求的装置的结构示意图。其中,处理访问请求的装置1100应用于存储设备,如上述图9所示的存储设备900等,存储设备包括内存和持久性存储介质,如图11所示,处理访问请求的装置1100可以包括:
获取模块1101,用于从存储设备的内存中获取远程直接内存访问RDMA格式的访问请求,所述访问请求用于请求访问所述持久性存储介质;
直通模块1102,用于将所述RDMA格式的访问请求直接转换为快速非易失存储器NVMe格式的访问请求;
执行模块1103,用于执行所述NVMe格式的访问请求对应的目标操作以访问所述持久性存储介质。
在一种可能的实施方式中,所述直通模块1102,具体用于:
从所述内存中获取所述RDMA格式的访问请求;
将所述RDMA格式的访问请求转换为所述NVMe格式的访问请求;
将所述NVMe格式的访问请求写入NVMe提交队列中。
在一种可能的实施方式中,所述执行模块1103,具体用于:
从所述NVMe提交队列中获取所述NVMe格式的访问请求;
执行所述NVMe格式的访问请求以从所述持久性存储介质中读取或写入数据;
将所述NVMe格式的访问请求的响应消息存储NVMe完成队列。
在一种可能的实施方式中,所述直通模块1102,还用于:
将所述NVMe完成队列中的响应消息直接由NVMe格式转化为RDMA格式,并基于RDMA协议传输所述响应消息。
在一种可能的实施方式中,所述RDMA格式的访问请求所访问的数据的数据量不超过预设阈值。
根据本申请实施例的处理访问请求的装置1100可对应于执行本申请实施例中描述的方法,并且处理访问请求的装置1100的各个模块的上述和其它操作和/或功能分别为了实现图10中的各个方法的相应流程,为了简洁,在此不再赘述。
图12为本申请提供的一种存储设备1200的示意图,如图所示,所述存储设备1200包括处理器1201、存储器1202、通信接口1203。其中,处理器1201、存储器1202、通信接口1203通过总线1204进行通信,也可以通过无线传输等其他手段实现通信。该存储器1202用于存储指令,该处理器1201用于执行该存储器1202存储的指令。进一步的,存储设备1200还可以包括内存单元1205,还内存单元1205可以通过总线1204与处理器1201、存储介质1202以及通信接口1203连接。其中,该存储器1202存储程序代码,且处理器1201可以调用存储器1202中存储的程序代码执行以下操作:
从存储设备的内存中获取远程直接内存访问RDMA格式的访问请求,所述访问请求用于请求访问所述持久性存储介质;
将所述RDMA格式的访问请求直接转换为快速非易失存储器NVMe格式的访问请求;
执行所述NVMe格式的访问请求对应的目标操作以访问所述持久性存储介质。
应理解,在本申请实施例中,该处理器1201可以是CPU,该处理器1201还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立器件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器1202可以包括只读存储器和随机存取存储器,并向处理器1201提供指令和数据。存储器1202还可以包括非易失性随机存取存储器。例如,存储器1202还可以存储设备类型的信息。
该存储器1202可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器或闪存。易失性存储器可以是随机存取存储器,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器、动态随机存取存储器、同步动态随机存取存储器、双倍数据速率同步动态随机存取存储器、增强型同步动态随机存取存储器、同步连接动态随机存取存储器和直接内存总线随机存取存储器。
该通信接口1203用于与存储设备1200连接的其它设备(如上述主机800等)进行通信。该总线1204除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1204。
应理解,根据本申请实施例的存储设备1200可对应于本申请实施例中的处理访问请求的装置1100,并可以对应于执行根据本申请实施例中图10所示方法中的相应主体,并且存储设备1200所实现的上述和其它操作和/或功能分别为了实现图10中的各个方法的相应流程,为了简洁,在此不再赘述。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备执行上述实施例所述的方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被多个计算机执行时,所述多个计算机执行前述处理访问请求方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述数据提供方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (12)
1.一种处理访问请求的方法,其特征在于,所述方法应用于存储设备,所述存储设备包括内存和持久性存储介质,所述方法包括:
从存储设备的内存中获取远程直接内存访问RDMA格式的访问请求,所述访问请求用于请求访问所述持久性存储介质;
将所述RDMA格式的访问请求直接转换为快速非易失存储器NVMe格式的访问请求;
执行所述NVMe格式的访问请求对应的目标操作以访问所述持久性存储介质。
2.根据权利要求1所述的方法,其特征在于,所述将所述RDMA格式的访问请求直接转换为快速非易失存储器NVMe格式的访问请求,包括:
从所述内存中获取所述RDMA格式的访问请求;
将所述RDMA格式的访问请求转换为所述NVMe格式的访问请求;
将所述NVMe格式的访问请求写入NVMe提交队列中。
3.根据权利要求2所述的方法,其特征在于,所述执行所述NVMe格式的访问请求对应的目标操作以访问所述持久性存储介质,包括:
从所述NVMe提交队列中获取所述NVMe格式的访问请求;
执行所述NVMe格式的访问请求以从所述持久性存储介质中读取或写入数据;
将所述NVMe格式的访问请求的响应消息存储NVMe完成队列。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述NVMe完成队列中的响应消息直接由NVMe格式转化为RDMA格式,并基于RDMA协议传输所述响应消息。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述RDMA格式的访问请求所访问的数据的数据量不超过预设阈值。
6.一种处理访问请求的装置,其特征在于,所述装置应用于存储设备,所述存储设备包括内存和持久性存储介质,所述装置包括:
获取模块,用于从存储设备的内存中获取远程直接内存访问RDMA格式的访问请求,所述访问请求用于请求访问所述持久性存储介质;
直通模块,用于将所述RDMA格式的访问请求直接转换为快速非易失存储器NVMe格式的访问请求;
执行模块,用于执行所述NVMe格式的访问请求对应的目标操作以访问所述持久性存储介质。
7.根据权利要求6所述的装置,其特征在于,所述直通模块,具体用于:
从所述内存中获取所述RDMA格式的访问请求;
将所述RDMA格式的访问请求转换为所述NVMe格式的访问请求;
将所述NVMe格式的访问请求写入NVMe提交队列中。
8.根据权利要求7所述的装置,其特征在于,所述执行模块,具体用于:
从所述NVMe提交队列中获取所述NVMe格式的访问请求;
执行所述NVMe格式的访问请求以从所述持久性存储介质中读取或写入数据;
将所述NVMe格式的访问请求的响应消息存储NVMe完成队列。
9.根据权利要求8所述的装置,其特征在于,所述直通模块,还用于:
将所述NVMe完成队列中的响应消息直接由NVMe格式转化为RDMA格式,并基于RDMA协议传输所述响应消息。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述RDMA格式的访问请求所访问的数据的数据量不超过预设阈值。
11.一种存储设备,其特征在于,所述存储设备包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述存储设备执行权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在存储设备上运行时,使得所述存储设备执行如权利要求1至5任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110831258.6A CN115686341A (zh) | 2021-07-22 | 2021-07-22 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
EP22844937.7A EP4369171A4 (en) | 2021-07-22 | 2022-05-09 | METHOD AND DEVICE FOR PROCESSING ACCESS REQUESTS AS WELL AS STORAGE DEVICE AND STORAGE MEDIUM |
PCT/CN2022/091606 WO2023000770A1 (zh) | 2021-07-22 | 2022-05-09 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
US18/417,509 US20240241639A1 (en) | 2021-07-22 | 2024-01-19 | Method and Apparatus for Processing Access Request, Storage Apparatus, and Storage Medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110831258.6A CN115686341A (zh) | 2021-07-22 | 2021-07-22 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115686341A true CN115686341A (zh) | 2023-02-03 |
Family
ID=84978888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110831258.6A Pending CN115686341A (zh) | 2021-07-22 | 2021-07-22 | 一种处理访问请求的方法、装置、存储设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240241639A1 (zh) |
EP (1) | EP4369171A4 (zh) |
CN (1) | CN115686341A (zh) |
WO (1) | WO2023000770A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116820344A (zh) * | 2023-07-03 | 2023-09-29 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN117609142A (zh) * | 2023-12-19 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118502680B (zh) * | 2024-07-18 | 2024-10-18 | 济南浪潮数据技术有限公司 | Io调度方法、电子设备、存储介质及程序产品 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5111754B2 (ja) * | 2005-11-14 | 2013-01-09 | 株式会社日立製作所 | 記憶制御システム |
JP2007304794A (ja) * | 2006-05-10 | 2007-11-22 | Hitachi Ltd | ストレージシステム及びストレージシステムにおける記憶制御方法 |
US7552280B1 (en) * | 2006-06-28 | 2009-06-23 | Emc Corporation | Asymmetrically interleaving access to redundant storage devices |
TWI318348B (en) * | 2006-09-22 | 2009-12-11 | Realtek Semiconductor Corp | Memory management method |
CN101931891A (zh) * | 2009-06-23 | 2010-12-29 | 华为技术有限公司 | 一种减少会话建立时延的方法及装置 |
JP5124551B2 (ja) * | 2009-09-30 | 2013-01-23 | 株式会社日立製作所 | ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法 |
US20150220438A1 (en) * | 2014-02-04 | 2015-08-06 | Netapp, Inc. | Dynamic hot volume caching |
US9727503B2 (en) * | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
CN103902486B (zh) * | 2014-04-08 | 2017-02-22 | 华为技术有限公司 | 一种远端直接内存访问实现方法、装置及系统 |
CN106775434B (zh) * | 2015-11-19 | 2019-11-29 | 华为技术有限公司 | 一种NVMe网络化存储的实现方法、终端、服务器及系统 |
EP3260971B1 (en) * | 2015-12-28 | 2021-03-10 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage |
US20190310964A1 (en) * | 2016-12-28 | 2019-10-10 | Intel Corporation | Speculative read mechanism for distributed storage system |
CN108628775B (zh) * | 2017-03-22 | 2021-02-12 | 华为技术有限公司 | 一种资源管理的方法和装置 |
CN109725827B (zh) * | 2017-10-27 | 2022-05-13 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、系统和计算机程序产品 |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
CN108874324B (zh) * | 2018-07-17 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
US11016911B2 (en) * | 2018-08-24 | 2021-05-25 | Samsung Electronics Co., Ltd. | Non-volatile memory express over fabric messages between a host and a target using a burst mode |
KR102691053B1 (ko) * | 2019-01-10 | 2024-07-31 | 삼성전자주식회사 | NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법 |
US11023326B2 (en) * | 2019-03-06 | 2021-06-01 | Intel Corporation | SSD restart based on off-time tracker |
US11748278B2 (en) * | 2019-06-20 | 2023-09-05 | Intel Corporation | Multi-protocol support for transactions |
CN111030936B (zh) * | 2019-11-18 | 2023-04-07 | 腾讯云计算(北京)有限责任公司 | 网络访问的限流控制方法、装置及计算机可读存储介质 |
EP3872639A1 (en) * | 2020-02-28 | 2021-09-01 | Aptiv Technologies Limited | Data logging device |
US11824931B2 (en) * | 2020-09-28 | 2023-11-21 | Vmware, Inc. | Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver |
CN112291259B (zh) * | 2020-11-12 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种协议转换方法、网关、设备及可读存储介质 |
US11748228B2 (en) * | 2021-02-25 | 2023-09-05 | Dell Products L.P. | Optimizing preboot telemetry efficiency |
CN115243320A (zh) * | 2021-04-23 | 2022-10-25 | 华为技术有限公司 | 一种数据传输的通信处理方法和相关设备 |
-
2021
- 2021-07-22 CN CN202110831258.6A patent/CN115686341A/zh active Pending
-
2022
- 2022-05-09 EP EP22844937.7A patent/EP4369171A4/en active Pending
- 2022-05-09 WO PCT/CN2022/091606 patent/WO2023000770A1/zh active Application Filing
-
2024
- 2024-01-19 US US18/417,509 patent/US20240241639A1/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116820344A (zh) * | 2023-07-03 | 2023-09-29 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116719479B (zh) * | 2023-07-03 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116820344B (zh) * | 2023-07-03 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN117609142A (zh) * | 2023-12-19 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20240241639A1 (en) | 2024-07-18 |
WO2023000770A1 (zh) | 2023-01-26 |
EP4369171A1 (en) | 2024-05-15 |
EP4369171A4 (en) | 2024-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023000770A1 (zh) | 一种处理访问请求的方法、装置、存储设备及存储介质 | |
US9285995B2 (en) | Processor agnostic data storage in a PCIE based shared storage environment | |
US8433770B2 (en) | Combined local and network storage interface | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
CN115270033A (zh) | 一种数据访问系统、方法、设备以及网卡 | |
US12099454B2 (en) | Memory appliance couplings and operations | |
US11500542B2 (en) | Generation of a volume-level of an IO request | |
WO2022218160A1 (zh) | 一种数据访问系统、方法、设备以及网卡 | |
US12079080B2 (en) | Memory controller performing selective and parallel error correction, system including the same and operating method of memory device | |
JP7247405B2 (ja) | ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法 | |
WO2025152506A1 (zh) | 一种数据处理系统、方法、设备及非易失性可读存储介质 | |
US20250208778A1 (en) | Storage management system, method, device, and machine-readable storage medium | |
CN101212490A (zh) | 储存装置控制器 | |
CN115687170A (zh) | 一种数据处理方法、存储设备以及系统 | |
CN115079936A (zh) | 一种数据写入方法及装置 | |
WO2022073399A1 (zh) | 存储节点、存储设备及网络芯片 | |
WO2023273803A1 (zh) | 一种认证方法、装置和存储系统 | |
WO2022222523A1 (zh) | 一种日志管理方法及装置 | |
CN115865803A (zh) | 一种io请求处理方法、装置、设备及可读存储介质 | |
CN116594551A (zh) | 一种数据存储方法及装置 | |
WO2014077451A1 (ko) | Iscsi 스토리지 시스템을 이용한 네트워크 분산 파일 시스템 및 방법 | |
WO2024051259A1 (zh) | 数据处理方法及装置 | |
CN118227037A (zh) | 存储器件、其调度方法和计算快速链路装置 | |
CN116069494A (zh) | 一种异构资源管理方法以及相关设备 | |
CN119621648A (zh) | 一种数据写入方法、设备以及网卡 |
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 |