CN114691026A - 一种数据访问方法及相关设备 - Google Patents

一种数据访问方法及相关设备 Download PDF

Info

Publication number
CN114691026A
CN114691026A CN202011645307.9A CN202011645307A CN114691026A CN 114691026 A CN114691026 A CN 114691026A CN 202011645307 A CN202011645307 A CN 202011645307A CN 114691026 A CN114691026 A CN 114691026A
Authority
CN
China
Prior art keywords
access
access request
clients
client
network device
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
Application number
CN202011645307.9A
Other languages
English (en)
Inventor
閤先军
韩兆皎
余博伟
陈灿
谭春毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011645307.9A priority Critical patent/CN114691026A/zh
Priority to PCT/CN2021/142495 priority patent/WO2022143774A1/zh
Priority to JP2023540613A priority patent/JP2024501713A/ja
Priority to EP21914506.7A priority patent/EP4261671A4/en
Publication of CN114691026A publication Critical patent/CN114691026A/zh
Priority to US18/345,519 priority patent/US20230342087A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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 Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据访问方法及相关设备。其中,该方法包括:通过网络设备接收与所述网络设备连接的多个客户端发送的访问请求,并将所述访问请求发送至存储单元的一个访问队列;利用所述存储单元执行所述访问队列中的访问请求,并返回所述多个客户端的访问请求的处理结果;通过所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。上述方法能够利用一个访问队列处理多个客户端发送的访问请求,实现了一个访问队列对应多个客户端,突破了访问队列的固有数量限制,支持大规模组网连接,扩展了适用场景。

Description

