CN106775434B - 一种NVMe网络化存储的实现方法、终端、服务器及系统 - Google Patents

一种NVMe网络化存储的实现方法、终端、服务器及系统 Download PDF

Info

Publication number
CN106775434B
CN106775434B CN201510812695.8A CN201510812695A CN106775434B CN 106775434 B CN106775434 B CN 106775434B CN 201510812695 A CN201510812695 A CN 201510812695A CN 106775434 B CN106775434 B CN 106775434B
Authority
CN
China
Prior art keywords
rdma
nvme
server
terminal
instruction
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.)
Active
Application number
CN201510812695.8A
Other languages
English (en)
Other versions
CN106775434A (zh
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 CN201510812695.8A priority Critical patent/CN106775434B/zh
Priority to EP19161342.1A priority patent/EP3570175B1/en
Priority to EP16865578.5A priority patent/EP3276481B1/en
Priority to PCT/CN2016/095694 priority patent/WO2017084400A1/zh
Publication of CN106775434A publication Critical patent/CN106775434A/zh
Priority to US15/802,690 priority patent/US10969983B2/en
Application granted granted Critical
Publication of CN106775434B publication Critical patent/CN106775434B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0656Data buffering arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

本发明涉及数据传输领域,具体涉及一种NVMe网络化存储的实现方法、终端、服务器及系统。本发明实施例方法包括:终端生成非易失性存储器NVMe指令;终端通过RDMA将NVMe指令发送至服务器的SQ;当NVMe指令中指示读取数据操作时,终端通过RDMA接收服务器发送的待读取数据;或,当NVMe指令中指示写入数据操作时,终端通过RDMA向服务器发送待写入数据;终端接收服务器通过RDMA发送的NVMe完成指令;终端将NVMe完成指令写入终端的CQ。本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

Description

一种NVMe网络化存储的实现方法、终端、服务器及系统
技术领域
本发明涉及数据传输领域,具体涉及一种NVMe网络化存储的实现方法、终端、及服务器及系统。
背景技术
传统的存储架构里,由于硬盘访问速度的局限,以往通用的串行接口(SerialAdvanced Technology Attachment,SATA)和串行连接小型计算机系统接口(SerialAttached Small Computer System Interface,SAS)接口完全能够满足硬盘的带宽需求,而面对闪存速度上百倍的提升,接口的带宽成为了输入输出端口(Input/Output,I/O)的最大瓶颈。AMD公司的Fusion-io的成功就直接源于其开发的专利PCIe(PeripheralComponent Interconnect Express,PCIe)闪存卡,可以加入到服务器中进而实现对应用的加速,并达到微秒级的低访问延迟,而SATA/SAS则无论如何无法达到这个水平。
因此在闪存时代,接口规范需要重大变革。从而针对PCIe接口制定的非易失性存储器(Non-volatile Memory Express,NVMe)标准由此应运而生。目前的NVMe是一个针对使用PCIe固态硬盘(Solid State Drives,SSD)的企业和普通客户端系统开发的可扩展的主机控制芯片接口标准。
由于基于本地存储的NVMe技术扩展比较困难,应用场景十分有限,无法发挥NVMe的高并发的优势。随着NVMe技术的进一步发展,出现了一些基于NVMe的网络化存储(NVMeover Fabric,NOF),例如将远程直接数据存取(Remote Direct Memory Access,RDMA)协议与NVMe协议相结合的方式实现NOF。
但是,由于仅仅将NVMe协议与RDMA协议简单进行结合,完成一次NVMe需要进行复杂的交互过程和处理过程,导致NOF的性能较差。
发明内容
本发明实施例提供了一种NVMe网络化存储的实现方法、终端、及服务器及系统,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理过程复杂度,从而提高NOF的性能。
有鉴于此,本发明实施例第一方面提供一种NVMe网络化存储的实现方法,可包括:
终端生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;
终端通过RDMA将NVMe指令发送至设置于服务器内的SQ;
当NVMe指令中指示读取数据操作时,终端通过RDMA接收服务器发送的待读取数据;
或,
当NVMe指令中指示写入数据操作时,终端通过RDMA向服务器发送待写入数据;
终端接收服务器通过RDMA发送的NVMe完成指令;
终端将NVMe完成指令写入设置于终端内的CQ。
结合第一方面,在第一方面的第一种可能的实现方式中,终端通过RDMA将NVMe指令发送至服务器的SQ可包括:
终端将NVMe指令转换成RDMA支持的第一工作队列元素(Work Queue Element,WQE);
终端的第一RDMA收发模块将第一WQE发送至服务器的第二RDMA收发模块,以使得第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,若NVMe指令中指示写入数据操作,在终端通过RDMA向服务器发送待写入数据之前,该方法还可包括:
终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,终端接收服务器通过RDMA发送的NVMe完成指令可包括:
第一RDMA收发模块接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;
第一RDMA收发模块将第二WQE解析成NVMe完成指令。
结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若NVMe指令中指示读取数据操作,终端通过RDMA接收服务器发送的待读取数据具体为:
第一RDMA收发模块接收第二RDMA收发模块发出的待读取数据。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:
所述服务器从所述SQ中读取所述NVMe指令。
本发明实施例第二方面还提供一种NVMe网络化存储的实现方法,可包括:
服务器接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;
服务器从SQ中读取该NVMe指令;
当根据NVMe指令确定为读取数据操作时,服务器通过RDMA将待读取数据发送至终端;
或,
当根据NVMe指令确定为写入数据操作时,服务器通过RDMA接收终端发送的待写入数据;
服务器生成NVMe完成指令;
服务器将NVMe完成指令通过RDMA发送至终端。
结合第二方面,在第二方面的第一种可能的实现方式中,服务器接收终端通过RDMA发送的NVMe指令可包括:
服务器通过服务器的第二RDMA收发模块接收终端的第一RDMA收发模块发送的第一WQE;
服务器将第一WQE解析成NVMe指令。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,若根据NVMe指令确定为读取数据操作时,服务器通过RDMA将待读取数据发送至终端具体为:
服务器通过第二RDMA收发模块向第一RDMA收发模块发送待读取数据。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,若根据NVMe指令确定为读取数据操作时,在服务器通过RDMA接收终端发送的待写入数据之前,方法还可包括:
服务器通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作。
结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,服务器将NVMe完成指令通过RDMA发送至终端可包括:
服务器将NVMe完成指令转换成RDMA支持的第二WQE;
服务器通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块。
本发明实施例第三方面还提供一种服务器,可包括:
第一处理模块,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;
第一RDMA收发模块,用于通过RDMA将NVMe指令发送至设置于服务器内的SQ;
第一RDMA收发模块还用于当NVMe指令中指示读取数据操作时,通过RDMA接收服务器发送的待读取数据;
或,
当NVMe指令中指示写入数据操作时,通过RDMA向服务器发送待写入数据;
第一RDMA收发模块还用于接收服务器通过RDMA发送的NVMe完成指令;
第一处理模块还用于将NVMe完成指令写入设置于终端内的CQ。
结合第三方面,在第三方面的第一种可能的实现方式中,第一RDMA收发模块包括:
第一转换单元,用于将NVMe指令转换成RDMA支持的第一工作队列元素WQE;
第一收发单元,用于将第一WQE发送至服务器的第二RDMA收发模块,以第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,第一收发单元还用于:
接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。
结合第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式中,第一收发单元还用于:
接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;
所述第一转换单元还用于:
将第二WQE解析成NVMe完成指令。
结合第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,第一收发单元还具体用于:
接收第二RDMA收发模块发出的待读取数据。
本发明实施例第四方面还提供一种服务器,该服务器用作服务器,该服务器可包括:
第二RDMA收发模块,用于接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;
第二处理模块,用于从所述SQ中读取所述NVMe指令;
第二RDMA收发模块还用于,
当根据NVMe指令确定为读取数据操作时,通过RDMA将待读取数据发送至终端;
或,
当根据NVMe指令确定为写入数据操作时,通过RDMA接收终端发送的待写入数据;
第二处理模块用于生成NVMe完成指令;
第二RDMA收发模块还用于,
将NVMe完成指令通过RDMA发送至终端。
结合第四方面,在第四方面的第一种可能的实现方式中,第二RDMA收发模块包括:
第二收发单元,用于接收终端的第一RDMA收发模块发送的第一WQE;
第二转换单元,用于将第一WQE解析成NVMe指令。
结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,第二收发单元还具体用于:
向第一RDMA收发模块发送待读取数据。
结合第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,第二收发单元还用于:
向第一RDMA收发模块发起RDMA读取操作。
结合第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式或第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,第二转换单元还用于:
将NVMe完成指令转换成RDMA支持的第二WQE;
第二收发单元还用于:
将第二WQE发送至第一RDMA收发模块。
本发明第五方面还提供一种NVMe网络化存储系统,可包括:
终端,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;
终端还用于通过远程直接数据存取RDMA将NVMe指令发送至设置于服务器内的请求队列SQ;
服务器,用于从SQ中读取NVMe指令;
当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端;
或,
当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据;
服务器还用于接收待写入数据;
当服务器完成NVMe指令指示的读取数据操作或写入数据操作时,服务器还用于生成NVMe完成指令;
服务器还用于将NVMe完成指令通过RDMA发送至设于终端的CQ。
结合第五方面,在第五方面的第一种可能的实现方式中,当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据包括:
当NVMe指令确定为写入数据操作时,服务器向终端发起RDMA读取请求;
终端接收RDMA读取请求;
根据RDMA读取请求终端通过RMDA向服务器发送待写入数。
从以上技术方案可以看出,本发明实施例具有以下优点:将NVMe中的完成队列(Completion Queue,CQ)布置在终端内,将NVMe中的请求队列(Submission Queue,SQ)布置在服务器内,终端与服务器之间通过远程直接数据存取(Remote Direct Memory Access,RDMA)进行通信,即终端生成的NVMe指令会由终端通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则终端通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则终端通过RDMA向服务器发送待写入数据,而后,终端会通过RDMA接收到服务器发送的NVMe完成指令,并写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是现有NVMe工作流程示意图;
图1b是现有NVMe网络化存储的一种结构示意图;
图1c是现有NVMe网络化存储的另一种结构示意图;
图2是本发明实施例的NVMe网络化存储的实现方法的一个实施例图;
图3是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图;
图4是本发明实施例的NVMe网络化存储的实现方法的一个实施例图;
图5是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图;
图6是本发明实施例的NVMe网络化存储的系统的一个实施例图;
图7是本发明实施例的NVMe网络化存储的系统的另一个实施例图;
图8是本发明实施例的服务器的一个实施例图;
图9是本发明实施例的服务器中的第一RDMA收发模块的一个实施例图;
图10是本发明实施例的服务器的一个实施例图;
图11是本发明实施例的服务器中的第二RDMA收发模块的一个实施例图。
具体实施方式
本发明实施例提供了一种NVMe网络化存储的实现方法、终端、服务器及系统,能够使NVMe技术基于本地存储的变为基于网络化存储,从而增大NVMe技术的适用范围,从而发挥NVMe的高并发的优势。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以下分别进行详细说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
现有的NVMe协议主要应用本地,请参阅图1a,图1a是现有NVMe工作流程示意图,其中主要分为主端和控制端,NVMe的队列分为管理队列和I/O队列,控制端与主端的以讯息式中断(Message Signaled Interrupts,MSI)-X的中断方式进行通信,主端通过SQ下发命令给控制端,控制端完成命令后将命令完成状态通过CQ返回给主端;以管理队列为例,由主端的管理控制器通过管理类的SQ向控制端下发管理命令,当控制端完成该管理命令后,会向主端的管理控制器发送一个管理类的CQ,表示已完成主端下发的管理指令;再以I/O队列为例,由主端的某一核心通过I/O类的SQ向控制端下发I/O命令,当控制端完成I/O命令后,会向主端的下发I/O命令的核心发送一个I/O类的CQ,表示已完成主端下发的I/O命令。
由上可见,该NVMe协议的主要适用范围是本地端,因此其应用场景有限,从而扩展比较困难,无法发挥NVMe的高并发的优势,如当遇到需要一些类似RDMA的远程网络化数据存储时是无能为力的,然而网络化存储在现今的存储领域中运用的越来越广泛,因此有必要在该NVMe协议上进行改进,使得其能够进行网络化存储,从而大大扩展该NVMe协议的应用场景,并且发挥出该NVMe的高并发的优势。
除了上述NVMe协议本地化运用外,也有一些将NVMe协议搭载在其他网络化协议上实现NVMe网络化存储的方法,例如,将NVMe协议搭载在RDMA协议上来实现NOF,此时,本地化NVMe协议中的终端和服务器分别在NOF中作为终端和服务器,终端与服务器之间可采用RDMA协议传输数据,按照NVMe标准协议,该NOF的实现方式中NVMe协议中SQ和CQ布置在终端内,或者也SQ和CQ可布置在服务器内,下面分别进行介绍:
一、SQ和CQ布置在终端内。
请参阅图1b,图1b是现有技术NOF的一种结构示意图,其中,终端包括终端处理模块、RDMA模块、SQ和CQ,服务器包括RDMA模块、控制模块和磁盘阵列,其中,所有针对磁盘阵列的操作,如读操作和写操作都由控制模块来完成。在此布置方式的情形下,终端从服务器中读取数据的过程可包括:
步骤a、终端通过终端处理模块在终端的内存中的SQE中构建一个NVMe写指令,该SQE实际是一个NVMe的指令,并将该SQE写指令写入SQ中;
步骤b、当终端的RDMA模块发现NVMe的SQ中有SQE时,会向服务器的RDMA模块发送一个通知消息,以使得服务器获知需要处理SQE;
步骤c、服务器在接收到该通知消息后,会通过服务器的RDMA模块发起RDMA的read操作以从终端读取该SQE;
步骤d、终端将该SQE通过RDMA回复给服务器;
步骤e、服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe写指令,则服务器的控制模块通过该NVMe写指令从磁盘阵列中读出数据,并通过服务器的RDMA模块执行RDMA的write操作将取出的数据写入终端;
步骤f、服务器在完成数据写入终端的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE通过RDMA的send操作将该CQE发送至终端;
步骤g、终端的RDMA模块在接收到该CQE后,会将该CQE写入终端的CQ内。
终端向服务器写数据的过程中前四个步骤是相同的,只不过步骤a中的SQE中构建的是NVMe读指令,此时,步骤e变为,服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe读指令,则服务器的RDMA模块向终端发起RDMA的read操作;
步骤f、终端将要写入的数据通过RDMA回复给服务器,服务器的控制模块将该数据写入磁盘阵列中;
步骤g、服务器在完成数据写入磁盘阵列的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE通过RDMA的send操作将该CQE发送至终端;
步骤h、终端将该CQE写入终端的CQ内。
可以理解的是,由于将CQ和SQ均布置在终端内,不论是NVMe的写操作还是读操作均需要与服务器进行多次消息交互,其中,一次消息交互为从终端向服务器发送一次消息或者服务器向终端发送的一次消息,例如终端发送通知消息,终端发送SQE等,执行NVMe读操作或是写操作需要多次消息交互,在读操作或者写操作完成之后,服务器端会发送一个CQE给终端,完成一次NVMe指令的执行过程,可以看出,除开执行NVMe读操作或是写操作需要的消息交互次数外,将CQ和SQ均布置在终端内的方式完成一次NVMe操作还需要进行四次消息交互,信息交互次数较多,从而会造成NOF的性能比较差。
二、SQ和CQ布置在服务器内。
请参阅图1c,图1c是现有技术NOF的另一种结构示意图,其中,终端包括终端处理模块和RDMA模块,服务器包括RDMA模块、控制模块、SQ、CQ和磁盘阵列,其中,所有针对磁盘阵列的操作,如读操作和写操作都由控制模块来完成。在此布置方式的情形下,终端从服务器中读取数据的过程可包括:
步骤a、终端通过终端处理模块在终端的内存中的SQE中构建一个NVMe写指令,该SQE实际是一个NVMe的指令;
步骤b、终端将该SQE通过终端的RDMA模块执行RDMA的send操作发送至服务器;
步骤c、服务器在接收到该SQE后,会将该SQE写入到服务器的SQ中;
步骤d、服务器从SQ中取出SQE,通过对该SQE识别发现其中构建的是NVMe写指令,则服务器的控制模块通过该NVMe写指令从磁盘阵列中读出数据,并通过服务器的RDMA模块执行RDMA的write操作将取出的数据写入终端;
步骤e、服务器在完成数据写入终端的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE写入终端的CQ内;
步骤f、服务器的RDMA模块从CQ内提取该CQE,并将该CQE通过RDMA的send操作发送至终端。
步骤g、终端的RDMA模块在接收到该CQE之后,向终端的终端处理模块发送完成消息,表示该次NVMe的操作已完成。
终端向服务器写数据的过程中前三个步骤是相同的,只不过步骤a中的SQE中构建的是NVMe读指令,此时,步骤d变为,服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe读指令,则服务器的RDMA模块向终端发起RDMA的read操作;
步骤e、终端将要写入的数据通过RDMA回复给服务器,服务器的控制模块将该数据写入磁盘阵列中;
步骤f、服务器在完成数据写入磁盘阵列的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE写入终端的CQ内;
步骤g、服务器的RDMA模块从CQ内提取该CQE,并将该CQE通过RDMA的send操作发送至终端。
步骤h、终端的RDMA模块在接收到该CQE之后,向终端的终端处理模块发送完成消息,表示该次NVMe的操作已完成。
可以理解的是,由于将CQ和SQ均布置在服务器内,在完成NVMe的写操作还是读操作后不仅需要写入到该终端的CQ内,还需要向终端发出CQE,以使得终端能够获知该消息,而终端为了使得CQE有记录,需要终端处理模块也建立一个类似与服务器端的CQ的队列来保存CQE,从而使得处理CQ十分复杂,此外,服务器端向终端发送CQE时,终端需要通过RDMA模块先收到该CQE,而后再由RDMA模块通知给终端处理模块,进一步加剧了CQ处理的复杂程度。
实施例1
下面将对本发明实施例进行介绍,本发明实施例为解决将CQ和SQ同时布置在终端内或者同时布置在服务器产生的上述问题采取SQ和CQ分离部署在终端和服务器内来提高NOF的性能。具体的,针对终端,请参阅图2,图2是本发明实施例的NVMe网络化存储的实现方法的一个实施例图,如图2所示,本发明实施例提供一种NVMe网络化存储的实现方法,可包括以下内容:
101、终端生成NVMe指令。
其中,NVMe指令中指示读取数据操作或写入数据操作。
可以理解的是,如正常NVMe协议的执行过程,首先会由终端生成一个NVMe指令,该NVMe指令中会指示出具体的读取数据操作或写入数据操作。
102、终端通过RDMA将NVMe指令发送至设置于服务器内的SQ。
其中,当NVMe指令中指示读取数据操作时,会跳转至执行步骤103,当NVMe指令中指示写入数据操作时,会跳转至执行步骤104。
其中,终端可通过RDMA发送NVMe指令至服务器的SQ,相对于现有通过MSI-X的本地传送方式,此处能够通过RDMA传送NVMe指令。
需要说明的是,为了实现RDMA,可在终端内设置第一RDMA收发模块,在服务器内设置第二RDMA收发模块,终端和服务器之间需要传送的信息或指令可通过第一RDMA收发模块和第二RDMA收发模块使得需要传送的信息或指令能承载在RDMA协议上,即能偶实现信息或指令的远程传输。
举例来说,以NVMe指令为例,在第一RDMA收发模块和第二RDMA收发模块内均分别会设置发送队列和接收队列,将NVMe指令加入至第一RDMA收发模块的发送队列中即可通过第一RDMA收发模块发送该信息至第二RDMA收发模块的接收队列中,即可完成NVMe指令通过RDMA从终端发送到服务器。
作为可选的,请参阅图3,图3是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图,图2所示实施例中的步骤102在图3中具体可包括以下步骤:
步骤1021、终端将NVMe指令转换成RDMA支持的第一工作队列元素WQE。
可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输。
步骤1022、终端的第一RDMA收发模块将第一WQE发送至服务器的第二RDMA收发模块。
其中,在将NVMe指令转换成RDMA支持的第一WQE后,会将该第一WQE加入第一RDMA收发模块的发送队列中,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ。
可以理解是,通过第一RDMA收发模块将终端生成的NVMe指令转换成RDMA支持的第一WQE,再通过第一RDMA收发模块的发送队列将该第一WQE发送至第二RDMA收发模块的接收队列,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ,即能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。
103、终端通过RDMA接收服务器发送的待读取数据。
其中,当NVMe指令中指示读取数据操作时,终端能够通过RDMA接收到服务器发送的待读取数据。
可以理解的是,当NVMe指令中指示读取数据操作时,即终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端,从而终端能够通过RDMA接收到NVMe指令中指示的待读取数据。
104、终端通过RDMA向服务器发送待写入数据。
其中,当NVMe指令中指示写入数据操作时,终端能够通过RDMA向服务器发送待写入数据。
可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,以便于服务器将待写入数据存储至SSD中。
作为可选的,当NVMe指令中指示写入数据操作时,请参阅图3,在图3中图2所示实施例中的在步骤104之前,该方法还可包括:
1023、终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。
其中,当服务器获知NVMe指令中指示写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,此时终端能够接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。
可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,终端在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。
由此可见,通过终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求的方式,使得服务器能够快速获取到待写入数据,进而完成步骤104,能够提高本发明实施例方案的扩展性。
105、终端接收服务器通过RDMA发送的NVMe完成指令。
其中,终端在通过RDMA发送了NVMe指令后,会受到服务器通过RDMA发送的NVMe完成指令。
可以理解的是,在步骤103或是步骤104完成后,即对应NVMe指令的读取操作数据操作或是写入数据操作,在完成步骤103或是步骤104后,服务器会生成NVMe完成指令,并发送至终端,从而使得终端能偶通过RDMA接收到该NVMe完成指令。
作为可选的,请参阅图3,图2所示实施例中的步骤105在图3中具体可包括:
1051、第一RDMA收发模块接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE。
1052、第一RDMA收发模块将第二WQE解析成NVMe完成指令。
可以理解的是,步骤1051和步骤1052与步骤1021和步骤1022类似,终端在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一RDMA收发模块首先接收第二WQE,而第二WQE为第二RDMA收发模块转换NVMe完成指令所得到。
106、终端将NVMe完成指令写入终端的CQ。
其中,终端在接收到NVMe完成指令后会将该NVMe完成指令写入到终端的CQ中。
由此可见,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,终端与服务器之间通过RDMA进行通信,即终端生成的NVMe指令会由终端通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则终端通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则终端通过RDMA向服务器发送待写入数据,而后,终端会通过RDMA接收到服务器发送的NVMe完成指令,并写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。
实施例2
上面针对终端描述了本发明实施例的NVMe网络化存储的实现方法一个实施例,下面针对服务器对本发明实施例的NVMe网络化存储的实现方法进行描述,实施例1结合实施例2可构成NVMe网络化存储系统,针对服务器,请参阅图4,图4是本发明实施例的NVMe网络化存储的实现方法的一个实施例图,如图4所示,本发明实施例提供一种NVMe网络化存储的实现方法,可包括:
201、服务器接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,NVMe指令中指示读取数据操作或写入数据操作。
作为可选的,请参阅5,图5是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图,图4所示的实施例中的步骤202在图5中具体可包括如下步骤:
2011、服务器通过服务器的第二RDMA收发模块接收终端的第一RDMA收发模块发送的第一WQE;
可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输,例如在服务器内设置第二RDMA收发模块,在终端内设置第一RDMA收发模块,第一RDMA收发模块和第二RDMA收发模块之间采用RDMA方式进行通信。
2012、服务器将第一WQE解析成NVMe指令。
其中,服务器的第二RDMA收发模块在接收到第一WQE后,会将该第一WQE解析成NVMe指令,以便于服务器对该NVMe指令进行解析。
可以理解是,采用在服务器内设置第二RDMA收发模块,在终端内设置第一RDMA收发模块,第一RDMA收发模块和第二RDMA收发模块之间采用RDMA方式进行通信,能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。
其中,NVMe指令中指示读取数据操作,则跳转至步骤202,当NVMe指令中指示写入数据操作时,则跳转至步骤203。
202、服务器通过RDMA将待读取数据发送至终端。
其中,当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端。
可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端。
需要说明的是,RDMA的实现方式请参见图1所示实施例中对步骤102的补充说明部分,此处不再赘述。
203、服务器通过RDMA接收终端发送的待写入数据。
其中,当NVMe指令中指示写入数据操作时,服务器通过RDMA接收终端发送的待写入数据。
可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,从而服务器会通过RDMA接收终端发送的待写入数据,以便于将接收的待写入数据存储至SSD中。
作为可选的,当NVMe指令中指示写入数据操作时,请参阅5,在图5中步骤203之前,该方法还可包括:
2013、服务器通过第二RDMA模块向第一RDMA模块发起RDMA读取操作。
其中,当服务器获知NVMe指令中指示写入数据操作时,为了使得终端能够知晓写入待写入数据的时机,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,而使得终端能够根据该RDMA读取操作写入待写入数据。
可以理解是,为了便于终端知晓服务器已准备接受终端写入待读取数据,会通过第二RDMA模块向第一RDMA模块发起RDMA读取操作指示终端,从而增强本发明实施例方案的可实现性。
204、服务器生成NVMe完成指令。
其中,服务器在完成了NVMe指令中指示的操作后,会生成NVMe完成指令。
可以理解的是,在步骤103或是步骤104完成后,即对应NVMe指令的读取操作数据操作或是写入数据操作,在完成步骤103或是步骤104后,服务器会生成NVMe完成指令,并发送至终端,从而使得终端能偶通过RDMA接收到该NVMe完成指令。
205、服务器将NVMe完成指令通过RDMA发送至终端。
其中,服务器在生成NVMe完成指令后,会通过RDMA发送至终端,以便于终端知道服务器已完成由终端发出的NVMe指令。
作为可选的,请参阅5,图4所示的实施例中的步骤205在图5中具体可包括:
2051、服务器将NVMe完成指令转换成RDMA支持的第二WQE;
2052、服务器通过第二RDMA模块将第二WQE发送至所述第一RDMA模块。
可以理解的是,步骤2051和步骤2052与步骤2011和步骤2012类似,服务器在向终端发送NVMe完成指令时,并非是直接发送NVMe完成指令,而是由第二RDMA收发模块首先将NVMe完成指令转换成第二WQE,而通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块,即发送给终端。
由此可见,服务器会接收终端通过RDMA发送至服务器的SQ的NVMe指令,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则服务器通过RDMA将待读取数据发送至终端,若NVMe指令中指示写入数据操作,则服务器通过RDMA接收终端发送的待写入数据,而后,服务器会生成NVMe完成指令,并通过RDMA将NVMe完成指令发送至终端,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,终端与服务器通过RDMA通信,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。
实施例3
上面对本发明实施例的方法中的终端和服务器分别进行了描述,下面对本发明实施例中包含该终端和该服务器的NVMe网络化存储系统进行介绍,该系统包括读取数据过程和写入数据过程,下面结合读取数据的过程对该系统进行介绍。
该系统可包括:终端,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;
终端还用于通过远程直接数据存取RDMA将NVMe指令发送至设置于服务器内的请求队列SQ;
服务器,用于从SQ中读取NVMe指令;
当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端;
或,
当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据;
服务器还用于接收待写入数据;
当服务器完成NVMe指令指示的读取数据操作或写入数据操作时,服务器还用于生成NVMe完成指令;
服务器还用于将NVMe完成指令通过RDMA发送至设于终端的完成队列CQ。
作为可选的,当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据包括:
当NVMe指令确定为写入数据操作时,服务器向终端发起RDMA读取请求;
终端接收RDMA读取请求;
根据RDMA读取请求终端通过RMDA向服务器发送待写入数。
下面分别对该系统的读取数据和写入数据过程进行说明:
一、该系统读取数据的过程,请参阅图6,图6是本发明实施例的NVMe网络化存储系统一个实施例图。其中,
步骤301、生成NVMe指令。
其中,该NVMe指令由终端生成。如正常NVMe协议的执行过程,首先会由终端生成一个NVMe指令,该NVMe指令中会指示出具体的读取数据操作或写入数据操作。
步骤302、将NVMe指令转换成第一WQE。
其中,终端为了使得NVMe指令能在RDMA上传输,将该NVMe指令转换成第一WQE。由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输。
步骤303、通过RDMA发送第一WQE。
其中,在将NVMe指令转换成RDMA支持的第一WQE后,会将该第一WQE加入第一RDMA收发模块的发送队列中。步骤304、将第一WQE解析成NVMe指令。
其中,服务器的第二RDMA收发模块在接收到第一WQE后,会将该第一WQE解析成NVMe指令,以便于服务器对该NVMe指令进行解析。
步骤305、将NVMe指令写入SQ。
其中,服务器在获得NVMe指令后,会将该NVMe指令写入SQ,而后服务器会从SQ中读取该NVMe指令,并执行该指令。
需要说明的是,该指令的执行过程可以是按照SQ的队列顺序执行,即先进先出的方式顺序执行,当然也可采用其他执行方式,具体以系统对数据的需求而定,此处不做限定。
步骤306、通过RDMA发送待读取数据。
其中,当服务器获知NVMe指令指示的读取数据操作时,会通过RDMA发送待读取数据。
可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端。
步骤307、生成NVMe完成指令。
其中,服务器在发送完待读取数据后,表示该NVMe指令已执行完成,会生成NVMe完成指令。
步骤308、将NVMe完成指令转换成第二WQE。
其中,服务器会将NVMe完成指令转换成第二WQE,以便于通过RDMA发送。
可以理解的是,服务器在向终端发送NVMe完成指令时,并非是直接发送NVMe完成指令,而是由第二RDMA收发模块首先将NVMe完成指令转换成第二WQE,而通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块,即发送给终端。
步骤309、通过RDMA发送第二WQE。
其中,服务器在转换完成第二WQE后,会通过RDMA发送第二WQE至终端。
步骤310、将第二WQE解析成NVMe完成指令。
其中,终端在接收到该第二WQE后会首先将其解析成NVMe完成指令。
可以理解的是,终端在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一RDMA收发模块首先接收第二WQE,而第二WQE为第二RDMA收发模块转换NVMe完成指令所得到。
步骤311、将NVMe完成指令写入CQ。
其中,终端在解析完成NVMe完成指令后,会将该NVMe完成指令写入CQ表示步骤301发出的NVMe指令已经完成。二、该系统写入数据的过程请参阅图7,图7是本发明实施例的NVMe网络化存储的系统的另一个实施例图。其中,步骤401至步骤405与图6所示实施例中的步骤301至步骤305类似,步骤408至步骤412与图6所示实施例中的步骤307至步骤311类似,此处均不在赘述。其中,图7所示实施例还包括:
步骤406、发起RDMA读取操作。
其中,在服务器从SQ中读取的NVMe指令中获知指示的写入数据操作时,会向终端通过RDMA发起读取操作,从而告知终端写入数据的方式和写入的时机。
可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,终端在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。
步骤407、通过RDMA发送待写入数据。
其中,终端在接收到服务器通过RDMA发起读取操作后,会通过RDMA发送待写入数据,以使得服务器能够将该待写入数据写入SSD中的对应处。
可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,从而服务器会通过RDMA接收终端发送的待写入数据,以便于将接收的待写入数据存储至SSD中。
实施例4
上面对本发明实施例的NVMe网络化存储的系统进行了介绍,下面对本发明实施例的服务器进行介绍,请参阅图8,图8是本发明实施例的服务器的一个实施例图,如图8所示,本发明实施例提供一种服务器,该服务器用作终端,可包括:
第一处理模块501,用于生成NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;
第一RDMA收发模块502,用于通过RDMA将NVMe指令发送至设置于服务器内的SQ;
第一RDMA收发模块502还用于当NVMe指令中指示读取数据操作时,通过RDMA接收服务器发送的待读取数据;
或,
当NVMe指令中指示写入数据操作时,还用于通过RDMA向服务器发送待写入数据;
第一RDMA收发模块502还用于接收服务器通过RDMA发送的NVMe完成指令;
第一处理模块501还用于将NVMe完成指令写入设置于终端内的CQ。
由此可见,第一处理模块501生成的NVMe指令会由第一RDMA收发模块502通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则第一RDMA收发模块502通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则第一RDMA收发模块502通过RDMA向服务器发送待写入数据,而后,第一RDMA收发模块502会通过RDMA接收到服务器发送的NVMe完成指令,并由第一处理模块501写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。
作为可选的,请参阅图9,图9是本发明实施例的服务器中的第一RDMA收发模块的一个实施例图。该第一RDMA收发模块502可包括:
第一转换单元5021,用于将NVMe指令转换成RDMA支持的第一工作队列元素WQE;
第一收发单元5022,用于将第一WQE发送至服务器的第二RDMA收发模块,以第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。
可以理解是,通过第一转换单元5021将第一处理模块501生成的NVMe指令转换成RDMA支持的第一WQE,再通过第一收发单元5022的发送队列将该第一WQE发送至第二RDMA收发模块的接收队列,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ,即能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。
作为可选的,第一收发单元5022还用于:
接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。
可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块502发起RDMA读取操作,第一RDMA收发模块中的第一收发单元5022在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。
作为可选的,第一收发单元5022还用于:
接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;
第一转换单元5021还用于:
将第二WQE解析成NVMe完成指令。
可以理解的是,与前述针对第一WQE的操作类似,第一收发单元5022在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一收发单元5022首先接收第二WQE,而后由第一转换单元5021将该第二WQE转换成NVMe完成指令并进行保存。
作为可选的,第一收发单元5022还具体用于:
接收第二RDMA收发模块发出的待读取数据。
可以理解的是待读取数据实际是由服务器的第二RDMA收发模块发出的,第一收发单元5022也是通过RDMA的方式接收到该待读取数据。
实施例5
下面对本发明实施例的服务器进行介绍,请参阅图10,图10是本发明实施例的服务器的一个实施例图,如图10所示,本发明实施例提供一种服务器,该服务器用作服务器,可包括:
第二RDMA收发模块602,用于接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;
第二处理模块601,用于从SQ中读取NVMe指令;
第二RDMA收发模块602还用于,
当根据NVMe指令确定为读取数据操作时,通过RDMA将待读取数据发送至终端;
或,
当根据NVMe指令确定为写入数据操作时,通过RDMA接收终端发送的待写入数据;
第二处理模块601还用于,生成NVMe完成指令;
第二RDMA收发模块602还用于,
将NVMe完成指令通过RDMA发送至终端。
由此可见,第二RDMA收发模块602会接收终端通过RDMA发送的SQ中的NVMe指令,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则第二RDMA收发模块602通过RDMA将待读取数据发送至终端,若NVMe指令中指示写入数据操作,则第二RDMA收发模块602通过RDMA接收终端发送的待写入数据,而后,第二处理模块601会生成NVMe完成指令,并由第二RDMA收发模块602将NVMe完成指令发送至终端,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。
作为可选的,请参阅图11,图11是本发明实施例的服务器中的第二RDMA收发模块的一个实施例图。第二RDMA收发模块602可包括:
第二收发单元6021,用于接收终端的第一RDMA收发模块发送的第一WQE;
第二转换单元6022,用于将第一WQE解析成NVMe指令。
同样的,针对在发送NVMe完成指令时,作为可选的,第二转换单元6022还用于:
将NVMe完成指令转换成RDMA支持的第二WQE;
第二收发单元6021还用于:
将第二WQE发送至第一RDMA收发模块。
可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,在第二收发单元6021接收到终端的第一RDMA收发模块发送的第一WQE后,会由第二转换单元6022将该第一WQE解析成NVMe指令,从而第二处理模块601能够识别该NVMe指令并进行对应的操作,能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。
作为可选的,第二收发单元6021还具体用于:
向第一RDMA收发模块发送待读取数据。
可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过第二收发单元6021发送至终端。
作为可选的,第二收发单元6021还用于:
向第一RDMA收发模块发起RDMA读取操作。
其中,当服务器获知NVMe指令中指示写入数据操作时,为了使得终端能够知晓写入待写入数据的时机,会通过第二收发单元6021向第一RDMA收发模块发起RDMA读取操作,而使得终端能够根据该RDMA读取操作写入待写入数据。
可以理解是,为了便于终端知晓服务器已准备接受终端写入待读取数据,会通过第二RDMA模块向第一RDMA模块发起RDMA读取操作指示终端,从而增强本发明实施例方案的可实现性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (23)

1.一种NVMe网络化存储的实现方法,其特征在于,包括:
终端生成非易失性存储器NVMe指令,所述NVMe指令中指示读取数据操作或写入数据操作;
所述终端通过远程直接数据存取RDMA将所述NVMe指令发送至设置于服务器内的请求队列SQ;
所述终端根据所述NVMe指令的类型,通过所述RDMA接收所述服务器发送的待读取数据或通过所述RDMA向所述服务器发送待写入数据;
所述终端接收所述服务器通过所述RDMA发送的NVMe完成指令;
所述终端将所述NVMe完成指令写入设于所述终端内的完成队列CQ。
2.根据权利要求1所述的NVMe网络化存储的实现方法,其特征在于,所述终端通过所述RDMA将所述NVMe指令发送至服务器的SQ包括:
所述终端将所述NVMe指令转换成所述RDMA支持的第一工作队列元素WQE;
所述终端的第一RDMA收发模块将所述第一WQE发送至所述服务器的第二RDMA收发模块,以使得所述第二RDMA收发模块将所述第一WQE解析成NVMe指令并写入SQ。
3.根据权利要求2所述的NVMe网络化存储的实现方法,其特征在于,若所述NVMe指令中指示写入数据操作,在所述终端通过RDMA向所述服务器发送待写入数据之前,所述方法还包括:
所述终端接收所述服务器通过所述第二RDMA收发模块向所述第一RDMA收发模块发起的RDMA读取请求。
4.根据权利要求2所述的NVMe网络化存储的实现方法,其特征在于,所述终端接收所述服务器通过所述RDMA发送的NVMe完成指令包括:
所述第一RDMA收发模块接收所述服务器通过所述第二RDMA收发模块发送至所述第一RDMA收发模块的第二WQE;
所述第一RDMA收发模块将所述第二WQE解析成所述NVMe完成指令。
5.根据权利要求2至4中任一项所述的NVMe网络化存储的实现方法,其特征在于,若所述NVMe指令中指示读取数据操作,所述终端通过RDMA接收所述服务器发送的待读取数据具体为:
所述第一RDMA收发模块接收所述第二RDMA收发模块发出的所述待读取数据。
6.根据权利要求1至4中任一项所述的NVMe网络化存储的实现方法,其特征在于:所述方法还包括:
所述服务器从所述SQ中读取所述NVMe指令。
7.一种NVMe网络化存储的实现方法,其特征在于,包括:
服务器接收终端通过远程直接数据存取RDMA发送的NVMe指令,并将所述NVMe指令写入设置于所述服务器内的请求队列SQ,所述NVMe指令中指示读取数据操作或写入数据操作;
所述服务器从所述SQ中读取所述NVMe指令;
所述服务器根据所述NVMe指令的类型,通过所述RDMA将待读取数据发送至所述终端或通过所述RDMA接收所述终端发送的待写入数据;
所述服务器生成NVMe完成指令;
所述服务器将所述NVMe完成指令通过所述RDMA发送至设置于所述终端的完成队列CQ。
8.根据权利要求7所述的NVMe网络化存储的实现方法,其特征在于,所述服务器接收终端通过远程直接数据存取RDMA发送的NVMe指令包括:
所述服务器通过所述服务器的第二RDMA收发模块接收所述终端的第一RDMA收发模块发送的第一WQE;
所述服务器将所述第一WQE解析成所述NVMe指令。
9.根据权利要求8所述的NVMe网络化存储的实现方法,其特征在于,若根据所述NVMe指令确定为读取数据操作时,所述服务器通过所述RDMA将所述待读取数据发送至所述终端具体为:
所述服务器通过所述第二RDMA收发模块向所述第一RDMA收发模块发送待读取数据。
10.根据权利要求8所述的NVMe网络化存储的实现方法,其特征在于,若根据所述NVMe指令确定为写入数据操作时,在所述服务器通过所述RDMA接收所述终端发送的待写入数据之前,所述方法还包括:
所述服务器通过所述第二RDMA收发模块向所述第一RDMA收发模块发起RDMA读取操作。
11.根据权利要求8至10中任一项所述的NVMe网络化存储的实现方法,其特征在于,所述服务器将所述NVMe完成指令通过所述RDMA发送至所述终端包括:
所述服务器将所述NVMe完成指令转换成RDMA支持的第二WQE;
所述服务器通过所述第二RDMA收发模块将所述第二WQE发送至所述第一RDMA收发模块。
12.一种终端,其特征在于,包括:
第一处理模块,用于生成非易失性存储器NVMe指令,所述NVMe指令中指示读取数据操作或写入数据操作;
第一RDMA收发模块,用于通过远程直接数据存取RDMA将所述NVMe指令发送至设置于服务器内的请求队列SQ;
所述第一RDMA收发模块还用于根据所述NVMe指令的类型通过所述RDMA接收所述服务器发送的待读取数据或通过所述RDMA向所述服务器发送待写入数据;
所述第一RDMA收发模块还用于接收所述服务器通过所述RDMA发送的NVMe完成指令;
所述第一处理模块还用于将所述NVMe完成指令写入设置于所述终端内的完成队列CQ。
13.根据权利要求12所述的终端,其特征在于,所述第一RDMA收发模块包括:
第一转换单元,用于将所述NVMe指令转换成所述RDMA支持的第一工作队列元素WQE;
第一收发单元,用于将所述第一WQE发送至服务器的第二RDMA收发模块,以使得所述服务器将所述第一WQE解析成NVMe指令并写入SQ。
14.根据权利要求13所述的终端,其特征在于,所述第一收发单元还用于:
接收所述服务器通过所述第二RDMA收发模块向所述第一RDMA收发模块发起的RDMA读取请求。
15.根据权利要求13所述的终端,其特征在于,所述第一收发单元还用于:
接收所述服务器通过所述第二RDMA收发模块发送至所述第一RDMA收发模块的第二WQE;
所述第一转换单元还用于:
将所述第二WQE解析成所述NVMe完成指令。
16.根据权利要求13至15中任一项所述的终端,其特征在于,所述第一收发单元还具体用于:
接收所述第二RDMA收发模块发出的所述待读取数据。
17.一种服务器,其特征在于,包括:
第二RDMA收发模块,用于接收终端通过远程直接数据存取RDMA发送的NVMe指令,并将所述NVMe指令写入设置于所述服务器内的请求队列SQ,所述NVMe指令中指示读取数据操作或写入数据操作;
第二处理模块,用于从所述SQ中读取所述NVMe指令;
所述第二RDMA收发模块还用于根据所述NVMe指令的类型通过所述RDMA将待读取数据发送至所述终端或通过所述RDMA接收所述终端发送的待写入数据;
所述第二处理模块还用于,生成NVMe完成指令;
所述第二RDMA收发模块还用于,将所述NVMe完成指令通过所述RDMA发送至所述终端。
18.根据权利要求17所述的服务器,其特征在于,所述第二RDMA收发模块包括:
第二收发单元,用于接收所述终端的第一RDMA收发模块发送的第一WQE;
第二转换单元,用于将所述第一WQE解析成所述NVMe指令。
19.根据权利要求18所述的服务器,其特征在于,所述第二收发单元还具体用于:
向所述第一RDMA收发模块发送待读取数据。
20.根据权利要求18所述的服务器,其特征在于,所述第二收发单元还用于:
向所述第一RDMA收发模块发起RDMA读取操作。
21.根据权利要求18至20中任一项所述的服务器,其特征在于,所述第二转换单元还用于:
将所述NVMe完成指令转换成RDMA支持的第二WQE;
所述第二收发单元还用于:
将所述第二WQE发送至所述第一RDMA收发模块。
22.一种NVMe网络化存储系统,其特征在于,包括:终端,用于生成非易失性存储器NVMe指令,所述NVMe指令中指示读取数据操作或写入数据操作;
所述终端还用于通过远程直接数据存取RDMA将所述NVMe指令发送至设置于服务器内的请求队列SQ;
服务器,用于从所述SQ中读取所述NVMe指令;
所述服务器根据所述NVMe指令的类型通过所述RDMA将待读取数据发送至所述终端;或,通过所述RDMA向所述服务器发送待写入数据;
所述服务器还用于接收所述待写入数据;
当所述服务器完成NVMe指令指示的读取数据操作或写入数据操作时,所述服务器还用于生成NVMe完成指令;
所述服务器还用于将所述NVMe完成指令通过所述RDMA发送至设于所述终端的完成队列CQ。
23.根据权利要求22所述的NVMe网络化存储系统,其特征在于,所述当所述NVMe指令确定为写入数据操作时,所述终端通过所述RDMA向所述服务器发送待写入数据包括:
当所述NVMe指令确定为写入数据操作时,所述服务器向所述终端发起RDMA读取请求;
所述终端接收所述RDMA读取请求;
根据所述RDMA读取请求所述终端通过RMDA向所述服务器发送待写入数。
CN201510812695.8A 2015-11-19 2015-11-19 一种NVMe网络化存储的实现方法、终端、服务器及系统 Active CN106775434B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201510812695.8A CN106775434B (zh) 2015-11-19 2015-11-19 一种NVMe网络化存储的实现方法、终端、服务器及系统
EP19161342.1A EP3570175B1 (en) 2015-11-19 2016-08-17 Method for implementing nvme over fabrics, terminal, server, and system
EP16865578.5A EP3276481B1 (en) 2015-11-19 2016-08-17 Nvme networked storage implementation method, terminal, server, and system
PCT/CN2016/095694 WO2017084400A1 (zh) 2015-11-19 2016-08-17 一种NVMe网络化存储的实现方法、终端、服务器及系统
US15/802,690 US10969983B2 (en) 2015-11-19 2017-11-03 Method for implementing NVME over fabrics, terminal, server, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510812695.8A CN106775434B (zh) 2015-11-19 2015-11-19 一种NVMe网络化存储的实现方法、终端、服务器及系统

Publications (2)

Publication Number Publication Date
CN106775434A CN106775434A (zh) 2017-05-31
CN106775434B true CN106775434B (zh) 2019-11-29

Family

ID=58717274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510812695.8A Active CN106775434B (zh) 2015-11-19 2015-11-19 一种NVMe网络化存储的实现方法、终端、服务器及系统

Country Status (4)

Country Link
US (1) US10969983B2 (zh)
EP (2) EP3276481B1 (zh)
CN (1) CN106775434B (zh)
WO (1) WO2017084400A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113407244A (zh) * 2016-03-01 2021-09-17 华为技术有限公司 一种级联板、ssd远程共享访问的系统和方法
US10735513B2 (en) * 2016-09-08 2020-08-04 Toshiba Memory Corporation Remote NVMe activation
US10733137B2 (en) * 2017-04-25 2020-08-04 Samsung Electronics Co., Ltd. Low latency direct access block storage in NVME-of ethernet SSD
CN110199512B (zh) * 2017-12-26 2020-12-22 华为技术有限公司 存储系统中存储设备的管理方法及装置
CN109976661B (zh) 2017-12-27 2020-08-14 华为技术有限公司 基于nof的读取控制方法、装置及系统
US11016924B2 (en) 2018-03-01 2021-05-25 Samsung Electronics Co., Ltd. System and method for supporting multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) devices
US11018444B2 (en) 2018-03-09 2021-05-25 Samsung Electronics Co., Ltd. Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-of) device
CN108829353A (zh) * 2018-06-15 2018-11-16 郑州云海信息技术有限公司 一种基于NVMe的网络化存储系统及方法
CN110647480B (zh) * 2018-06-26 2023-10-13 华为技术有限公司 数据处理方法、远程直接访存网卡和设备
CN114780458A (zh) 2018-06-30 2022-07-22 华为技术有限公司 数据处理的方法和存储系统
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
CN111641566B (zh) * 2019-03-01 2021-10-22 华为技术有限公司 数据处理的方法、网卡和服务器
CN110262754B (zh) * 2019-06-14 2022-10-04 华东师范大学 一种面向NVMe和RDMA的分布式存储系统及轻量级同步通信方法
CN113778319A (zh) * 2020-06-09 2021-12-10 华为技术有限公司 网卡的数据处理方法以及网卡
US11750418B2 (en) * 2020-09-07 2023-09-05 Mellanox Technologies, Ltd. Cross network bridging
CN112596669A (zh) * 2020-11-25 2021-04-02 新华三云计算技术有限公司 一种基于分布式存储的数据处理方法及装置
CN112597094A (zh) * 2020-12-24 2021-04-02 联想长风科技(北京)有限公司 一种提高rdma传输效率的装置及方法
WO2022141250A1 (zh) * 2020-12-30 2022-07-07 华为技术有限公司 数据传输方法和相关装置
CN115686341A (zh) * 2021-07-22 2023-02-03 华为技术有限公司 一种处理访问请求的方法、装置、存储设备及存储介质
US20230236994A1 (en) * 2022-01-27 2023-07-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for queue management with a coherent interface
CN116566933A (zh) * 2022-01-30 2023-08-08 华为技术有限公司 报文处理方法、网关设备及存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185925A (zh) * 2011-05-18 2011-09-14 中兴通讯股份有限公司 一种支持通过计算机处理终端数据的系统、终端及方法
CN103019622A (zh) * 2012-12-04 2013-04-03 华为技术有限公司 一种数据的存储控制方法、控制器、物理硬盘,及系统
CN104111907A (zh) * 2014-06-27 2014-10-22 华为技术有限公司 一种访问NVMe存储设备的方法和NVMe存储设备
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991839B2 (en) * 2006-12-19 2011-08-02 International Business Machines Corporation Communication between host systems using a socket connection and shared memories
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
CN104601729A (zh) * 2015-02-06 2015-05-06 浪潮集团有限公司 一种采用NVMe实现高性能云存储的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185925A (zh) * 2011-05-18 2011-09-14 中兴通讯股份有限公司 一种支持通过计算机处理终端数据的系统、终端及方法
CN103019622A (zh) * 2012-12-04 2013-04-03 华为技术有限公司 一种数据的存储控制方法、控制器、物理硬盘,及系统
CN104111907A (zh) * 2014-06-27 2014-10-22 华为技术有限公司 一种访问NVMe存储设备的方法和NVMe存储设备
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统

