CN115509982A - 一种数据写入的方法、设备及网卡 - Google Patents

一种数据写入的方法、设备及网卡 Download PDF

Info

Publication number
CN115509982A
CN115509982A CN202110698223.XA CN202110698223A CN115509982A CN 115509982 A CN115509982 A CN 115509982A CN 202110698223 A CN202110698223 A CN 202110698223A CN 115509982 A CN115509982 A CN 115509982A
Authority
CN
China
Prior art keywords
data
network card
storage area
sequence number
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110698223.XA
Other languages
English (en)
Inventor
韩兆皎
蒋凡璐
余博伟
姚建业
徐启明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110698223.XA priority Critical patent/CN115509982A/zh
Publication of CN115509982A publication Critical patent/CN115509982A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

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

Abstract

本申请涉及一种用于数据写入的方法、设备以及网卡。该方法包括:存储设备中部署了第一网卡以及第二网卡,第一网卡接收包括第一数据的第一写请求,然后第一网卡将第一数据和第一序列号一起存入第一存储区域;第二网卡接收包括第二数据的第二写请求,然后第二网卡将第二数据和第二序列号一起存入第二存储区域,其中,第一序列号和第二序列号用于区分该存储设备接收第一数据和第二数据的先后顺序。同一存储设备中的每张网卡都给接收到的写数据添加了全局序列号,确保了存储设备的数据写一致性。

Description