一种数据访问方法及相关设备
技术领域
本发明涉及存储技术领域,尤其涉及一种数据访问方法及相关设备。
背景技术
随着近年来大数据、云计算以及人工智能等计算机信息技术的快速发展,全球互联网数据规模呈指数级增长,众多高并发、低时延应用对高性能硬件的需求催生了高性能存储器的出现。对于高性能存储器而言,由于其I/O吞吐能力强大,分布式文件系统需要分配较多的计算资源以完成数据处理与数据交换,从而导致系统的传输时延增加,限制了网络传输能力和系统性能。为了解决这个问题,远程直接内存访问(remote direct memoryaccess,RDMA)应运而生,RDMA是一种直接进行远程内存存取的技术,即可以直接将数据从一个系统快速迁移到另一个远程系统存储器中,而不对操作系统造成任何影响,减少了中央处理器(central processing unit,CPU)参与数据传输过程的消耗,解放了内存带宽,进而提升了系统处理业务的性能,具有高带宽、低时延及低CPU占用率的特点。
目前使用RDMA在读写数据时,主机的网络设备首先通过RDMA操作将数据写入到存储设备的内存,存储设备中的CPU需要将内存中的数据再存储至持久性的存储介质,例如固态硬盘(solid state disk,SSD)中。而通过CPU将内存中的数据存储至持久性的存储介质需要消耗CPU资源,从而影响主机与存储设备之间的通信,此外,由于SSD的提交队列(submission queue,SQ)和完成队列(completion queue,CQ)资源有限,导致存储设备只能支持少量的网络设备连接,无法支持大规模网络设备连接。
因此,如何实现在大规模组网连接的场景下,主机的网络设备直接将数据存储至持久性的存储介质,减少对存储设备的CPU占用是目前亟待解决的问题。
发明内容
本发明实施例公开了一种数据访问方法及相关设备,能够在大规模组网连接下直接将数据进行持久化存储,减少对存储设备的CPU占用,扩展适用场景。
第一方面,本申请提供了一种存储设备,包括:网络设备和存储单元,所述存储单元通过所述网络设备连接至多个客户端,所述网络设备用于将所述多个客户端的访问请求发送至所述存储单元的一个访问队列;所述存储单元用于执行所述访问队列中的访问请求,并返回所述访问请求的处理结果;所述网络设备还用于将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
可选的,网络设备可以是支持远程直接内存访问的网络接口控制器RNIC、现场可编程门阵列(field programmable gate array,FPGA)、专用集成电路(applicationspecific integrated circuit,ASIC)芯片等。
在本申请提供的方案中,网络设备将多个客户端的访问请求发送给一个访问队列进行处理,并将访问请求的处理结果返回给对应的客户端,实现了一个访问队列对应多个客户端,突破了访问队列的固有数量限制,能够支持大规模组网连接,扩展了适用场景。
结合第一方面,在第一方面一种可能的实现方式中,网络设备中存储有所述多个客户端的信息与所述访问队列的对应关系,所述网络设备用于将所述多个客户端的访问请求通过所述对应关系发送至所述存储单元的所述访问队列。
在本申请提供的方案中,网络设备预先存储了客户端的信息与访问队列的对应关系,并通过该对应关系将多个客户端的访问请求发送至一个访问队列,实现了一个访问队列可以处理多个客户端的请求,从而保证存储设备能够支持大规模组网连接。
结合第一方面,在第一方面一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;将所述连接信息及所述访问请求发送至所述访问队列;所述存储单元在返回所述访问请求的处理结果的同时,返回所述连接信息;所述网络设备根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
在本申请提供的方案中,网络设备通过将连接信息以及访问请求同时发送至访问队列,从而对多个客户端进行准确区分,并在存储单元返回处理结果的同时返回所述连接信息,根据返回的连接信息确定所述访问请求对应的客户端,从而实现了在大规模组网连接时,多个客户端同时对应一个访问队列时,可以准确的对多个客户端进行区分并返回处理结果,有效扩展了适用场景。
结合第一方面,在第一方面一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系;将所述访问请求中携带的客户端标识替换为本地标识;将所述访问请求发送至所述连接信息对应的访问队列中;所述网络设备接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息,并将所述处理结果返回给所述连接信息对应的客户端。
应理解,客户端标识是由客户端自己定义的,可能存在不同的客户端所定义的客户端标识是相同的情况,因此通过客户端标识不能准确对各个客户端进行区分,本地标识是由网络设备对每个客户端的客户端标识进行转换得到的,具有唯一性,每个客户端对应的本地标识都不一样,所以通过本地标识可以准确的对各个客户端进行区分。
在本申请提供的方案中,网络设备为访问请求中的客户端标识分配一个本地标识,用以唯一标识该客户端,然后建立客户端标识、本地标识以及与所述客户端对应的连接信息的对应关系,从而避免了在不同客户端所定义的客户端标识相同时无法区分的情况,能够对多个客户端进行准确区分,并在存储单元返回处理结果之后,根据本地标识确定所述客户端对应的连接信息,从而实现了在大规模组网连接时,多个客户端同时对应一个访问队列时,可以准确的对多个客户端进行区分并返回处理结果,有效扩展了适用场景。
结合第一方面,在第一方面一种可能的实现方式中,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
第二方面,本申请提供了一种数据访问方法,所述方法包括:网络设备接收与所述网络设备连接的多个客户端发送的访问请求,并将所述访问请求发送至存储单元的一个访问队列;所述网络设备接收所述存储单元执行所述访问队列中的访问请求后返回的所述访问请求的处理结果;所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
结合第二方面,在第二方面的一种可能的实现方式中,所述网络设备中存储有所述多个客户端的信息与所述访问队列的对应关系,所述网络设备根据所述映射关系将所述多个客户端的访问请求发送至所述存储单元的所述访问队列。
结合第二方面,在第二方面的一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备将所述多个客户端的访问请求发送至所述存储单元的一个访问队列,包括:在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;将所述连接信息及所述访问请求发送至所述访问队列;所述处理单元返回的所述处理结果包括所述连接信息,所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端,包括:所述网络设备根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
结合第二方面,在第二方面的一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备将所述多个客户端的访问请求发送至所述存储单元的一个访问队列,包括:在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系;将所述访问请求中携带的客户端标识替换为本地标识;将所述访问请求发送至所述连接信息对应的访问队列中;所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端,包括:所述网络设备接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息,并将所述处理结果返回给所述连接信息对应的客户端。
结合第二方面,在第二方面的一种可能的实现方式中,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
第三方面,本申请提供了一种网络设备,包括:接收单元,用于接收与所述网络设备连接的多个客户端发送的访问请求;发送单元,用于将所述访问请求发送至存储单元的一个访问队列;所述接收单元,还用于接收所述存储单元执行所述访问队列中的访问请求后返回的所述访问请求的处理结果;所述发送单元,还用于将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
结合第三方面,在第三方面的一种可能的实现方式中,所述网络设备还包括存储单元,所述存储单元,用于存储所述多个客户端的信息与所述访问队列的对应关系,所述发送单元,具体用于:根据所述映射关系将所述多个客户端的访问请求发送至所述存储单元的所述访问队列。
结合第三方面,在第三方面的一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备还包括处理单元,所述处理单元,用于在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;所述发送单元,具体用于将所述连接信息及所述访问请求发送至所述访问队列;所述发送单元,还用于根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
结合第三方面,在第三方面的一种可能的实现方式中,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备还包括处理单元,所述处理单元,用于在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系,将所述访问请求中携带的客户端标识替换为本地标识;所述发送单元,具体用于将所述访问请求发送至所述连接信息对应的访问队列中;所述处理单元,还用于在接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息;所述发送单元,还用于根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
结合第三方面,在第三方面的一种可能的实现方式中,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
第四方面,本申请提供了一种计算设备,所述计算设备包括处理器和存储器,所述处理器和所述存储器通过内部总线相连,所述存储器中存储有指令,所述处理器调用所述存储器中的指令以执行上述第而方面以及结合上述第二方面中的任意一种实现方式所提供的数据访问的方法。
第五方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的数据访问方法的流程。
第六方面,本申请提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的数据访问方法的流程。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据写入固态硬盘的示意图;
图2是本申请实施例提供的另一种数据写入固态硬盘的示意图;
图3是本申请实施例提供的一种系统架构的示意图;
图4是本申请实施例提供的一种连接建立方法的流程示意图;
图5是本申请实施例提供的一种数据写入方法的流程示意图;
图6是本申请实施例提供的一种提交队列描述结构格式示意图;
图7是本申请实施例提供的一种数据读取方法的流程示意图;
图8是本申请实施例提供的另一种数据写入方法的流程示意图;
图9是本申请实施例提供的另一种数据读取方法的流程示意图;
图10是本申请实施例提供的一种网络设备的结构示意图;
图11是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
主机又可以称为客户端,具体可以包括物理机、虚拟机、容器等,用于产生或消费数据,例如应用服务器、分布式文件系统服务器等。
主机的网络设备为主机用于数据通信的设备,具体可以包括网络接口控制器(network interface controller,NIC)、RNIC等。
主机的访问请求主要包括数据读写操作,即主机将产生的数据写入到存储设备的存储单元中,或者从存储设备的存储单元中读取数据。
存储设备又可以称为服务端,具体可以包括外置集中式存储或分布式存储等形态的能够存储数据的设备,例如存储服务器、分布式数据库服务器等。
存储设备的网络设备为存储设备用于数据通信的设备,具体可以包括NIC、RNIC等,存储设备的存储单元为存储设备用于进行数据持久化存储的设备,例如SSD等。
固态存储(SSD)的提交队列(submission queue,SQ)和门铃(doorbell):在存储设备中,存储设备的CPU和SSD通过NVMe协议通信,在存储设备启动时的初始化阶段,存储设备的CPU会通过所述NVMe协议在所述存储设备的内存中为所述SSD建立提交队列(submissionqueue,SQ)和完成队列(completion queue,CQ),在SSD中创建门铃,CPU把发送给SSD的命令存储在SQ中,并将所述命令在所述SQ的位置写在所述门铃中,并通过所述SSD从所述SQ中获取命令执行,当所述SSD执行完一个命令后,将执行完的命令的信息存储在所述完成队列中,CPU通过读取所述完成队列中的执行完的命令的信息,即可确定执行完成的命令,并将执行完成的命令从所述发送队列中删除。
RDMA通信协议是一种用于进行RDMA操作的计算设备所遵循的一套协议规范,目前有三种支持RDMA的通信协议,分别是无限带宽(infiniBand,IB)协议、以太网(RDMA overconverged ethernet,RoCE)协议、因特网广域(internet wide area RDMA protocal,IWARP)协议,这三种协议都可以使用同一套API来使用,但它们有着不同的物理层和链路层。在主机设备与存储设备之间通过RDMA进行通信时,会在主机的网卡中创建发送队列(send queue,SQ),相应的会在存储设备的网卡中创建与该发送队列相对应的接收队列(receive queue,RQ),发送队列和接收队列形成队列对(queue pair,QP),将所述队列的地址映射给应用的虚拟地址,应用即可直接通过所述QP将数据传输至所述存储设备的网卡中,进而可以将数据存储于存储设备的内存中。
目前在主机通过RDMA传输数据的时候,会首先将数据传输至存储设备的内存中,然后通过存储设备的CPU将数据从内存搬移至SSD。如图1所示,其示出了一种数据写入场景示意图,主机110中的网络设备1110首先通过RDMA操作将数据写入到存储设备120的网络设备(即RNIC1240中),然后RNIC1240在CPU1210中的RNIC驱动1211协助下将数据写入到内存1220中,存储设备120中的存储软件1212通过事件或中断的方式感知到数据被写入到内存1220中,之后CPU1210通过SSD驱动1213控制SSD1230将数据从内存1220搬移至SSD1230中进行持久化存储,SSD1230在完成对数据持久化存储之后,通过中断的方式告知存储软件1212,最后CPU1210通过RNIC1240向主机110返回写完成通知消息。
由于在对数据进行持久化存储时,需要CPU(包括RNIC驱动、存储软件和SSD驱动)的参与才能完成整个存储过程,这样将消耗大量CPU资源。
为了减少对CPU的占用,降低处理时延,将数据直接写入到SSD中,可以利用SSD的SQ地址和主机与存储设备之间的QP进行一一绑定从而实现。如图2所示,其示出了另一种数据写入场景示意图,应用服务器210、应用服务器220、应用服务器230通过RDMA网络与存储服务器240进行连接,每个应用服务器的结构都是类似的,以应用服务器210为例,应用服务器210包括CPU211和内存212,并连接有RNIC213;存储服务器240包括CPU241和内存242,并连接有RNIC243和持久化存储介质,这里以SSD244为例进行说明,应理解,持久化存储介质包括但不限于SSD244。每一个应用服务器与存储服务器连接形成一个QP,因此存储服务器240的内存242中存在多个QP,例如QP1、QP2和QP3,每一个QP对应存储服务器240和一个应用服务器的连接,此外,SSD244中包括多个SQ和CQ,其最大数量可支持到64k,但基于内存和性能考虑,目前典型选用256个。以应用服务器210为例说明SQ和QP的具体绑定过程,应用服务器210将数据通信需要的内存212注册给RNIC213,存储服务器240将数据通信需要的内存242注册给RNIC243,以使得RNIC213和RNIC243可以通过RDMA方式操作内存242和内存212,同时存储服务器240将SSD244的SQ与所保存的QP进行一一绑定,例如将与应用服务器210连接的QP1与SQ1进行绑定,然后对SQ1的地址进行映射,并将映射后得到的虚拟地址注册给RNIC243,RNIC243将SQ1地址通过RDMA连接发送给RNIC213,以使得RNIC213可以直接远程操作SSD244的SQ1地址。在数据写入时,应用服务器210通过CPU211产生数据并将产生的数据存储至内存212中,然后通过RNIC213将数据写入存储服务器240的内存242中,并根据SSD244的SQ地址通知SSD244将内存242中的数据搬移至SSD244中进行持久化存储,若其它应用服务器需要向存储服务器240写入数据,其过程与上述类似,在此不再赘述。
需要说明的是,上述方案通过将QP与SSD中的SQ进行一一绑定,能够绕过存储服务器的CPU和软件参与,直接将数据写入SSD中,但是受限于SSD中的SQ数量,当连接数量过多时,上述方案将不再适用,即无法支持大规模组网场景。
基于上述,本申请提供了一种数据访问方法,在存储设备的连接数量远远超过SSD所支持的SQ数量时,通过扩展SSD的提交队列描述结构格式(SQE)或对应用服务器的客户端标识进行转换,以使得存储设备可以将多个客户端的访问请求发送至存储单元的一个访问队列,即存储设备的多个连接可以绑定至一个SQ,从而支持大规模组网连接,扩展了适用场景。
本申请实施例的技术方案可以应用于任何需要远程访问持久性存储介质的系统中,尤其是连接数较多的大规模组网场景,例如,分布式存储、高性能计算(highperformance computing,HPC)等。例如,在分布式存储中,存储设备将同时连接大量的应用服务器,存储设备需要支持每个应用服务器直接访问SSD时,分布式存储系统中可使用本申请实施例提供的数据访问方法,从而可以解决数据在进行读写时存在的带宽瓶颈,提高数据读写效率。
图3示出了本申请实施例的一种系统架构的示意图。如图3所示,该系统300包括:应用服务器310、应用服务器320、应用服务器330和存储服务器340,应用服务器310、应用服务器320和应用服务器330通过RDMA网络与存储服务器220进行连接,应用服务器310包括CPU311和内存312,并连接有RNIC213,应用服务器320和应用服务器330的结构与应用服务器310类似;存储服务器340包括CPU341和内存342,并连接有RNIC343和存储单元,这里以SSD344为例进行说明,应理解,存储单元包括但不限于SSD344。由于应用服务器310、应用服务器320和应用服务器330同时与存储服务器340连接,所以存储服务器340的内存342中存在三个QP,即QP1、QP2和QP3,存储服务器240将QP1和QP2与SQ1进行绑定,将QP3与SQ2进行绑定。在完成上述流程之后,可以进一步进行数据的读写操作,例如以应用服务器310向存储服务器340写入数据为例,应用服务器310通过CPU311产生数据并将产生的数据存储至内存312中,然后通过RNIC313将数据以及数据描述信息写入存储服务器340的内存242中,其中,数据描述信息包括数据在内存242中的起始地址、数据长度、操作类型等,为与NVMe协议进行兼容和匹配,数据描述信息的大小优选为64字节,存储服务器340在接收到应用服务器310写入的数据之后,RNIC343根据预先设定的绑定关系,确定与应用服务器310连接QP1对应的SQ为SQ1,应用服务器340根据数据描述信息,填充SQ1对应的提交队列描述结构格式(SQE)字段,并利用该SQE中的保留(reserved)字段保存QP编号(QP number,QPN),即QP1对应的编号,或者是,将数据描述信息中携带的客户端标识转换为本地标识,并将其保存在SQE中,然后通知SSD344将内存342中的数据搬移至SSD344中进行持久化存储,SSD344在完成存储之后,将QPN信息拷贝到CQ的CQE内,存储服务器340根据CQE确定相应的QPN,或者是,存储服务器340根据CQE中的本地标识确定对应的客户端标识及相应的QPN,进而根据QPN找到对应的QP,然后通过该QP向应用服务器310回复写数据完成消息。
在本申请实施例中,RNIC313、RNIC323和RNI333可以是可编程RNIC,SSD344是可编程SSD,可以主动感知SQ的完成状态并主动上报,应用服务器310、应用服务器320、应用服务器330和存储服务器340包括物理机、虚拟机、容器等形态,可以部署在云环境上的一个或多个计算设备(例如中心服务器),或者边缘环境中的一个或多个计算设备(例如服务器)上。
可以看出,图3所示的数据访问系统与图2所示的数据访问系统相比,存储服务器可以将与多个应用服务器的连接(QP)同时绑定至同一个SQ,将多个应用服务器的访问请求发送至一个SQ,突破了SSD的SQ固有数量限制,能够支持大规模组网连接,扩展了适用场景。
结合图3所示的系统架构的示意图,下面将结合图4描述本申请实施例提供的数据访问方法。首先对数据访问之前的连接建立和内存注册过程进行描述,以应用服务器310与存储服务器340建立连接为例进行说明,其它应用服务器与应用服务器310类似,如图4所示,该流程包括:
S401:应用服务器310和存储服务器340建立RDMA连接。
可选的,应用服务器310和存储服务器340可以是基于IB、RoCE或IWARP任一个协议建立RDMA连接。
具体地,应用服务器310和存储服务器340将需要进行数据通信的内存地址(可以是连续的虚拟内存或者连续的物理内存空间)进行注册,提供给网络设备作为虚拟的连续缓冲区,缓冲区使用虚拟地址,为了便于理解和叙述,本申请实施例中以网络设备为RNIC为例进行说明,在后续描述中不再做进一步区分。例如,应用服务器310将内存312注册给RNIC313,存储服务器340将内存342注册给RNIC343。应理解,在注册时,应用服务器310和存储服务器340的操作系统会检查被注册块的许可,注册进程将需要被注册的内存的虚拟地址与物理地址的映射表写入RNIC,此外,在注册内存时,对应内存区域的权限将会被设定,权限包括本地写、远程读、远程写等。注册后内存注册进程锁定了内存页,为了防止内存页被替换出去,注册进程需要同时保持物理和虚拟内存的映射。
可选的,应用服务器310和存储服务器340在进行内存注册时,可以将自身所有的内存进行注册,或者是随机选取部分内存进行注册,在进行注册时,将需要注册的内存的起始地址和数据长度提供给RNIC,以使得RNIC可以确定需要注册的内存。
值得说明的是,每个内存注册都会对应生成一个远程标识(key)和一个本地标识,远程标识用于远端主机访问本地内存,本地标识用于本地主机访问本地内存。例如,在接收数据操作的期间,存储服务器340将内存注册产生的远程标识提供给应用服务器310,以使得应用服务器310在RDMA操作期间可以远程访问存储服务器340的系统内存342。另外,同一内存缓冲区可以被多次注册(甚至设置不同的操作权限),并且每次注册都会生成不同的标识。
进一步的,应用服务器和存储服务器在建立RDMA连接的过程中将会协商创建QP,在创建QP时将会创建关联的发送队列SQ和接收队列RQ,在创建完成之后,应用服务器310和存储服务器340可以利用QP进行通信。
可以理解,在应用服务器310和存储服务器340建立RDMA连接之后,应用服务器310可以通过RDMA方式远程操作存储服务器340的内存342。
S402:存储服务器340对SSD344的SQ地址和doorbell地址进行映射并将其注册给RNIC343。
具体地,在存储服务器340的初始化阶段,存储服务器340在内存342中已经为SSD344建立了SQ,且在SSD344中建立了doorbell,以实现存储服务器340中的CPU341与SSD344进行通信。需要说明的是,该SQ地址和doorbell地址是内核态的内存地址空间中的地址,不能直接注册给RNIC343,需要将其转换为用户态的虚拟地址才能进行注册。
进一步的,存储服务器340将SSD的SQ地址和doorbell地址映射为逻辑连续的用户态虚拟地址,然后将映射得到的虚拟地址提供给存储服务器的RNIC343进行注册,其注册过程与上述内存注册过程类似,在此不再赘述。可选的,存储服务器340可以是以内存映射(memory mapping,MMAP)的方式完成映射过程,从而将SQ地址和doorbell地址映射为用户态的虚拟地址,保证可以与其进行正常通信。
S403:存储服务器340将QP与SSD344的SQ进行绑定。
具体地,SSD344在初始化阶段将会被分配多个SQ地址,存储服务器340的RNIC343和应用服务器310在内的多个应用服务器的RNIC在建立RDMA连接时也将会创建多个QP,存储服务器340中的管理软件将SQ地址和QP进行绑定,并将绑定关系发送给RNIC343进行保存。
需要说明的是,对于每一个应用服务器与存储服务器340的连接,存储服务器340可以通过编号等方式对其进行准确区分,即对于每一个QP,其存在唯一一个与之对应的QP编号(QP number,QPN)。
进一步的,存储服务器340将N个QP与一个SQ进行绑定以支持大规模组网连接,其中N的具体数值可以根据实际需要进行设置,例如可以设置为100,本申请对此不作限定。
可以看出,在存储服务器340将SQ地址和QP进行绑定之后,存储服务器340可以根据存储的绑定关系辨别与各个SQ地址对应的QP,进而可以区分不同的客户端或应用服务器。
可以理解,通过执行图4所示的方法流程,应用服务器310和存储服务器340可以成功建立RDMA连接并进行数据传输,应用服务器310可以远程操作存储服务器340的内存342,存储服务器340可以根据QP与SQ的绑定关系,将应用服务器310写入的数据进行持久化存储。
结合图3所示的系统架构以及图4所示的连接建立方法流程,下面将对数据写流程进行详细描述,以应用服务器310写入数据到存储服务器340为例,如图5所示,该流程包括:
S501:应用服务器310中的应用将待写入数据写入到本地内存中。
具体地,应用服务器310中的应用产生需要写入存储服务器340的SSD344的数据,然后将该数据首先保存在应用服务器310的内存312中。
S502:应用服务器310的RNIC313将待写入数据和待写入数据描述信息写入到存储服务器340的内存342中。
具体地,应用服务器310中的应用将RDMA请求发送到应用服务器310的RNIC313,该请求中包括待写入数据在内存312中的地址(例如包括起始地址和数据长度),然后RNIC313根据该请求从应用服务器310的内存312中取出待写入数据,并把待写入数据在存储服务器340中的地址(包括起始地址和数据长度)以及存储服务器340发送的操作该地址对应的内存的远程标识封装到专用报文,同时,将待写入数据描述信息也封装到该专用报文中,其中,待写入数据描述信息包括待写入数据在存储服务器340中的起始地址和数据长度以及数据操作类型(即数据写操作)等,然后将该专用报文通过QP发送至存储服务器340的RNIC343。存储服务器340的RNIC343接收到专用报文之后,根据报文中的远程标识确认应用服务器310是否具备操作存储服务器340的内存342的权限,在确认之后,将待写入数据写入到报文中的地址对应的内存中,并将待写入数据描述信息也写入内存342中。
S503:存储服务器340的RNIC343根据待写入数据对应的QP和待写入数据描述信息,填充SQ对应的SQE。
具体地,应用服务器310将待写入数据和待写入数据描述信息通过QP写入到存储服务器340的内存342之后,存储服务器340的RNIC343可以根据预先保存的绑定关系确定与该QP对应的SQ,每个SQ包含一个或多个SQE,每个SQE的格式都遵循NVMe协议规定,其大小为64字节,如图6所示,是一种SQE格式示意图,其包括具体命令字段、保留字段、SQ标识符字段、SQ头指针字段、状态字段、命令标识符字段等,存储服务器340的RNIC343根据待写入数据描述信息填充该SQ对应的SQE。
值得说明的是,存储服务器340的RNIC343在填充SQE时,将扩展SQE中的保留字段,利用保留字段保存该QP对应的QPN,以使得SQE携带QPN信息。
S504:存储服务器340的RNIC343将写数据通知信息写入到SSD344的doorbell地址中。
具体地,存储服务器340的RNIC343将写数据通知信息写入到SSD344的doorbell地址中,其中,写数据通知信息包括写入SQE的SQ地址,写数据通知信息用于通知SSD344去读取该SQ地址中的SQE。
S505:SSD344根据doorbell地址中的写数据通知信息,读取SQ地址中的SQE,并根据SQE中的内容将待写入数据从存储服务器340的内存342中搬移至SSD344。
具体地,SSD344在接收到写入doorbell地址中的写数据通知信息后被唤醒,然后读取写数据通知信息中包含的SQ地址中的SQE,确定是数据写操作,然后根据SQE中携带的地址从存储服务器340的内存342中找到待写入数据,并将待写入数据搬移至SSD344,完成持久化存储。
可以看出,待写入数据从存储服务器340的内存342搬移至SSD344不需要任何软件和CPU的参与,直接由SSD344完成,减少了对存储服务器340的CPU占用,且有效降低了成本。
S506:SSD344在完成数据持久化存储之后,将SQE中的QPN信息拷贝至CQ的CQE中,并通知RNIC343写命令完成。
具体地,在NVMe中,每一个SQ都有一个CQ与之对应,且每一个CQ包含一个或多个CQE,每个CQE的大小也为64字节,其格式与上述图6所示的SQE格式类似,SSD344在完成数据持久化存储之后,将SQE中的QPN字段拷贝至CQE中的保留字段,然后通知RNIC343写命令完成。
S507:存储服务器340的RNIC343根据CQE中的QPN信息确定与该QPN信息对应的QP,并利用该QP通知应用服务器310数据写完成。
具体地,RNIC343在接收到SSD344发送的写命令完成通知后,从CQ中读取CQE从而获得QPN信息,然后根据该QPN信息确定与之对应的QP,然后利用该QP通知应用服务器310数据写完成,从而完成整个数据写流程。
可以看出,在将待写入数据写入到SSD344的过程中,当存在多个QP时,通过将多个QP与一个SQ进行绑定,并利用SQE中的保留字段保存QPN,在完成数据写入之后,可以通过CQE中的QPN准确找到相应的QP,从而回复完成消息,可以有效支持大规模组网连接,扩展了适用场景。
图5所述的方法流程详细阐述了数据从应用服务器写入SSD的过程,相应的,应用服务器还可以从SSD中读取数据,下面将对数据读流程进行详细描述,如图7所示,该流程包括:
S701:应用服务器310的RNIC313将待读取数据描述信息写入到存储服务器340的内存342中。
具体地,应用服务器310中的应用产生数据读请求,然后将该数据读请求发送到应用服务器310的RNIC313,该读请求中包括待读取数据在SSD344中的地址(包括起始地址和数据长度)以及数据从SSD344读出之后存储于存储服务器340的内存342中的地址。
进一步的,应用服务器310的RNIC313利用保存的远程标识操作存储服务器340的内存342,将待读取数据描述信息写入到存储服务器340的内存342中,其中,待读取数据描述信息包括待读取数据在SSD344中的起始地址和地址长度、待读取数据需要存储于存储服务器340的内存342中的地址以及数据操作类型(即数据读操作)RNIC343根据待写入数据对应的QP和待写入数据描述信息,填充SQ对应的SQE。
S702:存储服务器340的RNIC343根据待读取数据对应的QP和待读取数据描述信息,填充SQ对应的SQE。
具体地,应用服务器310将待读取数据描述信息通过QP写入到存储服务器340的内存342之后,存储服务器340的RNIC343可以根据预先保存的绑定关系确定与该QP对应的SQ,存储服务器340的RNIC343根据待读取数据描述信息填充该SQ对应的SQE。
同理,存储服务器340的RNIC343在填充SQE时,将扩展SQE中的保留字段,利用保留字段保存该QP对应的QPN,以使得SQE携带QPN信息。
S703:存储服务器340的RNIC343将读数据通知信息写入到SSD344的doorbell地址中。
具体地,存储服务器340的RNIC343将读数据通知信息写入到SSD344的doorbell地址中,其中,读数据通知信息包括写入SQE的SQ地址,读数据通知信息用于通知SSD344去读取该SQ地址中的SQE。
S704:SSD344根据doorbell地址中的读数据通知信息,读取SQ地址中的SQE,并根据SQE中的内容将待读取数据从SSD344搬移至存储服务器340的内存342中。
具体地,SSD344在接收到写入doorbell地址中的读数据通知信息后被唤醒,然后读取读数据通知信息中包含的SQ地址中的SQE,确定是数据读操作,然后根据SQE中携带的地址从SSD344中取出数据,并将该数据搬移至存储服务器340对应的内存342中。
S705:SSD344在完成数据搬移之后,将SQE中的QPN信息拷贝至CQ的CQE中,并通知RNIC343读命令完成。
具体地,SSD344将数据搬移至存储服务器340的内存342中之后,将SQE中的QPN字段拷贝至CQE中的保留字段,然后通知RNIC343读命令完成。
S706:存储服务器340的RNIC343根据CQE中的QPN信息确定与该QPN信息对应的QP,利用该QP将待读取数据写入到应用服务器310的内存312中,并通知应用服务器310数据读完成。
具体地,RNIC343在接收到SSD344发送的读命令完成通知后,从CQ中读取CQE从而获得QPN信息,然后根据该QPN信息确定与之对应的QP,然后利用该QP将待读取数据写入到应用服务器310的内存312中,然后通知应用服务器310数据读完成,从而完成整个数据读流程。
需要说明的是,图7所示的方法实施例与图5所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
结合图3所示的系统架构以及图4所示的连接建立方法流程,下面将对另一种数据写入的方法进行详细描述,如图8所示,该流程包括:
S801:存储服务器340接收应用服务器写入内存342中的待写入数据和待写入数据描述信息。
具体地,与存储服务器340连接的各个应用服务器利用各自的QP将应用产生的数据及数据描述信息通过RNIC写入存储服务器340的内存342中,例如,应用服务器310利用QP1将待写入数据和待写入数据描述信息写入存储服务器340的内存342中、应用服务器320利用QP2将待写入数据和待写入数据描述信息写入存储服务器340的内存342中。其中,待写入数据描述信息包括待写入数据在存储服务器340中的起始地址和数据长度以及数据操作类型(即数据写操作)等。
需要说明的是,待写入数据描述信息中还携带着客户端标识(即cid),该客户端标识由每个应用服务器自己定义,因此,不同的应用服务器所定义的客户端标识可能相同,例如应用服务器310所定义的客户端标识为cid1,应用服务器320所定义的客户端标识也为cid1。
应理解,对于每一个应用服务器来说,其与存储服务器340的连接(QP)和自身所定义的客户端标识存在对应关系,即通过该客户端标识可以确定与之对应的QPN。
S802:存储服务器340的RNIC343将各个应用服务器的客户端标识转换为本地标识,并建立客户端标识与本地标识映射表。
具体地,由于客户端标识是由应用服务器自己定义的,可能存在相同的情况,因此通过客户端标识无法对不同的应用服务器进行准确区分。所以,存储服务器340的RNIC343需要将各个应用服务器的客户端标识转换为本地唯一标识,从而可以准确区分不同的应用服务器。
示例性的,应用服务器310写入内存342中的待写入数据描述信息中所携带的客户端标识为00000001,应用服务器320写入内存342中的待写入数据描述信息中所携带的客户端标识也为00000001,应用服务器310写入内存342中的待写入数据描述信息中所携带的客户端标识为00000101,RNIC343对接收到的各个应用服务器所对应的客户端标识进行转换,将其转换为本地唯一标识,例如,将应用服务器310所对应的客户端标识转换为00000001,将应用服务器320所对应的客户端标识转换为00000010,将应用服务器330所对应的客户端标识转换为00000011,可以理解,在经过转换后,每个应用服务器所对应的标识是唯一的,可以利用转换后的本地标识对不同的应用服务器进行准确区分。
此外,RNIC343在完成标识转换之后,还将建立客户端标识与本地标识映射表,可选的,RNIC343可以利用哈希表记录客户端标识与本地标识的映射关系,在该哈希表中,其关键字(key)为本地标识,其值(value)为客户端标识以及与之对应的QPN,RNIC343可以通过该哈希表查询到各个应用服务器的客户端标识以及与之对应的本地标识。
S803:存储服务器340的RNIC343根据待写入数据描述信息,填充SQ对应的SQE。
具体地,存储服务器340在接收到各个应用服务器利用各自的QP将应用产生的数据及数据描述信息通过RNIC写入存储服务器340的内存342中之后,RNIC343可以根据预先保存的绑定关系确定各个QP对应的SQ,然后根据待写入数据描述信息填充SQ对应的SQE,值得说明的是,在填充SQE的过程中,对于SQE中的标识符字段,RNIC343将对其进行更改,将应用服务器所对应的本地标识填充至该字段中,例如,对于应用服务器320来说,RNIC343会将00000010填充至该字段中,而不是将00000001填充至该字段中。
S804:存储服务器340的RNIC343将写数据通知信息写入到SSD344的doorbell地址中。
具体地,RNIC343将写数据通知信息写入到SSD344的doorbell地址中,其中,写数据通知信息包括写入SQE的SQ地址,写数据通知信息用于通知SSD344去读取该SQ地址中的SQE。
S805:SSD344根据doorbell地址中的写数据通知信息,读取SQ地址中的SQE,并根据SQE中的内容将待写入数据从存储服务器340的内存342中搬移至SSD344。
具体地,SSD344在接收到写入doorbell地址中的写数据通知信息后被唤醒,然后读取写数据通知信息中包含的SQ地址中的SQE,确定是数据写操作,然后根据SQE中携带的地址从存储服务器340的内存342中找到待写入数据,并将待写入数据搬移至SSD344,完成持久化存储。
S806:SSD344在完成数据持久化存储之后,通知RNIC343写命令完成。
具体地,SSD344在完成数据持久化存储之后,在该SQ对应的CQ中填入CQE,CQE的格式与SQE格式一致,且CQE中也包含标识符字段,该字段保存了应用服务器对应的本地标识,然后通知RNIC343写命令完成。
S807:存储服务器340的RNIC343根据CQE中的本地标识,查询客户端标识与本地标识映射表,确定与该本地标识对应的客户端标识,从而确定与该客户端标识对应的QPN,并利用该QPN对应的QP通知应用服务器数据写完成。
具体地,RNIC343在接收到SSD344发送的写命令完成通知后,从CQ中读取CQE从而获得本地标识,然后根据该本地标识查询客户端标识与本地标识映射表,得到与该本地标识对应的客户端标识和QPN,然后根据该QPN确定相应的QP,最后利用该QP通知应用服务器数据写完成,从而完成整个数据写流程。
可以看出,在将待写入数据写入到SSD334的过程中,当存在多个应用服务器(即多个QP),且各个应用服务器所定义的客户端标识可能相同时,通过将多个QP与一个SQ进行绑定,并将各个QP对应的客户端标识转换为本地唯一标识,将转换后的本地标识保存至SQE中的标识符字段,在完成数据写入之后,可以根据CQE中的本地标识,通过查询客户端标识与本地标识映射表准确找到相应的客户端标识和QP,对不同应用服务器进行准确区分,从而向其回复完成消息。这样可以有效支持大规模组网连接,扩展了适用场景。
图8所述的方法流程详细阐述了数据从应用服务器写入SSD的过程,相应的,应用服务器还可以从SSD中读取数据,下面将对数据读流程进行详细描述,如图9所示,该流程包括:
S901:存储服务器340接收应用服务器写入内存342中的待读取数据描述信息。
具体地,应用服务器利用各自的QP将待读取数据描述信息通过RNIC写入存储服务器340的内存342中,其中,待读取数据描述信息包括待读取数据在SSD344中的起始地址和数据长度以及数据操作类型(即数据读操作)等,此外,待读取数据描述信息还携带着客户端标识。其具体过程可以参照上述S801中的相关描述,在此不再赘述。
S902:存储服务器340的RNIC343将各个应用服务器的客户端标识转换为本地标识,并建立客户端标识与本地标识映射表。
具体地,RNIC343在将各个应用服务器的客户端标识转换为本地唯一标识之后,可以利用哈希表记录客户端标识与本地标识的映射关系,其具体过程参照上述S802中的相关描述。
S903:存储服务器340的RNIC343根据待读取数据描述信息,填充SQ对应的SQE。
具体地,RNIC343根据预先保存的绑定关系确定各个QP对应的SQ,然后根据待读取数据描述信息填充SQ对应的SQE,并将转换后的应用服务器的本地标识填充至SQE中的标识符字段,其具体过程可以参照上述S803中的相关描述。
S904:存储服务器340的RNIC343将读数据通知信息写入到SSD344的doorbell地址中。
具体地,RNIC343将读数据通知信息写入到SSD344的doorbell地址中,其中,读数据通知信息包括写入SQE的SQ地址,读数据通知信息用于通知SSD344去读取该SQ地址中的SQE。
S905:SSD344根据doorbell地址中的读数据通知信息,读取SQ地址中的SQE,并根据SQE中的内容将待读取数据从SSD344搬移至存储服务器340的内存342中。
具体地,SSD344在接收到写入doorbell地址中的读数据通知信息后被唤醒,然后读取读数据通知信息中包含的SQ地址中的SQE,确定是数据读操作,然后根据SQE中携带的地址从SSD344中找到待读取数据,并将待读取数据搬移至存储服务器340的内存342中。
S906:SSD344在完成数据搬移之后,通知RNIC343读命令完成。
具体地,SSD344在完成数据搬移之后,在该SQ对应的CQ中填入CQE,CQE的格式与SQE格式一致,且CQE中也包含标识符字段,该字段保存了应用服务器对应的本地标识,然后通知RNIC343读命令完成。
S907:存储服务器340的RNIC343根据CQE中的本地标识,查询客户端标识与本地标识映射表,确定与该本地标识对应的客户端标识,从而确定与该客户端标识对应的QPN,并利用该QPN对应的QP将待读取数据写入到应用服务器的内存中,然后通知应用服务器数据读完成。
具体地,RNIC343在接收到SSD344发送的读命令完成通知后,从CQ中读取CQE从而获得本地标识,然后根据该本地标识查询客户端标识与本地标识映射表,得到与该本地标识对应的客户端标识和QPN,然后根据该QPN确定相应的QP,最后利用该QP将待读取数据写入到应用服务器的内存中,并通知应用服务器数据读完成,从而完成整个数据读流程。
应理解,图9所示的方法实施例与图5所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图10,图10是本申请实施例提供的一种网络设备的结构示意图。如图10所示,该网络设备10包括接收单元11和发送单元12。其中,
接收单元11,用于接收与所述网络设备10连接的多个客户端发送的访问请求;
发送单元12,用于将所述访问请求发送至存储单元的一个访问队列;
所述接收单元11,还用于接收所述存储单元执行所述访问队列中的访问请求后返回的所述多个客户端的访问请求的处理结果;
所述发送单元12,还用于将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
作为一个实施例,所述网络设备10还包括存储单元13,所述存储单元13,用于存储所述多个客户端的信息与所述访问队列的对应关系,所述发送单元12,具体用于:根据所述映射关系将所述多个客户端的访问请求发送至所述存储单元的所述访问队列。
作为一个实施例,所述访问请求包括数据描述信息,所述网络设备10还包括处理单元14,所述处理单元14,用于将所述数据描述信息填充至所述访问队列对应的SQE中,并将所述多个客户端对应的QPN信息保存至所述SQE的保留字段中。
作为一个实施例,所述处理单元14,还用于根据所述访问队列对应的完成队列所对应的CQE中的QPN信息确定与存储单元返回的访问请求的处理结果对应的客户端,所述CQE中的QPN信息为所述存储单元在执行所述访问队列中的访问请求后通过拷贝所述SQE中的QPN信息得到;所述发送单元12,具体用于:根据所述QPN信息对应的QP将所述处理结果返回给所述访问请求对应的客户端。
作为一个实施例,所述访问请求包括数据描述信息,所述数据描述信息携带客户端标识,所述处理单元14,还用于将所述客户端标识转换为本地标识,并建立所述客户端标识与所述本地标识映射表,其中,所述本地标识用于对所述多个客户端进行唯一标识。
作为一个实施例,所述处理单元14,还用于:将所述数据描述信息填充至所述访问队列对应的SQE中,其中,所述SQE中包括所述本地标识;根据所述访问队列对应的完成队列所对应的CQE中的本地标识,查询所述客户端标识与本地标识映射表,确定与所述本地标识对应的客户端标识及与存储单元返回的访问请求的处理结果对应的客户端;所述发送单元12,具体用于:根据所述客户端标识对应的QP将所述处理结果返回给所述访问请求对应的客户端。
应理解,上述网络设备的结构仅仅作为一种示例,不应构成具体的限定,可以根据需要对网络设备的各个单元进行增加、减少或合并。此外,网络设备中的各个单元的操作和/或功能分别为了实现上述图4、图5、图7、图8和图9所描述的方法的相应流程,为了简洁,在此不再赘述。
参见图11,图11是本申请实施例提供的一种计算设备的结构示意图。如图11所示,该计算设备20包括:处理器21、通信接口22以及存储器23,所述处理器21、通信接口22以及存储器23通过内部总线24相互连接。
所述计算设备20可以是图3中的网络设备。图3中的网络设备所执行的功能实际上是由所述网络设备的处理器21来执行。
所述处理器21可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
总线24可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线24可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。
存储器23可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器23也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器23还可以包括上述种类的组合。程序代码可以是用来实现网络设备10所示的功能单元,或者用于实现图4、图5、图7、图8和图9所示的方法实施例中以网络设备为执行主体的方法步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图10所描述的任意一个功能单元的功能。
本申请实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (17)