Also Published As

Publication number Publication date
EP3276481B1 (en) 2019-06-05
US20180067685A1 (en) 2018-03-08
WO2017084400A1 (zh) 2017-05-26
EP3276481A4 (en) 2018-05-02
CN106775434A (zh) 2017-05-31
EP3570175A1 (en) 2019-11-20
US10969983B2 (en) 2021-04-06
EP3570175B1 (en) 2022-04-06
EP3276481A1 (en) 2018-01-31

Similar Documents

Publication Publication Date Title
CN106775434B (zh) 一种NVMe网络化存储的实现方法、终端、服务器及系统
CN103902486B (zh) 一种远端直接内存访问实现方法、装置及系统
CN112130748B (zh) 一种数据访问方法、网卡及服务器
WO2019057188A1 (zh) 汽车远程诊断方法和装置、移动终端、电子设备及服务器
CN104135339A (zh) 一种蓝牙低功耗通信的方法、蓝牙设备和系统
CN108874307A (zh) 以太网固态驱动系统和提供存储卸载功能的方法
CN106662895B (zh) 计算机设备和计算机设备数据读写的方法
CN114253740A (zh) 基于Linux内核的协议栈数据传输方法及装置
CN103838516B (zh) 一种用于多核处理器高效访问iSCSI磁盘阵列的方法及系统
CN107967227A (zh) 一种基于spi的通信方法及spi主机、spi从机
CN110489440A (zh) 数据查询方法和装置
WO2014067547A1 (en) Nfc controller architecture for emulation of multiple nfc-a devices
CN105786736A (zh) 一种多芯片级联的方法、芯片和装置
US9858224B2 (en) Universal serial bus emulation layer
CN111736792B (zh) 可编程逻辑器件及其控制方法、控制系统和视频处理器
CN108959136A (zh) 基于spi的数据传输加速装置、系统及数据传输方法
CN112380151A (zh) 一种NVMe-oF异构存储系统及访问方法
CN105471718A (zh) 一种全双工消息队列的实现方法
US7861026B2 (en) Signal relay device and method for accessing an external memory via the signal relay device
CN103136129A (zh) 与支持媒体传输协议的设备通信的装置和方法
EP3631640B1 (en) Communication between field programmable gate arrays
CN116594951B (zh) 一种基于fpga的数据传输系统及方法
US20110090924A1 (en) System to connect a serial scsi array controller to a storage area network
CN113900985A (zh) Io和spi复用芯片、复用辅助芯片和数据交互方法
CN105955916B (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
GR01 Patent grant
GR01 Patent grant