一种数据写入的方法、设备及网卡
技术领域
本申请涉及数据存储领域,尤其涉及一种数据写入的方法、装置及网卡
背景技术
近年来,随着NoF(NVMe over Fabric)等协议的快速发展,存储设备可以通过网络与主 机(host)通信,为多个客户端提供数据存储的服务。当前,存储设备的网卡在接收到主机 发送的写请求以后,将该写请求转发给存储设备的处理器进行处理,然后网卡根据处理器指 示的缓存位置,将数据写入缓存中;然后当满足条件时,处理器再将缓存中的数据拷贝至持 久化存储介质中。在该处理流程中,存储设备在处理来自主机的写请求时需要CPU的参与, 并且还需要执行一次内存拷贝操作,数据写入的效率低下。
另外,为了增加存储设备外部接口的数量,当前存储设备中往往会部署多张网卡。每张 网卡都会接收来自主机的写入请求,在这样的场景下,如何确保数据的写一致性是亟待解决 的问题。
发明内容
本申请提供了一种用于数据写入的方法、设备以及网卡,用于确保存储设备的数据写一 致性。
第一方面,本申请提供了一种用于数据写入的方法,该方法应用于存储设备,该存储设 备包括第一网卡、第二网卡以及处理器。该方法包括:第一网卡接收包括第一数据的第一写 请求,然后将第一数据与第一序列号存入第一存储区域;第二网卡接收包括第二数据的第二 写请求,然后将第二数据与第二序列号存入第二存储区域;其中第一序列号和第二序列号用 于区分存储设备接收到第一数据与第二数据的先后顺序。
上述方法中,存储设备中的每张网卡都会将数据与一个代表接收顺序的序列号一起存入 存储区域,从而可以确保数据的写入顺序与接收到写请求的顺序是相同的,保证了存储设备 的数据写一致性。另外,网卡可以直接将数据写入存储区域,提高了系统的响应效率。
在一种可能的实现方式中,第一序列号和第二序列号属于同一组单调递增或者单调递减 的序列。
上述方法中,第一序列号和第二序列号来自于同一组单调变化的序列,以此来表示数据 写入的先后顺序。示例性的,第一序列号可以是sn1,第二序列号可以是sn2。
在另一种可能的实现方式中,第一网卡还会将第一数据在第一存储区域中存储的位置以 及第一序列号一起发给处理器,然后,处理器记录第一序列号与第一存储位置的对应关系。 同样的,第二网卡也会将第二数据在第二存储区域中存储的位置以及第二序列号一起发给处 理器,然后,处理器记录第二序列号与第二存储位置的对应关系。
在另一种可能的实现方式中,处理器根据所述第一序列号和所述第二序列号所指示的先 后顺序将所述第一数据和所述第二数据存入持久化存储介质中。
上述方法中,处理器记录了序列号与数据存储位置之间的对应关系,从而当满足数据下 刷条件时,处理器可以根据对应关系将数据按顺序存入持久化存储介质中,确保了数据的写 一致性。
在另一种可能的实现方式中,第一序列号在第二序列号之前,当第一写请求包括的第一 写入地址与第二写请求包括的第二写入地址有重合时,处理器将所述第一数据从所述第一存 储区域转入所述持久化介质之后,再将所述第二数据从所述第二存储区域转入所述持久化存 储介质,使得所述第一数据中的部分或全部数据被所述第二数据中的部分或全部数据所覆盖。
上述方法中,当主机想要对相同或者有重合的地址范围进行数据写入时,处理器基于序 列号的顺序将数据写入持久化存储介质中,以确保数据的写入顺序与接收到写请求的顺序一 致,保证了存储设备的正常运行。
在另一种可能的实现方式中,存储设备还包括存储器,所述存储器为具有保电能力的存 储介质,第一存储区域为处理器在存储器中第一网卡分配的存储区域,第二存储区域为处理 器在存储器中为第二网卡分配的存储区域。
上述方法中,处理器为每张网卡都分配了独立的存储区域,每张网卡可以直接对存储区 域进行数据写入,提高了存储设备的写入效率。另外,存储器为具有保电能力的存储介质, 该存储介质可以外接电源,当设备掉电时,存储器中的数据依旧能够保持不丢失,提高了存 储设备的安全性。
在另一种可能的实现方式中,第一网卡将第一数据与第一序列号存入第一存储区域包括: 第一网卡根据第一数据的长度以及第一序列号的大小为第一数据在第一存储区域中分配存储 空间;然后第一网卡将所述第一数据与第一序列号存入该存储空间。
上述方法中,第一网卡直接对第一存储区域进行管控,按照数据的大小为数据分配存储 空间,无需中央处理器CPU的参与,提高了处理效率。
在另一种可能的实现方式中,第一网卡将所述第一数据、所述第一序列号以及其他描述 信息存入所述第一存储区域,所述其他描述信息包括所述第一数据所属的输入/输出I/O请求 的标识,所述I/O请求包括的数据块的数量。
上述方法中,第一网卡除了将序列号与数据一起存入存储区域以外,还会将其他描述信 息一起存入存储区域,便于后续的故障恢复。
在另一种可能的实现方式中,第一序列号是所述第一网卡通过高速串行计算机扩展总线 标准PCIe原子机制获取的。
全局序列号由多种实现方式,可以基于PCIe原子机制,也可以基于自研协议实现。
第二方面,本申请提供一种用于数据写入的设备,有益效果可以参见第一方面的相关描 述,此处不再赘述。该设备包括第一网卡、第二网卡以及处理器,第一网卡用于,接收第一 写请求述第一写请求包括第一数据;将第一数据与第一序列号存入第一存储区域;第二网卡 用于,接收第二写请求,所述第二写请求包括第二数据;将所述第二数据与第二序列号存入 第二存储区域;其中,第一序列号与第二序列号用于区分存储设备接收第一数据与第二数据 的先后顺序。
在一种可能的实现方式中,第一序列号与所述第二序列号属于同一组单调递增或者单调 递减的序列。
在另一种可能的实现方式中,第一网卡还用于,将第一数据在第一存储区域的第一存储 位置以及第一序列号发送给处理器;处理器用于,记录第一序列号与第一存储位置的对应关 系。
在另一种可能的实现方式中,处理器还用于,根据所述第一序列号和所述第二序列号所 指示的先后顺序将所述第一数据和所述第二数据存入持久化存储介质中。
在另一种可能的实现方式中,处理器还用于,将所述第一数据从所述第一存储区域转入 所述持久化介质之后,再将所述第二数据从所述第二存储区域转入所述持久化存储介质,使 得所述第一数据中的部分或全部数据被所述第二数据中的部分或全部数据所覆盖。
在另一种可能的实现方式中,该设备还包括存储器,存储器为具有保电能力的存储介质, 第一存储区域为处理器在存储器中为第一网卡分配的存储区域,第二存储区域为处理器在所 述存储器中为第二网卡分配的存储区域。
在另一种可能的实现方式中,第一网卡具体用于:根据第一数据的长度以及第一序列号 的大小为第一数据在第一存储区域中分配存储空间;将第一数据与第一序列号存入所述存储 空间。
在另一种可能的实现方式中,第一网卡具体用于:将所述第一数据、所述第一序列号以 及其他描述信息存入所述第一存储区域,所述其他描述信息包括所述第一数据所属的输入/ 输出I/O请求的标识,所述I/O请求包括的数据块的数量。
在另一种可能的实现方式中,所述第一序列号是所述第一网卡通过高速串行计算机扩展 总线标准PCIe原子机制获取的。
第三方面,本申请还提供一种用于数据写入的系统,该系统包括客户端设备以及存储设 备。其中,客户端设备用于向存储设备发送数据写入请求,存储设备用于执行如第一方面中 各个实现方式所述的方法。
第四方面,本申请还提供一种网卡,该网卡包括处理器和内存,内存中存储有计算机指 令,处理器运行所述计算机指令使得网卡执行如第一方面各个实现方法中第一网卡或者第二 网卡所执行的方法。
第五方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指 令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施 方式中所述的方法。
第六方面,本申请提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得 计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第七方面,本申请提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并 执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实施方式 中所述的方法。
附图说明
图1为本申请提供的应用场景示意图。
图2为本申请提供的集中式存储系统架构示意图。
图3为本申请提供的分布式存储系统架构示意图。
图4为本申请提供的数据写一致性示意图。
图5为本申请提供的非卸载CPU方案的示意图。
图6为本申请提供的卸载CPU方案的示意图。
图7为本申请提供的主机与存储设备交互的流程图。
图8为本申请提供的分配给网卡1的存储区域1的示意图。
图9为本申请提供的描述信息的结构示意图。
图10为本申请提供的一种用于数据写入的网卡。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
在介绍本申请的具体实施方式之前,先对一些专业名词进行解释:
(1)NVMe(Non-volatile Memory Express,非易失性高速传输总线):NVMe协议是个 应用层协议,底层通常使用PCIe(Peripheral Component Interconnect express)协议栈。 NVMe协议的正常运行依赖于底层PCIe协议提供的一些功能,PCIe协议是目前计算机硬件与 中央处理器CPU(Central Processing Unit)之间互联互通的关键。
(2)NOF:一种主机与存储设备之间的通信协议。具体的,可以理解为将NVMe协议应用 在iWarp(Internet Wide Area RDMA Protocol)、RoCE(RDMA Over ConvergedEthernet) 等RDMA(Remote Direct Memory Access)网络,或者Infiniband、FC(FiberChannel)网络 上。需要说明的是,主机与存储设备之间的通信还可以采用SCSI(SmallComputer System Interface)或者iSCSI(Internet Small Computer System Interface)等协议,而本申请 提供的实施例主要以采用NOF协议为例,采用其他协议通信的方法与本申请提供的实施例类 似,在此不多做赘述。采用NOF协议通信时,会在主机上部署NOF启动器(NOF Initiator, NOF INI),在存储设备上部署NOF目标器(NOF Target,NOF TGT)。启动器以及目标器可以 理解为软件程序或者组件。
NOF协议中以使用RDMA传输为例,读数据流程可以包括:目标器接收到读请求(即READ 命令)之后,根据该读请求获得要写入启动器的缓存的地址信息。然后,目标器向启动器发 起RDMA_WRITE,以将读取到的数据写入主机缓存。接着,目标器向启动器发起RDMA_SEND, 以通知启动器传送完毕。
NOF协议中以使用RDMA传输为例,写数据流程可以包括:启动器将写请求(即Write命 令)组装完毕,通过RDMA_SEND发送给目标器。目标器收到写请求后,启动RDMA_READ并从启动器获取该写请求要写入的数据。目标器接收到启动器回应的数据之后,向启动器发起RDMA_SEND,以通知启动器传送完毕。
(3)CPU卸载:非物理意义上的卸载,指的是处理过程中减少CPU的参与。
(4)网卡驱动:在存储设备的CPU上运行,是一种可以使得CPU控制和使用网卡的软件 程序。
(5)存储软件:运行在存储设备CPU上的软件程序,可以为存储设备提供高可靠的数据 存储能力。存储软件可以包括很多进程,其中,部署在存储设备上的NOF目标器可以理解为 其中的一个进程。
(6)RDMA引擎:部署在网卡上,使得网卡可以利用RDMA技术直接访问内存。
另外,本发明实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或 暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的 特征可以明示或者隐含地包括一个或者更多个该特征。
参考图1,首先介绍一下本申请应用的系统架构。示例性的,该系统包括主机110、主机 120、存储设备130,以及主机与存储设备通信所采用的fabric,其中,存储设备130还包括 网卡131、网卡132、处理器、IO缓存和存储器等等。
主机110/120,负责发起数据的读写,例如发送数据读写命令等。当该系统架构采用NoF 协议时,主机可以称为NoF主机。主机的具体形态包括但不限于物理服务器或物理服务器上 的虚拟机,所述物理服务器可以是包括CPU、内存和网卡等组成部件的计算设备等。在主机 为物理服务器上的虚拟机的情况下,以上所述主机包括的CPU、内存和网卡等硬件指的是物 理服务器分配给该虚拟机使用的CPU、内存和网卡等资源。
Fabric140,可以理解为主机与存储设备之间进行通信时所采用的网络。具体的,主机与 存储设备130之间可以通过iWarp、ROCE、Infiniband、FC等fabric网络实现连接和通信。
存储设备130主要负责接收并且执行主机发送的数据读写命令。为了增加存储设备外部 接口的数量,会使用多张网卡进行扩展。如图1所示,该存储设备可以包括网卡131、网卡 132和存储器等。网卡131或网卡132通过fabric网络与主机进行与数据读写命令或数据传 输相关的通信,并且每张网卡分别与一个或一个以上的存储器相连接,对数据进行持久化存 储。其中,网卡可以是远端网络接口卡(Remote Network Interface Card,RNIC)。网卡中 还可以部署RDMA引擎,使得网卡具备直接访问本地内存的能力。存储器可以是硬盘,例如固 态磁盘(solid state disk,SSD)或硬盘驱动器(hard disk driver,HDD)等具备存储功 能的存储介质。又或者,存储器可以是任一种具有保电能力的存储介质,该种存储介质有外 接电池,当电池断电时存储介质中的数据依然能够保存。在本申请提供的实施例中,主要以 存储器为具有保电能力的内存为例,介绍具体的实现方法。
本申请提供的实施例可以采用分布式存储也可以采用集中式存储。当采用集中式存储时, 如图2所示,主机与存储设备之间通过交换机连接。存储设备上部署有两张网卡,两张网卡 可以接收来自主机的读写请求,将数据写入存储器或者从存储器中读取数据。当采用分布式 存储时,如图3所示,主机与存储设备之间通过交换机通信,两张网卡分别部署于位于不同 位置的存储设备之上,接收来自主机的读写请求,并进行处理。本申请实施例中接下来将以 集中式存储为例,介绍具体的流程方法。
主机负责发起数据的读写,存储设备负责接收并执行主机发送的命令。当存储设备接收 到来自某一主机的多个IO写请求或者来自不同主机的多个IO写请求时,为了保证数据的一 致性(即确保写操作的顺序,使得当对存储的数据进行再读取时能读取到最新写入的数据), 需要对接收到的IO写请求进行排序。示例性的,如图4所示,假设存储设备接收到三个IO 写请求(可以来自于同一个主机也可以来自不同的主机),第一个IO写请求想写入的地址是 地址1,第二个IO写请求想写入的地址是地址2,第三个IO写请求想写入的地址是地址3, 地址3所指示的空间与地址1、地址2所指示的存储空间存在交集,且接收三个IO写请求的 顺序是第一个IO写请求早于第二个IO写请求早于第三个IO写请求。一般情况下,存储设备 在接收到写请求时先缓存待写入的数据,待满足一定条件后再转入持久化存储。如果不对IO 写请求进行排序,可能导致第三个IO写请求的数据先写入地址3,然后第一个和第二个IO 写请求的数据再分别写入地址1和地址2(对第三个IO的数据造成了覆盖),当想要再读取 地址3存储的数据时,本应该读取的是第三个IO写请求的写入的数据,实际读到的却是第一 个IO写请求以及第二个IO写请求中关于地址3的数据,这显然无法保证数据写入的一致性。
因此,网卡需要对接收到的写请求进行排序。先写入第一、第二个IO,再写入第三个IO, 这样可以保证存储设备中存储的数据是最晚写入的数据;避免后写入的数据被先写入的数据 覆盖。
随着时代的发展,用户对数据存储的要求越来越高,存储设备为了增加外部接口的数量, 会使用多张网卡进行扩展。在存储设备使用多张网卡的场景下,一种非卸载CPU的技术方案 如图5所示。示例性的,以存储设备包括两张网卡为例,分别为网卡1和网卡2。主机1通 过自身网卡分别向网卡1和网卡2发送了两个IO写请求(以下简称为IO1和IO3),主机2 通过自身网卡向网卡2发送了一个IO请求(以下简称IO2),这三个IO请求发生的先后顺序是IO1早于IO2早于IO3。以IO1为例,主机1向网卡1发送写命令(write command),网 卡1解析该命令确定是写命令以后,通知CPU中的NOF TGT,NOF TGT在IO缓存中分配了一 段缓存空间用于缓存待写入的数据。然后,NOF TGT将分配的缓存空间通知给网卡1,网卡1 再通过RDMA的方式从主机1获取主机待写入的数据,然后将数据发送到NOF TGT分配的那一 段缓存空间中。IO2和IO3的流程与IO1类似,在此不多做赘述。当满足预设条件时,CPU按 照接收写请求的顺序将数据从IO缓存中拷贝到持久化存储介质上。
可见,图5所示的技术方案采用的是非卸载CPU架构,每次写操作都需要CPU的参与, 并且还需要执行内存拷贝的操作(将数据从IO缓存空间转移到存储器等存储区域),IOPS (Input/Output Operations Per Second)性能低,存储设备的效率低下。
为了解决上述问题,本申请提供了一种By Pass CPU的技术方案,用于解决存储设备配 置多网卡时的数据写一致的问题。
本申请提供的数据写入方法应用于具有多张网卡的存储设备,以其中一个网卡处理写请 求为例,方法具体包括:
步骤S601:存储设备初始化,每张网卡都被分配了一个单独的存储区域,用于存储数据。 示例性的,该存储区域可以是内存。
步骤S602:网卡基于待写入数据的长度在预分配的存储区域中为该数据分配存储空间。 示例性的,网卡本身记录了分配的存储区域的基址,每当收到一次数据时,网卡就通过维护 地址偏移来给待写入数据分配存储空间。
步骤S603:网卡获取全局序列号。需要说明的是,这里的序列号是全局唯一的序列号。 即整个存储设备中所有的网卡都采用同一套序列号生成机制,以确保序列号是全局唯一的。 当一个IO写请求的数据量较大时,可以将数据拆分成多个数据块进行存储。在本申请实施例 中,每个数据块都分别对应一个全局唯一的序列号。
步骤S604:网卡将全局序列号和数据一起存入步骤S602分配的存储空间中。
除了全局序列号以外,在另一种实现方式中,网卡还会将与该数据相关的其他描述信息 一起存入分配的存储空间中。其中,描述信息可以包括该数据所属的IO请求的标识等等。将 描述信息与数据一起存入存储区域中,可以在存储设备发生故障时用于数据恢复。
步骤S605:网卡将全局序列号以及数据在存储区域中的存储位置发送给存储设备中的CPU, 以便于CPU维护更新索引表。当后续需要将存储区域中的数据转移到持久化存储介质中时, 可以基于该索引表进行操作。
步骤S605’:该步骤为步骤S605的替换步骤,在该步骤中,网卡可以只向CPU发送描述 信息在存储区域中的位置信息,CPU后续可以基于该位置信息从存储区域中读取各个数据块 的描述信息(包括全局序列号),然后再将数据块按顺序下盘。
在上述方法中,网卡接收到来自客户端的写请求之后,可以获取全局唯一的序列号,并 将该序列号和数据一起存入预分配的存储空间中。通过添加全局唯一的序列号,可以确保多 网卡的存储设备的写一致性,并且在本方案中网卡可以直接对写请求进行处理(为待写入数 据分配存储空间、将待写入数据存入存储区域),无需再向处理器转发写请求,提高了存储设 备的写入效率。
在上述实施例的基础上,提供另一种实现方式。如图6所示,相比较图5所示的方案, 在组件上的变化是将NOF TGT组件从CPU卸载到了前端网卡上,扩展了前端网卡的能力。可 以理解的是,由于对前端网卡进行了改造,还需要升级在CPU中部署的网卡驱动进行匹配。 另外,每张网卡还可以配有RDMA引擎,因此网卡1和网卡2都可以通过RDMA技术直接访问 主机的内存。需要说明的是,这里仅仅是一种示例,网卡也可以不具备RDMA引擎,可以通过 其他协议接收主机的写请求。为了描述方便,在本申请实施例中仅以存储设备包括两张网卡 为例,系统架构如图6所示,结合图7介绍具体流程如下:
步骤S701:存储设备初始化,为存储设备的每张网卡分配对应的存储区域。
在存储设备初始化的过程中,CPU运行存储软件,识别前端网卡1、网卡2,并为每个网 卡分配独立的存储区域。如图6所示,存储区域1为CPU分配给网卡1的存储区域,存储区域2为CPU分配给网卡2的存储区域。这里的存储区域1和存储区域2可以指持久化内存。
步骤S702:主机1向网卡1发送写请求IO a,该写请求IO a中携带了待写入数据在主 机中存储起始位置,以及数据长度。
步骤S703:网卡1从主机1获取待写入的数据,网卡1中的NOF TGT根据该写请求中携 带的数据长度为该写请求分配存储空间。
NOF TGT记录了网卡1对应的存储区域1的起始位置(也可以称为基址),每当接收到一 个写请求以后,根据该写请求写入数据的长度计算得到偏移,并且记录该偏移。如图8所示, NOF TGT接收到IO a请求后根据数据长度确定了数据偏移,并且记录下来,当后续再接收到 其他IO请求例如IO e时,则在IO a产生的偏移基础上再加上IO e数据的长度得到新的偏 移。网卡1的NOF TGT采用上述方式为每个IO写请求在存储领域1中分配存储空间。例如, 对于IO a请求,NOF TGT为其分配的空间是基址加偏移所指示的空间。
步骤S704:NOF TGT获取全局唯一的序列号。
示例性的,该全局唯一的序列号可以是全局单调递增的序列号。例如,sn1,sn2,sn3…, 另外,“全局”强调的是该存储设备中每个网卡都使用同一套序列号集合。
同一个存储设备的多张网卡采用统一的全局序列号,可以通过PCIe atomic(原子)机 制实现,也可以基于自研总线的一致性协议来实现,本申请不限定实现的具体方式。示例性 的,每张网卡可以通过访问同一块内存区域来生成全局序列号。具体的,DDR内存中有一块 共享区域,每当一张网卡访问该区域时,网卡都可以获得在上一个序列号基础上加一的新序 列号,以此来实现全局序列号生成机制。在另一种实现方式中,还可以以一张网卡作为主网 卡,由该主网卡管理全局的序列号,当每张网卡接收到请求时可以到该主网卡获取最新的全 局序列号。又或者,全局序列号由CPU进行管理,每张网卡到CPU处获取最新的全局序列号。 本申请对于全局序列号的生成机制不做具体限定,视情况而定。
步骤S705:将数据与该全局唯一的序列号一起写入步骤703NOF TGT分配的存储空间中。
除了数据与全局序列号以外,还可以将一些关于数据的描述信息一起存入分配的存储空 间中。
在一种可能的实现方式中,如图9所示,如果IO a请求写入的数据比较大,则网卡可以 将该数据分块存储。在存储每个数据块时,网卡1将描述信息与数据一起存入预分配的存储 空间。其中,描述信息包括IO flag、IO number、IO sn以及IO ID。“IO flag”描述的是 当前数据块在整个IO请求包括的所有数据块中的序号,可以理解的是“IO flag=first”代 表的是该数据块为IO请求中所有数据块的第一个数据块,当一个IO请求只包含一个数据块 时,该字段可以为空。“IO number”描述的是该数据块所属的IO请求包括的数据块的数量, 可以理解的是,“IO number=3”表示该数据块所属的IO请求包括的数据块的总量为3。“IO sn” 描述的是该数据块的全局序列号,本申请实施例中同一个IO请求的不同数据块被分配有不同 的全局唯一的序列号。在另一种实现方式中,同一个IO请求的不同数据块也可以具有一样的 全局唯一的序列号。“IO ID”描述的是IO请求的标识,同一写请求下的不同数据块对应同一 个IO ID,例如图6的存储区域1中,IO a写请求的三个数据块的IO ID都是IO a。
步骤S706:网卡1向CPU发送通知信息,该通知消息用于通知CPU存储数据的全局序列 号。
该通知消息包括全局序列号以及该数据块在存储区域中的存储位置。可选的,该通知消 息中还包括了数据块的描述信息,例如IO请求标识、IO请求包含的数据块数量等等。同时 该通知消息用以指示该数据块成功写入。
步骤S707:CPU基于接收到的通知消息,更新索引表。
CPU将IO请求的标识、全局序列号以及数据在存储区域中的存储位置的对应关系记录在 索引表中。示例性的,如下表所示:
IO请求的标识 数据块在IO请求中的序号 全局序列号 存储区域中的存储位置
IO a First Sn1 YY
IO a Second Sn2 ZZ
IO a Third Sn3 MM
步骤S708:网卡1向主机1返回写入响应消息。
步骤S709:主机2向网卡2发送IO写请求IO b,该写请求中包括了待写入数据在主机2 中的存储位置。
步骤S710:网卡2从主机2获取待写入的数据,网卡中的NOF TGT根据该写请求中携带 的数据长度为该写请求分配存储空间。
步骤S711:NOF TGT生成全局唯一的序列号。
同一个存储设备的多张网卡采用统一的全局序列号,可以通过PCIe atomic(原子)机 制实现,也可以基于自研总线的一致性协议来实现,本申请不限定实现的具体方式。如图6 中所示,NOF TGT为IO b生成的序列号是sn4,网卡将该序列号以及数据一起存入了存储区 域2中。需要强调的是,网卡2为IO b生成的序列号是全局序列号,由于之前与网卡2属于 同一存储设备的网卡1已经接收到了一个写请求IO a了,因此网卡2在之前的已分配的序列 号的基础上为IO b分配了sn4。
步骤S712:将数据与该全局唯一的序列号一起写入步骤S709NOF TGT分配的存储空间中。
示例性的,如图6所示,存储区域2中存储了IO b请求写入的相关数据。
步骤S713:网卡2向CPU发送通知消息,该通知消息用于通知CPU全局序列号以及数据 在存储区域中的存储位置。
步骤S714:网卡2基于通知消息更新索引表。示例性的,CPU存储的索引表更新如下:
Figure BDA0003129400060000081
Figure BDA0003129400060000091
步骤S715:主机1向网卡2发送了IO c请求,网卡2将数据存入存储区域2中,并且CPU更新了索引表。关于处理IO c请求的方法请参照上述流程,在此不多做赘述。
至此,存储设备中已经将主机发送的写请求处理完毕。进一步的,当存储区域中存储的 数据量达到阈值时,CPU可以基于维护的索引表,按顺序将数据块转移到硬盘等持久化存储 介质中。示例性的,当接收到的写请求中包括的地址范围有重合时(即当主机想向两个重合 的地址范围内写数据时),能够确保先写入的数据被后写入的数据所覆盖,即确保数据的写一 致性。
在上述实施例中,NOF TGT组件从CPU转移到了网卡中,当获取到主机想写入的数据时, 网卡会生成全局序列号,并且将数据以及全局序列号等描述信息一起存储至预分配的网卡对 应的存储区域中,由此可以记录写请求的发生顺序,以确保多网卡存储设备中数据的写一致 性。上述方法减少了CPU在写请求处理中的参与,缓解了处理器的压力。并且,该方法中网 卡将数据直接写入了存储区域,无需再进行数据拷贝,提高了存储设备的效率,IOPS性能好。
除了如图1、2、3中所示的存储设备以外,本申请还提供一种用于数据写入的网卡,如 图10所示,该网卡用于执行图7中网卡1或者网卡2所执行的方法步骤,相关细节请参见上 述实施例在此不多做赘述。以网卡131为例,网卡131包括处理器1311、内存1312以及接口1313。处理器1311使得网卡131具备执行如图7所示的方法实施例中网卡1所执行的方 法的能力,处理器1311还可以通过接口1313发送或接收数据写入请求,如接受第一写请求。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用 软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序 产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部 分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、 计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或 者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可 以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户 线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或 数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是 包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁 性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可 以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储 介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框 图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、 以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计 算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使 得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流 程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工 作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制 造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指 定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或 其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编 程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多 个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样, 倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意 图包含这些改动和变形在内。