1.一种存储设备,其特征在于,包括:网络设备及存储单元,
所述存储单元通过所述网络设备连接至多个客户端,所述网络设备用于将所述多个客户端的访问请求发送至所述存储单元的一个访问队列;
所述存储单元用于执行所述访问队列中的访问请求,并返回所述访问请求的处理结果;
所述网络设备还用于将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
2.如权利要求1所述的存储设备,其特征在于,所述网络设备中存储有所述多个客户端的信息与所述访问队列的对应关系,所述网络设备用于将所述多个客户端的访问请求通过所述对应关系发送至所述存储单元的所述访问队列。
3.如权利要求1或2所述的存储设备,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备在用于将所述多个客户端的访问请求发送至所述存储单元的一个访问队列时,具体用于:
在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;
将所述连接信息及所述访问请求发送至所述访问队列;
所述存储单元在返回所述访问请求的处理结果的同时,返回所述连接信息;
所述网络设备根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
4.如权利要求1或2所述的存储设备,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备在用于将所述多个客户端的访问请求发送至所述存储单元的一个访问队列时,具体用于:
在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系;
将所述访问请求中携带的客户端标识替换为本地标识;
将所述访问请求发送至所述连接信息对应的访问队列中;
所述网络设备接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息,并将所述处理结果返回给所述连接信息对应的客户端。
5.如权利要求3或4所述的存储设备,其特征在于,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
6.一种数据访问方法,其特征在于,所述方法包括:
网络设备接收与所述网络设备连接的多个客户端发送的访问请求,并将所述访问请求发送至存储单元的一个访问队列;
所述网络设备接收所述存储单元执行所述访问队列中的访问请求后返回的所述访问请求的处理结果;
所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
7.如权利要求6所述的方法,其特征在于,所述网络设备中存储有所述多个客户端的信息与所述访问队列的对应关系,所述通过网络设备将所述多个客户端的访问请求发送至存储单元的一个访问队列,包括:
所述网络设备根据所述映射关系将所述多个客户端的访问请求发送至所述存储单元的所述访问队列。
8.如权利要求6或7所述的方法,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备将所述多个客户端的访问请求发送至所述存储单元的一个访问队列,包括:
在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;
将所述连接信息及所述访问请求发送至所述访问队列;
所述处理单元返回的所述处理结果包括所述连接信息,所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端,包括:
所述网络设备根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
9.如权利要求6或7所述的方法,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备将所述多个客户端的访问请求发送至所述存储单元的一个访问队列,包括:
在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系;
将所述访问请求中携带的客户端标识替换为本地标识;
将所述访问请求发送至所述连接信息对应的访问队列中;
所述网络设备将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端,包括:
所述网络设备接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息,并将所述处理结果返回给所述连接信息对应的客户端。
10.如权利要求8或9所述的方法,其特征在于,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
11.一种网络设备,其特征在于,包括:
接收单元,用于接收与所述网络设备连接的多个客户端发送的访问请求;
发送单元,用于将所述访问请求发送至存储单元的一个访问队列;
所述接收单元,还用于接收所述存储单元执行所述访问队列中的访问请求后返回的所述访问请求的处理结果;
所述发送单元,还用于将所述存储单元返回的访问请求的处理结果返回给所述访问请求对应的客户端。
12.如权利要求11所述的网络设备,其特征在于,所述网络设备还包括存储单元,
所述存储单元,用于存储所述多个客户端的信息与所述访问队列的对应关系,
所述发送单元,具体用于:
根据所述映射关系将所述多个客户端的访问请求发送至所述存储单元的所述访问队列。
13.如权利要求11或12所述的网络设备,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备还包括处理单元,
所述处理单元,用于在接收到所述多个客户端中的任意一个客户端的访问请求时,根据所述访问请求中携带的所述客户端对应的连接信息及所述对应关系确定所述访问队列;
所述发送单元,具体用于将所述连接信息及所述访问请求发送至所述访问队列;
所述发送单元,还用于根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
14.如权利要求11或12所述的网络设备,其特征在于,所述多个客户端的信息为所述多个客户端分别与所述网络设备建立连接时生成的连接信息,所述网络设备还包括处理单元,
所述处理单元,用于在接收到所述多个客户端中的任意一个客户端的访问请求时,为所述访问请求中携带的客户端标识分配一个本地标识,所述本地标识用于唯一标识所述客户端,并建立所述客户端标识、本地标识与所述客户端对应的连接信息的对应关系,将所述访问请求中携带的客户端标识替换为本地标识;
所述发送单元,具体用于将所述访问请求发送至所述连接信息对应的访问队列中;
所述处理单元,还用于在接收到所述存储单元返回的所述访问请求的处理结果时,从所述处理结果获取所述本地标识,根据所述本地标识确定所述客户端对应的连接信息;
所述发送单元,还用于根据所述连接信息确定所述访问请求对应的客户端,并将所述处理结果返回给所述访问请求对应的客户端。
15.如权利要求13或14所述的网络设备,其特征在于,所述多个客户端与所述网络设备建立的为远程直接内存访问RDMA连接,所述连接信息为建立RDMA连接时生成的队列对QP。
16.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述处理器执行所述存储器中存储的计算机指令,使得所述计算设备执行权利要求6-10任一项所述的方法。
17.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现权利要求6-10任一项所述的方法的功能。
CN202011645307.9A 2020-12-31 2020-12-31 一种数据访问方法及相关设备 Pending CN114691026A (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202011645307.9A CN114691026A (zh) 2020-12-31 2020-12-31 一种数据访问方法及相关设备
PCT/CN2021/142495 WO2022143774A1 (zh) 2020-12-31 2021-12-29 一种数据访问方法及相关设备
JP2023540613A JP2024501713A (ja) 2020-12-31 2021-12-29 データアクセス方法および関連デバイス
EP21914506.7A EP4261671A4 (en) 2020-12-31 2021-12-29 DATA ACCESS METHOD AND ASSOCIATED DEVICE
US18/345,519 US20230342087A1 (en) 2020-12-31 2023-06-30 Data Access Method and Related Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011645307.9A CN114691026A (zh) 2020-12-31 2020-12-31 一种数据访问方法及相关设备

Publications (1)

Publication Number Publication Date
CN114691026A true CN114691026A (zh) 2022-07-01

Family

ID=82135714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011645307.9A Pending CN114691026A (zh) 2020-12-31 2020-12-31 一种数据访问方法及相关设备

Country Status (5)

Country Link
US (1) US20230342087A1 (zh)
EP (1) EP4261671A4 (zh)
JP (1) JP2024501713A (zh)
CN (1) CN114691026A (zh)
WO (1) WO2022143774A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115861082A (zh) * 2023-03-03 2023-03-28 无锡沐创集成电路设计有限公司 一种低延时图片拼接系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216811A (zh) * 2007-01-05 2008-07-09 英业达股份有限公司 存储设备指定存取顺序的方法
US10360176B2 (en) * 2012-01-17 2019-07-23 Intel Corporation Techniques for command validation for access to a storage device by a remote client
US8595385B1 (en) * 2013-05-28 2013-11-26 DSSD, Inc. Method and system for submission queue acceleration
US10509592B1 (en) * 2016-07-26 2019-12-17 Pavilion Data Systems, Inc. Parallel data transfer for solid state drives using queue pair subsets
CN107818056B (zh) * 2016-09-14 2021-09-07 华为技术有限公司 一种队列管理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115861082A (zh) * 2023-03-03 2023-03-28 无锡沐创集成电路设计有限公司 一种低延时图片拼接系统及方法
CN115861082B (zh) * 2023-03-03 2023-04-28 无锡沐创集成电路设计有限公司 一种低延时图片拼接系统及方法

Also Published As

Publication number Publication date
US20230342087A1 (en) 2023-10-26
WO2022143774A1 (zh) 2022-07-07
JP2024501713A (ja) 2024-01-15
EP4261671A4 (en) 2024-05-29
EP4261671A1 (en) 2023-10-18

Similar Documents

Publication Publication Date Title
US10642777B2 (en) System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection
US11249834B2 (en) Storage system with coordinated recovery across multiple input-output journals of different types
CN109766199B (zh) 一种机器人操作系统中的节点通信方法和装置
US10466935B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
WO2022017475A1 (zh) 一种数据访问方法及相关设备
JP2014532210A (ja) Smb2スケールアウト
CN112579311B (zh) 访问固态硬盘的方法及存储设备
CN106936931B (zh) 分布式锁的实现方法、相关设备及系统
CN114201268B (zh) 一种数据处理方法、装置、设备及可读存储介质
WO2023093418A1 (zh) 数据迁移方法、装置及电子设备
WO2016086659A1 (zh) 一种业务消息的传输方法、装置及系统
CN111666184B (zh) 固态驱动器ssd硬盘测试方法、装置及电子设备
CN115080479B (zh) 传输方法、服务器、设备、裸金属实例及基板管理控制器
US20230342087A1 (en) Data Access Method and Related Device
CN104317716A (zh) 分布式节点间的数据传输方法及分布式节点设备
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN117453582A (zh) 数据传输方法、设备及存储介质
CN114490463A (zh) 一种保序执行写请求的方法及网络设备
CN105765542B (zh) 访问文件的方法、分布式存储系统和存储节点
CN110895517A (zh) 基于fpga的传输数据的方法、设备及系统
CN114327248A (zh) 存储节点、存储设备及网络芯片
CN113434290A (zh) 基于raft协议的数据处理方法和设备,及计算机存储介质
CN114911411A (zh) 一种数据存储方法、装置及网络设备
US20240069833A1 (en) Image forming apparatus, image forming method, and non-transitory computer readable medium
CN116662015A (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