CN113360077B - 数据存储方法、计算节点及存储系统 - Google Patents

数据存储方法、计算节点及存储系统 Download PDF

Info

Publication number
CN113360077B
CN113360077B CN202010144379.9A CN202010144379A CN113360077B CN 113360077 B CN113360077 B CN 113360077B CN 202010144379 A CN202010144379 A CN 202010144379A CN 113360077 B CN113360077 B CN 113360077B
Authority
CN
China
Prior art keywords
network card
write request
data
storage
storage unit
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
CN202010144379.9A
Other languages
English (en)
Other versions
CN113360077A (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 CN202010144379.9A priority Critical patent/CN113360077B/zh
Publication of CN113360077A publication Critical patent/CN113360077A/zh
Application granted granted Critical
Publication of CN113360077B publication Critical patent/CN113360077B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据存储方法及计算节点,属于数据存储领域。该计算节点中的网卡接收到写请求后,可以根据目标存储单元的末尾地址确定偏移地址,将该偏移地址添加在该写请求中,并将添加有该偏移地址的写请求发送至存储节点。本申请提供的方案通过网卡分配并添加偏移地址,可以避免由客户端分配偏移地址时,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序的问题。本申请提供的方案可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。

Description

数据存储方法、计算节点及存储系统
技术领域
本申请涉及数据存储领域,特别涉及一种数据存储方法、计算节点及存储系统。
背景技术
分布式存储系统一般包括多个计算节点以及多个存储节点,该多个存储节点的存储介质可以组成存储资源池。该系统中的至少一个计算节点中运行有客户端(client),该客户端用于提供数据访问的接口。
相关技术中,分布式存储系统通常采用追加(append)写的方式存储数据,该追加写的方式只会在存储区域的尾部追加写入新的数据,而不会覆盖原有数据。为了确保数据在存储区域的连续存储,该追加写数据的过程如下:客户端为写请求分配偏移地址,并将添加有偏移地址的写请求发送至存储节点,存储节点将数据写入至偏移地址指示的位置后,向客户端发送针对该写请求的确认响应。客户端接收到该确认响应后,需确保分配了较小偏移地址的其他写请求的确认响应均已接收到,才能确定当前接收到的确认响应所对应的写请求中的数据写入成功。其中,该较小偏移地址是指:已分配的偏移地址中小于为当前接收到的确认响应所针对的写请求分配的偏移地址的地址。
但是,若客户端在较短时间内发送了多个添加有偏移地址的写请求,则该多个写请求在传输过程中可能乱序,导致客户端接收到的该多个写请求的确认响应也存在乱序,进而导致客户端在接收到分配了较大偏移地址的写请求的确认响应后,需等待较长时间才能确定该写请求中的数据是否写入成功。该追加写数据的时延较大,效率较低。
发明内容
本申请提供了一种数据存储方法、计算节点及存储系统,可以解决相关技术中的方法追加写数据时的时延较大,效率较低的问题,技术方案如下:
一方面,提供了一种数据存储方法,应用于计算节点中的网卡;该方法包括:网卡接收写请求,该写请求包括待写入数据以及该待写入数据将要写入的目标存储单元的标识,其中该目标存储单元的存储空间来源于一个或多个存储节点,且该目标存储单元以追加写的方式存储数据;该网卡根据该目标存储单元的末尾地址确定偏移地址,将该偏移地址添加在该写请求中,并将添加有该偏移地址的该写请求发送至该一个或多个存储节点,该写请求用于指示该存储节点将该待写入数据写入至该目标存储单元中该偏移地址指示的位置。
通过网卡为写请求分配偏移地址,可以确保添加有偏移地址的写请求能够按照该偏移地址的分配顺序依次发送至存储节点,避免通过客户端分配偏移地址,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序的问题。本申请提供的方案可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。
可选的,该网卡的缓存中可以存储有多个存储单元的末尾地址;在该网卡根据该目标存储单元的末尾地址确定偏移地址之前,该方法还可以包括:该网卡根据该目标存储单元的标识,从该多个存储单元的末尾地址中确定该目标存储单元的末尾地址;
在该网卡将该偏移地址添加在该写请求中之后,该方法还包括:该网卡根据该待写入数据的长度更新该目标存储单元的末尾地址。
通过网卡维护存储单元的末尾地址,可以减少网卡与客户端之间的数据交互,确保偏移地址的分配效率。
可选的,在该网卡将添加有该偏移地址的该写请求发送至该一个或多个存储节点之后,该方法还包括:
该网卡接收针对该写请求的确认响应;该网卡根据该偏移地址,确定该待写入数据是否写入成功。
本申请提供的方案中,由于可以通过网卡分配偏移地址,因此该网卡接收到针对该写请求的确认响应后,可以直接判断该待写入数据是否写入成功。
可选的,该网卡将添加有该偏移地址的该写请求发送至该一个或多个存储节点的过程可以包括:
该网卡将添加有该偏移地址的该写请求添加至发送队列,该发送队列中还包括其他写请求;该网卡将该发送队列中的多个写请求按序发送至该一个或多个存储节点。
由于发送队列具有保序功能,因此网卡通过发送队列将写请求发送至该存储节点,可以避免写请求在网络传输过程中出现乱序。
可选的,该网卡将添加有该偏移地址的该写请求添加至发送队列,包括:
该网卡从多个发送队列中确定与该目标存储单元的标识对应的目标发送队列;该网卡将添加有该偏移地址的该写请求添加至该目标发送队列。
网卡通过将携带有相同存储单元的标识的写请求添加至同一个发送队列,可以有效避免携带有相同存储单元的标识的写请求在网络传输过程中出现乱序,进而有效降低追加写数据的时延。
另一方面,提供了一种计算节点,该计算节点包括网卡和接口;该网卡可以用于实现上述方面所提供的数据存储方法,该接口可以用于与存储节点通信。
又一方面,提供了一种计算节点,该计算节点可以包括网卡,该网卡可以包括至少一个模块,且该至少一个模块可以用于实现上述方面所提供的数据存储方法。
再一方面,提供了一种计算节点,该计算节点可以包括:存储器,处理器及存储在该存储器上并可在该处理器上运行的计算机程序,该处理器执行该计算机程序时实现如上述方面所提供的数据存储方法。
再一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在计算机上运行时,使得计算机中的网卡执行如上述方面所提供的数据存储方法。
再一方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机中的网卡执行上述方面所提供的数据存储方法。
再一方面,提供了一种存储系统,该系统可以包括:至少一个如上述方面所提供的计算节点,以及多个存储节点。
综上所述,本申请提供了一种数据存储方法、计算节点及存储系统,该方案可以通过网卡为写请求分配偏移地址,因此可以确保添加有偏移地址的写请求能够按照该偏移地址的分配顺序依次发送至存储节点,避免通过客户端分配偏移地址,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序,进而导致客户端接收到的确认响应出现乱序的问题。由此可知,本申请提供的方案可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。由于降低了追加写数据的平均时延,因此可有效减少因保序等待对系统资源的占用,提升系统的吞吐量和带宽。
附图说明
图1是本申请实施例提供的一种分布式存储系统的结构示意图;
图2是相关技术中追加写数据的示意图;
图3是本申请实施例提供的一种数据存储方法的流程图;
图4是本申请实施例提供的一种写请求的结构示意图;
图5是本申请实施例提供的另一种写请求的结构示意图;
图6是本申请实施例提供的一种追加写数据的示意图;
图7是本申请实施例提供的一种计算节点的结构示意图;
图8是本申请实施例提供的一种计算节点中网卡的结构示意图;
图9是本申请实施例提供的另一种计算节点中网卡的结构示意图。
具体实施方式
下面结合附图详细介绍本申请实施例提供的数据存储方法、计算节点及存储系统。
图1是本申请实施例提供的一种分布式存储系统的结构示意图,如图1所示,该系统可以包括至少一个计算节点01、多个存储节点02以及至少一个主机03,其中,至少一个是指一个或多个,多个是指两个或两个以上。例如图1中示出了多个计算节点01和多个主机03。该每个主机03与计算节点01之间,以及计算节点01与存储节点02之间均可以通过有线或无线网络建立通信连接。例如,参考图1,各个计算节点01与存储节点02之间可以通过网际互连协议(Internet protocol,IP)网络建立通信连接。
其中,每个存储节点02可以包括网络接口卡(network interface card,NIC)021以及一个或多个硬盘022。该网络接口卡021也可以称为网卡,用于与计算节点01通信。该硬盘022可以为固态硬盘(solid state disk,SSD)、硬盘驱动器(hard disk drive,HDD)或叠瓦式记录技术(shingled magneting recording,SMR)硬盘等。该多个存储节点02中的全部或部分硬盘022可以组成存储资源池,且该存储资源池的存储资源可以虚拟化为多个存储单元,每个存储单元为存储资源池中存储数据的最小单元,且每个存储单元的存储空间可以来源于一个或多个存储节点02,即每个存储单元在物理上可以跨越多个存储节点02。其中,每个存储单元也可以称为一个物理日志(physical log,plog),或者一个日志结构对象(log structure object,LSO)。该存储资源池中虚拟化的多个存储单元的大小可以相同,也可以不同。例如,该多个存储单元可以划分为多个不同级别的存储单元,同一级别的存储单元的大小相同,不同级别的存储单元的大小不同。
如图1所示,每个计算节点01可以包括网卡011、处理器和内存(图中未示出)等。并且该分布式存储系统中,至少一个计算节点01中还运行有客户端012。该客户端012可以提供数据访问的接口,能够实现数据分片(sharding)、路由、在线(online)冗余编码(erasurecode,EC)、跨可用区(availability zone,AZ)online EC写入以及故障处理等功能。例如,该客户端012可以接收主机03中应用031(也可以称为上层应用)发送的写请求,并对该写请求进行处理后通过网卡012发送至存储节点02,以便存储节点02对该写请求中的待写入数据进行存储。其中,可用区是指一片地理区域,不同可用区之间的物理距离较远,该分布式存储系统中的多个节点可以分布于一个或多个可用区。
可选的,该分布式系统中的每个存储节点01中还可以运行有服务(server)端,该服务(server)端可以实现对多个存储单元的管理,并且还可以实现单个AZ内的数据后台(back ground)EC,跨AZ的数据后台EC以及数据的分热度存储等功能。该分布式系统中的至少一个计算节点01中还可以运行有管理(manager)端,该管理端可以实现对数据存储位置的管理,并且还可以实现故障的恢复处理以及扩容和升级相关的调度工作。
在本申请实施例中,计算节点01中的客户端012可以采用远程直接内存访问(remote direct memory access,RDMA)技术,通过追加写的方式将数据写入至存储单元。基于该RDMA技术,计算节点01中的客户端012可以将内存中存储的数据直接通过网卡011传输至存储节点02,该数据传输过程无需计算节点01的操作系统或内核介入,有效减小了数据传输的延迟。
该追加写数据的方式需要确保数据连续的写入存储单元中,即存储单元中存储的数据之间不能存在空闲的存储区域,以便于对该存储单元写入的数据进行统一的维护和管理。相关技术中为了实现数据的连续存储,追加写数据的过程如下:
如图2所示,客户端012在一个响应时间窗内接收到多个写请求(例如来自应用031的写请求Q1、Q2和Q3)后,可以基于预先存储的存储单元(例如LSO)的末尾地址,为每个写请求分配偏移地址P,并将该分配的偏移地址P添加至对应的写请求中。客户端012在每次为一个写请求分配完偏移地址后,还可以基于该写请求中携带的数据的长度更新该末尾地址。
示例的,参考图2,客户端012接收到写请求Q1后,可以将预先存储的末尾地址1作为偏移地址分配至该写请求Q1,或者可以将该末尾地址的下一位地址作为偏移地址分配至该写请求Q1。下文以客户端012直接将末尾地址作为偏移地址为例进行说明。假设该写请求Q1中携带的数据的长度为1,则该客户端012可以将该末尾地址更新为2。之后,当客户端012接收到写请求Q2后,即可将更新后的末尾地址2作为偏移地址分配至该写请求Q2。若该写请求Q2中携带的数据的长度也为1,则该客户端012可以将该末尾地址进一步更新为3。当客户端012接收到写请求Q3后,即可将更新后的末尾地址3作为偏移地址分配至该写请求Q3。
客户端012分配完成偏移地址后,即可通过计算节点中的网卡(图2中未示出)将携带有偏移地址的写请求发送至存储节点02。对于接收到的每个写请求,存储节点02可以将该写请求中的待写入数据写入至该写请求中的偏移地址指示的位置,即存储节点02可以该偏移地址为起始地址,写入该待写入数据。存储节点02每写入完一个写请求中的待写入数据,即可向该客户端012发送针对该写请求的确认响应(response),该确认响应中可以携带有对应的写请求的标识。例如,存储节点02以偏移地址P=1为起始地址,将写请求Q1中的数据写入至LSO中之后,可以向客户端012发送确认响应R1。
客户端012每接收到一个写请求的确认响应,需检测分配了较小偏移地址的其他写请求的确认响应是否均已接收到,即检测较小偏移地址指示的位置是否均已成功写入数据。其中,该较小偏移地址是指:已分配的偏移地址中小于为当前接收到的确认响应所针对的写请求分配的偏移地址的地址。
若客户端012确定分配了较小偏移地址的其他写请求的确认响应均已接收到,则可以确定当前接收到的确认响应所针对的写请求中的待写入数据写入成功,并可以向应用031发送该确认响应。若客户端012检测到分配了较小偏移地址的某个写请求的确认响应未接收到,则需等待该确认响应接收到后,才能确定当前接收到的确认响应所针对的写请求中的待写入数据写入成功。若分配了较小偏移地址的某个写请求的确认响应接收失败,则该客户端012可以确定分配的偏移地址大于或等于该较小偏移地址的写请求的确认响应均接收失败,即该较小偏移地址指示的位置之后均未成功写入数据。
相关技术中的方案,由于是由客户端012分配偏移地址,因此在多并发场景下(例如一个响应时间窗内接收到多个写请求的场景下),多个分配了偏移地址的写请求经过客户端012的软件调度和网络传输之后,存储节点02接收到该多个写请求的顺序,以及该存储节点02返回确认响应的顺序均可能存在乱序,进而导致客户端012在接收到分配了较大偏移地址的写请求的确认响应后,需等待较长时间才能确定该写请求中的待写入数据是否写入成功。
示例的,参考图2,假设存储节点02接收到写请求Q1、Q2和Q3后,先将写请求Q1和Q3中的数据成功写入LSO。则客户端012接收到该存储节点02发送的针对写请求Q3的确认响应R3后,需等待写请求Q2的确认响应R2接收到后,才能够确定写请求Q3中的数据写入成功,即确定确认响应R3有效。若该写请求Q2中的数据写入失败,则客户端012在检测到该写请求Q2的确认响应R2超时后,可以确定该写请求Q2中的数据,以及该写请求Q3中的数据均写入失败,即客户端012可以确定其接收到的确认响应R3无效。
根据上述分析可知,若分配了偏移地址的写请求Q1、Q2和Q3在客户端012的软件调度和网络传输过程中出现乱序,则可能导致客户端012接收到的确认响应R1、R2和R3也出现乱序,进而会导致客户端012接收到分配了较大偏移地址的写请求的确认响应后,需等待较长时间才能够确定该确认响应是否有效,导致数据写入的时延较大,效率较低。
本申请实施例提供了一种数据存储方法,该方法可以应用于如图1所示的分布式存储系统中。参考图3,该方法可以包括:
步骤101、客户端接收写请求。
当主机中的应用需要向存储资源池中写入数据时,可以生成写请求,并向计算节点中的客户端发送该写请求。相应的,客户端可以接收到该应用发送的写请求。该写请求中可以包括待写入数据,该待写入数据的长度(length),以及用于存储该待写入数据的目标存储单元的标识。其中,该目标存储单元的标识可以是应用通过查询视图确定的,并且,该目标存储单元的存储空间可以来源于一个或多个存储节点,且该目标存储单元以追加写的方式存储数据。
步骤102、客户端将该写请求发送至网卡。
在本申请实施例中,计算节点中的客户端接收到该写请求后,可以直接将该写请求发送至计算节点的网卡,而无需再为该写请求分配偏移地址。
示例的,客户端向网卡发送的写请求的数据结构可以如图4所示,参考图4,该写请求中包括待写入数据D1、该待写入数据D1的长度L1以及该待写入数据D1将要写入的目标存储单元的标识LSO1。
步骤103、网卡根据目标存储单元的标识,从缓存中获取该目标存储单元的末尾地址。
在本申请实施例中,该网卡的缓存或者计算节点的缓存(该计算节点的缓存位于网卡的外部)中可以存储有多个存储单元中每个存储单元的末尾地址,且每个存储单元的末尾地址的初始值可以为0。每个存储单元的末尾地址可以用于指示该存储单元已写入的数据所占用的存储区域的大小。
网卡在接收到客户端发送的写请求后,可以获取该写请求中携带的目标存储单元的标识。之后,可以基于该目标存储单元的标识,从存储有各存储单元的末尾地址的缓存中获该目标存储单元的末尾地址。
示例的,假设网卡的缓存中存储有如表1所示的存储单元的标识与末尾地址的对应关系,若该网卡当前接收到的写请求中携带的目标存储单元的标识为LSO1,则网卡获取到的该目标存储单元的末尾地址可以为A11。
表1
存储单元的标识 末尾地址
LSO1 A11
LSO2 A21
LSO3 A31
步骤104、网卡根据该目标存储单元的末尾地址确定偏移地址。
在本申请实施例中,若该目标存储单元的末尾地址指示的位置处未存储数据,则网卡可以直接将该目标存储单元的末尾地址确定为偏移地址。若该目标存储单元的末尾地址指示的位置处存储有数据,则网卡可以将该目标存储单元的末尾地址的下一位地址确定为偏移地址。
示例的,若标识为LSO1的目标存储单元中,末尾地址A11指示的位置处未存储数据,则网卡可以直接将该末尾地址A11确定为偏移地址。若该末尾地址A11指示的位置处存储有数据,则网卡可以将该末尾地址A11的下一位地址确定为偏移地址。
步骤105、网卡将该偏移地址添加在该写请求中。
网卡确定出偏移地址后,即可将该偏移地址添加在该写请求中,以更新该写请求。该更新后的写请求中即可携带有如下信息:待写入数据、该待写入数据的长度、目标存储单元的标识以及偏移地址。并且,网卡将偏移地址添加在该写请求中之后,即分配完成偏移地址后,还可以存储该写请求的标识,以及为该写请求分配的偏移地址,即网卡可以存储写请求的标识与偏移地址的对应关系。
示例的,假设该网卡确定出的偏移地址为A11,则该更新后的写请求可以如图5所示,参考图5可以看出,该更新后的写请求中还携带有标识为LSO1的目标存储单元的偏移地址A11。
由于网卡相比于客户端更接近网络输出的端口,因此通过网卡分配偏移地址,可以有效降低分配有偏移地址的写请求在调度和传输过程中出现乱序的概率。
步骤106、网卡根据该写请求中待写入数据的长度更新该目标存储单元的末尾地址。
在本申请实施例中,网卡完成偏移地址的分配后,即可更新该目标存储单元的末尾地址。例如,网卡可以将该写请求中待写入数据的长度与该目标存储单元的末尾地址相加,得到该目标存储单元更新后的末尾地址。由此,可以确保后续网卡再接收到携带有该目标存储单元的标识的写请求时,可以获取到该更新后的尾位置,并可以基于该更新后的末尾地址为该写请求分配偏移地址。
示例的,假设标识为LSO1的目标存储单元的末尾地址为A11,写请求中的待写入数据的长度为L1,则该客户端可以确定标识为LSO1的目标存储单元的更新后的末尾地址为:A12=A11+L1。并且,该网卡可以将其缓存的如表1所示的对应关系中,标识LSO1对应的末尾地址由A11更新为A12。
需要说明的是,在本申请实施例中,也可以由该计算节点的内存来存储各个存储单元的尾地址,并由该计算节点的客户端维护各个存储单元的末尾地址。也即是,在上述步骤103中,网卡接收到写请求后,可以根据该目标存储单元的标识,从客户端中获取该目标存储单元的末尾地址。例如,网卡可以向客户端发送携带该目标存储单元的标识的地址获取请求,客户端可以响应于该地址获取请求,将目标存储单元的末尾地址发送至网卡。或者,网卡可以直接通过调用地址获取函数,从该客户端中获该目标存储单元的末尾地址。
相应的,在上述步骤105之后,网卡可以向客户端发送地址分配消息,该地址分配消息包括写请求的标识,以及为该写请求分配的偏移地址。客户端可以响应于该地址分配消息,对目标存储单元的末尾地址进行更新,该更新过程可以参考上述步骤106,此处不再赘述。并且,该客户端还可以基于该地址分配消息记录网卡为每个写请求所分配的偏移地址,以便在接收到针对某个写请求的确认响应后,可以基于记录的偏移地址检测该待写入数据是否写入成功。例如,客户端可以根据接收到的地址分配消息,存储写请求的标识与偏移地址的对应关系。
步骤107、网卡从多个发送队列中确定与该目标存储单元的标识对应的目标发送队列。
在本申请实施例中,该网卡中可以包括多个发送队列,每个发送队列中按序排列有多个写请求,并且同一发送队列中的多个写请求中所携带的存储单元的标识相同。也即是,该网卡可以存储有存储单元的标识与发送队列的标识的对应关系,网卡在接收到携带有目标存储单元的标识的写请求后,可以从该对应关系中,确定与该目标存储单元的标识对应的目标发送队列。
可选的,该分布式存储系统中的计算节点与存储节点之间可以采用RDMA技术传输数据,例如,可以采用基于聚合以太网的RDMA(RDMA over converged Ethernet,RoCE)协议传输数据。基于RoCE协议传输数据时,两个节点的网卡之间需创建传输通道(channel),该channel的首尾端点是队列对(queue pair,QP),每个QP由发送队列(send queue,SQ)和接收队列(receive queue,RQ)构成。其中每个QP中的SQ中的写请求(或确认响应)的顺序与RQ中的写请求(或确认响应)的顺序一致,即该QP具有保序功能。在本申请实施例中,该网卡可以从多个SQ中确定出与该目标存储单元的标识对应的目标SQ。
步骤108、网卡将该添加有偏移地址的写请求添加至该目标发送队列。
网卡确定出目标发送队列后,即可将该添加有偏移地址的写请求添加至该目标发送队列,该目标发送队列还可以包括携带有该目标存储单元的标识的其他写请求。通过将携带有相同存储单元的标识的多个写请求添加至同一个发送队列,可以利用该发送队列的保序特性,有效避免携带相同存储单元的标识的多个写请求在网络传输过程中出现乱序,进而有效降低追加写数据的时延。
步骤109、网卡将该目标发送队列中的多个写请求按序发送至该一个或多个存储节点。
在本申请实施例中,该网卡可以将该目标发送队列中的多个写请求按序发送至一个或多个存储节点,该一个或多个存储节点为用于提供该目标存储单元的存储空间的存储节点。其中,该目标发送队列中的多个写请求的发送顺序可以与网卡将该多个写请求添加至该目标发送队列的顺序相同,即网卡可以按照先入先出的顺序发送该目标发送队列中的多个写请求。
示例的,如图1所示,计算节点01的网卡011可以将其SQ中的写请求按序发送至存储节点02的网卡021中的RQ。该存储节点02的网卡021可以通过RQ接收该写请求。
可选的,在本申请实施例中,为了提高数据存储的可靠性,该分布式存储系统还可以采用多副本的方式存储数据。也即是,网卡可以将每个写请求复制多份,并分别发送至不同的存储节点。
步骤110、存储节点将该写请求中的待写入数据写入至该目标存储单元中该偏移地址指示的位置。
存储节点在接收到该写请求后,可以根据该写请求中携带的目标存储单元的标识,确定该写请求中待写入数据将要写入的目标存储单元。之后,即可将该待写入数据写入至该目标存储单元中该偏移地址指示的位置处。
示例的,假设该写请求的数据结构如图5所示,则存储节点可以在标识为LSO1的目标存储单元中,以偏移地址A11为起始地址写入长度为L1的待写入数据D1。
步骤111、存储节点向网卡发送针对该写请求的确认响应。
存储节点完成数据写入后,可以向计算节点的网卡发送针对该写请求的确认响应,该确认响应可以携带有能够唯一标识该写请求的标识。
示例的,存储节点的网卡可以将该确认响应添加至其SQ中,并可以将该SQ中的确认响应按序发送至计算节点的网卡。
步骤112、网卡检测该确认响应针对的写请求中的待写入数据是否写入成功。
网卡接收到针对该写请求的确认响应后,可以根据预先为各个写请求分配的偏移地址,确定该确认响应针对的写请求中的待写入数据是否写入成功。若确定该待写入数据写入成功,则可以执行步骤113;若确定该待写入数据写入失败,则可以执行步骤114。
例如,网卡可以根据存储的写请求的标识与偏移地址的对应关系,确定该确认响应中携带的写请求的标识所对应的目标偏移地址。然后可以检测携带有小于该目标偏移地址的其他偏移地址的写请求的确认响应是否均已接收到。若网卡检测到携带有小于该目标偏移地址的其他偏移地址的写请求的确认响应均已接收到,则可以确定当前接收到的确认响应有效,即该确认响应所针对的写请求中的待写入数据写入成功,并可以执行步骤113。若网卡检测到携带有小于该目标偏移地址的其他偏移地址的任一写请求的确认响应接收失败(例如超时未接收到确认响应),则可以确定当前接收到的确认响应无效,即该确认响应所针对的写请求中的待写入数据写入失败,并可以执行步骤114。
步骤113、网卡向客户端发送第一提示信息。
若网卡确定该确认响应所针对的写请求中的待写入数据写入成功,则可以向客户端发送用于指示数据写入成功的第一提示信息。
步骤114、网卡向客户端发送第二提示信息。
若客户端确定该确认响应所针对的写请求中的待写入数据写入失败,则可以向客户端发送用于指示数据写入失败的第二提示信息。
需要说明的是,在本申请实施例中,若由计算节点中的客户端维护各个存储单元的末尾地址,则在上述步骤111之后,网卡也可以直接将该确认响应发送至该客户端。相应的,该客户端可以根据其存储的写请求的标识与偏移地址的对应关系,检测当前接收到的确认响应所针对的写请求中的待写入数据是否写入成功。并且,客户端还可以根据检测的结果,将主机中的应用发送第一提示信息或第二提示信息。也即是,也可以由客户端执行上述步骤112中步骤114。
下文以客户端在一个响应时间窗内接收到多个写请求,并以双副本写入数据为例,对本申请实施例提供的数据存储方法进行说明。
参考图6,假设计算节点01中的客户端012在一个响应时间窗内接收到了主机03中的应用031发送的三个写请求Q1、Q2和Q3,该三个写请求中的目标存储单元的标识均为LSO1,且客户端012接收到该三个写请求的顺序依次为Q1、Q2和Q3。则客户端012可以将该三个写请求Q1至Q3依次发送至计算节点01中的网卡011。若由于客户端012的调度问题,导致该三个写请求Q1至Q3发送至网卡011的过程中出现乱序,使得网卡011接收到该三个写请求的顺序依次为Q2、Q3和Q1,则网卡011可以按照其接收到该三个写请求的顺序依次为每个写请求分配偏移地址。
例如,假设网卡011接收到写请求Q2时,其存储的标识为LSO1的目标存储单元的末尾地址为A11,则网卡011可以在该写请求Q2中添加偏移地址A11,并可以根据该写请求Q2中的数据D2的长度,将该目标存储单元的末尾地址更新为A12。之后,网卡011接收到写请求Q3后,即可在该写请求Q3中添加偏移地址A12,并可以根据该写请求Q3中的数据D3的长度,将该目标存储单元的末尾地址更新为A13。进一步的,网卡011接收到写请求Q1后,即可在该写请求Q1中添加偏移地址A13,并可以根据该写请求Q1中的数据D1的长度,将该目标存储单元的末尾地址更新为A14。其中,网卡011每次为一个写请求分配完成偏移地址后,还可以存储写请求的标识以及分配的偏移地址。
继续参考图6,网卡011可以将添加有偏移地址的每个写请求依次添加至发送队列SQ中,该发送队列中各个写请求的顺序与该网卡011为该多个写请求分配偏移地址的顺序相同。例如图6所示,该发送队列SQ中三个写请求按照Q2、Q3和Q1的顺序排列。
可选的,为了提高数据存储的可靠性,网卡011可以向两个不同的存储节点02分别发送该写请求。相应的,如图6所示,该网卡011中可以包括两个发送队列SQ1和SQ2,网卡011可以将每个写请求分别添加至发送队列SQ1和发送队列SQ2。该发送队列SQ1和发送队列SQ2中,每个发送队列SQ中的三个写请求均按照Q2、Q3和Q1的顺序排列。
进一步的,网卡011可以将该发送队列SQ中的三个写请求依次发送至存储节点02的网卡(图6中未示出)。存储节点02每接收到一个写请求,即可根据该写请求中的偏移地址,将该写请求中的待写入数据写入至目标存储单元中。例如,参考图6,存储节点02可以在标识为LSO1的目标存储单元中,偏移地址A11至A12之间的存储区域写入写请求Q2中的数据D2,可以在偏移地址A12至A13之间的存储区域写入写请求Q3中的数据D3,并且可以在偏移地址A13至A14之间的存储区域写入写请求Q1中的数据D1。
存储节点02每写入完一个写请求中的待写入数据后,可以通过其网卡向计算节点01的网卡011发送针对该写请求的确认响应,该确认响应中可以携带有写请求的标识。例如,从图6可以看出,存储节点02发送的针对写请求Q2的确认响应R2中携带有该写请求的标识:Q2。
在本申请实施例中,存储节点02的网卡也可以通过发送队列向计算节点01的网卡011发送确认响应。相应的,计算节点01的网卡011可以通过接受队列RQ接受各个确认响应。例如,参考图6,计算节点011的网卡011可以通过两个接收队列RQ1和RQ2接收来自不同存储节点02的确认响应。由于在RoCE协议中,每个QP中的发送队列和接收队列中的请求或响应是保序的,因此在本申请实施例中,通过QP发送写请求以及接收确认响应,可以避免该多个写请求或者多个确认响应在网络传输过程中出现乱序。
需要说明的是,本申请实施例提供的数据存储方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。例如,步骤103和步骤106可以由客户端执行。或者,步骤107可以根据情况删除,即网卡可以将写请求添加至任一发送队列。又或者,步骤112至步骤114可以由客户端执行,即客户端可以检测待写入数据是否写入成功,并可以根据检测结果向上层应用发送第一提示信息或第二提示信息。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
综上所述,本申请实施例提供的数据存储方法,可以通过网卡为写请求分配偏移地址,因此可以确保添加有偏移地址的写请求能够按照该偏移地址的分配顺序依次发送至存储节点,避免通过客户端分配偏移地址,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序,进而导致客户端接收到的确认响应出现乱序的问题。由此可知,本申请实施例提供的方法可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。由于降低了追加写数据的平均时延,因此可以有效减少因保序等待对系统资源的占用,提升系统的吞吐量和带宽。
并且,本申请实施例提供的方法还可以利用RoCE协议中QP保序的特性,从而进一步降低多个添加有偏移地址的写请求乱序的概率,进而降低追加写数据的平均时延,例如可以将平均时延由几百微秒降低至几微秒。
图7是本申请实施例提供的一种计算节点的结构示意图,该计算节点可以应用于如图1所示的分布式存储系统中。参考图1、图6和图7,该计算节点01可以包括网卡011,且该计算节点01中还可以运行有客户端012。
其中,该网卡011可以用于:接收写请求,该写请求包括待写入数据以及该待写入数据将要写入的目标存储单元的标识,其中该目标存储单元的存储空间来源于一个或多个存储节点,且该目标存储单元以追加写的方式存储数据;根据该目标存储单元的末尾地址确定偏移地址,将该偏移地址添加在该写请求中,并将添加有该偏移地址的该写请求发送至该一个或多个存储节点,该写请求用于指示该存储节点将该待写入数据写入至该目标存储单元中该偏移地址指示的位置。
该网卡011的功能实现可以参考上述步骤102至步骤105以及步骤109的相关描述。
可选的,该网卡011的缓存中可以存储有多个存储单元的末尾地址;该网卡011可以用于:根据该目标存储单元的标识,从该多个存储单元的末尾地址中确定该目标存储单元的末尾地址;
在将该偏移地址添加在该写请求中之后,根据该待写入数据的长度更新该目标存储单元的末尾地址。该网卡011的功能实现还可以参考上述步骤106的相关描述。
相应的,该网卡011还可以用于:接收该存储节点发送的针对该写请求的确认响应;根据该偏移地址,确定该待写入数据是否写入成功。
该网卡011的功能实现还可以参考上述步骤111和步骤112的相关描述。
可选的,该网卡011还可以用于:将添加有该偏移地址的该写请求添加至发送队列;将该发送队列中的该写请求按序发送至该一个或多个存储节点。
可选的,该网卡011可以用于:从多个发送队列中确定与该目标存储单元的标识对应的目标发送队列;将添加有该偏移地址的该写请求添加至该目标发送队列。
该网卡011的功能实现还可以参考上述步骤107和步骤108的相关描述。
如图7所示,该计算节点还可以包括:接口013、处理器014、存储器015和总线016。其中,总线016用于连接网卡011、处理器014、存储器015和接口013。通过接口013(可以是有线或者无线)可以实现与其他设备之间的通信连接。存储器015中存储有计算机程序0151,该计算机程序0151用于实现各种应用功能。
应理解,在本申请实施例中,处理器014可以是CPU,该处理器014还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、GPU或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
存储器015可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
总线016除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线016。
处理器014被配置为执行存储器015中存储的计算机程序0151,处理器014通过执行该计算机程序0151来实现各种功能。
综上所述,本申请实施例提供的计算节点,可以通过网卡为写请求分配偏移地址,因此可以确保添加有偏移地址的写请求能够按照该偏移地址的分配顺序依次发送至存储节点,避免通过客户端分配偏移地址,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序,进而导致客户端接收到的确认响应出现乱序的问题。由此可知,本申请实施例提供的计算节点可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。由于降低了追加写数据的平均时延,因此可以有效减少因保序等待对系统资源的占用,提升系统的吞吐量和带宽。
并且,本申请实施例提供的计算节点还可以利用RoCE协议中QP保序的特性,从而进一步降低多个添加有偏移地址的写请求乱序的概率,进而降低追加写数据的平均时延,例如可以将平均时延由几百微秒降低至几微秒。
本申请实施例还提供了一种计算节点,该计算节点可以应用于如图1所示的分布式存储系统中,参考图1和图6,该计算节点中运行有客户端012,且该计算节点还包括网卡011。参考图8,该计算节点01中的网卡011可以包括:
接收模块0111,用于接收写请求,该写请求包括待写入数据以及该待写入数据将要写入的目标存储单元的标识,其中该目标存储单元的存储空间来源于一个或多个存储节点,且该目标存储单元以追加写的方式存储数据。
确定模块0112,用于确定根据该目标存储单元的末尾地址确定偏移地址。
添加模块0113,用于将该偏移地址添加在该写请求中。
发送模块0114,用于将添加有该偏移地址的该写请求发送至该一个或多个存储节点,该写请求用于指示该存储节点将该待写入数据写入至该目标存储单元中该偏移地址指示的位置。
可选的,该网卡011的缓存中存储有多个存储单元的末尾地址;该确定模块0112还可以用于:
根据该目标存储单元的标识,从该多个存储单元的末尾地址中确定该目标存储单元的末尾地址。
参考图9,该计算节点01中的网卡011还可以包括:
更新模块0115,用于根据该待写入数据的长度更新该目标存储单元的末尾地址。
接收模块0116,用于接收该存储节点发送的针对该写请求的确认响应;
检测模块0017,用于根据该偏移地址,确定该待写入数据是否写入成功。
可选的,该发送模块0114可以用于:
将添加有该偏移地址的该写请求添加至发送队列,该发送队列中还包括其他写请求;将该发送队列中的多个写请求按序发送至该一个或多个存储节点。
可选的,该发送模块0114可以用于:
从多个发送队列中确定与该目标存储单元的标识对应的目标发送队列;将添加有该偏移地址的该写请求添加至该目标发送队列。
在产品实现上,以上各个模块可以由网卡011中的处理器执行,也可以由网卡011中的处理器调用网卡011中的缓存中的程序来执行。
综上所述,本申请实施例提供的计算节点,可以通过网卡为写请求分配偏移地址,因此可以确保添加有偏移地址的写请求能够按照该偏移地址的分配顺序依次发送至存储节点,避免通过客户端分配偏移地址,导致在将添加有偏移地址的写请求发送至网卡的过程中出现乱序,进而导致客户端接收到的确认响应出现乱序的问题。由此可知,本申请实施例提供的计算节点可以有效降低添加有偏移地址的写请求出现乱序的概率,进而有效降低追加写数据的平均时延,提高追加写数据的效率。由于降低了追加写数据的平均时延,因此可以有效减少因保序等待对系统资源的占用,提升系统的吞吐量和带宽。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在计算机上运行时,使得计算机中的网卡执行如上述方法实施例中的步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机中的网卡执行上述方法实施例中的步骤。
本申请实施例还提供了一种存储系统,参考图1,该系统可以包括至少一个计算节点01以及多个存储节点02,其中每个计算节点01均可以为上文实施例所提供的计算节点,例如可以为如图1或图7所示的节点,且该计算节点可以包括如图8或图9所示的网卡011。并且,每个计算节点01可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种数据存储方法,其特征在于,应用于分布式存储系统中的计算节点中的网卡,所述分布式存储系统还包括多个存储节点,所述多个存储节点用于组成存储资源池;所述方法包括:
所述网卡接收来自主机的写请求,所述写请求包括待写入数据以及所述待写入数据将要写入的目标存储单元的标识,所述目标存储单元的存储空间来源于所述分布式存储系统中的一个或多个存储节点,所述目标存储单元以追加写的方式存储数据;
所述网卡根据所述目标存储单元的末尾地址确定偏移地址,并且将所述偏移地址添加在所述写请求中;
所述网卡将添加有所述偏移地址的所述写请求发送至所述一个或多个存储节点,所述写请求用于指示所述存储节点将所述待写入数据写入至所述目标存储单元中所述偏移地址指示的位置。
2.根据权利要求1所述的方法,其特征在于,所述网卡的缓存中存储有多个存储单元的末尾地址;在所述网卡根据所述目标存储单元的末尾地址确定偏移地址之前,所述方法还包括:
所述网卡根据所述目标存储单元的标识,从所述多个存储单元的末尾地址中确定所述目标存储单元的末尾地址;
在所述网卡将所述偏移地址添加在所述写请求中之后,所述方法还包括:
所述网卡根据所述待写入数据的长度更新所述目标存储单元的末尾地址。
3.根据权利要求2所述的方法,其特征在于,在所述网卡将添加有所述偏移地址的所述写请求发送至所述一个或多个存储节点之后,所述方法还包括:
所述网卡接收针对所述写请求的确认响应;
所述网卡根据所述偏移地址,确定所述待写入数据是否写入成功。
4.根据权利要求1至3任一所述的方法,其特征在于,所述网卡将添加有所述偏移地址的所述写请求发送至所述一个或多个存储节点,包括:
所述网卡将添加有所述偏移地址的所述写请求添加至发送队列,所述发送队列中还包括其他写请求;
所述网卡将所述发送队列中的多个写请求按序发送至所述一个或多个存储节点。
5.根据权利要求4所述的方法,其特征在于,所述网卡将添加有所述偏移地址的所述写请求添加至发送队列,包括:
所述网卡从多个发送队列中确定与所述目标存储单元的标识对应的目标发送队列;
所述网卡将添加有所述偏移地址的所述写请求添加至所述目标发送队列。
6.一种计算节点,其特征在于,应用于分布式存储系统,所述计算节点包括网卡和接口,所述分布式存储系统还包括多个存储节点,所述多个存储节点用于组成存储资源池,所述网卡用于:
接收来自主机的写请求,所述写请求包括待写入数据以及所述待写入数据将要写入的目标存储单元的标识,所述目标存储单元的存储空间来源于所述分布式存储系统的一个或多个存储节点,所述目标存储单元以追加写的方式存储数据;
根据所述目标存储单元的末尾地址确定偏移地址,并且将所述偏移地址添加在所述写请求中;将添加有所述偏移地址的所述写请求通过所述接口发送至所述一个或多个存储节点,所述写请求用于指示所述存储节点将所述待写入数据写入至所述目标存储单元中所述偏移地址指示的位置;
所述接口用于与所述存储节点通信。
7.根据权利要求6所述的计算节点,其特征在于,所述网卡的缓存中存储有多个存储单元的末尾地址;所述网卡用于:
根据所述目标存储单元的标识,从所述多个存储单元的末尾地址中确定所述目标存储单元的末尾地址;
在将所述偏移地址添加在所述写请求中之后,根据所述待写入数据的长度更新所述目标存储单元的末尾地址。
8.根据权利要求7所述的计算节点,其特征在于,所述网卡还用于:
接收针对所述写请求的确认响应;
根据所述偏移地址,确定所述待写入数据是否写入成功。
9.根据权利要求6至8任一所述的计算节点,其特征在于,所述网卡用于:
将添加有所述偏移地址的所述写请求添加至发送队列,所述发送队列中还包括其他写请求;
将所述发送队列中的多个写请求通过所述接口按序发送至所述一个或多个存储节点。
10.根据权利要求9所述的计算节点,其特征在于,所述网卡用于:
从多个发送队列中确定与所述目标存储单元的标识对应的目标发送队列;
将添加有所述偏移地址的所述写请求添加至所述目标发送队列。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机中的网卡执行如权利要求1至5任一所述的数据存储方法。
12.一种存储系统,其特征在于,所述存储系统包括:至少一个如权利要求6至10任一所述的计算节点,以及多个存储节点。
CN202010144379.9A 2020-03-04 2020-03-04 数据存储方法、计算节点及存储系统 Active CN113360077B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010144379.9A CN113360077B (zh) 2020-03-04 2020-03-04 数据存储方法、计算节点及存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010144379.9A CN113360077B (zh) 2020-03-04 2020-03-04 数据存储方法、计算节点及存储系统

Publications (2)

Publication Number Publication Date
CN113360077A CN113360077A (zh) 2021-09-07
CN113360077B true CN113360077B (zh) 2023-03-03

Family

ID=77523692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010144379.9A Active CN113360077B (zh) 2020-03-04 2020-03-04 数据存储方法、计算节点及存储系统

Country Status (1)

Country Link
CN (1) CN113360077B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904210A (zh) * 2021-08-09 2023-04-04 华为技术有限公司 一种数据发送的方法、网卡和计算设备
WO2023040683A1 (zh) * 2021-09-17 2023-03-23 华为技术有限公司 传输数据的方法和输入输出设备
CN114281621B (zh) * 2021-12-09 2023-11-14 苏州浪潮智能科技有限公司 一种smr硬盘的性能测试方法和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901291A (en) * 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
CN101673253A (zh) * 2009-08-21 2010-03-17 曙光信息产业(北京)有限公司 直接存储器访问的实现方法
CN102045258A (zh) * 2010-12-22 2011-05-04 北京星网锐捷网络技术有限公司 数据缓存管理方法及装置
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
CN106528441A (zh) * 2016-10-26 2017-03-22 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
CN109324755A (zh) * 2018-08-08 2019-02-12 成都华为技术有限公司 一种i/o请求派发方法及装置
CN110651246A (zh) * 2017-10-25 2020-01-03 华为技术有限公司 一种数据读写方法、装置和存储服务器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901291A (en) * 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
CN101673253A (zh) * 2009-08-21 2010-03-17 曙光信息产业(北京)有限公司 直接存储器访问的实现方法
CN102045258A (zh) * 2010-12-22 2011-05-04 北京星网锐捷网络技术有限公司 数据缓存管理方法及装置
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
CN106528441A (zh) * 2016-10-26 2017-03-22 珠海格力电器股份有限公司 仿真eeprom的数据处理方法、装置及电子设备
CN110651246A (zh) * 2017-10-25 2020-01-03 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN109324755A (zh) * 2018-08-08 2019-02-12 成都华为技术有限公司 一种i/o请求派发方法及装置

Also Published As

Publication number Publication date
CN113360077A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
CN113360077B (zh) 数据存储方法、计算节点及存储系统
US7668841B2 (en) Virtual write buffers for accelerated memory and storage access
WO2019127018A1 (zh) 存储系统访问方法及装置
US8600999B2 (en) System and method for efficient resource management
CN106936931B (zh) 分布式锁的实现方法、相关设备及系统
WO2019127021A1 (zh) 存储系统中存储设备的管理方法及装置
CN113014662A (zh) 数据处理方法及基于NVMe-oF协议的存储系统
US20220253356A1 (en) Redundant data calculation method and apparatus
US20220107752A1 (en) Data access method and apparatus
US20110258424A1 (en) Distributive Cache Accessing Device and Method for Accelerating to Boot Remote Diskless Computers
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
WO2019127017A1 (zh) 存储系统中存储设备的管理方法及装置
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
WO2022194021A1 (zh) 并发控制方法、网卡、计算机设备、存储介质
US20210311654A1 (en) Distributed Storage System and Computer Program Product
WO2022073399A1 (zh) 存储节点、存储设备及网络芯片
US11579926B2 (en) Processing rest API requests based on resource usage satisfying predetermined limits
KR20230088215A (ko) 분산 스토리지 시스템
CN116594551A (zh) 一种数据存储方法及装置
US10678701B2 (en) Direct read control in a data storage system
CN112445413A (zh) 一种数据存储的方法、装置及相关设备
CN114253733B (zh) 一种内存管理方法、装置、计算机设备和存储介质
US11914865B2 (en) Methods and systems for limiting data traffic while processing computer system operations
US11880570B1 (en) Storage system, data transmission method, and network interface
US11513988B1 (en) System and method for multi-node buffer transfer

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