CN118689783A - 存储装置、方法、设备和存储系统 - Google Patents
存储装置、方法、设备和存储系统 Download PDFInfo
- Publication number
- CN118689783A CN118689783A CN202310326133.7A CN202310326133A CN118689783A CN 118689783 A CN118689783 A CN 118689783A CN 202310326133 A CN202310326133 A CN 202310326133A CN 118689783 A CN118689783 A CN 118689783A
- Authority
- CN
- China
- Prior art keywords
- memory
- target data
- processor
- response
- writing
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例涉及一种存储装置、方法、设备和存储系统,涉及计算机技术领域。该装置包括:第一网卡、第一内存、第一处理器和第一非易失性存储器。该第一网卡,用于接收来自第二装置的写入请求,该写入请求包括目标数据。该第一网卡,还用于将该目标数据存储至该第一内存,基于该目标数据被存储至该第一内存,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。该第一处理器,用于将该第一内存中的该目标数据写入该第一非易失性存储器。第一网卡,用于基于该目标数据被存储至该第一内存,向该第二装置发送用于指示结束对该目标数据的写入的第一响应,减少了时延。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种存储装置、方法、设备和存储系统。
背景技术
分布式数据写入时延是数据中心实现数据持久化的重要指标。在联机事务处理过程(on-line transaction processing,OLTP)中,客户端的用户数据需要快速的传送到服务端进行处理,服务端需要在很短的时间内给出处理结果。现有技术中,客户端通过远程访问服务端的固态硬盘(solid state disk,SSD),实现分布式数据写入。但是,现有技术存在数据写入时延较大的问题。
发明内容
本申请实施例提供一种存储装置、方法、设备和存储系统,解决了现有技术中数据写入时延较大的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种存储装置,该装置包括:第一网卡、第一内存、第一处理器和第一非易失性存储器。该第一网卡,用于接收来自第二装置的写入请求,该写入请求包括目标数据。该第一网卡,还用于将该目标数据存储至该第一内存,基于该目标数据被存储至该第一内存,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。该第一处理器,用于将该第一内存中的该目标数据写入该第一非易失性存储器。
在上述技术方案中,首先,第一网卡,用于接收来自第二装置的写入请求,该写入请求包括目标数据。因此,该方案适用于写入指令中包括目标数据(in-capsule data)的场景,可以减少服务端与客户端的网络交互次数,减少时延。其次,本方案使用通用网卡,硬件实现难度小。再者,第一网卡,用于基于该目标数据被存储至该第一内存,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。第一网卡无需在目标数据从第一内存中写入第一非易失性存储器之后,才发送写入响应。而是将第一装置的异步处理过程变为写入就返回的同步过程,旁路了第一处理器的处理过程和第一非易失性存储器落盘的过程,进一步节省第一处理器的处理时延和非易失性存储器的落盘时延。并且,将目标数据的写入范围从第一非易失性存储器,扩大至第一装置,从而可以通过第一网卡与第二网卡之间进行交互,无需第一处理器第二次向第二装置发送响应,减少网络交互次数,节省处理器响应开销,减少处理器的处理任务,可以进一步提升第一装置的吞吐性能,提升交互效率。
在第一方面的一种可能的实现方式中,该第一内存为持久内存,或者,该存储装置还包括备用电池模块,该备用电池模块用于为该第一内存供电。上述可能的实现方式中,通过将第一内存设置为持久内存,或者,通过该备用电池模块用于为该第一内存供电,可以确保第一装置的主电源掉电时,第一内存中存储的目标数据不丢失,提升数据可靠性。
在第一方面的一种可能的实现方式中,该备用电池模块包括供电模块和第二非易失性存储器。该第一处理器,用于在该供电模块为该第一内存供电时,将该第一内存的该目标数据存储至该第二非易失性存储器。该第一处理器,还用于将该第二非易失性存储器中的该目标数据存储至该第一内存。上述可能的实现方式中,通过在该供电模块为该第一内存供电时,将该第一内存的该目标数据存储至该第二非易失性存储器,以及将该第二非易失性存储器中的该目标数据存储至该第一内存,确保第一装置的主电源掉电时,第一内存中存储的目标数据不丢失,提升数据可靠性。
在第一方面的一种可能的实现方式中,该第一处理器,还用于向该第二装置发送第一信息,该第一信息用于指示该第一内存为该持久内存,或者,该存储装置包括该备用电池模块。上述可能的实现方式中,第一处理器用于向该第二装置发送第一信息,该第一信息用于指示该第一内存为该持久内存,或者,该存储装置包括该备用电池模块。如此,在第一装置可以确保主电源掉电、第一内存中存储的目标数据不丢失时,第二装置和第一装置采用本申请提供的技术方案的数据写入路径,能提升数据可靠性,以及可以减少时延、提升第一装置的吞吐性能、提升交互效率。
在第一方面的一种可能的实现方式中,该第一处理器上安装有存储性能开发工具包,该第一处理器,具体用于基于该存储性能开发工具包将该第一内存中的该目标数据写入该第一非易失性存储器。上述可能的实现方式中,该第一处理器,具体用于基于该存储性能开发工具包,将该第一内存中的该目标数据写入该第一非易失性存储器,可以减少时延、提升第一装置的吞吐性能、提升交互效率。
在第一方面的一种可能的实现方式中,该第一非易失性存储器包括NVMe SSD。上述可能的实现方式中,使用NVMe SSD,可以减少时延、提升第一装置的吞吐性能、提升交互效率。
第二方面,提供一种存储装置,该装置包括:第二网卡。该第二网卡,用于向第一装置发送写入请求,该写入请求包括目标数据。该第二网卡,还用于接收来自该第一装置的第一响应,该第一响应为该第二网卡在发送该写入请求后,首次接收的来自该第一装置的响应,该第一响应用于指示结束对该目标数据的写入。
在上述技术方案中首先,该写入请求包括目标数据。因此,该方案适用于写入指令中包括目标数据(in-capsule data)的场景,可以减少服务端与客户端的网络交互次数,减少时延。其次,本方案使用通用网卡,硬件实现难度小。再者,第二网卡,还用于接收来自该第一装置的第一响应,该第一响应为该第二网卡在发送该写入请求后,首次接收的来自该第一装置的响应,该第一响应用于指示结束对该目标数据的写入,将第一装置的异步处理过程变为写入就返回的同步过程,旁路了第一装置中的处理器的处理过程和非易失性存储器落盘的过程,进一步节省处理器的处理时延和非易失性存储器的落盘时延。并且,通过第一网卡与第二网卡之间进行交互,无需第一装置第二次向第二装置发送响应,减少网络交互次数,节省处理器响应开销,减少处理器的处理任务,可以进一步提升吞吐性能,提升交互效率。
在第二方面的一种可能的实现方式中,该装置还包括:第二处理器。该第二处理器,用于接收来自该第一装置的第一信息,该第一信息用于指示该第一装置的第一内存为持久内存,或者,该第一装置包括用于为该第一装置的第一内存供电的备用电池模块。上述可能的实现方式中,该第二处理器,用于接收来自该第一装置的第一信息,该第一信息用于指示该第一装置的第一内存为持久内存,或者,该第一装置包括用于为该第一装置的第一内存供电的备用电池模块。如此,在第一装置可以确保主电源掉电、第一内存中存储的目标数据不丢失时,第二装置和第一装置采用本申请提供的技术方案的数据写入路径,能提升数据可靠性,以及可以减少时延、提升吞吐性能、提升交互效率。
第三方面,提供一种存储方法,应用于包括第一内存和第一非易失性存储器的存储装置,该方法包括:接收来自第二装置的写入请求,该写入请求包括目标数据。将该目标数据存储至该第一内存,基于该目标数据被存储至该第一内存,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。将该第一内存中的该目标数据写入该第一非易失性存储器。
在第三方面的一种可能的实现方式中,该第一内存为持久内存,或者,该存储装置还包括备用电池模块,该方法还包括:该备用电池模块为该第一内存供电。
在第三方面的一种可能的实现方式中,该备用电池模块包括供电模块和第二非易失性存储器,该方法还包括:在该供电模块为该第一内存供电时,将该第一内存的该目标数据存储至该第二非易失性存储器。将该第二非易失性存储器中的该目标数据存储至该第一内存。
在第三方面的一种可能的实现方式中,该方法还包括:向该第二装置发送第一信息,该第一信息用于指示该第一内存为该持久内存,或者,该存储装置包括该备用电池模块。
在第三方面的一种可能的实现方式中,该将该第一内存中的该目标数据写入该第一非易失性存储器,包括:基于存储性能开发工具包将该第一内存中的该目标数据写入该第一非易失性存储器。
在第三方面的一种可能的实现方式中,该第一非易失性存储器包括NVMe SSD。
第四方面,提供一种存储方法,该方法包括:向第一装置发送写入请求,该写入请求包括目标数据。接收来自该第一装置的第一响应,该第一响应用于指示结束对该目标数据的写入。
在第四方面的一种可能的实现方式中,该方法还包括:接收来自该第一装置的第一信息,该第一信息用于指示该第一装置的第一内存为持久内存,或者,该第一装置包括用于为该第一装置的第一内存供电的备用电池模块。
第五方面,提供一种电子设备,包括第一方面或第一方面的任一种可能的实现方式所提供的存储装置。
第六方面,提供一种电子设备,包括第二方面或第二方面的任一种可能的实现方式所提供的存储装置。
第七方面,提供一种存储系统,包括第一方面或第一方面的任一种可能的实现方式所提供的存储装置,以及第二方面或第二方面的任一种可能的实现方式所提供的存储装置。
第八方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现第三方面或第三方面的任一种可能的实现方式所提供的存储方法。
第九方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现第四方面或第四方面的任一种可能的实现方式所提供的存储方法。
本申请实施例的又一方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行第三方面、第三方面的任一种可能的实现方式、第四方面或第四方面的任一种可能的实现方式所提供的方法。
可以理解地,上述提供的任一种存储装置对应的方法、系统、计算机存储介质或者计算机程序产品均用于实现上文所提供的存储装置对应的功能,因此,其所能达到的有益效果可参考上文所提供的对应的存储装置中的有益效果,此处不再赘述。
附图说明
图1为落盘时延的示意图;
图2为一种数据写入方法的流程示意图;
图3为另一种数据写入方法的流程示意图;
图4为又一种数据写入方法的示意图;
图5为本申请实施例提供的通信网络的示意图;
图6为本申请实施例提供的客户端和数据中心的示意图;
图7为本申请实施例提供的NOF协议的数据写入流程的示意图;
图8为本申请实施例提供的一种存储装置的结构示意图;
图9为本申请实施例提供的一种存储装置的结构示意图;
图10为本申请实施例提供的数据写入流程的示意图;
图11为本申请实施例提供的第一内存的示意图;
图12为本申请实施例提供的供电模块为将第一内存的目标数据存储至第二非易失性存储器的流程示意图;
图13为供电模块为将第二非易失性存储器中的目标数据存储至第一内存的流程示意图;
图14为本申请实施例提供的协商数据传输路径的示意图;
图15为本申请实施例提供的数据传输示意图;
图16为本申请实施例提供的一种存储方法的流程示意图;
图17为本申请实施例提供的另一种存储方法的流程示意图;
图18为本申请实施例提供的一种电子设备的结构示意图;
图19为本申请实施例提供的另一种电子设备的结构示意图;
图20为本申请实施例提供的一种存储系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c或a、b和c,其中a、b和c可以是单个,也可以是多个。另外,在本申请的实施例中,“第一”、“第二”等字样并不对数量和次序进行限定。
需要说明的是,本申请实施例中,“可选的”、“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“可选的”、“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“可选的”、“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在介绍本申请实施例之前,首先对本申请实施例所涉及的相关技术名词和技术背景进行介绍说明。
非易失性内存主机控制器接口规范(non volatile memory express,NVMe),是一个逻辑设备接口规范。NVMe通过快捷外围部件互连标准(peripheral componentinterconnect express,PCIe)总线,实现固态硬盘(solid state disk,SSD)与主机通信。NVMe是为NVMe SSD制定的通信标准。
当NVMe在光纤通道协议(fibre channel protocol,FCP)、传输控制协议(transmission control protocol,TCP)、远程直接内存访问(remote direct memoryaccess,RDMA)协议等不同种类的网络协议中进行适配时,形成了不同的技术路线,这些技术路线统称为网络上的NVMe协议(NVMe over fabric,NOF)。NOF协议可以使用TCP、RDMA、FC三种方式远程访问SSD,从SSD盘侧实现分布式存储。
持久内存(persistent memory,PMEM)/存储级内存(storage class memory,SCM)是在内存总线上的固态高性能字节寻址存储器设备。PMEM的访问方式与动态随机存取存储器(dynamic random access memory,DRAM)的访问方式类似。PMEM具有速度快、延迟低、以及类似闪存(NAND)的非易失性等优点。持久内存技术的应用示例包括:包括非易失性双列直插式内存模块(nonvolatile dual in-line memory module,NVDIMM)和DC持久内存模块等。
电池备用单元(battery backup unit,BBU)是为系统备电的电池模块。具体地,BBU可以用于在系统的主电源掉电时,在短时间内为系统供电。在异常下电和复位场景下,通过硬件模块BBU为系统供电,通过软件模块基本输入输出系统(basic input outputsystem,BIOS)将缓存(cache)数据落盘,可以确保用户cache数据不丢失。
存储性能开发工具包(storage performance develop kit,spdk)是加速访问后端存储NVMe SSD的加速库。在spdk NVMe over RDMA方案中,驱动代码运行在用户态,而非在内核态,可以节省系统调用的时间,并使能应用的零拷贝访问数据,用轮询(polling)取代中断,从而降低时延,保障时延稳定性、无锁I/O路径,可以进一步节省软件栈的时延,做到较低的读写时延。在spdk方案中,传输数据的方式为指令中包含数据(in-capsule data)的方式,例如:客户端向服务端发送写入指令时,该写入指令中包括目标数据。如此,可以缩短数据传输路径,实现更低的时延。其中,如图1所示,对于传统的spdk NOF方案,客户端和服务端间均安装有spdk,在跨RDMA网络4k随机写,且队列深度(iodepth)=1的情况下,客户端将目标数据存储至服务端的NVMe SSD需要的平均时延(即NVMe SSD的落盘时延101)超过整体时延的一半,其他时延102约不足整体时延的一半。可见落盘时延101开销占比很大。
分布式数据写入时延是数据中心实现数据持久化的重要指标。在联机事务处理过程(on-line transaction processing,OLTP)中,比如在证券高频交易市场(highfrequency trading,HFT)中,数据写入的时延需要为超低时延(ultra-low latency,ULL)。客户端的目标数据需要快速的传送到服务端进行处理,服务端需要在很短的时间内给出处理结果。
图2为一种数据写入方法的流程示意图,该方法包括步骤S110至S140。
S110:服务端网卡接收客户端的写入指令。其中,该写入指令中不包括待写入的目标数据。该写入指令可以是聚散链(scatter gather list,SGL)格式。
S120:服务端网卡将该写入指令传输给处理器,处理器解析写入指令,生成第一读取指令,将第一读取指令发送给客户端。客户端处理器根据第一读取指令向服务端发送读取响应。其中,第一读取指令可以携带目标数据在客户端的源地址、和服务端的目标存储器中的目标地址。
S130:服务端网卡接收客户端的读取响应,读取响应包括目标数据,根据目标地址,将目标数据写入目标存储器,该目标存储器为非易失性存储器。具体地,该目标存储器可以是SSD。
S140:服务端网卡向客户端发送写入响应,该写入响应用于指示结束对目标数据的写入。客户端处理器根据写入响应结束对目标数据的写入。
该数据写入方法存在的问题至少包括:第一,该方法适用于写入指令中不包括目标数据的场景,不适用于写入指令中包括目标数据(in-capsule data)的场景,服务端在接收写入指令后,还需要再发送第一读取指令、接收读取响应,才向客户端发送写入响应,以使客户端根据该写入响应结束对目标数据的写入。因此,该方法中服务端与客户端的网络交互次数较多,时延较大。第二,在服务端网卡将写入指令传输给处理器之后,才发送第一读取指令,存在处理器等待时间,服务端与客户端的该次交互时延较大。第三,在服务端网卡将目标数据写入目标存储器之后,才发送写入响应,由于非易失性存储器的落盘时延较大,服务端与客户端的该次交互时延较大。
图3为另一种数据写入方法的流程示意图,该方法包括步骤S210至S260。
S210:服务端网卡接收客户端的写入指令。其中,该写入指令中不包括待写入的目标数据。服务端网卡可以为可编程网卡。该写入指令可以是聚散链(scatter gather list,SGL)格式。
S220:服务端网卡将写入指令传输给处理器,处理器解析写入指令,生成第二读取指令,将第二读取指令发送给网卡。其中,第二读取指令可以携带目标数据在客户端的源地址、和服务端的目标存储器的目标地址。
S230:服务端网卡解析写入指令,生成第三读取指令,将第三读取指令发送给客户端。可选的,S220可以与S230同时执行。客户端处理器根据第三读取指令向服务端发送读取响应。其中,第三读取指令可以携带源地址和服务端的内存地址。
S240:服务端网卡接收客户端的读取响应,读取响应包括目标数据,根据内存地址,将目标数据写入内存。
S250:服务端网卡接收第二读取指令,根据目标地址,将内存中的目标数据写入目标存储器,目标存储器为非易失性存储器。具体地,该目标存储器可以是SSD。
S260:服务端网卡向客户端发送写入响应,该写入响应用于指示结束对目标数据的写入。
该数据写入方法存在的问题至少包括:第一,该方法适用于写入指令中不包括目标数据的场景,不适用于写入指令中包括目标数据(in-capsule data)的场景,服务端在接收写入指令后,还需要再发送第三读取指令、接收读取响应,才向客户端发送写入响应,以使客户端根据该写入响应结束对目标数据的写入。服务端与客户端间的交互步骤为S210、S230、S240、S260,服务端与客户端的网络交互次数与前一种数据写入方法相比并未减少。因此,该方法中服务端与客户端的交互次数较多,时延较大。第二,通过使用可编程网卡,在将写入指令传输给处理器时,解析写入指令、发送第二读取指令,可以节省服务端与客户端的该次交互时延。但是,可编程网卡的硬件实现难度较大,成本较高。第三,在服务端网卡将目标数据写入目标存储器之后,才发送写入响应,由于非易失性存储器的落盘时延较大,服务端与客户端的该次交互时延较大。
图4为又一种数据写入方法的示意图。该方法通过远程持久内存访问(remotepersistent memory access,RPMA)库(librpma)使用RDMA接口,访问远端系统上的持久内存。如图4中的(A)所示,客户端包括应用211、内存212和RDMA网卡213。内存212可以是DRAM。服务端包括RDMA网卡221、处理器缓存223和持久内存224。或者,如图4中的(B)所示,服务端还包括应用222。RDMA网卡213与RDMA网卡221之间通过RDMA网络通信。客户端可以通过RDMA网卡访问服务端持久内存224。RPMA库是一个用户空间库,支持标准的RDMA用户空间linux接口,即libiverbs库,可以兼容多种RDMA协议,如无限带宽技术(infiniband,IB)TM、互联网广域远程直接内存访问协议(internet wide area RDMA protocol,iWARP)、基于融合以太网的RDMA(RDMA over converged ethernet,RoCE)、基于融合以太网的RDMA版本2(RDMAover converged ethernet version 2,RoCEv2)。
该数据写入方法通过RDMA网络远端访问持久内存,但不支持对SSD的访问,且无法与NOF协议兼容。
在介绍完本申请实施例所涉及的相关技术之后,下面对本申请实施例的适用场景进行详细介绍说明。本申请实施例提供的技术方案可以应用于通信网络中,该通信网络可以包括多个网络节点,该多个网络节点之间可以通过网络(network)进行通信,该通信可以使用网络传输协议实现。该通信网络中的网络节点也可以简称为节点,该节点可以为计算机、或者服务器等。
图5为本申请实施例提供的一种通信网络的示意图。示例性的,该通信网络110包括第一节点和第二节点,第一节点可以为客户端300,第二节点可以为服务端400。客户端300与服务端400之间通过网络110连接。客户端300与服务端400之间可以进行数据的共享,比如,客户端300与服务端400之间可以传输数据包(packet)。其中,客户端300可以包括第二网卡(network interface card,NIC)311和第二处理器312。在一种示例中,该第二处理器312可以为中央处理单元(central processing unit,CPU)。服务端400可以包括第一网卡411和第一处理器412。在一种示例中,该第一处理器412可以为CPU。客户端300和服务端400还可以包括存储器,该存储器可以为内部存储器(可以简称为内存)。可选的,该内存可以为动态随机存取存储器(dynamic random access memory,DRAM)或者双倍速率(doubledata rate,DDR)存储器。该存储器还可以为非易失性存储器,如SSD。
可以理解的是,上述图5所示的客户端300和服务端400的结构仅为示例性的,在实际应用中,该客户端300和服务端400中还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置等,上述图5并不对本申请实施例构成限制。
在一种可能的实施例中,本申请实施例提供的技术方案可以应用于在联机事务处理过程(on-line transaction processing,OLTP)中,比如在证券高频交易市场(highfrequency trading,HFT)中。图6为本申请实施例提供的客户端和数据中心的示意图。数据中心可以包括多个服务端,该多个服务端可以包括一个主节点和多个从节点。主节点相对于从节点可以是远端设备。例如,主节点可以是服务端400,从节点可以是服务端500和服务端600。客户端300需要将目标数据写入数据中心。为保障客户端300写入目标数据的可靠性,在客户端300将目标数据写入数据中心的主节点(服务端400)后,主节点需要将目标数据写入从节点(服务端500和服务端600)。
以图6为例对客户端300将目标数据写入数据中心的过程进行说明。客户端300向服务端400发送写入请求,该写入请求中包括目标数据。服务端400向服务端500和服务端600发送写入请求。在服务端500和服务端600分别向服务端400发送第一响应后,服务端400才向客户端发送第一响应,第一响应用于指示结束对目标数据的写入。因此,客户端300将目标数据写入数据中心的整体时延取决于两个节点之间写入目标数据的时延。本申请实施例提供的技术方案,既可以应用于客户端与数据中心之间的数据写入过程,也可以应用于数据中心内部的多个服务端之间的数据写入过程。
本申请实施例提供的技术方案可以与NOF协议兼容。图7为本申请实施例提供的一种NOF协议的数据写入流程的示意图,该方法包括步骤S310至S350。
S310:第二处理器312通过第二网卡311向服务端发送写入请求,该写入请求包括目标数据。该第二网卡311向服务端发送写入请求时,存在RDMA网络时延。
S320:第一网卡411根据来自客户端的写入请求,将写入请求中的目标数据存储至第一内存。
S330:第一网卡411向客户端发送第二响应,该第二响应用于指示接收到该目标数据。客户端接收到该第二响应后不做处理。因此,该第二响应的发送时间不影响该次数据写入的时延。
S340:第一处理器412通过轮询第一内存,确定第一内存中存储有目标数据时,将第一内存中的目标数据写入第一非易失性存储器。具体地,该第一非易失性存储器可以是NVMe SSD。其中,将第一内存中的目标数据写入第一非易失性存储器时,存在落盘时延。
S350:第一处理器412通过第一网卡411向客户端发送第一响应,该第一响应用于指示结束对目标数据的写入。该第一网卡411向客户端发送第一响应时,存在RDMA网络时延。
S360:第二处理器312通过第二网卡311接收第一响应,并根据第一响应结束对目标数据的写入。
该数据写入方法可以适用于写入指令中包括目标数据(in-capsule data)的场景,但是,第一处理器412在将目标数据写入第一非易失性存储器之后,才发送写入响应,由于第一非易失性存储器的落盘时延较大,服务端与客户端的该次交互时延较大。基于此,本申请实施例提供一种存储装置,用于减小数据写入过程中的交互时延。下面对本申请实施例提供的存储装置进行详细介绍说明。
图8为本申请实施例提供的一种存储装置的结构示意图。该存储装置410可以作为第一装置,应用于服务端中。该存储装置410可以包括:第一网卡411、第一内存413、第一处理器412和第一非易失性存储器414。
图9为本申请实施例提供的一种存储装置310的结构示意图。该存储装置310可以作为第二装置,应用于客户端中或者作为从节点的服务端中。该存储装置310可以包括:第二网卡311。可选的,第一网卡411和第二网卡311可以是RDMA网卡。第一非易失性存储器414可以包括NVMe SSD。第一非易失性存储器414中可以设置缓冲器。
示例性的,如图6所示,当客户端300将目标数据写入服务端400时,该第一装置可以为服务端400的装置,该第二装置可以为客户端300的装置。当服务端400将目标数据写入服务端500时,该第一装置可以为服务端500的装置,该第二装置可以为服务端400的装置。可选的,该存储装置410与主机耦合。图10为本申请实施例提供的数据写入流程的示意图。以第一装置为服务端400的装置、第二装置可以为客户端300的装置为例,结合图10进行说明。
该第二网卡311,用于向第一装置发送写入请求,该写入请求包括目标数据。其中,第二处理器312可以通过远程直接内存访问发送(RDMA SEND)接口,使第二网卡311向第一网卡411发送写入请求。该写入方式可以为in-capsule data的方式,该写入请求包括的目标数据可以是小块数据,如0至16千字节(kilobyte,KB)大小的数据。该第二网卡311向第一装置发送写入请求时,存在RDMA网络时延。
该第一网卡411,用于接收来自第二装置的写入请求,该写入请求包括目标数据。该第一网卡411,还用于将该目标数据存储至该第一内存413,基于该目标数据被存储至该第一内存413,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。
图11为本申请实施例提供的第一内存413的示意图。示例性的,第一内存413可以包括NVMe缓冲区、RDMA缓冲区和数据缓冲区等区域。NVMe缓冲区可以包括:发送队列(sendqueue,SQ)421和完成队列(complete queue,CQ)422。RDMA缓冲区可以包括:发送队列431、接收队列(receive queue,RQ)432和完成队列433。数据缓冲区可以用于存储数据。
示例性的,第二装置可以包括第二内存313,第二内存313可以包括NVMe缓冲区、RDMA缓冲区和数据缓冲区等区域。NVMe缓冲区可以包括:发送队列321和完成队列322。RDMA缓冲区可以包括:发送队列331、接收队列332和完成队列333。数据缓冲区可以用于存储数据。
示例性的,在第一装置中,第一内存413可以通过内存总线与第一处理器412耦合,第一处理器412可以通过PCIe总线与第一网卡411和第一非易失性存储器414耦合。在第二装置中,第二内存313可以通过内存总线与第二处理器312耦合,第二处理器312可以通过PCIe总线与第二网卡311耦合。在第一装置与第二装置之间,第一网卡411可以通过RDMA协议与第二网卡311通信。
其中,该第一网卡411,还用于将该目标数据存储至该第一内存413,可以是:第一网卡411用于将目标数据存储至该第一内存413的RDMA缓冲区中的接收队列432。
再者,该第一网卡411还用于基于该目标数据被存储至该第一内存413,向该第二装置发送第一响应,可以是:该第一网卡411还用于在该目标数据被存储至该第一内存413后,就向第二装置发送第一响应,而不是在目标数据被写入第一非易失性存储器414后,才向第二装置发送第一响应。该第一网卡411向第二装置发送第一响应时,存在RDMA网络时延。与传统NOF协议不同的是,在传统NOF协议中,在目标数据被写入第一非易失性存储器414后,处理器才向第二装置发送第一响应。
以及,该第一网卡411还用于在该目标数据被存储至该第一内存413后,在该第一内存413的RDMA缓冲区中的完成队列433中,写入目标数据对应的完成队列元素(completion queue element,CQE)。
该第二网卡311,还用于接收来自该第一装置的第一响应,该第一响应为该第二网卡311在发送该写入请求后,首次接收的来自该第一装置的响应。其中,与传统NOF协议不同的是,在传统NOF协议中,第二响应为该第二网卡311在发送该写入请求后,首次接收的来自该第一装置的响应,第一响应为该第二网卡311在发送该写入请求后,第二次接收的来自该第一装置的响应。
可选的,第二网卡311还用于在接收到第一响应后,将第一响应存储至该第二内存313的RDMA缓冲区中的接收队列332,在该第二内存313的RDMA缓冲区中的完成队列333中,写入第一响应对应的CQE。
可选的,第二处理器312用于轮询完成队列333中的第一响应对应的CQE,确定第一装置已经写入目标数据,结束对目标数据的写入。具体地,第二处理器312用于结束对目标数据的写入,包括:第二处理器312用于根据第一响应对应的CQE确定用于存储目标数据的第二内存313中的存储空间,结束该次写入请求的计时,释放用于存储目标数据的第二内存313中的存储空间。
与传统NOF协议不同的是,在传统NOF协议中,第二处理器312还用于在轮询到完成队列333中的第一响应对应的CQE后,通过远程直接内存访问发送(RDMASEND)接口,使第二网卡311向第一装置发送完成指令,该完成指令用于指示目标数据写入结束。
该第一处理器412,用于将该第一内存413中的该目标数据写入该第一非易失性存储器414。其中,第一处理器412用于轮询完成队列433中的目标数据对应的CQE,确定接收到写入请求,将第一内存413中的目标数据写入该第一非易失性存储器414。具体地,第一处理器412用于将第一内存413中的目标数据写入该第一非易失性存储器414,包括:第一处理器412用于解析写入请求,生成NVMe指令,将该NVMe指令作为发送队列元素(send queueelement,SQE),在该第一内存413的NVMe缓冲区中的发送队列421中写入。该第一装置还可以包括直接内存访问电路(direct memory access,DMA),DMA包括DMA控制器。该NVMe指令用于指示第一处理器或DMA控制器,将该第一内存413中的接收队列432中的目标数据发送给该第一非易失性存储器414。第一处理器412还用于在该第一非易失性存储器414的控制器的门铃寄存器(doorbell register,DB)中赋值,以使该第一非易失性存储器414的控制器执行该NVMe指令。
该第一非易失性存储器414还用于写入目标数据后,在第一内存413的NVMe缓冲区的完成队列422中写入用于指示写入完成的CQE。第一处理器412还用于轮询到该用于指示写入完成的CQE时,根据该CQE确定该第一非易失性存储器414已经写入目标数据,释放用于存储目标数据的第一内存413中的存储空间。
与传统NOF协议不同的是,在传统NOF协议中,第一处理器412还用于轮询到该用于指示写入完成的CQE时,根据该CQE确定该第一非易失性存储器414已经写入目标数据,通过RDMA SEND接口使第一网卡411向客户端发送第一响应。
以及,在传统NOF协议中,第一网卡411还用于接收来自第二装置的该完成指令,将该完成指令存储至该第一内存413的RDMA缓冲区中的接收队列432,在第一内存413的NVMe缓冲区的完成队列422中写入该完成指令对应的CQE。第一处理器412还用于轮询到该完成指令对应的CQE时,解析该完成指令,释放用于存储目标数据的第一内存413中的存储空间。
在本申请实施例提供的存储装置中,首先,第一网卡411用于接收来自第二装置的写入请求,该写入请求包括目标数据。因此,该方案适用于写入指令中包括目标数据(in-capsule data)的场景,可以减少服务端与客户端的网络交互次数,减少时延。其次,本方案使用通用网卡,硬件实现难度小。再者,第一网卡411用于基于该目标数据被存储至该第一内存413,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。第一网卡411无需在目标数据从第一内存413中写入第一非易失性存储器414之后,才发送写入响应。而是将第一装置的异步处理过程变为写入就返回的同步过程,旁路了第一处理器412的处理过程和第一非易失性存储器414落盘的过程,进一步节省第一处理器412的处理时延和非易失性存储器的落盘时延。并且,将目标数据的写入范围从第一非易失性存储器414,扩大至第一装置,从而可以通过第一网卡411与第二网卡311之间进行交互,无需第一处理器412第二次向第二装置发送响应,减少网络交互次数,节省处理器响应开销,减少处理器的处理任务,可以进一步提升第一装置的吞吐性能,提升交互效率。
在一种可能的实施例中,该第一内存413为持久内存,或者,该存储装置410还包括备用电池模块,该备用电池模块用于为该第一内存413供电。其中,持久内存可以是:使用持久内存介质的内存。第一装置还可以包括主电源,用于为第一装置供电。在本申请实施例提供的存储装置中,通过将第一内存413设置为持久内存,或者,通过该备用电池模块用于为该第一内存413供电,可以确保第一装置的主电源掉电时,第一内存413中存储的目标数据不丢失,提升数据可靠性。
可选的,第一网卡411还可以用于通过图11所示的路径,在第一内存413中注册存储空间,该存储空间用于存储该目标数据。在本申请实施例提供的存储装置中,通过注册存储空间,在软件上将内存的空间映射到持久内存的非易失空间,以保障目标数据的可靠性。
在一种可能的实施例中,该备用电池模块包括供电模块和第二非易失性存储器。该第一处理器412,用于在该供电模块为该第一内存413供电时,将该第一内存413的该目标数据存储至该第二非易失性存储器。该第一处理器412,还用于将该第二非易失性存储器中的该目标数据存储至该第一内存413。
其中,在第一装置的主电源掉电时,为避免第一内存413中的目标数据丢失,该供电模块为该第一内存413供电。图12为本申请实施例提供的供电模块为将第一内存413的目标数据存储至第二非易失性存储器的流程示意图,具体可以包括S410至S460。
S410:主电源掉电。
S420:供电模块检测主电源掉电,为第一内存413供电。可选的,供电模块还为第一装置中的其他器件供电。
S430:第一处理器412将耗电设备下电。其中,耗电设备可以包括:第一非易失性存储器414、主机中的硬盘、风扇等设备。
S440:第一处理器412将操作系统(operating system,OS)和软件挂住。第一处理器412将其缓存中的数据存储至第一内存413中。
S450:第一处理器412计算用于存储目标数据的存储空间的循环冗余校验码(cyclic redundancy check,CRC)。
S460:第一处理器412将目标数据和循环冗余校验码存储至第二非易失性存储器。其中,第一装置还包括只读存储器(read-only memory,ROM),该ROM中安装有基本输入输出系统(basic input output system,BIOS),第一处理器412基于BIOS执行步骤S430至S460。
图13为一种供电模块为将第二非易失性存储器中的目标数据存储至第一内存413的流程示意图,具体可以包括S501至S511。
S501:主电源复电,第一装置启动。
S502:第一处理器412检测主电源复电,初始化内存,上报第一内存413中的存储空间和除该存储空间以外的其他空间。
S503:第一处理器412检测是否有脏数据。若是,执行S504。若不是,执行S511。
S504:第一处理器412检测目标数据是否校验成功。若是,执行S505。若不是,执行S511。具体地,第一处理器412读取第二非易失性存储器中的目标数据并作CRC校验,检测是否校验成功。
S505:第一处理器412将第二非易失性存储器中的目标数据存储至第一内存413。
S506:第一处理器412清除脏数据。
S507:第一处理器412启动守护进程识别和重建RDMA队列。具体地,第一处理器412按照已有的标志位识别和重建RDMA缓冲区中的队列。
S508:第一处理器412检测第一非易失性存储器414是否为可用状态。若是,执行S509。若不是,执行S511。
S509:第一处理器412将第一内存413中的目标数据写入第一非易失性存储器414。
S510:第一处理器412将应用切换为可服务状态。具体地,在将全部目标数据写入第一非易失性存储器414后,第一处理器412将应用切换为可服务状态,第二装置可以再次向第一装置写入数据。
S511:第一处理器412判断启动失败。其中,第一处理器412基于BIOS执行步骤S502至S508,以及S511。
在本申请实施例提供的存储装置中,通过在该供电模块为该第一内存413供电时,将该第一内存413的该目标数据存储至该第二非易失性存储器,以及将该第二非易失性存储器中的该目标数据存储至该第一内存413,确保第一装置的主电源掉电时,第一内存413中存储的目标数据不丢失,提升数据可靠性。
在一种可能的实施例中,该第一处理器412,还用于向该第二装置发送第一信息,该第一信息用于指示该第一内存413为该持久内存,或者,该存储装置410包括该备用电池模块。该第二处理器312,还用于接收来自该第一装置的第一信息。
示例性的,第二装置可以采用传统NOF协议的数据写入路径,也可以采用本申请提供的技术方案的数据写入路径。在第一装置与第二装置进行每次数据写入前,第一装置需要与第二装置协商数据传输路径。图14为本申请实施例提供的协商数据传输路径的示意图,具体可以包括S610-S630。
S610:第二处理器312通过第一装置的互联网协议(internet protocol,IP)地址和端口(port),确定交互对象为第一装置,向第一装置发送交互确认信息。
S620:第一处理器412根据交互确认信息,向第二装置发送第一信息。第一信息可以是特殊字段L,特殊字段L中的预设比特(bit)位为真实(true)。该第一信息用于指示该第一内存413为该持久内存,或者,该存储装置410包括该备用电池模块,也就是,该第一信息用于指示第二装置可以确保在主电源掉电时,第一内存413中存储的目标数据不丢失。
S630:第二处理器312接收第一信息,根据该第一信息确定采用本申请提供的技术方案的数据写入路径与第一装置进行交互。第二处理器312向第一装置发送路径响应,以完成数据传输路径的协商。
在本申请实施例提供的存储装置中,第一处理器412用于向该第二装置发送第一信息,该第一信息用于指示该第一内存413为该持久内存,或者,该存储装置410包括该备用电池模块。如此,在第一装置可以确保主电源掉电、第一内存413中存储的目标数据不丢失时,第二装置和第一装置采用本申请提供的技术方案的数据写入路径,能提升数据可靠性,以及可以减少时延、提升第一装置的吞吐性能、提升交互效率。
在另一种可能的实施例中,第二装置还可以用于向第三装置写入目标数据。第三装置的处理器用于根据交互确认信息,向第二装置发送第二信息。第二信息可以是特殊字段L,特殊字段L中的预设比特(bit)位为虚假(false)。该第二信息用于指示该第三装置的内存不为持久内存、且该第三装置的内存没有备用电池模块,也就是,该第三装置不能确保在主电源掉电时,第三装置的内存中存储的目标数据不丢失。第二处理器312用于接收第二信息,根据该第二信息确定采用传统NOF协议的数据写入路径与第三装置进行交互。第二处理器312还用于向第三装置发送路径响应,以完成数据传输路径的协商。
在本申请实施例提供的存储装置中,第二处理器312还用于接收第二信息,该第二信息用于指示该第三装置的内存不为持久内存、且该第三装置的内存没有备用电池模块。在第三装置不能确保主电源掉电、第一内存413中存储的目标数据不丢失时,第二装置和第三装置采用传统NOF协议的的数据写入路径。因此,本申请实施例提供的存储装置可以兼容传统NOF协议。第二装置可以根据交互对象的硬件选择适合的数据传输路径,更加灵活。
在一种可能的实施例中,该第一处理器412上安装有存储性能开发工具包,该第一处理器412,具体用于基于该存储性能开发工具包,将该第一内存413中的该目标数据写入该第一非易失性存储器414。可选的,第二处理器312上安装有存储性能开发工具包,第二处理器312用于基于该存储性能开发工具包,执行上述实施例中的步骤。
示例性的,可以通过spdk中的输入输出验证工具example/perf开发本申请实施例提供的技术方案对应的软件。图15为本申请实施例提供的一种数据传输示意图。客户端的应用(application,APP)调用spdk写入接口,将写入请求通过存储装置310的RDMA接口(如RoCE接口)发送到服务端。服务端的RDMA接口(如RoCE接口)接收写入请求,将目标数据存储至持久内存。第一处理器412基于spdk解析写入请求,生成NVMe指令,将该第一内存413中的目标数据写入第一非易失性存储器414(如NVMe SSD)。服务端的第一处理器412向客户端发送第一响应。客户端基于第一响应结束对目标数据的写入,清除动态随机存取内存中的目标数据。客户端的RoCE接口与服务端的RoCE接口间通过RDMA网络互连。
其中,目标数据的I/O模型可以是:输入/输出(input/output,I/O)块大小为4K,客户端的I/O队列深度(iodepth)为1。NOF协议中的网络数据发送采用in-capsule data的方式,将数据包含在RDMA_SEND capsule中一起发送到服务端。
在spdk客户端的函数接口nvme_rdma_cq_process_completions()中,每次进入会通过ibv_poll_cq轮询CQ中待处理的CQE。在经典NOF协议中,在收到类型为RDMA_WR_TYPE_SEND的CQE(第二相应响应的CQE)时不做处理。而在收到类型为RDMA_WR_TYPE_RECV的CQE(第一响应对应的CQE)时,结束当次I/O,并调用回调函数的函数指针(callback,cb)执行下一次I/O的发送。本申请实施例提供的技术方案更改了处理逻辑,在收到类型为RDMA_WR_TYPE_SEND的CQE时,结束当次I/O,并调用回调函数的函数指针cb执行下一次I/O的发送,不存在类型为RDMA_WR_TYPE_RECV的CQE等后续流程。
在本申请实施例提供的存储装置中,该第一处理器412,具体用于基于该存储性能开发工具包,将该第一内存413中的该目标数据写入该第一非易失性存储器414,可以减少时延、提升第一装置的吞吐性能、提升交互效率。
图16为本申请实施例提供的一种存储方法的流程示意图。可应用于包括第一内存和第一非易失性存储器的存储装置,该方法包括步骤S710至S730。
S710:接收来自第二装置的写入请求,该写入请求包括目标数据。
S720:将该目标数据存储至该第一内存,基于该目标数据被存储至该第一内存,向该第二装置发送第一响应,该第一响应用于指示结束对该目标数据的写入。
S730:将该第一内存中的该目标数据写入该第一非易失性存储器。
在一种可能的实施例中,该第一内存为持久内存,或者,该存储装置还包括备用电池模块,该方法还包括:该备用电池模块为该第一内存供电。
在一种可能的实施例中,该备用电池模块包括供电模块和第二非易失性存储器,该方法还包括:在该供电模块为该第一内存供电时,将该第一内存的该目标数据存储至该第二非易失性存储器。将该第二非易失性存储器中的该目标数据存储至该第一内存。
在一种可能的实施例中,该方法还包括:向该第二装置发送第一信息,该第一信息用于指示该第一内存为该持久内存,或者,该存储装置包括该备用电池模块。
在一种可能的实施例中,该将该第一内存中的该目标数据写入该第一非易失性存储器,包括:基于存储性能开发工具包将该第一内存中的该目标数据写入该第一非易失性存储器。
在一种可能的实施例中,该第一非易失性存储器包括NVMe SSD。
本申请实施例提供的存储方法可以应用于上述存储装置410,从而实现上述存储装置410的功能和效果,由于在前述的存储装置410实施例中,已经进行了详细说明,在此不再赘述。
图17为本申请实施例提供的另一种存储方法的流程示意图。该方法包括步骤S810和S820。
S810:向第一装置发送写入请求,该写入请求包括目标数据。
S820:接收来自该第一装置的第一响应,该第一响应用于指示结束对该目标数据的写入。
在一种可能的实施例中,该方法还包括:接收来自该第一装置的第一信息,该第一信息用于指示该第一装置的第一内存为持久内存,或者,该第一装置包括用于为该第一装置的第一内存供电的备用电池模块。
本申请实施例提供的存储方法可以应用于上述存储装置310,从而实现上述存储装置310的功能和效果,由于在前述的存储装置310实施例中,已经进行了详细说明,在此不再赘述。
图18为本申请实施例提供的一种电子设备的结构示意图。该电子设备500可以包括图8中的存储装置410。可选的,该电子设备500可以包括主机510,存储装置410与主机510耦合。
示例性的,第一处理器412用于对该设备的动作进行控制管理。在一种可能的实施例中,第一处理器412可用于支持该设备执行上述方法实施例的一个或多个步骤、以及本文所描述的其它技术过程。第一网卡用于支持该设备进行通信,比如支持该设备与第二装置进行通信。在本申请实施例中,第一处理器412可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。该第一处理器412也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
可以理解的是,上述电子设备500的各组成部分可以分别用于实现前述装置实施例中的相应的用途,由于在前述存储装置410实施例中,已经对各用途进行了详细说明,在此不再赘述。
图19为本申请实施例提供的另一种电子设备的结构示意图。该电子设备600可以包括图9中的存储装置310。可选的,该电子设备600可以包括主机610,存储装置310与主机610耦合。
示例性的,第二处理器312用于对该设备的动作进行控制管理。在一种可能的实施例中,第二处理器312可用于支持该设备执行上述方法实施例的一个或多个步骤、以及本文所描述的其它技术过程。第二网卡用于支持该设备进行通信,比如支持该设备与第一装置进行通信。在本申请实施例中,第二处理器312可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。该第二处理器312也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
可以理解的是,上述电子设备600的各组成部分可以分别用于实现前述装置实施例中的相应的用途,由于在前述存储装置310实施例中,已经对各用途进行了详细说明,在此不再赘述。
图20为本申请实施例提供的一种存储系统的结构示意图。该存储系统包括图8中的存储装置310和图9中的存储装置410。由于在前述存储装置实施例中,已经对各部件进行了详细说明,在此不再赘述。
在本申请实施例的再一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现上述方法实施例中的S710至S730的步骤。
在本申请实施例的再一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现上述方法实施例中的S810和S820的步骤。
在本申请实施例的又一方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序(也可以称为代码,或指令),当该计算机程序被运行时,使得计算机执行上述方法实施例中的S710至S730的步骤。
在本申请实施例的又一方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序(也可以称为代码,或指令),当该计算机程序被运行时,使得计算机执行上述方法实施例中的S810和S820的步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种存储装置,其特征在于,所述装置包括:第一网卡、第一内存、第一处理器和第一非易失性存储器;
所述第一网卡,用于接收来自第二装置的写入请求,所述写入请求包括目标数据;
所述第一网卡,还用于将所述目标数据存储至所述第一内存,基于所述目标数据被存储至所述第一内存,向所述第二装置发送第一响应,所述第一响应用于指示结束对所述目标数据的写入;
所述第一处理器,用于将所述第一内存中的所述目标数据写入所述第一非易失性存储器。
2.根据权利要求1所述的装置,其特征在于,所述第一内存为持久内存,或者,所述存储装置还包括备用电池模块,所述备用电池模块用于为所述第一内存供电。
3.根据权利要求2所述的装置,其特征在于,所述备用电池模块包括供电模块和第二非易失性存储器;
所述第一处理器,用于在所述供电模块为所述第一内存供电时,将所述第一内存的所述目标数据存储至所述第二非易失性存储器;
所述第一处理器,还用于将所述第二非易失性存储器中的所述目标数据存储至所述第一内存。
4.根据权利要求2或3所述的装置,其特征在于,所述第一处理器,还用于向所述第二装置发送第一信息,所述第一信息用于指示所述第一内存为所述持久内存,或者,所述存储装置包括所述备用电池模块。
5.根据权利要求1至4任一项所述的装置,其特征在于,所述第一处理器上安装有存储性能开发工具包,所述第一处理器,具体用于:基于所述存储性能开发工具包将所述第一内存中的所述目标数据写入所述第一非易失性存储器。
6.根据权利要求1至5任一项所述的装置,其特征在于,所述第一非易失性存储器包括NVMe SSD。
7.一种存储装置,其特征在于,所述装置包括:第二网卡;
所述第二网卡,用于向第一装置发送写入请求,所述写入请求包括目标数据;
所述第二网卡,还用于接收来自所述第一装置的第一响应,所述第一响应为所述第二网卡在发送所述写入请求后,首次接收的来自所述第一装置的响应,所述第一响应用于指示结束对所述目标数据的写入。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:第二处理器;
所述第二处理器,用于接收来自所述第一装置的第一信息,所述第一信息用于指示所述第一装置的第一内存为持久内存,或者,所述第一装置包括用于为所述第一装置的第一内存供电的备用电池模块。
9.一种存储方法,其特征在于,应用于包括第一内存和第一非易失性存储器的存储装置,所述方法包括:
接收来自第二装置的写入请求,所述写入请求包括目标数据;
将所述目标数据存储至所述第一内存,基于所述目标数据被存储至所述第一内存,向所述第二装置发送第一响应,所述第一响应用于指示结束对所述目标数据的写入;
将所述第一内存中的所述目标数据写入所述第一非易失性存储器。
10.根据权利要求9所述的方法,其特征在于,所述第一内存为持久内存,或者,所述存储装置还包括备用电池模块,所述方法还包括:
所述备用电池模块为所述第一内存供电。
11.根据权利要求10所述的方法,其特征在于,所述备用电池模块包括供电模块和第二非易失性存储器,所述方法还包括:
在所述供电模块为所述第一内存供电时,将所述第一内存的所述目标数据存储至所述第二非易失性存储器;
将所述第二非易失性存储器中的所述目标数据存储至所述第一内存。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
向所述第二装置发送第一信息,所述第一信息用于指示所述第一内存为所述持久内存,或者,所述存储装置包括所述备用电池模块。
13.根据权利要求9至12任一项所述的方法,其特征在于,所述将所述第一内存中的所述目标数据写入所述第一非易失性存储器,包括:
基于存储性能开发工具包将所述第一内存中的所述目标数据写入所述第一非易失性存储器。
14.根据权利要求9至13任一项所述的方法,其特征在于,所述第一非易失性存储器包括NVMe SSD。
15.一种存储方法,其特征在于,所述方法包括:
向第一装置发送写入请求,所述写入请求包括目标数据;
接收来自所述第一装置的第一响应,所述第一响应用于指示结束对所述目标数据的写入。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
接收来自所述第一装置的第一信息,所述第一信息用于指示所述第一装置的第一内存为持久内存,或者,所述第一装置包括用于为所述第一装置的第一内存供电的备用电池模块。
17.一种电子设备,其特征在于,包括如权利要求1至6任一项所述的存储装置。
18.一种电子设备,其特征在于,包括如权利要求7或8所述的存储装置。
19.一种存储系统,其特征在于,包括如权利要求1至6任一项所述的存储装置和如权利要求7或8所述的存储装置。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如权利要求9至16任一项所述的存储方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310326133.7A CN118689783A (zh) | 2023-03-22 | 2023-03-22 | 存储装置、方法、设备和存储系统 |
PCT/CN2023/139962 WO2024193142A1 (zh) | 2023-03-22 | 2023-12-19 | 存储装置、方法、设备和存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310326133.7A CN118689783A (zh) | 2023-03-22 | 2023-03-22 | 存储装置、方法、设备和存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118689783A true CN118689783A (zh) | 2024-09-24 |
Family
ID=92773312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310326133.7A Pending CN118689783A (zh) | 2023-03-22 | 2023-03-22 | 存储装置、方法、设备和存储系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118689783A (zh) |
WO (1) | WO2024193142A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183801B (zh) * | 2007-12-07 | 2011-03-16 | 杭州华三通信技术有限公司 | 一种掉电保护方法、系统和装置 |
CN108701004B (zh) * | 2017-01-25 | 2024-06-14 | 华为技术有限公司 | 一种数据处理的系统、方法及对应装置 |
CN107908571B (zh) * | 2017-10-31 | 2021-04-20 | 成都华为技术有限公司 | 一种数据写入方法、闪存装置及存储设备 |
CN113010451B (zh) * | 2021-02-28 | 2023-06-09 | 新华三信息技术有限公司 | 内存模拟非易失性处理方法、装置、设备及可读存储介质 |
CN115270033A (zh) * | 2021-04-14 | 2022-11-01 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
CN115167784A (zh) * | 2022-09-05 | 2022-10-11 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
-
2023
- 2023-03-22 CN CN202310326133.7A patent/CN118689783A/zh active Pending
- 2023-12-19 WO PCT/CN2023/139962 patent/WO2024193142A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024193142A1 (zh) | 2024-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10372199B2 (en) | Apparatus for managing power and running and booting an inter-processor communication link between independently operable processors | |
CN114201421B (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
WO2019095655A1 (zh) | 一种数据交互方法和计算设备 | |
WO2018076793A1 (zh) | 一种NVMe数据读写方法及NVMe设备 | |
US9244881B2 (en) | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface | |
US20110004732A1 (en) | DMA in Distributed Shared Memory System | |
CN114546913B (zh) | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 | |
CN106662895B (zh) | 计算机设备和计算机设备数据读写的方法 | |
US12321635B2 (en) | Method for accessing solid state disk and storage device | |
EP3722963B1 (en) | System, apparatus and method for bulk register accesses in a processor | |
CN112291293A (zh) | 任务处理方法、相关设备及计算机存储介质 | |
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
WO2017101080A1 (zh) | 处理写请求的方法、处理器和计算机 | |
CN113971138A (zh) | 一种数据访问方法及相关设备 | |
US8279790B2 (en) | Packet buffering based at least in part upon packet receipt time interval weighted moving average | |
CN113746647B (zh) | 数据传输方法、节点、电子设备及可读存储介质 | |
CN118860507A (zh) | 业务交互系统、方法、存储介质、电子设备 | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
CN118626435A (zh) | Dpu芯片、基于dpu芯片的数据传输方法、电子设备及计算机存储介质 | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
WO2024193142A1 (zh) | 存储装置、方法、设备和存储系统 | |
CN108810087B (zh) | 一种存储服务器的连接方法、系统及设备 | |
CN108762666B (zh) | 一种存储系统的访问方法、系统、介质及设备 | |
CN118585121A (zh) | 一种内存盘的存储空间清零的方法、服务器和内存盘 | |
WO2025139182A1 (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 |