Claims (19)

1.一种用于数据写入的方法,应用于存储设备,所述存储设备包括第一网卡、第二网卡以及处理器,其特征在于,所述方法包括:
所述第一网卡接收第一写请求,所述第一写请求包括第一数据;
所述第一网卡将所述第一数据与第一序列号存入第一存储区域;
所述第二网卡接收第二写请求,所述第二写请求包括第二数据;
所述第二网卡将所述第二数据与第二序列号存入第二存储区域;
其中,所述第一序列号与所述第二序列号用于区分所述存储设备接收所述第一数据与所述第二数据的先后顺序。
2.根据权利要求1所述的方法,其特征在于,所述第一序列号与所述第二序列号属于同一组单调递增或者单调递减的序列。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一网卡将所述第一数据在所述第一存储区域的第一存储位置以及所述第一序列号发送给所述处理器;
所述处理器记录所述第一序列号与所述第一存储位置的对应关系。
4.根据权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
所述处理器根据所述第一序列号和所述第二序列号所指示的先后顺序将所述第一数据和所述第二数据存入持久化存储介质中。
5.根据权利要求4所述的方法,其特征在于,所述第一序列号在所述第二序列号之前,当所述第一写请求包括的第一写入地址与所述第二写请求包括的第二写入地址有重合时,所述方法还包括:
所述处理器将所述第一数据从所述第一存储区域转入所述持久化介质之后,再将所述第二数据从所述第二存储区域转入所述持久化存储介质,使得所述第一数据中的部分或全部数据被所述第二数据中的部分或全部数据所覆盖。
6.根据权利要求1-5任一所述的方法,其特征在于,所述存储设备还包括存储器,所述存储器为具有保电能力的存储介质,所述第一存储区域为所述处理器在所述存储器中为所述第一网卡分配的存储区域,所述第二存储区域为所述处理器在所述存储器中为所述第二网卡分配的存储区域。
7.根据权利要求1-6任一所述的方法,其特征在于,所述第一网卡将所述第一数据与第一序列号存入第一存储区域包括:
所述第一网卡根据所述第一数据的长度以及所述第一序列号的大小为所述第一数据在所述第一存储区域中分配存储空间;
所述第一网卡将所述第一数据与所述第一序列号存入所述存储空间。
8.根据权利要求1-6任一所述的方法,其特征在于,所述第一网卡将所述第一数据与第一序列号存入第一存储区域包括:
所述第一网卡将所述第一数据、所述第一序列号以及其他描述信息存入所述第一存储区域,所述其他描述信息包括所述第一数据所属的输入/输出I/O请求的标识,所述I/O请求包括的数据块的数量。
9.根据权利要求1-8任一所述的方法,其特征在于,所述第一序列号是所述第一网卡通过高速串行计算机扩展总线标准PCIe原子机制获取的。
10.一种用于数据写入的设备,其特征在于,所述设备包括第一网卡、第二网卡以及处理器,
所述第一网卡用于,接收第一写请求,所述第一写请求包括第一数据;将所述第一数据与第一序列号存入第一存储区域;
所述第二网卡用于,接收第二写请求,所述第二写请求包括第二数据;将所述第二数据与第二序列号存入第二存储区域;
其中,所述第一序列号与所述第二序列号用于区分所述存储设备接收所述第一数据与所述第二数据的先后顺序。
11.根据权利要求10所述的设备,其特征在于,所述第一序列号与所述第二序列号属于同一组单调递增或者单调递减的序列。
12.根据权利要求10或11所述的设备,其特征在于,
所述第一网卡还用于,将所述第一数据在所述第一存储区域的第一存储位置以及所述第一序列号发送给所述处理器;
所述处理器用于,记录所述第一序列号与所述第一存储位置的对应关系。
13.根据权利要求10-12任一所述的设备,其特征在于,
所述处理器还用于,根据所述第一序列号和所述第二序列号所指示的先后顺序将所述第一数据和所述第二数据存入持久化存储介质中。
14.根据权利要求13所述的设备,其特征在于,所述第一序列号在所述第二序列号之前,当所述第一写请求包括的第一写入地址与所述第二写请求包括的第二写入地址有重合时,
所述处理器还用于,将所述第一数据从所述第一存储区域转入所述持久化介质之后,再将所述第二数据从所述第二存储区域转入所述持久化存储介质,使得所述第一数据中的部分或全部数据被所述第二数据中的部分或全部数据所覆盖。
15.根据权利要求10-14任一所述的设备,其特征在于,所述设备还包括存储器,所述存储器为具有保电能力的存储介质,所述第一存储区域为所述处理器在所述存储器中为所述第一网卡分配的存储区域,所述第二存储区域为所述处理器在所述存储器中为所述第二网卡分配的存储区域。
16.根据权利要求10-15任一所述的设备,其特征在于,所述第一网卡具体用于:
根据所述第一数据的长度以及所述第一序列号的大小为所述第一数据在所述第一存储区域中分配存储空间;
将所述第一数据与所述第一序列号存入所述存储空间。
17.根据权利要求10-15任一所述的设备,其特征在于,所述第一网卡具体用于:
将所述第一数据、所述第一序列号以及其他描述信息存入所述第一存储区域,所述其他描述信息包括所述第一数据所属的输入/输出I/O请求的标识,所述I/O请求包括的数据块的数量。
18.根据权利要求10-17任一所述的设备,其特征在于,所述第一序列号是所述第一网卡通过高速串行计算机扩展总线标准PCIe原子机制获取的。
19.一种网卡,其特征在于,所述网卡包括处理器和内存,所述内存中存储有计算机指令,所述处理器运行所述计算机指令使得所述网卡执行权利要求1-9中第一网卡或者第二网卡所执行的方法。
CN202110698223.XA 2021-06-23 2021-06-23 一种数据写入的方法、设备及网卡 Pending CN115509982A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110698223.XA CN115509982A (zh) 2021-06-23 2021-06-23 一种数据写入的方法、设备及网卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110698223.XA CN115509982A (zh) 2021-06-23 2021-06-23 一种数据写入的方法、设备及网卡

