CN112579311B - 访问固态硬盘的方法及存储设备 - Google Patents

访问固态硬盘的方法及存储设备 Download PDF

Info

Publication number
CN112579311B
CN112579311B CN201910939824.8A CN201910939824A CN112579311B CN 112579311 B CN112579311 B CN 112579311B CN 201910939824 A CN201910939824 A CN 201910939824A CN 112579311 B CN112579311 B CN 112579311B
Authority
CN
China
Prior art keywords
solid state
state disk
network card
command
data
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
CN201910939824.8A
Other languages
English (en)
Other versions
CN112579311A (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 CN201910939824.8A priority Critical patent/CN112579311B/zh
Priority to EP20872004.5A priority patent/EP4030293A4/en
Priority to PCT/CN2020/114348 priority patent/WO2021063160A1/zh
Publication of CN112579311A publication Critical patent/CN112579311A/zh
Priority to US17/707,021 priority patent/US20220222016A1/en
Application granted granted Critical
Publication of CN112579311B publication Critical patent/CN112579311B/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种访问固态硬盘的方法及存储设备,存储设备中包括网卡、内存和固态硬盘,在该方法中,网卡接收待写入数据和写命令,该写命令用于指示将该待写入数据写入固态硬盘中,接收到待写入数据和写命令后,网卡将待写入数据写入内存,并将写命令写入固态硬盘的提交队列,进而,网卡通知固态硬盘其提交队列中有待执行的命令,该待执行的命令时写命令。固态硬盘根据写命令,从内存中获取待写入数据,将待写入数据写入固态硬盘的介质中。该方法能够极大减小数据访问的时延,同时也能够极大降低存储设备的CPU的占用率。

Description

访问固态硬盘的方法及存储设备
技术领域
本申请实施例涉及计算机领域,尤其涉及一种访问固态硬盘的方法及存储设备。
背景技术
当前的存储系统可以采用分布式存储、网络接入存储(network-attachedstorage,NAS)、存储区域网络(storage area network,SAN)等形式。在这些存储系统中,客户端和存储设备之间均通过网络进行连接。其中,固态硬盘(solid state disk,SSD)由于具有高带宽、低时延、高吞吐量的优点,被应用于上述各种存储系统中。对于存储系统来说,客户端如何通过网络高效地访问固态硬盘中的数据,是重要的问题。
现有技术中,客户端需要访问存储设备的固态硬盘时,由客户端的中央处理器(central processing unit,CPU)构造读命令或写命令,并由客户端的网卡发送到存储设备的网卡,再由存储设备的网卡通知存储设备的CPU,进而,在存储设备的CPU的控制下完成固态硬盘的访问。
但是,现有技术的方法会导致数据访问的时延大,对存储设备CPU的占用率过高。
发明内容
本申请实施例提供一种访问固态硬盘的方法及存储设备,用以解决现有技术中数据访问时延大,CPU占用率过高的问题。
第一方面,本申请实施例提供一种访问固态硬盘的方法,该方法应用于存储设备中,该存储设备中包括网卡、内存和固态硬盘,在该方法中,网卡接收待写入数据和写命令,该写命令用于指示将该待写入数据写入固态硬盘中,接收到待写入数据和写命令后,网卡将待写入数据写入内存,并将写命令写入固态硬盘的提交队列,进而,网卡通知固态硬盘其提交队列中有待执行的命令,该待执行的命令时写命令。固态硬盘根据写命令,从内存中获取待写入数据,将待写入数据写入固态硬盘的介质中。
在上述方法中,存储设备的网卡在接收到写命令后,通过与固态硬盘的直接交互,即可以完成数据的写入,而无需CPU的参与,因此,能够极大减小数据访问的时延。同时,由于无需CPU的参与,因此,也能够极大降低存储设备的CPU的占用率。
在一种可能的实现方式中,上述固态硬盘的提交队列位于上述内存中。
在另一种可能的实现方式中,上述固态硬盘的提交队列位于上述固态硬盘内部。
在一种可能的实现方式中,上述网卡可以通过如下方式接收待写入数据和写命令:
接收访问请求,该访问请求包括所述待写入数据和所述写命令。
基于该可能的实现方式,网卡在将写命令写入固态硬盘的提交队列时,可以从上述访问请求中解析出写命令,并将写命令写入固态硬盘的提交队列中。
在上述可能的实现方式中,通过一个访问请求来同时携带待写入数据和写命令,可以减少交互命令的数量,节省传输资源。
在一种可能的实现方式中,上述网卡还可以通过如下方式接收待写入数据和写命令:
接收第一命令,所述第一命令用于指示所述待写入数据;以及,
接收第二命令,所述第二命令包括所述写命令。
在上述可能的实现方式中,通过第一命令和第二命令来分别携带待写入数据和写命令,这种方式可以降低命令解析的复杂度。
在一种可能的实现方式中,固态硬盘可以通过如下过程将待写入数据写入固态硬盘的介质中:
从所述写命令中解析出所述待写入数据在所述内存中的存储地址;以及,
从所述内存中的存储地址中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中。
在上述可能的实现方式中,写命令中携带了待写入数据被暂存的存储设备内存中的地址,固态硬盘按照该地址,可以将暂存在内存中的待写入数据写入固态硬盘的介质中,从而使得数据被正确地写入固态硬盘的介质中。
在一种可能的实现方式中,网卡可以通过如下方式通知固态硬盘提交队列中有待执行的命令:
向所述固态硬盘的提交队列门铃发送通知信息,所述通知信息用于通知所述固态硬盘所述提交队列中有待执行的命令。
通过向固态硬盘的提交队列门铃发送通知信息,可以使得固态硬盘获知提交队列中有待执行的命令,进而执行该命令,保证固态硬盘可以及时执行待执行的命令。
网卡在向固态硬盘的提交队列门铃发送上述通知信息时,如果网卡通过上述第一命令接收上述待写入数据,通过上述第二命令接收上述写命令,则网卡可以接收第三命令,并根据该第三命令,向固态硬盘的提交队列门铃发送通知信息,该第三命令包括所述通知信息。
在该可能的实现方式中,网卡基于第三命令可以获知需要向固态硬盘发送的通知信息,从而保证固态硬盘接收到该通知信息,并基于该通知信息执行数据写入。
在一种可能的实现方式中,固态硬盘在完成数据写入后,还向网卡的SQ中写入RDMA_SEND命令,该RDMA_SEND命令中携带固态硬盘执行写命令的响应信息。
在一种可能的实现方式中,固态硬盘还向网卡SQ门铃发送通知,以通知网卡其SQ中有待执行的命令。
第二方面,本申请实施例提供一种存储设备,该存储包括:网卡、内存和固态硬盘。
所述网卡用于接收待写入数据和写命令,所述写命令用于指示将所述待写入数据写入所述固态硬盘中,所述网卡还用于将所述待写入数据写入所述内存,所述网卡还用于将所述写命令写入所述固态硬盘的提交队列,所述网卡还用于通知所述固态硬盘所述提交队列中有待执行的命令,所述待执行的命令是所述写命令。
所述固态硬盘用于根据所述写命令从所述内存中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中。
在一种可能的实现方式中,所述固态硬盘的提交队列位于所述内存中。
在一种可能的实现方式中,所述固态硬盘的提交队列位于所述固态硬盘内部。
在一种可能的实现方式中,所述网卡具体用于:
接收访问请求,所述访问请求包括所述待写入数据和所述写命令。
在一种可能的实现方式中,所述网卡具体用于:
从所述访问请求中解析出所述写命令,将所述写命令写入所述固态硬盘的提交队列。
在一种可能的实现方式中,所述网卡具体用于:
接收第一命令,所述第一命令用于指示所述待写入数据;以及,
接收第二命令,所述第二命令包括所述写命令。
在一种可能的实现方式中,所述固态硬盘具体用于:
从所述写命令中解析出所述待写入数据在所述内存中的存储地址;以及,
从所述内存中的存储地址中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中。
在一种可能的实现方式中,所述网卡具体用于:
向所述固态硬盘的提交队列门铃发送通知信息,所述通知信息用于通知所述固态硬盘所述提交队列中有待执行的命令。
在一种可能的实现方式中,所述网卡具体用于:
根据接收的第三命令,向所述固态硬盘的提交队列门铃发送通知信息,所述第三命令包括所述通知信息。
本申请实施例提供的访问固态硬盘的方法及存储设备,存储设备的网卡在接收到写命令后,通过与固态硬盘的直接交互,即可以完成数据的写入,而无需CPU的参与,因此,能够极大减小数据访问的时延。同时,由于无需CPU的参与,因此,也能够极大降低存储设备的CPU的占用率。
附图说明
图1为本申请实施例的访问固态硬盘的方法应用的一种示例性的应用场景图;
图2为本申请实施例的访问固态硬盘的方法的另一种示例性的应用场景图;
图3为本申请实施例的访问固态硬盘的方法的一种示例性系统架构图;
图4为本申请实施例提供的访问固态硬盘的方法的系统初始化流程图;
图5为本申请实施例提供的访问固态硬盘的方法的数据写入流程示意图;
图6为本申请实施例提供的访问固态硬盘的方法的数据读取流程示意图。
具体实施方式
图1为本申请实施例的访问固态硬盘的方法应用的一种示例性的应用场景图,如图1所示,该方法可以应用于分布式存储场景中,在分布式存储场景中,存储系统可以包括多个客户端和多个存储设备。其中,任意一个客户端可以访问任意一个存储设备。客户端可以是指用户侧的主机,也可以存储侧的控制设备。当客户端是指主机时,该客户端上可以安装有虚拟块业务(virtual block service,VBS)以及一些应用程序。当客户端是指控制设备时,该客户端可以安装分布式软件系统(enterprise distribution system,EDS),以及用于对存储服务的管理软件。存储设备在物理形态上可以是存储服务器,图1中以对象存储设备(object storage device,OSD)为例,但并不限于对象存储设备。客户端具有网卡,存储设备中部署有网卡以及硬盘(本实施例以固态硬盘为例进行描述)。当客户端需要访问OSD中存储的数据时,可以按照本申请实施例所提供的方法,向OSD发起相应的数据访问命令,指令OSD中的网卡完成对硬盘的访问。
图2为本申请实施例的访问固态硬盘的方法的另一种示例性的应用场景图,如图2所示,该方法可以应用于企业存储场景中,在企业存储场景中,存储系统包括客户端和存储设备。在图2所示的场景中,客户端通常是指控制设备,存储设备是指硬盘框。与传统硬盘框的不同之处在于,本实施例中的硬盘框不但包含网卡和硬盘,还包括处理器和内存(图3中会详细介绍)。
本申请实施例的方法可以应用于支持远端直接存取的协议的存储系统,具体的,这些存储系统所基于的网络协议为支持远端直接存取的协议。一种示例中,支持远端直接存取的协议可以为远端直接存储器存取(remote direct memory access,RDMA)协议,相应的,支持RDMA协议的网络协议可以为基于聚合以太网的RDMA协议(RDMAover convergedethernet,RoCE)、因特网广域RDMA协议(internet wide-wrea RDMAprotocol,iWARP)、无线带宽(InfiniBand)协议等。
为便于理解,本申请以下实施例以RoCE协议为例,使用RoCE协议中的消息、命令等说明本申请实施例的技术方案。应理解,这并不能作为对本申请实施例的限制,本申请实施例的技术方案还可以应用在基于其他RDMA网络协议的存储系统中。
在一种可能的数据访问方式中中,以客户端请求读取数据为例,客户端将读命令或通知到存储控制器的CPU,存储控制器的CPU通知固态硬盘读取数据,当固态硬盘读取完数据之后,存储控制器的CPU需要中断,以指示网卡向客户端发送读取的数据以及响应。首先,这种处理方式需要存储控制器的CPU、网卡以及固态硬盘交互完成数据访问,因此,会导致数据访问的时延较大。其次,存储控制器的CPU参与数据访问过程,会导致对CPU的占用率过高。
本申请实施例的技术方案,旨在解决上述问题。
图3为本申请实施例的访问固态硬盘的方法的一种示例性系统架构图,如图3所示,该方法包括客户端和存储设备。其中,客户端包括CPU11、网卡12和内存13。存储设备包括CPU21、网卡22、内存23和固态硬盘24。
CPU21,用于处理来自存储设备外部的IO请求,或者存储设备内部生成的请求。内存23用于临时存储从客户端接收的数据或硬盘读取的数据。网卡22接收客户端发送的多个写命令时,可以将所述多个写命令中的数据暂时保存在内存23中,并通知固态硬盘24将暂存的数据写入固态硬盘24的介质中。内存23包括易失性存储器和非易失性存储器或其组合。易失性存储器例如随机访问存储器(random-access memory,RAM)。非易失性存储器例如闪存芯片、软盘、硬盘、SSD、光盘等各种可以存储程序代码的机器可读介质。内存23可具有保电功能,保电功能是指系统发生掉电又重新上电时,内存23中存储的数据也不会丢失。
固态硬盘(SSD)24包括主控制器和存储介质。其中,主控制器用于接收网卡22发送给固态硬盘24的I/O请求,或者其他信息,例如数据块的逻辑地址,并且主控制器还用于执行接收到的I/O请求,例如将I/O请求中携带的数据块写入存储介质,或者从存储介质中读取数据块。存储介质通常由若干个闪存(Flash)芯片组成。每个闪存芯片包括若干个块(block)。每个block包括若干个页(page),主控制器在将数据块写入block中时是以page为单位写入的。
网卡22包括处理器和存储器。处理器用于接收客户端的网卡12发送的I/O请求或者其他信息,并且处理器还用于执行接收到的I/O请求,例如将I/O请求中携带的数据块写入内存的存储地址中,或者将内存的存储地址中的数据发送给客户端的网卡12。网卡22的存储器例如可以为RAM或只读存储器(read-only memory,ROM)。
值得说明的是,以上是以存储设备侧的CPU21、内存23、网卡22和固态硬盘24为例对这些部件进行了说明,客户端侧的CPU11、内存13的网卡12的形态与存储设备侧的各部件的功能向对应,此处不再赘述。
图3所示的系统架构可以应用于图1以及图2所示的场景中。由客户端的CPU11向网卡12发送数据访问命令,本申请实施例中,数据访问命令为写命令或读命令。其中,写命令用于指示将数据写入固态硬盘中,读命令用于指示从固态硬盘中读取数据。网卡12再将数据命令发送至存储设备的网卡22,网卡22与固态硬盘24进行信息交互,从而完成固态硬盘的访问。
以下说明图3所示的客户端和存储设备中的上述各部件的具体功能以及部件之间的信息交互过程。
在客户端侧,CPU11用于运行计算机程序,计算机程序运行时,能够处理数据访问的请求,构造数据访问命令,并通过网卡12将数据访问命令发送到存储设备。其中,数据访问命令可以为写命令或读命令。内存13中预先分配一块存储区域,用于存储网卡12的完成队列(completion queue,CQ)和提交队列(submission queue,SQ),其中,网卡12的SQ中放置待网卡执行的命令,当网卡12执行完SQ中的一个或多个命令后,将命令执行完成的信息写入至在CQ中。SQ中的命令可以由CPU11写入,当网卡12执行完SQ中的一个或多个命令后,再由网卡12将命令执行完成的信息写入至CQ中,再由CPU11根据CQ中的信息指示网卡12执行新的命令。内存13中还分别分配一块写缓存区域以及一块读缓存区域。当客户端需要向存储设备写入数据时,在接收到写数据的请求后,首先将待写入数据暂存在内存13的写缓存区域中,在向存储设备发送写命令时,再将写缓存区域中的待写入数据发送至存储设备。当客户端向存储设备发送了读命令之后,存储设备将读命令所请求的数据发送至客户端的读缓存区域中,再由CPU11从读缓存区域中读取数据。
客户端的网卡12与存储设备的网卡22通信连接,CPU11通过网卡12将数据访问命令发送到存储设备,并由网卡12接收存储设备返回的数据以及响应,网卡12接收到存储设备返回的数据以及响应后通知CPU11进行处理。对于基于不同网络协议的存储系统,网卡12与存储设备的网卡22之间可能基于不同的网络协议进行通信。示例性的,网卡12与网卡13之前可能基于前述的RoCE、iWARP、InfiniBand等协议及TCP/IP协议进行通信。相应的,网卡12和网卡22为支持该网络协议的网卡。以网卡12和网卡22支持RoCE协议为例,网卡12和网卡22均为具有RDMA功能的网络接口卡(RDMA enabled NIC,RNIC)。另外,CPU11、内存13和网卡12之间通过外设部件互联标准扩展(peripheral component interconnect express,PCIe)总线连接,因此,网卡12具备PCIe接口,以通过PCIe接口以及总线,与CPU11以及内存13连接。
在存储设备侧,CPU21用于运行计算机程序,在本申请实施例中,CPU21中运行的计算机程序用于初始化处理,具体包括对网卡22的SQ和固态硬盘24的SQ进行初始化,以及对网卡22的SQ和固态硬盘24的SQ进行绑定。具体处理过程将在下述的初始化流程中进行详细说明。
内存23中预先分配一块存储区域,用于存储网卡22的SQ。在传统的处理方式中,由CPU21将待网卡22执行的命令写入至在网卡22的SQ中,当网卡22执行完SQ中的命令后,再由网卡22将执行完成的信息写入至CQ中并通知CPU21处理。而在本申请实施例中,待网卡22执行的与数据访问相关的命令可以不经过CPU21处理,而由固态硬盘24写入至网卡22的SQ中,当网卡22执行完SQ中的命令后,不再需要向CQ写入完成信息。参照图3,固态硬盘24向网卡22的SQ中写入命令等处理,可以由设置在固态硬盘24中的一个网卡队列管理模块来实现。该网卡队列管理模块可以为硬件模块,也可以为软件模块,本申请实施例对于网卡队列管理模块的具体形态不做限定。
内存23中还预先分配一块存储区域,用于存储固态硬盘24的SQ。在传统的处理方式中,由CPU21将待固态硬盘24执行的命令写入至固态硬盘24的SQ中,当固态硬盘24执行完SQ中的命令后,再由固态硬盘24将执行完成的信息写入至CQ中并通知CPU21处理。而在本申请实施例中,待固态硬盘24执行的数据访问相关的命令可以不经过CPU21处理,而由网卡22写入至固态硬盘24的SQ中,当固态硬盘24执行完SQ中的命令后,不再需要向CQ写入完成信息。参照图3,网卡22向固态硬盘24的SQ中写入命令等处理,可以由设置在网卡22中的一个固态硬盘队列管理模块来实现。该固态硬盘队列管理模块可以为硬件模块,也可以为软件模块,本申请实施例对于固态硬盘队列管理模块的具体形态不做限定。
值得说明的是,除了如图3所示例的网卡22的SQ和固态硬盘24的SQ均位于内存23之外,作为另一种可选的实施方式,网卡22的SQ还可以位于网卡22内部,固态硬盘22的SQ也可以位于固态硬盘22内部。可选的,当网卡22的SQ位于网卡22内部时,SQ可以位于网卡22的RAM中。可选的,当固态硬盘22的SQ位于固态硬盘22内部时,SQ可以位于固态硬盘22的存储介质中。
内存23中还分别分配一块写缓存区域以及一块读缓存区域。当网卡22接收到客户端发送的待写入数据后,首先将待写入数据暂存在内存23的写缓存区域中,再由固态硬盘24从写缓存区域中写入固态硬盘24的介质中。当客户端向存储设备请求读取固态硬盘24中的数据时,首先由固态硬盘24将读取的数据暂存在读缓存区域中,再由网卡22从读缓存区域中将数据发送至客户端。
固态硬盘24能够识别SQ中的由网卡22写入的数据访问相关的命令,并在执行完命令后,将执行结果通过网卡22返回给客户端。另外,固态硬盘24预先绑定网卡22的SQ,当进行数据访问处理时,固态硬盘24可以向网卡22的SQ中写入数据访问相关的命令。可选的,由前文所述,可以由固态硬盘24中的网卡队列管理模块来实现该写入命令的过程。固态硬盘24中包括一个固态硬盘SQ门铃(doorbell),该固态硬盘SQ门铃具体可以为固态硬盘24中的一个寄存器。当网卡22向固态硬盘24的SQ中写入命令时,可以通过向该固态硬盘SQ门铃发送通知,以使得固态硬盘24获知SQ中被写入命令。
网卡22能够识别网卡22的SQ中的由固态硬盘24写入的数据访问相关的命令,并予以执行。另外,网卡22预先绑定固态硬盘24的SQ,当进行数据访问处理时,网卡22可以向固态硬盘24的SQ中写入数据访问相关的命令。可选的,由前文所述,可以由网卡22中的固态硬盘队列管理模块来实现该写入命令的过程。网卡22中包括一个网卡SQ门铃(doorbell),该网卡SQ门铃具体可以为网卡22中的一个寄存器。当固态硬盘24向网卡22的SQ中写入命令时,可以通过向该网卡SQ门铃发送通知,以使得网卡22获知SQ中被写入命令。
CPU21、内存23、网卡22和固态硬盘24之间通过PCIe总线连接,因此,网卡22具备PCIe接口,以通过PCIe接口以及总线,与CPU21、内存23以及固态硬盘24连接。另外,固态硬盘24具有PCIe接口,以通过PCIe接口以及总线,与CPU21、内存23以及网卡22连接。
以下分别说明基于上述图3所示的系统架构的系统初始化流程、写数据流程以及读数据流程。
图4为本申请实施例提供的访问固态硬盘的方法的系统初始化流程图,该初始化流程可以在客户端向存储设备进行数据访问之前进行,如图4所示,该系统初始流程包括:
S401、CPU11和CPU21通过网卡建立网络连接。
可选的,CPU11和CPU21可以基于特定的网络协议建立网络连接。该特定的网络协议例如可以为前述的RoCE、iWARP、InfiniBand及TCP/IP等协议。
S402、CPU21创建网卡22的队列及建立RDMA连接,并将网卡22的队列信息发送给固态硬盘24。
CPU21可以创建网卡22的队列,包括创建网卡22的SQ以及网卡SQ门铃。其中,所创建的网卡22的SQ具有一个基地址,所创建的网卡SQ门铃具有门铃的地址。同时,CPU21为网卡22的RDMA连接分配连接标识,这样,连接标识与网卡22的SQ及SQ基地址、SQ门铃一一对应。一个存储设备中可能包括一个固态硬盘24,也可能包括多个固态硬盘24,一个固态硬盘24可以有多个SQ。一个RDMA连接与某一个固态硬盘24的某一个SQ对应。一个RDMA连接对应网卡22的一个SQ及SQ门铃,供该连接所对应的固态硬盘使用,一个RDMA连接所对应的固态硬盘24的SQ,仅供对应的RDMA连接的命令访问。
示例性的,假设某RDMA连接1与存储设备的一个固态硬盘A的SQ1对应,该RDMA连接1包括连接标识1、网卡的SQ1以及门铃1,则当固态硬盘A需要通过该网卡连接1传输数据时,可以将命令写入网卡的SQ1中,在向网卡的SQ1写入命令之后,固态硬盘A向网卡的门铃1发送通知,以使得网卡获知SQ1中有待执行的命令。当前网卡SQ1所属的连接接收到来自客户端的固态硬盘访问命令时,需要向固态硬盘A的SQ1写入命令。
在创建网卡22的连接后,CPU21将网卡22的队列信息,包括连接标识、网卡22的SQ的基地址以及网卡SQ门铃的地址发送给固态硬盘24,以供固态硬盘24在数据访问时使用。
S403、CPU21创建固态硬盘24的队列,并将固态硬盘24的队列信息发送给网卡22。
CPU21创建固态硬盘24的队列,包括创建的固态硬盘24的SQ以及固态硬盘SQ门铃。其中,所创建的固态硬盘24的SQ具有一个基地址,所创建的固态硬盘SQ门铃具有门铃的地址。
在创建固态硬盘24的队列后,21CPU将固态硬盘24的队列信息,包括固态硬盘24的SQ的基地址以及固态硬盘SQ门铃的地址发送给网卡22,以供网卡22在数据访问时使用。
在经过上述步骤S402和S403之后,网卡22将供固态硬盘24使用的SQ基地址以及门铃地址发送给固态硬盘24,固态硬盘24将供网卡22使用的SQ的基地址以及网卡SQ门铃的地址发送给网卡22,从而完成网卡22的SQ和固态硬盘24的SQ的绑定。
S404、CPU21分配写缓存区域以及读缓存区域。
CPU21在内存23中申请两块内存区域,其中一块作为上述写缓存区域,另一块作为上述读缓存区域。
S405、CPU21将写缓存区域的信息以及读缓存区域的信息注册到网卡22以及固态硬盘24。
一种方式中,CPU21可以将写缓存区域的起始地址以及结束地址,以及读缓存区域的起始地址以及结束地址发送给网卡22和固态硬盘24。网卡22和固态硬盘24基于读缓存区域和写缓存区域的地址,可以对读缓存区域和写缓存区域进行读写操作。
另一种方式中,CPU21可以将写缓存区域的起始地址以及区域长度,以及读缓存区域的起始地址以及区域长度发送给网卡22和固态硬盘24。网卡22和固态硬盘24基于读缓存区域和写缓存区域的起始地址以及区域长度,可以对读缓存区域和写缓存区域进行读写操作。
当网卡22接收到写缓存区域的信息后,相应生成网卡22的内存区域密钥(memoryregion key,MR-key),该MR-key与写缓存区域具有唯一的对应关系,通过该MR-key可以指示写缓存区域。
当固态硬盘24接收到写缓存区域的信息后,相应生成固态硬盘的MR-key,该MR-key与写缓存区域具有唯一的对应关系,通过该MR-key可以指示写缓存区域。
S406、CPU21将写缓存区域的注册信息通过网卡22发送给客户端的CPU11。
写缓存区域的注册信息包括上述网卡22的MR-key以及固态硬盘24的MR-key,以及写缓存区域的长度。
写缓存区域的注册信息可以由网卡22发送至客户端的网卡12,再由网卡12通知客户端的CPU11。在CPU11需要向固态硬盘24中写入数据时,可以在数据访问的命令中携带写缓存区域的信息,具体使用过程将在下述写数据流程中详细说明。
一种可选方式中,可以由CPU11管理上述读缓存区域。在这种情况下,CPU21还将读缓存区域的注册信息通过网卡22发送给CPU11。
当由CPU11管理上述读缓存区域时,CPU11需要从固态硬盘24中读取数据时,可以在数据访问的命令中携带读缓存区域的信息,具体使用过程将在下述读数据流程中详细说明。
值得说明的是,具体实施过程中,上述步骤S402和S403的执行顺序可以不分先后,可以先执行S402,再执行S403,也可以先执行S403,再执行S402。另外,上述步骤S404-S406与S402-S403的执行顺序也不分先后,可以先执行S402-S403,再执行S404-S406,也可以先执行S404-S406,再执行S402-S403。
图5为本申请实施例提供的访问固态硬盘的方法的数据写入流程示意图,如图5所示,客户端向存储设备的固态硬盘写入数据的流程包括:
S501、CPU11构造写命令,并向网卡12发送写命令以及待写入数据的信息。
待写入数据可以保存在客户端内存13的写缓存区域中,CPU11确定待写入数据被写入写缓存区域之后,需要向存储设备发送两个信息,分别为待写入数据以及写命令。其中,待写入数据为需要写入至存储设备的固态硬盘24的介质中的数据。写命令为需要固态硬盘24执行的命令,写命令中包括数据源地址,该数据源地址可以由固态硬盘24的MR-key以及偏移量指示。如前文所述,在系统初始化时,CPU21通过网卡22将上述写缓存区域的注册信息发送给CPU11。本步骤中,当CPU11需要向固态硬盘24中写入数据时,CPU11将与写缓存区域对应的固态硬盘的MR-key以及偏移量携带在构造的写命令中,MR-key可以指示写缓存区域,偏移量可以指示待写入数据在写缓存区域中存储时的偏移地址。固态硬盘24根据这两个信息可以获知待写入数据的存储地址,并将待写入数据从上述数据源地址中写入到固态硬盘24的介质中。
CPU11可以通过如下方式中的任意一种发送上述待写入数据和写命令。
第一种方式中,CPU11构造一个访问请求,该访问请求包括指示上述待写入数据在客户端内存13中存储地址的信息,该访问请求中还包括上述写命令以及上述待写入数据。
可选的,该访问请求可以为一个RDMA_WRITE_EXT命令,该RDMA_WRITE_EXT命令中包括上述待写入数据、写命令以及指示上述待写入数据在客户端内存13中存储地址的信息。以下实施例均以访问请求为RDMA_WRITE_EXT命令为例进行说明。
在该方式中,CPU21将RDMA_WRITE_EXT命令发送至客户端的网卡12,由网卡12执行该命令,将待写入数据以及写命令发送至存储设备。
一种示例中,假设客户端和存储设备基于RoCE协议通信,则可以对RDMA_WRITE命令进行扩展,以构造出上述RDMA_WRITE_EXT命令。具体的,将RDMA_WRITE命令中的立即数(Immediate Data)扩展至适合容纳命令的大小,例如扩展至64字节,并将写命令携带在该立即数中。同时,RDMA_WRITE原有的指示待写入数据的存储地址的部分可以保持不变,可以将待写入数据的存储地址的信息携带在该部分。
第二种方式中,CPU11可以通过三条命令发送上述待写入数据、写命令以及固态硬盘SQ门铃通知。该三条命令分别为第一命令、第二命令和第三命令。一种示例中,该三条命令可以均为RDMA_WRITE命令,具体为第一RDMA_WRITE命令、第二RDMA_WRITE命令和第三RDMA_WRITE命令。以下均以RDMA_WRITE命令为例进行说明。
在该方式中,CPU11发送第一RDMA_WRITE命令,该命令中包括上述待写入数据,发送第二RDMA_WRITE命令,该命令中包括上述写命令,发送第三RDMA_WRITE命令,该命令中包括上述固态硬盘SQ门铃通知。在这种方式中,需要在上述步骤S405中,CPU21将上述步骤S403获得的固态硬盘SQ的基地址和SQ门铃地址注册到网卡22,并在上述步骤S406中,CPU21将固态硬盘SQ的基地址和SQ门铃地址注册信息通过网卡22发送给CPU11。相应的,CPU11发送上述第二命令时,结合固态硬盘SQ的基地址以及已经下发的命令数,计算出本次写命令在固态硬盘24的SQ的目的地址,并将该目的地址携带在上述第二命令中。CPU11在发送上述第三命令时,将SQ门铃地址作为目的地址。
S502、网卡12向网卡22发送上述待写入数据和写命令。
如果CPU11使用上述第一种可选方式构造命令,则网卡12向网卡22发送上述RDMA_WRITE_EXT命令。相应的,网卡22接收上述RDMA_WRITE_EXT命令。
其中,网卡12向网卡22发送上述RDMA_WRITE_EXT命令,是指网卡12按照RDMA_WRITE_EXT命令的格式,将客户端内存13的存储地址中的待写入数据,以及写命令,发送到网卡22。
如果CPU11使用上述第二种可选方式构造命令,则网卡12向网卡22分别发送上述第一RDMA_WRITE命令、第二RDMA_WRITE命令和第三RDMA_WRITE命令。相应的,网卡22接收上述第一RDMA_WRITE命令、第二RDMA_WRITE命令和第三RDMA_WRITE命令。
S503、网卡22将上述待写入数据写入内存23中。
如果CPU11使用上述第一种可选方式构造命令,则网卡22从上述RDMA_WRITE_EXT获取待写入数据并写入RDMA_WRITE_EXT命令中所指定的上述写缓存区域的一段空间中。
如果CPU11使用上述第二种可选方式构造命令,则网卡22从上述第一RDMA_WRITE命令中获取待写入数据并写入第一RDMA_WRITE命令中所指定的上述写缓存区域的某段空间。
可选的,网卡22可以将上述待写入数据写入内存23中的存储地址中,该存储地址可以为上述步骤S501中CPU11在构造写命令时所选择的上述写缓存区域中的地址。
在前述的存储系统初始化过程的步骤S405中CPU21将写缓存区域的信息以及读缓存区域的信息注册到网卡22时,22网卡相应生成网卡的MR-key,该MR-key与注册到网卡22的写缓存区域具有唯一的对应关系。在上述步骤S406中CPU21将写缓存区域的注册信息,包括网卡的MR-key以及写缓存区域的长度,通过网卡22发送给CPU11。CPU11在向存储设备发送上述待写入数据时,将上述网卡22的MR-key及待写入数据在写缓存区域中的偏移地址与上述待写入数据一同发送。进而,在本步骤中,当22网卡接收到上述待写入数据时,根据与待写入数据同时发送过来的MR-key及偏移地址,可以确定出待写入数据应写入的写缓存区域地址。进而,网卡22从该地址开始,将待写入数据写入写缓存区域中。
一种可选方式中,网卡22可以通过直接存储器存取(direct memory access,DMA)方式,将待写入数据写入内存中的存储地址中,在该方式中,可以经由DMA控制器将待写入数据写入内存中的存储地址中,而不需要CPU的参与。
S504、网卡22将写命令写入固态硬盘24的SQ中。
如果CPU11使用上述第一种可选方式构造命令,则网卡22从上述RDMA_WRITE_EXT中解析出写命令。
如前文所述,在存储系统初始化过程中,CPU21进行网卡22的SQ和固态硬盘24的SQ的绑定,在绑定之后,网卡22可以获知固态硬盘24的SQ的基地址。因此,网卡22根据RDMA_WRITE_EXT所在的RDMA连接标识查找出固态硬盘24的SQ的基地址,进而,网卡22按照SQ的基地址,并结合已经下发的命令数,计算出本次写命令在固态硬盘24的SQ的目的地址,将写命令写入固态硬盘24的SQ中。
如前文所述,固态硬盘24的SQ可以位于内存23中,或者,也可以位于固态硬盘24内部。当位于内存23中时,由前述的网卡22中的固态硬盘队列管理模块将写命令写入内存23中的固态硬盘24的SQ中。当位于固态硬盘24内部时,由前述的网卡22中的固态硬盘队列管理模块将写命令写入固态硬盘24内部的固态硬盘SQ中。图5中以固态硬盘24的SQ位于内存23中为例进行说明。
如果CPU11使用上述第二种可选方式构造命令,则网卡22执行上述第二RDMA_WRITE命令,将上述第二RDMA_WRITE命令携带的数据,即写命令,写入第二RDMA_WRITE命令指定的地址,即固态硬盘24的SQ的目的地址。固态硬盘24的SQ的目的地址,由CPU11根据固态硬盘24的SQ的基地址,结合已经发送的命令数目计算得到。
S505、网卡22向固态硬盘SQ门铃发送通知。
如果CPU11使用上述第一种可选方式构造命令,网卡22可以向固态硬盘SQ门铃发送通知,以使得固态硬盘24获知SQ中被写入命令。
如前文所述,固态硬盘SQ门铃具体可以为固态硬盘24中的一个寄存器。在存储系统初始化绑定时,网卡22已获知固态硬盘SQ门铃地址。网卡22向固态硬盘SQ门铃发送通知时,可以向固态硬盘SQ门铃地址发送一个PCIe报文。固态硬盘SQ门铃接收到报文后,固态硬盘可以获知SQ中被写入待执行的命令。
如果CPU11使用上述第二种可选方式构造命令,则网卡22执行上述第三RDMA_WRITE命令,将上述第三RDMA_WRITE命令中携带的数据,即发往固态硬盘24的SQ门铃的通知信息,写入上述第三RDMA_WRITE命令指定的地址,即固态硬盘24的SQ门铃地址。
S506、固态硬盘24从固态硬盘24的SQ中读取并解析SQ中的写命令。
S507、固态硬盘24从内存23中的存储地址中获取待写入数据,将待写入数据写入固态硬盘24的介质中。
如上述步骤S501中所述,客户端在构造写命令时,将写缓存区域对应的固态硬盘24的MR-key以及偏移量携带在写命令中。当固态硬盘24解析SQ中的写命令后,可以解析出固态硬盘24的MR-key以及偏移量,根据这两个信息,固态硬盘24可以获知待写入数据在内存23中的存储地址。进而,固态硬盘24可以通过DMA方式从该存储地址中获取待写入数据,将待写入数据写入固态硬盘的介质中。
值得说明的是,本申请实施例中所述的固态硬盘24将待写入数据写入固态硬盘24的介质中,是指固态硬盘24是数据写入过程的发起者,因此,此处称为由固态硬盘24将数据写入固态硬盘24的介质中。以使用上述DMA方式写入数据为例,数据写入的实质过程为:固态硬盘24请求DMA控制器将待写入数据从内存23中的存储地址中写入固态硬盘24的介质中,DMA控制器接收到固态硬盘24的请求后,向内存控制器发送写入命令,由内存控制器将待写入数据从内存23中的存储地址中写入固态硬盘24的介质中。
具体的,在上述步骤S405中,CPU21将写缓存区域注册到固态硬盘24时,固态硬盘24的驱动(也是存储设备程序的一部分)根据写缓存区域的虚拟地址向操作系统查询得到对应的物理地址,生成写缓存区的地址转换表,并通知给固态硬盘24。由于写缓存区域较大,而物理内存管理粒度一般较小,如4KB单位,因此,地址转换表会包含多个连续或者不连续的物理地址。固态硬盘24接收到MR-key以及偏移量,查找该地址转换表,得到待写入数据存放的物理地址,进而可以根据该物理地址发起DMA操作
S508、固态硬盘24向网卡22的SQ写入RDMA_SEND命令。
该RDMA_SEND命令中携带固态硬盘24执行写命令的响应信息。该响应信息可以为写入成功、写入失败等。
如前文所述,在存储系统初始化过程中,CPU21进行网卡22的SQ和固态硬盘24的SQ的绑定,在绑定之后,固态硬盘24可以获知网卡22的SQ的基地址。因此,固态硬盘24可以按照网卡22的SQ的基地址,结合已经写入网卡SQ的命令数量,计算出本次SQ的目的地址,将RDMA_SEND命令写入网卡22的SQ中。
如前文所述,网卡22的SQ可以位于内存23中,或者,也可以位于网卡22内部。当位于内存23中时,由前述的固态硬盘24中的网卡队列管理模块将RDMA_SEND命令写入内存23中的网卡22的SQ中。当位于网卡22内部时,由前述的固态硬盘24中的网卡队列管理模块将RDMA_SEND命令写入网卡22内部的网卡22的SQ中。图5中以网卡22的SQ位于内存23中为例进行说明。
S509、固态硬盘24向网卡SQ门铃发送通知。
网卡22的SQ中被写入命令之后,网卡22无法主动获知被写入命令,因此,固态硬盘24可以向网卡SQ门铃发送通知,以使得网卡22获知SQ中被写入命令。
如前文所述,网卡SQ门铃具体可以为网卡22中的一个寄存器。在存储系统初始化绑定时,固态硬盘24已获知固态硬盘SQ门铃地址。固态硬盘24向网卡SQ门铃发送通知时,可以向网卡SQ门铃地址发送一个PCIe报文。网卡SQ门铃接收到报文后,网卡22可以获知SQ中被写入待执行的命令。
S510、网卡22从网卡22的SQ中读取RDMA_SEND命令。
S511、网卡22将RDMA_SEND命令发送至网卡12。
S512、网卡12解析RDMA_SEND命令,将命令中携带的响应信息上报至CPU11。
在将响应信息上报至CPU11之后,网卡12向网卡22发送RDMA_SEND命令的ACK命令。
S513、网卡22向网卡22的SQ的头指针地址写入网卡22的SQ的头指针信息。网卡22的SQ的头指针用于指示网卡22的SQ中被执行的命令的位置,通过读取该头指针,固态硬盘24可以获知网卡22的SQ的空满,从而知道是否可以继续向网卡22的SQ中写入命令。可选的,网卡22可以向某个地址写入SQ的头指针信息,固态硬盘24通过读取该地址获得SQ头指针信息。该地址可以为SSD内部某个寄存器地址,也可以为内存的某个地址。
图6为本申请实施例提供的访问固态硬盘的方法的数据读取流程示意图,如图6所示,客户端从存储设备的固态硬盘中读取数据的流程包括:
S601、CPU11构造读命令,并向网卡12发送读命令。
如前文所述,在存储系统初始化时,CPU11在客户端的内存13中分配一块读缓存区域,当需要读取存储设备的固态硬盘24中的数据时,CPU11在构造读命令时,可以将上述读缓存区域中的一个地址作为读命令中的目的地址,存储设备在读取到数据后,将数据发送至该目的地址。
第一种可选方式中,CPU11可以构造一个RDMA_WRITE_EXT命令,该RDMA_WRITE_EXT命令上述读命令。
该RDMA_WRITE_EXT命令的构造方法与前述步骤S501中的方法相同,并且,在本实施例中,RDMA_WRITE_EXT命令中不携带RDMA数据。
第二种可选方式中,CPU11可以通过两条RDMA_WRITE命令发送上述读命令以及固态硬盘SQ门铃通知。
在该方式中,CPU11发送第四RDMA_WRITE命令,该命令中包括上述读命令,发送前述的第三RDMA_WRITE命令,在该第三RDMA_WRITE命令种包括上述固态硬盘SQ门铃通知。在这种方式中,需要在上述步骤S405中,CPU21将上述步骤S403获得的固态硬盘SQ的基地址和SQ门铃地址注册到网卡,并在上述步骤S406中,CPU21将固态硬盘SQ的基地址和SQ门铃地址注册信息通过网卡22发送给CPU21。相应的,CPU11发送上述第四命令时,结合固态硬盘SQ的基地址以及已经下发的命令数,计算出本次写命令在固态硬盘的SQ的目的地址,并将该目的地址携带在上述第四命令中。CPU11在发送上述第三命令时,将SQ门铃地址作为目的地址。
可选的,如果内存23的读缓存区域由CPU11管理,则CPU11在发送上述读命令时,还可以在读命令中携带读缓存区域的起始地址。
S602、网卡12向网卡22发送上述读命令。
S603、网卡22将读命令写入固态硬盘24的SQ中。
如果CPU21使用上述第一种可选方式构造命令,则,网卡22对RDMA_WRITE_EXT命令进行解析,从中解析出读命令。
如前文所述,在存储系统初始化过程中,CPU21进行了RDMA连接和网卡22的SQ、固态硬盘22的SQ的绑定,在绑定之后,网卡22可以获知固态硬盘24的SQ的基地址。因此,网卡22根据读命令所在RDMA连接标识查找出固态硬盘24的SQ的基地址,进而,网卡22按照SQ的基地址,并结合已经下发的命令数,计算出本次写命令在固态硬盘24的SQ的目的地址,将读命令写入固态硬盘24的SQ中。
如果CPU11使用上述第二种可选方式构造命令,则网卡22执行上述第四RDMA_WRITE命令,将上述第四RDMA_WRITE命令携带的数据,即读命令,写入第四RDMA_WRITE命令指定的地址,即固态硬盘24的SQ的目的地址。固态硬盘24的SQ的目的地址,由CPU11根据固态硬盘24的SQ的基地址,结合已经发送的命令数目计算得到。
如前文所述,固态硬盘24的SQ可以位于内存23中,或者,也可以位于固态硬盘23内部。当位于内存23中时,由前述的网卡22中的固态硬盘队列管理模块将读命令写入内存23中的固态硬盘24的SQ中。当位于固态硬盘24内部时,由前述的网卡22中的固态硬盘队列管理模块将读命令写入固态硬盘24内部的固态硬盘SQ中。图6中以固态硬盘24的SQ位于内存23中为例进行说明。
S604、网卡22向固态硬盘SQ门铃发送通知。
如果CPU11使用上述第一种可选方式构造命令,网卡22可以向固态硬盘SQ门铃发送通知,以使得固态硬盘24获知SQ中被写入命令。
如前文所述,固态硬盘SQ门铃具体可以为固态硬盘24中的一个寄存器。在存储系统初始化绑定时,网卡22已获知固态硬盘SQ门铃地址。网卡22向固态硬盘SQ门铃发送通知时,可以向固态硬盘SQ门铃地址发送一个PCIe报文。固态硬盘SQ门铃接收到报文后,固态硬盘24可以获知SQ中被写入待执行的命令。
如果CPU21使用上述第二种可选方式构造命令,则网卡22执行上述第三RDMA_WRITE命令,将上述第三RDMA_WRITE命令中携带的数据,即发往固态硬盘24的SQ门铃的通知信息,写入上述第三RDMA_WRITE命令指定的地址,即固态硬盘24的SQ门铃地址。
S605、固态硬盘24从固态硬盘24的SQ中读取并解析SQ中的读命令。
S606、固态硬盘24执行读命令,将读取的数据保存在内存23中的存储地址中。
可选的,该内存23中的存储地址可以为存储设备的读缓存区域中的地址。
一种方式中,如果存储设备的内存23的读缓存区域由CPU11管理,则CPU11在发送上述读命令时,会携带读缓存区域中的地址。相应的,固态硬盘24可以按照读命令所携带的地址,将读取的数据保存到内存23中的存储地址中,具体存储到读缓存区域中的存储地址中。
具体的,在前述的存储系统初始化过程的步骤S405中CPU21将写缓存区域的信息以及读缓存区域的信息注册到固态硬盘24时,固态硬盘24相应生成固态硬盘24的内存区域密钥(memory region key,MR-Key),该MR-Key与注册到固态硬盘24的读缓存区域具有唯一的对应关系。在上述步骤S406中CPU21将读缓存区域的信息通过网卡22发送给CPU11时,同时将固态硬盘24的MR-Key发送给CPU11。CPU11在存储设备发送上述读命令时,将上述固态硬盘24的内存区域密钥及偏移地址与上读命令一同发送。进而,在本步骤中,固态硬盘24接收到上述读命令时,根据与读命令同时发送过来的内存区域密钥及偏移地址,可以确定出该读命令用到的读缓存区域的起始地址。进而,固态硬盘24从该起始地址开始,将从固态硬盘24的介质中读出的数据写入读缓存区域中。
另一种方式中,还可以由固态硬盘24管理读缓存区域。在前述的存储系统初始化过程的步骤S405中CPU21将读缓存区域的信息注册到固态硬盘24后,固态硬盘24自行决定使用读缓存区域的某片区域来存储从固态硬盘24中读出的数据。可选的,固态硬盘24可以通过DMA方式,将读取的数据写入内存中的存储地址中,在该方式中,可以经由DMA控制器将读取的数据写入内存中的存储地址中,而不需要CPU的参与。
S607、固态硬盘24向网卡22的SQ写入RDMA_WRITE命令以及RDMA_SEND命令。
RDMA_WRITE命令用于将内存23的读缓存区域中的数据发送到内存13的读缓存区域中。
RDMA_SEND命令中携带读命令的响应信息。该响应信息可以为读取成功、读取失败等。
S608、固态硬盘24向网卡SQ门铃发送通知。
固态硬盘24向网卡SQ门铃发送通知,使得网卡22获知SQ中被写入命令。
S609、网卡22将RDMA_WRITE命令以及RDMA_SEND命令发送到网卡12。
网卡22执行RDMA_WRITE命令,将内存23的读缓存区域中的数据发送到客网卡12。同时,网卡22执行RDMA_SEND命令,将响应信息发送给网卡12。
S610、网卡12解析RDMA_WRITE命令,将数据以DMA方式写入客户端内存13的读缓存区域中。
S611、网卡12解析RDMA_SEND命令,将命令中携带的响应信息上报至CPU11。
S612、网卡22向网卡22的SQ的头指针地址写入网卡22的SQ的头指针信息。
本申请实施例在数据访问的过程中,存储设备的网卡接收到数据访问命令后,通过与固态硬盘的直接交互,即可以完成数据访问,而无需存储设备的CPU的参与,因此,能够极大减小数据访问的时延。同时,也会极大降低存储设备的CPU的占用率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、存储节点或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、存储节点或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的存储节点、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
应理解,在本申请实施例中,术语“第一”等仅仅是为了指代对象,并不表示相应对象的次序。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,存储节点,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种访问固态硬盘的方法,其特征在于,所述方法应用于存储设备,所述存储设备包括网卡、内存和固态硬盘,所述内存中包括用于存储网卡提交队列的存储区域和用于存储固态硬盘提交队列的存储区域;所述方法包括:
所述网卡通过将网卡提交队列中供固态硬盘使用的提交队列基地址以及门铃地址发送给固态硬盘,并接收所述固态硬盘发送的固态硬盘提交队列中供所述网卡使用的提交队列的基地址以及网卡提交队列门铃的地址,以使网卡提交队列和固态硬盘提交队列绑定;
所述网卡接收待写入数据和写命令,所述写命令用于指示将所述待写入数据写入所述固态硬盘中;
所述网卡将所述待写入数据写入所述内存;
所述网卡将所述写命令写入所述固态硬盘的提交队列;
所述网卡通知所述固态硬盘所述提交队列中有待执行的命令,所述待执行的命令是所述写命令;
所述固态硬盘根据所述写命令从所述内存中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中;
所述固态硬盘在完成数据写入后,向网卡提交队列中写入RDMA_SEND命令,所述RDMA_SEND命令中携带所述固态硬盘执行写命令的响应信息;
所述固态硬盘向所述网卡提交门铃发送通知,以通知网卡其提交队列中有待执行的命令。
2.根据权利要求1所述的方法,其特征在于,所述网卡接收待写入数据和写命令,包括:
所述网卡接收访问请求,所述访问请求包括所述待写入数据和所述写命令。
3.根据权利要求2所述的方法,其特征在于,所述网卡将所述写命令写入所述固态硬盘的提交队列,包括:
所述网卡从所述访问请求中解析出所述写命令,将所述写命令写入所述固态硬盘的提交队列。
4.根据权利要求1所述的方法,其特征在于,所述网卡接收待写入数据、写命令,包括:
所述网卡接收第一命令,所述第一命令用于指示所述待写入数据;
所述网卡接收第二命令,所述第二命令包括所述写命令。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述固态硬盘根据所述写命令从所述内存中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中,包括:
所述固态硬盘从所述写命令中解析出所述待写入数据在所述内存中的存储地址;
所述固态硬盘从所述内存中的存储地址中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述网卡通知所述固态硬盘所述提交队列中有待执行的命令,包括:
所述网卡向所述固态硬盘的提交队列门铃发送通知信息,所述通知信息用于通知所述固态硬盘所述提交队列中有待执行的命令。
7.根据权利要求4所述的方法,其特征在于,所述网卡向所述固态硬盘的提交队列门铃发送通知信息,包括:
所述网卡根据接收的第三命令,向所述固态硬盘的提交队列门铃发送通知信息,所述第三命令包括所述通知信息。
8.一种存储设备,特征在于,包括:网卡、内存和固态硬盘;所述内存中包括用于存储网卡提交队列的存储区域和用于存储固态硬盘提交队列的存储区域;
所述网卡用于通过将网卡提交队列中供固态硬盘使用的提交队列基地址以及门铃地址发送给固态硬盘,并接收所述固态硬盘发送的固态硬盘提交队列中供所述网卡使用的提交队列的基地址以及网卡提交队列门铃的地址,以使网卡提交队列和固态硬盘提交队列绑定;
所述网卡用于接收待写入数据和写命令,所述写命令用于指示将所述待写入数据写入所述固态硬盘中;
所述网卡还用于将所述待写入数据写入所述内存;
所述网卡还用于将所述写命令写入所述固态硬盘的提交队列;
所述网卡还用于通知所述固态硬盘所述提交队列中有待执行的命令,所述待执行的命令是所述写命令;
所述固态硬盘用于根据所述写命令从所述内存中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中;
所述固态硬盘还用于在完成数据写入后,向网卡提交队列中写入RDMA_SEND命令,所述RDMA_SEND命令中携带所述固态硬盘执行写命令的响应信息;
所述固态硬盘还用于向所述网卡提交门铃发送通知,以通知网卡其提交队列中有待执行的命令。
9.根据权利要求8所述的存储设备,其特征在于,所述网卡具体用于:
接收访问请求,所述访问请求包括所述待写入数据和所述写命令。
10.根据权利要求9所述的存储设备,其特征在于,所述网卡具体用于:
从所述访问请求中解析出所述写命令,将所述写命令写入所述固态硬盘的提交队列。
11.根据权利要求8所述的存储设备,其特征在于,所述网卡具体用于:
接收第一命令,所述第一命令用于指示所述待写入数据;以及,
接收第二命令,所述第二命令包括所述写命令。
12.根据权利要求8-11任一项所述的存储设备,其特征在于,所述固态硬盘具体用于:
从所述写命令中解析出所述待写入数据在所述内存中的存储地址;以及,
从所述内存中的存储地址中获取所述待写入数据,将所述待写入数据写入所述固态硬盘的介质中。
13.根据权利要求8-11任一项所述的存储设备,其特征在于,所述网卡具体用于:
向所述固态硬盘的提交队列门铃发送通知信息,所述通知信息用于通知所述固态硬盘所述提交队列中有待执行的命令。
14.根据权利要求11所述的存储设备,其特征在于,所述网卡具体用于:
根据接收的第三命令,向所述固态硬盘的提交队列门铃发送通知信息,所述第三命令包括所述通知信息。
CN201910939824.8A 2019-09-30 2019-09-30 访问固态硬盘的方法及存储设备 Active CN112579311B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910939824.8A CN112579311B (zh) 2019-09-30 2019-09-30 访问固态硬盘的方法及存储设备
EP20872004.5A EP4030293A4 (en) 2019-09-30 2020-09-10 METHOD OF ACCESSING AN IC DISK AND STORAGE DEVICE
PCT/CN2020/114348 WO2021063160A1 (zh) 2019-09-30 2020-09-10 访问固态硬盘的方法及存储设备
US17/707,021 US20220222016A1 (en) 2019-09-30 2022-03-29 Method for accessing solid state disk and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910939824.8A CN112579311B (zh) 2019-09-30 2019-09-30 访问固态硬盘的方法及存储设备

Publications (2)

Publication Number Publication Date
CN112579311A CN112579311A (zh) 2021-03-30
CN112579311B true CN112579311B (zh) 2023-11-10

Family

ID=75116496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910939824.8A Active CN112579311B (zh) 2019-09-30 2019-09-30 访问固态硬盘的方法及存储设备

Country Status (4)

Country Link
US (1) US20220222016A1 (zh)
EP (1) EP4030293A4 (zh)
CN (1) CN112579311B (zh)
WO (1) WO2021063160A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116830094A (zh) * 2021-03-31 2023-09-29 华为技术有限公司 存储系统和远程直接数据存取方法
CN115079960B (zh) * 2022-08-18 2022-12-06 赛芯半导体技术(北京)有限公司 数据的处理方法、加速卡及数据处理系统
CN115934623B (zh) * 2023-02-09 2023-05-16 珠海星云智联科技有限公司 一种基于远程直接内存访问的数据处理方法、设备及介质
CN116775510B (zh) * 2023-08-22 2023-11-24 成都泛联智存科技有限公司 数据访问方法、装置、服务器和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN108369530A (zh) * 2016-12-05 2018-08-03 华为技术有限公司 非易失性高速传输总线架构中数据读写命令的控制方法、设备和系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097519A (zh) * 2006-06-30 2008-01-02 环达电脑(上海)有限公司 一种可以快速使用硬盘数据的计算机系统
EP2717533A4 (en) * 2011-07-19 2015-01-07 Huawei Tech Co Ltd METHOD, NETWORK CARD, AND HARD DISK CARD FOR ACCESSING HARD DISK
BR112014017543A2 (pt) * 2012-01-17 2017-06-27 Intel Corp técnicas de validação de comando para o acesso a um dispositivo de armazenamento por um cliente remoto
US9317204B2 (en) * 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
CN104267912A (zh) * 2014-09-19 2015-01-07 北京联创信安科技有限公司 一种nas加速方法及系统
US9389950B2 (en) * 2014-11-14 2016-07-12 International Business Machines Corporation Techniques for information protection in a solid-state device based storage pool
US10423568B2 (en) * 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10521118B2 (en) * 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
CN106527974B (zh) * 2016-10-09 2019-05-28 华为技术有限公司 一种写数据的方法、设备及系统
JP2018160155A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 記憶装置
CN110419034B (zh) * 2017-04-14 2021-01-08 华为技术有限公司 一种数据访问方法及装置
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
CN110086571A (zh) * 2019-04-10 2019-08-02 广州华多网络科技有限公司 一种数据发送及接收的方法、装置及数据处理系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
CN108369530A (zh) * 2016-12-05 2018-08-03 华为技术有限公司 非易失性高速传输总线架构中数据读写命令的控制方法、设备和系统

Also Published As

Publication number Publication date
US20220222016A1 (en) 2022-07-14
EP4030293A4 (en) 2022-11-09
WO2021063160A1 (zh) 2021-04-08
EP4030293A1 (en) 2022-07-20
CN112579311A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN112579311B (zh) 访问固态硬盘的方法及存储设备
US11983406B2 (en) Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
EP2889780B1 (en) Data processing system and data processing method
US10642777B2 (en) System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection
CN107832087B (zh) 自配置基板管理控制器(bmc)
CN108959146B (zh) 数据存储系统
US8898665B2 (en) System, method and computer program product for inviting other virtual machine to access a memory space allocated to a virtual machine
CN112130748B (zh) 一种数据访问方法、网卡及服务器
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
CN108028833A (zh) 一种nas数据访问的方法、系统及相关设备
US10979503B2 (en) System and method for improved storage access in multi core system
WO2019127018A1 (zh) 存储系统访问方法及装置
EP4177763A1 (en) Data access method and related device
CN112615917B (zh) 存储系统中存储设备的管理方法及存储系统
CN111064680B (zh) 一种通信装置及数据处理方法
CN115080479B (zh) 传输方法、服务器、设备、裸金属实例及基板管理控制器
JP6788691B2 (ja) OpenFabricsにおけるスループットの改善
CN111404842B (zh) 数据传输方法、装置及计算机存储介质
JP2024501713A (ja) データアクセス方法および関連デバイス
EP3889778A1 (en) Distributed storage system and computer program product
CN111642137A (zh) 快速发送写数据准备完成消息的方法、设备和系统
US20210218627A1 (en) Setting change method and recording medium recording setting change program
CN114911411A (zh) 一种数据存储方法、装置及网络设备
CN117407333A (zh) 储存系统、数据发送方法及网络接口
CN115905042A (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