Publications (1)

Publication Number Publication Date
CN115509982A true CN115509982A (zh) 2022-12-23

Family

ID=84499883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110698223.XA Pending CN115509982A (zh) 2021-06-23 2021-06-23 一种数据写入的方法、设备及网卡

Country Status (1)

Country Link
CN (1) CN115509982A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116301663A (zh) * 2023-05-12 2023-06-23 新华三技术有限公司 一种数据存储方法、装置及主机

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116301663A (zh) * 2023-05-12 2023-06-23 新华三技术有限公司 一种数据存储方法、装置及主机

Similar Documents

Publication Publication Date Title
WO2017216887A1 (ja) 情報処理システム
US8639898B2 (en) Storage apparatus and data copy method
JP4452064B2 (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US20180337995A1 (en) System and method for sharing san storage
US9122415B2 (en) Storage system using real data storage area dynamic allocation method
US20090240880A1 (en) High availability and low capacity thin provisioning
US9423984B2 (en) Storage apparatus and control method thereof
US20210216213A1 (en) Optimizing write io bandwidth and latency in an active-active clustered system using storage object affinity to a single storage node
US20090144345A1 (en) System and article of manufacture for consistent copying of storage volumes
EP2302500A2 (en) Application and tier configuration management in dynamic page realloction storage system
CN109791522B (zh) 数据迁移的方法、系统及智能网卡
US11409454B1 (en) Container ownership protocol for independent node flushing
US8135918B1 (en) Data de-duplication for iSCSI
US10872036B1 (en) Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof
WO2019127021A1 (zh) 存储系统中存储设备的管理方法及装置
WO2023065654A1 (zh) 一种数据写入方法以及相关设备
CN105739930A (zh) 一种存储架构及其初始化方法和数据存储方法及管理装置
US10387043B2 (en) Writing target file including determination of whether to apply duplication elimination
CN115509982A (zh) 一种数据写入的方法、设备及网卡
CN107577733B (zh) 一种数据复制的加速方法及系统
CN117762332A (zh) 一种存储管理系统、方法、设备及机器可读存储介质
US11216204B2 (en) Degraded redundant metadata, DRuM, technique
CN104426965B (zh) 自管理存储方法和系统
US11853574B1 (en) Container flush ownership assignment
WO2023029417A1 (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