CN111642137A - 快速发送写数据准备完成消息的方法、设备和系统 - Google Patents

快速发送写数据准备完成消息的方法、设备和系统 Download PDF

Info

Publication number
CN111642137A
CN111642137A CN201880014873.4A CN201880014873A CN111642137A CN 111642137 A CN111642137 A CN 111642137A CN 201880014873 A CN201880014873 A CN 201880014873A CN 111642137 A CN111642137 A CN 111642137A
Authority
CN
China
Prior art keywords
data
data page
page
information
information table
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
CN201880014873.4A
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
Publication of CN111642137A publication Critical patent/CN111642137A/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

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

Abstract

一种处理写数据请求方法、存储设备和系统。所述方法包括接收写数据请求,所述写数据请求是向存储设备写入数据的请求;根据数据页面信息表中记录的数据页面的信息,分配用于缓存所述写数据请求所要写入数据的数据页面;其中,所述数据页面信息表是所述存储设备中内存中的信息表,所述数据页面是所述内存中空闲的数据页面;向所述写数据请求的发送方发送写数据准备完成的响应消息。通过直接从内存获取可用于缓存的数据页面的信息,并发送写数据准备完成的响应消息,缩短了从接收写数据请求到发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。

Description

快速发送写数据准备完成消息的方法、设备和系统
技术领域
本申请涉及信息技术领域,特别涉及一种快速发送写数据准备完成消息的方法、设备和系统。
背景技术
存储区域网络(storage area network,SAN)是一种高速的、易扩展的、广泛用于数据存储的网络,独立于计算机局域网(local area network,LAN)。SAN将服务器和存储设备连接在一起,能够为其上的任意一台服务器和任意一台存储设备提供专用的通信通道。SAN将存储设备从服务器中独立出来,实现了服务器层次上的存储资源共享。
SAN中主要包括服务器、网络设备、存储设备。根据不同的网络类型,可以分为互联网协议存储区域网络(Internet Protocol-SAN,IP-SAN)和光纤通道存储区域网络(FiberChannel-SAN,FC-SAN)。IP-SAN使用IP通道连通服务器和存储设备。FC-SAN使用光纤通道连通服务器和存储设备。FC-SAN需要使用到一些专用的硬件,作为数据的通道连接服务器与存储阵列,这些硬件包括光纤通道主机总线适配器(Fiber Channel-host bus adapter,FC-HBA)卡、FC交换机、光纤线、光模块等。
通常情况下,SAN中的服务器使用小型计算机系统接口(small computersysteminterface,SCSI)协议发送数据,并通过FC或IP通道,传输到存储阵列存储,数据的处理可以是“块级”(block level)。当服务器需要存储数据时,会发送一个SCSI协议的写数据命令到存储阵列;当服务器需要读取数据时,会发送一个SCSI协议的读数据命令到存储阵列。
以服务器下发一个SCSI协议的写数据命令为例,存储阵列在分配存放数据的页面后,再发送写数据准备完成的响应消息给服务器,需要经过存储阵列内部的多个模块的相互配合才能完成。多个模块参与处理,导致存储阵列向服务器返回写数据准备完成的响应消息时延过大,影响到数据存储的效率。
发明内容
本申请实施例提供一种快速发送写数据准备完成消息的方法、设备和系统,以降低发送写数据准备完成消息时的时延,提高业务处理的效率。
第一方面,本申请实施例提供一种存储设备,包括处理器、网络接口卡和内存,其中:
所述处理器,用于通过运行所述网络接口卡的驱动程序,在所述内存中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡,用于接收写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述写数据请求是向所述存储设备写入数据的请求。
本申请实施例提供的存储设备,其网络接口卡在接收到写数据请求时,从内存中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡能够直接从内存获取可用的数据页面的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。由于不需要存储设备中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡接收写数据请求到网络接口卡发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
其中,所述网络接口卡分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,是所述网络接口卡分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面。
可选的,所述存储设备是存储阵列,所述处理器为中央处理器(central
processing unit,CPU),所述内存为主存储器,例如随机存取存储器(RandomAccessMemory,RAM),所述网络接口卡可以是FC-HBA卡或以太网卡。本申请实施例中,FC-HBA卡也称作光纤通道接口卡。所述网络接口卡与所述处理器之间可以通过快速外围部件互联(Peripheral Component Interconnect Express,PCIe)链路连接。所述网络接口卡与所述内存之间也可以通过PCIe链路连接。
可选的,所述处理器是在所述网络接口卡初始化的过程中,通过运行所述网络接口卡的驱动程序,在所述内存中创建数据页面信息表。
可选的,可以在所述存储设备的操作系统(operating system,OS)管理的内存中创建所述数据页面信息表,也可以在所述网络接口卡在内存中的基地址寄存器(baseaddress register,BAR)地址空间创建所述数据页面信息表。
可选的,所述数据页面信息表是所述网络接口卡可以直接访问的信息表,所述数据页面信息表也是所述处理器通过运行所述网络接口卡的驱动程序直接访问的信息表。
在一种可能的实现方式中,所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
在一种可能的实现方式中,所述处理器,还用于通过运行所述网络接口卡的驱动程序,从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
可选的,所述处理器可以通过运行所述网络接口卡的驱动程序,根据预设的比例确定可以配置到所述数据页面信息表中的空闲数据页面的数量,也可以根据预设的算法确定的动态的空闲数据页面的数量。
可选的,所述网络接口卡的驱动程序是所述存储设备的操作系统中的程序,所述处理器通过运行所述存储设备的操作系统中的所述网络接口卡的驱动程序,从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
在一种可能的实现方式中,所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。即数据页面信息表中的一个表项记录一个空闲数据页面的信息,每个表项分别记录不同的空闲数据页面的信息。
在一种可能的实现方式中,所述空闲数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
在一种可能的实现方式中,所述数据页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
可选的,所述数据页面信息表也可以是在所述内存中创建的链表或数组。
在一种可能的实现方式中,所述网络接口卡包括控制器和网络端口;其中,
所述网络端口,用于接收所述写数据请求;
所述控制器,用于根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息。
所述处理器还用于通过运行所述网络接口卡的驱动程序,按照所述控制器的命令格式,将下述信息中的至少其中之一配置到所述控制器中:所述页面交换队列的起始地址、表项的数量、表项的格式。
可选的,所述处理器用于通过运行所述网络接口卡的驱动程序,按照所述控制器预设的命令格式,将从所述缓存中申请的空闲数据页面配置到所述页面交换队列中。
在一种可能的实现方式中,所述控制器,还用于将接收到的所述写数据请求所要存储的数据,迁移到所分配的数据页面对应的缓存空间中;所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述内存中空闲的数据页面,例如所述缓存中的空闲数据页面,交换到所述数据页面信息表中。将所述缓存中空闲的数据页面交换到所述数据页面信息表中,能够保证数据页面信息表中有足够的空闲数据页面用于分配,能够避免因空闲数据页面不足带来的业务中断的问题。
在一种可能的实现方式中,所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述数据页面信息表在所述内存中的虚拟地址转换为物理地址;
所述网络接口卡通过所述数据页面信息表的物理地址访问所述数据页面信息表。
第二方面,本申请实施例提供了一种网络接口卡,包括控制器和网络端口;其中,
所述网络端口,用于通过网络接收写数据请求,所述写数据请求是向存储设备写入数据的请求,所述存储设备通过所述网络接口卡接收向所述存储设备写入数据的请求和/或待存储的数据;
所述控制器,用于从数据页面信息表记录的数据页面中,分配数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述数据页面信息表是所述存储设备内存中的信息表,所述数据页面是所述内存中的空闲数据页面。
本申请实施例提供的网络接口卡,在网络端口接收到写数据请求时,控制器从所述存储设备的内存中的数据页面信息表获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡中的控制器能够直接从内存获取可用的数据页面的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。由于不需要所述存储设备中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡接收写数据请求到其发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
其中,所述控制器分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,是所述控制器分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面。可选的,所述网络接口卡是FC-HBA卡或以太网卡。
在一种可能的实现方式中,所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
在一种可能的实现方式中,所述控制器,还用于接收所述数据页面信息表的配置信息,根据所述数据页面信息表的配置信息访问所述数据页面信息表;其中,所述配置信息包括所述数据页面信息表的起始地址、表项的数量和格式。
在一种可能的实现方式中,所述网络端口,还用于通过网络接收所述写数据请求所要写入的数据;
所述控制器,还用于缓存所述数据,并将所述数据迁移到已分配的数据页面所对应的内存中。
第三方面,本申请实施例提供了一种处理写数据请求的方法,包括:
接收写数据请求,所述写数据请求是向存储设备写入数据的请求;
根据数据页面信息表中记录的数据页面的信息,分配用于缓存所述写数据请求所要写入数据的数据页面;其中,所述数据页面信息表是所述存储设备中内存中的信息表,所述数据页面是所述内存中空闲的数据页面;
向所述写数据请求的发送方发送写数据准备完成的响应消息。
本申请实施例提供的处理写数据请求的方法,在接收到写数据请求时,从内存中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,能够在接收到写数据请求时,直接从内存获取可用的数据页面的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。缩短了从接收写数据请求到发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
其中,所述分配数据页面用于缓存所述写数据请求所要存储的数据,是分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面。
可选的,可以在操作系统管理的内存中创建所述数据页面信息表,也可以在所述内存的其它非缓存空间创建所述数据页面信息表。
在一种可能的实现方式中,所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
在一种可能的实现方式中,所述方法还包括:
从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
在一种可能的实现方式中,所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。
在一种可能的实现方式中,所述数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
在一种可能的实现方式中,所述页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
在一种可能的实现方式中,所述方法还包括:
将接收到的所述写数据请求所要写入的数据,迁移到所分配的数据页面所对应的内存中;
将所述内存中空闲的数据页面,例如所述缓存中的空闲数据页面,交换到所述数据页面信息表中。
可选的,所述方法还包括:
按照预设的命令格式,将下述信息中的至少其中之一配置到所述控制器中:所述数据页面信息表的起始地址、表项的数量、表项的格式。
第四方面,本申请实施例提供了一种信息处理系统,包括服务器和存储设备,所述服务器用于向所述存储设备写入数据或从所述存储设备读取数据;所述存储设备包括处理器、网络接口卡和内存,其中:
所述处理器,用于通过运行所述网络接口卡的驱动程序,在所述内存中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡,用于接收所述服务器发送的写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述服务器发送写数据准备完成的响应消息。
上述信息处理系统,网络接口卡在接收到服务器发送的写数据请求时,从内存中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡能够直接从内存获取可用的数据页面的信息,完成写数据的准备,并向服务器发送写数据准备完成的响应消息。由于不需要存储设备中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡接收写数据请求到网络接口卡发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
其中,所述网络接口卡分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,是所述网络接口卡分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面。
在一种可能的实现方式中,所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
在一种可能的实现方式中,所述处理器,还用于通过运行所述网络接口卡的驱动程序,从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
在一种可能的实现方式中,所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。
在一种可能的实现方式中,所述空闲数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
在一种可能的实现方式中,所述数据页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
在一种可能的实现方式中,所述网络接口卡包括控制器和网络端口;其中,
所述网络端口,用于接收所述写数据请求;
所述控制器,用于根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息。
在一种可能的实现方式中,所述控制器,还用于将接收到的所述写数据请求所要存储的数据,迁移到所分配的数据页面对应的内存中;
所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述内存中空闲的数据页面,例如所述缓存中的空闲数据页面,交换到所述数据页面信息表中。
在一种可能的实现方式中,所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述数据页面信息表在所述内存中的虚拟地址转换为物理地址;
所述网络接口卡通过所述数据页面信息表的物理地址访问所述数据页面信息表。
第五方面,本申请提供了一种计算机存储介质,用于储存为控制芯片所用的计算机软件指令,其包含用于执行上述第三方面方面所设计的程序。
第六方面,本申请提供了一种计算机程序,当计算机设备或服务器中的控制芯片运行该计算机程序时,该控制芯片执行上述第二方面中所述网络接口卡的功能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A为服务器和存储阵列所组成的FC-SAN系统的一种实现方式结构示意图;
图1B为图1A中存储阵列的具体结构示意图;
图1C为图1A中服务器的具体结构示意图;
图2为服务器向存储阵列存储数据时的实现方式流程示意图;
图3为本申请实施例提供的存储阵列300的一种实现方式结构示意图;
图4为本申请实施例提供的创建页面交换队列过程的方法流程示意图;
图5为存储阵列300接收到服务器400发送的写数据请求后的处理方法流程示意图;
图6为本申请实施例提供的存储阵列300接收数据并存储数据的方法流程示意图;
图7为本申请实施例提供的一种存储设备700的结构示意图;
图8为本申请实施例提供的一种网络接口卡800的结构示意图;
图9为本申请实施例提供的一种处理写数据请求方法的流程示意图;
图10为本申请实施例提供的一种信息处理系统100的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
存储阵列是把多个硬盘组成一个阵列,当作大资源池使用。它将数据以分条(striping)的方式存储在不同的硬盘中,存取数据时,阵列中的相关硬盘一起工作,既保证可靠性,又大幅减低数据存取时间,同时有更佳的空间利用率。
图1A为FC-SAN系统的一种实现方式结构示意图。如图1所示,所述FC-SAN系统包括服务器、存储阵列和光模块交换机,服务器中的FC-HBA卡1与存储阵列中的FC-HBA卡2分别与光模块交换机(也可以称为FC交换机)连接,通过FC交换机实现通信。
图1A只是一种简单的结构示意图,在具体实现时,服务器还可以包括CPU和主存储器(例如:随机存取存储器RAM等)。存储阵列也可以包括磁盘控制器、硬盘驱动器(harddisk drive,HDD)和固态硬盘(solid-state disk,SSD)等中的一种或多种。可以理解,在具体实现时,存储阵列和服务器之间还可以包括其它的连接设备等。在一种实施方式中,存储阵列和服务器之间不包括光模块交换机,即存储阵列和服务器直连和通信。
图1A中的服务器在运行过程中需要读取数据或存储数据;其存储数据或读取数据包括但不限于向存储阵列写入数据或从存储阵列中读取数据。相应的,所述存储阵列通过网络接收所述服务器的写数据请求,将待存储的数据写入存储阵列的磁盘中;或根据所述服务器的读数据请求将存储阵列磁盘中数据传输给所述服务器。图1A中的光模块交换机主要用于所述服务器与所述存储阵列之间报文或数据的转发。
图1B是图1A中存储阵列的一种具体结构示意图。如图1B所示,所述存储阵列在包括物理层和软件层。所述物理层中包括但不限于CPU、FC-HBA卡2、内存和磁盘。所述软件层中包括但不限于驱动模块和缓存模块。其中,所述驱动模块主要用于FC-HBA卡2的驱动和初始化等;所述缓存模块用于管理内存中的缓存资源。可以理解,所述驱动模块和所述缓存模块是所述存储阵列的操作系统中的软件模块,并通过所述存储阵列的CPU执行相关的程序来实现。
图1C是图1A中服务器的一种具体结构示意图。如图1C所示,所述服务器包括软件层和物理层。所述物理层中包括但不限于CPU和FC-HBA卡1,所述软件层中包括但不限于应用模块。所述应用模块可以是所述服务器操作系统中的应用程序,完成并实现一定的功能,通常通过服务器的CPU执行相关的程序来实现。当所述应用程序需要通过网络向存储阵列写入数据或读出数据时,会通过所述服务器中的CPU发送相关的命令或数据到FC-HBA卡1,通过FC-HBA卡1接收相关的数据或命令。
以所述应用程序为视频软件为例,当该视频软件需要存储某一视频时,其需要将相关的视频数据写入所述存储阵列中。所述服务器通过所述光模块交换机将写数据的请求和待存储的视频数据发送给存储阵列,所述存储阵列通过网络接收所述光模块交换机转发的所述写数据的请求和视频数据,并将所述视频数据存储在所述存储阵列的磁盘中。
下面以图1A-图1C所示的系统为例,对所述服务器向所述存储阵列写入数据的过程进行描述。如图2所示,所述服务器向所述存储阵列写入数据的过程包括:
步骤S101:服务器中的应用模块需要存储数据时,服务器通过FC-HBA卡1向存储阵列发送写数据的命令;
步骤S102:服务器中的FC-HBA卡1通过网络向存储阵列发送所述写数据命令;
步骤S103:存储阵列中的FC-HBA卡2接收所述写数据命令,根据所述写数据命令获取待存储数据的信息并发送给存储阵列的驱动模块;
步骤S104:所述驱动模块根据所述待存储数据的信息向所述存储阵列的缓存模块申请空闲的数据页面;
步骤S105:所述缓存模块分配用于缓存所述写数据命令需要存储数据的空闲数据页面,并将分配的空闲数据页面的地址等信息发送给所述驱动模块;
步骤S106:所述驱动模块将接收到的空闲数据页面的地址等信息发送给FC-HBA卡2;
步骤S107:FC-HBA卡2记录分配的数据页面的地址信息,并向服务器的FC-HBA卡1发送写数据准备完成的消息;
步骤S108:所述服务器通过FC-HBA卡1接收到写数据准备完成的消息后,向所述存储阵列发送待存储的数据;
步骤S109:FC-HBA卡2通过网络接收所述待存储数据,根据记录的为存储所述待存储数据所分配的数据页面的地址信息,将所述待存储数据通过直接内存访问(directmemory access,DMA)的方式写入所分配的数据页面,通知所述驱动模块数据接收完成;
步骤S110:所述驱动模块通知所述缓存模块,所述缓存模块根据所述驱动模块的通知触发将所述待存储数据存入磁盘中。
具体的,当FC-HBA卡2完成对所述待存储数据的接收并将所述待存储的数据通过DMA的方式写入所分配的数据页面后,会触发中断以通知驱动模块。驱动模块根据FC-HBA卡2的通知,通知缓存模块数据接收完成。所述缓存模块根据所述驱动模块的通知,向存储阵列的硬盘管理模块发送通知,硬盘管理模块将缓存中的所述待存储数据写入所述存储阵列的磁盘中。所述缓存模块还可以通知数据备份模块,将所述缓存中的所述待存储数据存储在具有备份功能的存储设备中,所述具有备份功能的存储设备通常是与所述存储阵列在地理位置上位于不同地方的存储设备。步骤S111:所述缓存模块返回写完成消息,通过所述驱动模块、FC-HBA卡2、FC-HBA卡1发送给所述服务器中的应用模块。
具体的,当缓存模块确认缓存空间中的所述待存储数据已经全部存储在所述存储阵列的磁盘或全部存储在备份的存储设备后,即所述待存储的数据已经存储在永久性存储磁盘后,所述缓存模块会向所述驱动模块发送写完成的消息,所述驱动模块通过FC-HBA卡2将写完成的消息发送给所述服务器,以通知所述服务器中的应用模块。上述过程中,从步骤S102到步骤S107,需要通过存储阵列中的多个组件(例如FC-HBA卡2、驱动模块和缓存模块)相互配合,才能将存储阵列写数据准备完成的消息返回给服务器。这使得存储阵列向服务器返回写数据准备完成消息的时延较长,通常情况下时延会达到20微妙以上。此外,当存储阵列因需要处理的读写请求较多无法分配用于缓存的页面时,存储阵列向服务器返回错误码的时延也会较长。
本申请实施例提供一种快速发送写数据准备完成消息的方法、设备和系统,以降低存储阵列收到写数据命令到返回写数据准备完成消息的时延,提高数据存储时的效率。
图3为本申请实施例提供的存储阵列300的一种实现方式结构示意图。如图3所示,存储阵列300包括FC-HBA卡301、CPU302和内存303。FC-HBA卡301与CPU302之间通过PCIe链路连接,FC-HBA卡301与内存303之间通过PCIe链路连接,CPU与内存通过PCIe或其他方式通信。在存储阵列300中,CPU302通过运行操作系统306实现对存储阵列300的控制。内存303提供操作系统306运行的空间以及缓存存储阵列300待存储或待读取的数据。操作系统306中包括但不限于FC驱动304和缓存模块305。FC驱动304既可以直接与缓存模块305通信,也可以间接与缓存模块305通信,例如FC驱动304可以通过其它模块缓存模块305通信。
FC-HBA卡301包括但不限于FC芯片3011和FC端口3012。FC芯片3011是FC-HBA卡301的核心,可以是FC协议及数据处理芯片,主要用于接收服务器发送的待存储的数据或向服务器发送服务器需要读取的数据。FC端口3012是FC-HBA卡301上与服务器通信的端口,FC-HBA卡301通常可以包括2个或4个FC端口(图3以4个为例进行说明),FC端口3012可以用于插入光纤线缆,以提供输入/输出传输的物理通道,所述输入/输出传输的物理通道包括但不限于全双工的输入/输出通道等。
操作系统306,是存储阵列300中运行的软件的运行基础,主要用于管理存储阵列300中的硬件资源,例如内存303和总线等硬件资源,以及为FC驱动304和缓存模块305等软件模块提供运行平台。
FC驱动304主要用于初始化FC-HBA卡301中的FC芯片3011,控制FC-HBA卡301接收服务器需要存储的数据或向服务器发送服务器需要读取的数据。
缓存模块305主要用于管理缓存资源池3032中的数据页面,将缓存资源池3032中的数据写入存储阵列300的磁盘(图3中未示出)中,或将存储阵列300磁盘中的数据缓存在缓存资源池3032中。可选的,缓存模块305还可以包括初始化缓存资源池3032和执行数据命中算法等功能。
内存303主要包括操作系统(operating system,OS)管理的内存3031和缓存资源池3032。OS管理的内存3031主要用于支撑操作系统的运行,以及支撑硬件的初始化(包括但不限于FC-HBA卡301的初始化)等。缓存资源池3032主要用于服务器需要存储或读取的数据的缓存。
下面以图3所示结构为例,结合图4至图6,对本申请实施例提供的技术方案进行详细的描述。
图4为本申请实施例提供的创建页面交换队列过程的方法流程示意图,如图4所示,所述方法包括:
S401:运行FC驱动304以对FC芯片3011进行初始化;
即在存储阵列300上电后,操作系统306启动的过程中,运行FC驱动304以对FC芯片3011进行初始化。
具体的,可以是CPU302通过运行FC驱动304相关的程序,对FC芯片3011进行初始化。本申请实施例为描述方便,以FC驱动304实施相关方法或完成相关功能,代表CPU302通过运行FC驱动304相关的程序实施相关方法或完成相关功能。
S402:运行FC驱动304以创建页面交换队列;
即FC驱动304操作系统306管理的内存中申请部分内存,按照FC芯片3011的预设的配置要求,创建页面交换队列,该页面交换队列可以被FC芯片3011直接访问。
该页面交换队列是以队列的形式记录空闲数据页面信息,可以包含多个表项,其中的每个表项记录一个空闲数据页面的信息。以页面交换队列中有4个表项(entry)为例,entry0记录缓存资源池3032中page0的页面信息,entry1记录缓存资源池3032中page1的页面信息,entry2记录缓存资源池3032中page2的页面信息,entry3记录缓存资源池3032中page3的页面信息。
可选的,步骤S402中创建页面交换队列可以在FC驱动304对FC芯片3011进行初始化的过程中实施。
具体的,每个芯片在出厂前,都预先设定了一些基本的配置要求,包括但不限于:芯片与驱动之间通信的命令、接口,所述命令包括队列的参数等。其中,页面交换队列的参数可以包括:页面交换队列能够支持的元素(例如entry)的上限、下限,以及entry的格式等。
例如,FC芯片3011预设的页面交换队列中entry的格式为:
{数据页面物理地址,数据页面长度}
或,
{数据页面长度,数据页面物理地址}
FC驱动304可以按照上述FC芯片3011预设的entry的格式创建页面交换队列。
FC驱动304创建的页面交换队列可以包含N个entry,其中,N是大于等于2的正整数。所述entry是队列中的表项,用于记录一个数据页面的基本信息,包括但不限于数据页面的物理地址和数据页面的长度。其中,数据页面是常见的内存管理方式的最小单元,其大小可以是4KB或8KB。可选的,所述entry中还可以包括每个entry的标识信息等,所述标识信息用于表示给entry记录的空闲数据页面是否已经被分配用于缓存数据。
可选的,FC驱动304可以从OS管理的内存中申请除OS预留的特定内存之外的部分内存,用于创建页面交换队列。所述特定内存包括OS运行所必须的内存,或其它外部设备在OS中预留的内存等。这些内存要么专门用于OS运行,要么专门供其它外部设备,FC驱动304不能访问这些内存。
在具体实现时,FC驱动304从OS管理的内存中申请的内存对应的地址是虚拟地址,为了使FC芯片3011能够直接访问创建的页面交换队列,FC驱动304需要将创建的页面交换队列的虚拟地址转换为物理地址,并在对FC芯片3011初始化时配置给FC芯片3011。这样,FC芯片3011才能够直接访问页面交换队列。即FC芯片3011可以直接读取页面交换队列中记录的空闲数据页面的信息,不需要通过其它软件模块或硬件的参与,例如不需要通过驱动获取空闲数据页面的信息。
需要说明的是,上述FC驱动304将虚拟地址转换为物理地址,可以采用通用的地址转换方法。例如,操作系统306会给硬件设备(包括内存303)进行统一编址,并会维护一个虚拟地址与物理地址之间的映射关系,FC驱动304可以根据操作系统306维护的映射关系进行虚拟地址与物理地址之间的转换。
可以理解,FC驱动304创建的页面交换队列,不仅FC芯片3011可以直接访问,FC驱动304也可以直接访问,即FC驱动304和FC芯片3011共享创建的页面交换队列。
S403:FC驱动304从缓存资源池中申请M个数据页面用于缓存存储阵列300需要存储的数据;
其中,所述M为大于等于1的正整数。FC驱动304从缓存资源池中申请的M个数据页面是空闲的数据页面,这些数据页面能够用于缓存存储阵列300需要存储的数据。
可选的,FC驱动304从缓存资源池中所申请的数据页面个数M,在不同的场景下可以有不同的确定方式。
一种方式是按照存储业务的典型场景的读写比例进行配置。例如,常见的数据库业务为读写比例7:3,FC驱动304可以申请缓存资源池3032中30%的数据页面共享到页面交换队列中。
另一种方式是,在存储阵列300存储数据的业务比例较低的情况下,为避免页面交换队列中配置的数据页面过多,部分被配置到交换队列中的空闲的数据页面未被分配用于缓存数据而造成资源闲置,上述M的值可以被灵活配置。例如通过一个配置接口,通过该配置接口接收用户根据不同业务场景的需求所配置的数值。FC驱动304根据接收到的M的值向缓存资源池3032申请数据页面。当然,存储阵列300中特定的软件,也可以通过预设的算法,自动地根据存储阵列300实际的业务情况,动态调整页面交换队列中数据页面个数M的值。本申请实施例不限定具体的实现方式。
S404:FC驱动304将申请到的数据页面的信息配置到页面交换队列中的entry;
其中,数据页面的信息包括但不限于数据页面的物理地址和长度信息。
具体的,可以将一个数据页面的信息配置到页面交换队列的一个entry中。每个entry分别记录不同的数据页面的信息。例如,FC驱动304将申请到的一个数据页面的物理地址和长度信息记录到一个entry对应的变量中。
S405:FC驱动304将页面交换队列的信息配置到FC芯片3011。
页面交换队列的信息,包括页面交换队列的起始地址、entry数量、entry的格式等中的一个或多个。
具体的,芯片在出厂的时候,会配置预设的命令集。芯片的驱动会根据该预设的命令集进行相关的配置。在本实施例中,FC驱动304可以根据FC芯片3011预设的命令集,将页面交换队列的信息配置到FC芯片3011中。
例如,FC芯片3011预先配置的命令集为:
{
命令的操作码(标识该命令的功能)
队列的物理地址的值;
队列的长度;
队列中entry的数量;
其它芯片要求填充的信息;
}
FC驱动304按照所述命令集的格式要求,将页面交换队列的起始地址、entry数量、等队列信息填写在所述命令集中,然后将填写后的所述命令集发送给FC芯片3011。
FC驱动304将页面交换队列的信息配置到FC芯片3011后,FC芯片3011可以访问页面交换队列,并通过页面交换队列获取缓存资源池3032中空闲的数据页面的信息。当存储阵列300接收到服务器发送的写数据请求时,FC芯片3011可以根据服务器发送的写数据请求,从页面交换队列中确定可用于缓存数据的数据页面的信息,并向服务器返回写数据准备完成的响应消息。
作为一种可选的实现方式,FC驱动304也可以在上述步骤S402之后,即完成页面交换队列的创建后,就将页面交换队列的信息(包括但不限于页面交换队列的起始地址、entry的数量、格式等)配置或共享给FC芯片3011。
参考图5,图5为图4中初始化后的存储阵列300接收到服务器400发送的写数据请求后的处理方法流程示意图。其中,服务器400与存储阵列300通过网络连接。例如服务器400与存储阵列300通过网络连接可以通过光模块交换机连接。服务器400中的应用模块需要存储数据时,通过FC-HBA卡401向存储阵列300发送写数据的命令。如图5所示,所述方法包括:
步骤S501:服务器400中的应用模块(通常是服务器中的业务层中的软件模块)需要存储数据时,服务器400通过FC-HBA卡401向存储阵列300发送写数据请求;
可选的,服务器400发送的写数据请求可以通过发送写数据命令的方式实现。本申请实施例不限定服务器400发送写数据请求的具体实现方式。
步骤S502:存储阵列300中的FC-HBA卡301接收所述写数据请求;
具体的,FC-HBA卡301通过FC端口3012接收服务器400通过网络或直接发送的写数据请求。
步骤S503:FC-HBA卡301解析该写数据请求,并分配数据页面;
具体的,FC-HBA卡301中的FC芯片3011解析服务器400发送的写数据请求,根据页面交换队列中记录的数据页面,分配用于缓存所述写数据请求所要存储数据的数据页面。
例如所述写数据请求所要存储的数据占用的存储空间在一个数据页面的缓存空间范围内,则FC芯片3011分配页面交换队列中的entry 0记录的数据页面,用于缓存所述写数据请求所要存储的数据。如果所述写数据请求所要存储的数据需要多个数据页面进行缓存,则FC芯片3011分配页面交换队列中多个entry记录的数据页面,用于缓存所述写数据请求所要存储的数据。
可选的,FC-HBA卡301可以通过下述方式,根据页面交换队列的entry中记录的数据页面的信息,分配数据页面:
一种是页面交换队列中的每个entry都有一个标识位,该标识位用于标识该entry记录的空闲数据页面是否已经被占用。例如某entry的标识位为0,表示该entry中的空闲数据页面未被分配;某entry的标识位为1,表示该entry中的空闲数据页面已被分配。FC-HBA卡301可以根据每个entry的标识位,选择entry用于分配空闲的数据页面。
另一种方式是FC-HBA卡301从页面交换队列的起始位置的entry开始分配空闲的数据页面,每次分配后记录最后一个已经使用的entry的位置信息,并在下次分配数据页面时,根据前次记录的最后一个已经使用的entry的位置的下一个entry起,从对应的entry中分配对应的空闲数据页面。同时,从缓存资源池中交换的空闲数据页面,在队列的末尾依次增加,保证页面交换队列有充足的空闲数据页面供FC-HBA卡301用于分配。
需要说明的是,本申请实施例不限定于上述两种方式,其它等同的或变换的方式,只要能够使得FC-HBA卡301从页面交换队列的entry中记录获取数据页面的信息并进行分配,都在本申请实施例覆盖的范围内。
步骤S504:FC-HBA卡301向服务器400发送写数据准备完成的响应消息。
具体的,FC-HBA卡301中的FC芯片3011在分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面后,即FC芯片3011在成功分配到用于缓存所述写数据请求所要存储的数据的空闲数据页面后,通过FC端口3012向服务器400发送写数据准备完成的响应消息,以通知服务器400存储阵列300已做好接收数据的准备。
上述过程中,FC芯片3011不再通过FC驱动304向缓存模块305请求分配缓存资源池3032中的数据页面,可以避免通过FC驱动304和缓存模块305申请数据页面所造成的时延,能够提升向服务器返回写数据准备完成消息的速度和效率。
图6为本申请实施例提供的存储阵列300接收数据并存储数据的方法流程示意图。该方法流程为存储阵列300根据图5所示的方法向服务器400发送写数据准备完成的响应消息后,接收服务器400发送的数据并进行存储的过程。为清楚描述,图6中存储阵列还包括硬盘管理模块307和存储空间308。其中,硬盘管理模块307用于管理存储阵列300中的存储空间308,包括但不限于将缓存资源池3032中的数据写入存储空间308中。存储空间308是存储阵列300存储数据的物理空间,可以是HDD或SSD等。在具体实现时,硬盘管理模块307也可以包括多个子模块,可以由多个不同的子模块共同实现硬盘管理模块307的功能,本申请实施例不做具体的限定。
如图6所示,存储阵列300接收并存储数据的过程为:
步骤①:FC-HBA卡301的FC端口3012接收到服务器下发的数据,FC芯片3011将FC端口3012接收到的数据缓存在FC芯片3011内部的硬件缓存空间中;
步骤②:FC芯片3011从页面交换队列中获取已分配的数据页面的信息;
图6以entry0记录的数据页面为已分配的数据页面为例进行说明。
该entry0是在FC芯片3011接收到服务器400发送的写数据请求时分配的entry,entry0中记录了分配的数据页面的信息。例如,上述步骤S503中,FC芯片3011分配的用于记录已经分配的数据页面信息的entry。
可选的,当FC芯片3011在上述步骤S503中分配的数据页面占用多个entry时,FC芯片3011相应的从多个entry中获取数据页面的信息。
步骤③:FC芯片3011将接收的数据通过DMA的方式迁移到entry 0中记录的数据页面中;
即FC芯片3011根据entry0中记录的数据页面(例如page0)的物理地址,将接收到的数据通过DMA的方式迁移到所述物理地址对应的数据页面(例如page0)的存储空间中。该数据页面的存储空间即缓存资源池3032中的存储空间。
下面以entry0中记录的数据页面在缓存资源池3032中为page0为例进行说明。
步骤④:FC芯片3011向FC驱动304发送数据接收完成的通知消息,所述通知消息中包含数据页面page 0的物理地址;
步骤⑤:FC驱动304向缓存模块305发送通知,以通知缓存模块305处理数据页面page 0中的数据;
步骤⑥:缓存模块305通知硬盘管理模块307处理数据页面page 0中的数据;
步骤⑦:硬盘管理模块307将数据页面page 0中的数据存储到对应的存储空间308中;
步骤⑧:缓存模块305将空闲的数据页面(例如page m)的物理地址通知FC驱动304;
因为page0所在entry已经被占用,为保证页面共享队列中有足够的数据页面用于FC芯片3011分配给服务器400发送的其它写数据请求或其它服务器下发的写数据请求,需要将缓存资源池3032中空闲的数据页面,交换到页面缓存队列中。本步骤中将page m通知FC驱动304,就是用空闲的数据页面交换已经被占用的数据页面page0。
可选的,将缓存资源池3032中空闲的数据页面交换到页面交换队列中,可以通过从缓存资源池3032中确定同等数量的空闲数据页面,并将确定的空闲数据页面配置到页面交换队列中。其中,所述同等数量,是与页面交换队列中记录的、被用于缓存数据的数据页面的数量。例如,步骤①中接收到的数据需要占用3个数据页面,FC芯片3011将接收的数据通过DMA的方式迁移到3个数据页面所对应的缓存空间后,从缓存资源池3032中再确定3个空闲数据页面并配置到页面交换队列中。这样,能够保证页面交换队列中,有足够的数据页面供FC芯片3011分配用于数据的缓存。
可选的,本申请实施例不限定步骤⑦和步骤⑧的执行顺序,两个步骤可以并行执行,也可以先执行步骤⑧,再执行步骤⑦。
可选的,在上述步骤S403中,FC驱动304从缓存资源池中所申请的数据页面个数M,也可以大于实际业务需求所要求的数据页面的个数。例如,存储阵列300在一定时间内缓存待存储的数据需要500个数据页面,FC驱动304可以向缓存资源池申请1000个数据页面。FC驱动304所申请的数据页面中多出的500个数据页面,能够避免因空闲页面还未交换到页面交换队列导致的部分数据无足够可用的数据页面而导致缓存失败的问题。
步骤⑨:FC驱动304将数据页面page m的信息(包括但不限于page m的物理地址和大小等)配置到entry 0。
上述图3-图6所描述的实现方式是以FC-SAN场景下,存储阵列通过FC-HBA接收服务器发送的写数据请求等为例进行的说明。可以理解,对于其它场景下,具备存储能力的设备通过网络接口卡接收其它设备发送的写数据请求时的实现方式,可以参照上述图3-图6所示的实现方式来实现。例如,在IP-SAN的场景下,存储阵列可以通过以太网络接口卡接收服务器发送的写数据请求并进行相应的处理。可选的,当以太网络接口卡接收服务器发送的写数据请求时,以太网络接口卡可以是支持数据转发卸载的网络接口卡。
并且,上述图3-图6所描述的实现方式是在OS管理的内存中创建页面交换队列为例进行说明的。在具体实现时,也可以在内存的其它部分创建页面交换队列,例如FC-HBA卡301在内存中的BAR地址空间。
从FC芯片3011快速获取缓存中空闲数据页面信息的角度,也可以在FC芯片3011的缓存空间中创建页面交换队列。这样,FC芯片3011在接收到写数据请求时,能够快速地从本地的缓存中获取空闲的数据页面的信息。当然,由于FC芯片3011与内存之间通过通信通道,例如PCIe链路,实现通信,在进行数据页面的交换时,因需要通过内存与FC芯片3011之间的PCIe链路传递交换的数据页面的信息,页面的交换效率会低于在内存中创建页面交换队列的方式。
上述实现方式是以在内存中创建页面交换队列,该页面交换队列记录有缓存中空闲的数据页面信息为例进行的描述。在具体实现时,还可以通过其它形式记录缓存中空闲数据页面,例如还可以通过数组或链表等其它方式。即页面交换队列只是用于记录数据页面信息的一种实现方式,对于其它能够记录数据页面信息的记录表,例如数据页面信息表,都是本申请实施例所公开的范围。这些数据页面信息表,记录有缓存中空闲的数据页面信息,结合本申请实施例提供的其它技术特征,也能够解决本申请要解决的技术问题。只是在具体实现时,实现方式因各种形式自身的特点会略有不同。例如,页面交换队列中的entry的地址通常是连续的,而链表因为通过指针确定下一个表项的地址,因此其表项的地址不全是连续的。
参考图7,图7为本申请实施例提供的一种存储设备700的结构示意图。存储设备700包括处理器701、网络接口卡702和内存703,其中:
所述处理器701,用于通过运行所述网络接口卡702的驱动程序,在所述内存703中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡702,用于接收写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述写数据请求是向所述存储设备700写入数据的请求。
本申请实施例提供的存储设备700,其网络接口卡702在接收到写数据请求时,从内存703中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡702能够直接从内存703获取可用的缓存空间的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。由于不需要存储设备700中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡702接收写数据请求到网络接口卡702发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
可选的,所述内存703包括缓存,所述缓存是用于临时存储写入所述存储设备700的数据或用于临时存储从所述存储设备700读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
可选的,上述存储设备700的实现方式,可以参考本申请实施例中图3-图6所示的存储阵列300的实现方式来实现。具体的,处理器701的实现方式可以参考存储阵列300中CPU302的实现方式,网络接口卡702的实现方式可以参考FC-HBA卡301的实现方式,内存703的实现方式可以参考内存303的实现方式,数据页面信息表的实现方式可以参考页面交换队列的实现方式来实现,具体不再赘述。示例性的,图3-图6中所示的FC驱动304所实现的功能或步骤,是CPU302通过运行所述FC-HBA卡301的驱动程序实现的,即FC驱动304所实现的功能或步骤可以由处理器701通过运行所述网络接口卡702的驱动程序来实现。
参考图8,图8为本申请实施例提供的一种网络接口卡800的结构示意图。如图8所示,网络接口卡800包括控制器801和网络端口802;其中,
所述网络端口802,用于通过网络接收写数据请求,所述写数据请求是向存储设备写入数据的请求,所述存储设备通过所述网络接口卡800接收向所述存储设备写入数据的请求和/或待存储的数据;
所述控制器801,用于从数据页面信息表记录的数据页面中,分配数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述数据页面信息表是所述存储设备内存中的信息表,所述数据页面是所述内存中的空闲数据页面。
本申请实施例提供的网络接口卡800,在网络端口802接收到写数据请求时,控制器801从所述存储设备的内存中的数据页面信息表获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡800中的控制器801能够直接从内存获取可用的缓存空间的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。由于不需要所述存储设备中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡800接收写数据请求到其发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
可选的,上述网络接口卡800的实现方式,可以参考本申请实施例中图3-图6所示的FC-HBA卡301的实现方式来实现。具体的,控制器801的实现方式可以参考FC芯片3011的实现方式,网络端口802的实现方式可以参考FC端口3012的实现方式具体不再赘述。
参考图9,图9为本申请实施例提供的一种处理写数据请求方法的流程示意图,包括:
步骤900:接收写数据请求,所述写数据请求是向存储设备写入数据的请求;
步骤902:根据数据页面信息表中记录的数据页面的信息,分配用于缓存所述写数据请求所要写入数据的数据页面;其中,所述数据页面信息表是所述存储设备中内存中的信息表,所述数据页面是所述内存中空闲的数据页面;
步骤904:向所述写数据请求的发送方发送写数据准备完成的响应消息。
上述方法中,在接收到写数据请求时,从内存中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,能够在接收到写数据请求时,直接从内存获取可用的缓存空间的信息,完成写数据的准备,并向写数据请求的发送方发送写数据准备完成的响应消息。缩短了从接收写数据请求到发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
可选的,上述方法的实现方式,可以参考本申请实施例中图3-图6所示的实现方式来实现。具体的,步骤900可以参考上述图5中步骤S502的实现方式,步骤902可以参考上述图5中步骤S503的实现方式,步骤904可以参考上述图5中步骤S504的实现方式,具体不再赘述。可选的,图9所示的方法流程,进一步还可以参考图4和图6中所示的方法流程来实现,不再赘述。
参考图10,图10为本申请实施例提供的一种信息处理系统100的结构示意图。存储设备100包括服务器101和存储设备102,所述服务器100用于向所述存储设备102写入数据或从所述存储设备102读取数据;存储设备102包括处理器1021、网络接口卡1022和内存1023其中:
所述处理器1021,用于通过运行所述网络接口卡1022的驱动程序,在所述内存1023中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡1022,用于接收所述服务器101发送的写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述服务器101发送写数据准备完成的响应消息。
本申请实施例提供的信息处理系统100,网络接口卡1022在接收到服务器101发送的写数据请求时,从内存1023中获取空闲的数据页面的信息,该空闲的数据页面能够用于缓存所述写数据请求所要写入的数据。这样,网络接口卡1022能够直接从内存1023获取可用的缓存空间的信息,完成写数据的准备,并向服务器101发送写数据准备完成的响应消息。由于不需要存储设备102中的多个模块相互配合以确定可用缓存空间,缩短了从网络接口卡1022接收写数据请求到网络接口卡1022发送写数据请求响应消息的时间,提高了处理写数据请求业务时的效率。
可选的,所述内存1023还包括缓存,所述缓存是用于临时存储写入所述存储设备102的数据或用于临时存储从所述存储设备102读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
可选的,上述信息处理系统100的实现方式,可以参考本申请实施例中图3-图6所示的存储阵列300和服务器400的实现方式来实现。具体的,服务器101的实现方式可以参考服务器400的实现方式,处理器1021的实现方式可以参考存储阵列300中CPU302的实现方式,网络接口卡1022的实现方式可以参考FC-HBA卡301的实现方式,内存1023的实现方式可以参考内存303的实现方式,数据页面信息表的实现方式可以参考页面交换队列的实现方式来实现,具体不再赘述。示例性的,图3-图6中所示的FC驱动304所实现的功能或步骤,是CPU302通过运行所述FC-HBA卡301的驱动程序实现的,即FC驱动304所实现的功能或步骤可以由处理器1021通过运行所述网络接口卡1022的驱动程序来实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (26)

1.一种存储设备,包括处理器、网络接口卡和内存,其特征在于:
所述处理器,用于通过运行所述网络接口卡的驱动程序,在所述内存中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡,用于接收写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述写数据请求是向所述存储设备写入数据的请求。
2.根据权利要求1所述的存储设备,其特征在于:
所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息;
所述处理器,还用于通过运行所述网络接口卡的驱动程序,从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
3.根据权利要求1或2所述的存储设备,其特征在于:
所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。
4.根据权利要求1-3所述的任一存储设备,其特征在于:
所述空闲数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
5.根据权利要求1-4所述的任一存储设备,其特征在于:
所述数据页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
6.根据权利要求1-5所述的任一存储设备,其特征在于,所述网络接口卡包括控制器和网络端口;其中,
所述网络端口,用于接收所述写数据请求;
所述控制器,用于根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息。
7.根据权利要求6所述的存储设备,其特征在于,
所述控制器,还用于将接收到的所述写数据请求所要存储的数据,迁移到所分配的数据页面对应的缓存空间中;
所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述内存中空闲的数据页面交换到所述数据页面信息表中。
8.根据权利要求1-7所述的任一存储设备,其特征在于,所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述数据页面信息表在所述内存中的虚拟地址转换为物理地址;
所述网络接口卡通过所述数据页面信息表的物理地址访问所述数据页面信息表。
9.一种网络接口卡,其特征在于,包括控制器和网络端口;其中,
所述网络端口,用于通过网络接收写数据请求,所述写数据请求是向存储设备写入数据的请求,所述存储设备通过所述网络接口卡接收向所述存储设备写入数据的请求和/或待存储的数据;
所述控制器,用于从数据页面信息表记录的数据页面中,分配数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息;其中,所述数据页面信息表是所述存储设备内存中的信息表,所述数据页面是所述内存中的空闲数据页面。
10.根据权利要求9所述的网络接口卡,其特征在于:
所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息。
11.根据权利要求9或10所述的网络接口卡,其特征在于:
所述控制器,还用于接收所述数据页面信息表的配置信息,根据所述数据页面信息表的配置信息访问所述数据页面信息表;其中,所述配置信息包括所述数据页面信息表的起始地址、表项的数量和格式。
12.根据权利要求9-11所述的任一网络接口卡,其特征在于:
所述网络端口,还用于通过网络接收所述写数据请求所要写入的数据;
所述控制器,还用于缓存所述数据,并将所述数据迁移到已分配的数据页面所对应的内存中。
13.一种处理写数据请求的方法,其特征在于,所述方法包括:
接收写数据请求,所述写数据请求是向存储设备写入数据的请求;
根据数据页面信息表中记录的数据页面的信息,分配用于缓存所述写数据请求所要写入数据的数据页面;其中,所述数据页面信息表是所述存储设备中内存中的信息表,所述数据页面是所述内存中空闲的数据页面;
向所述写数据请求的发送方发送写数据准备完成的响应消息。
14.根据权利要求13所述的存储设备,其特征在于,所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息,所述方法还包括:
从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
15.根据权利要求13或14所述的存储设备,其特征在于:
所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。
16.根据权利要求13-15所述的任一存储设备,其特征在于:
所述数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
17.根据权利要求13-16所述的任一存储设备,其特征在于:
所述页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
18.根据权利要求13-17所述的任一方法,其特征在于,所述方法还包括:
将接收到的所述写数据请求所要写入的数据,迁移到所分配的数据页面所对应的内存中;
将所述内存中空闲的数据页面交换到所述数据页面信息表中。
19.一种信息处理系统,包括服务器和存储设备,所述服务器用于向所述存储设备写入数据或从所述存储设备读取数据;所述存储设备包括处理器、网络接口卡和内存,其特征在于:
所述处理器,用于通过运行所述网络接口卡的驱动程序,在所述内存中创建数据页面信息表,所述数据页面信息表用于记录所述内存中空闲数据页面的信息;
所述网络接口卡,用于接收所述服务器发送的写数据请求,根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述服务器发送写数据准备完成的响应消息。
20.根据权利要求19所述的信息处理系统,其特征在于:
所述内存包括缓存,所述缓存用于临时存储写入所述存储设备的数据或用于临时存储从所述存储设备读出的数据,所述页面信息表中记录的空闲数据页面的信息是所述缓存中的空闲数据页面的信息;
所述处理器,还用于通过运行所述网络接口卡的驱动程序,从所述缓存中申请空闲的数据页面,并将申请的空闲数据页面的信息配置到所述数据页面信息表中。
21.根据权利要求19或20所述的信息处理系统,其特征在于:
所述数据页面信息表包含多个表项,每个表项用于记录一个空闲数据页面的信息。
22.根据权利要求19-21所述的任一信息处理系统,其特征在于:
所述空闲数据页面的信息包括所述空闲数据页面的物理地址信息和长度信息。
23.根据权利要求19-22所述的任一信息处理系统,其特征在于:
所述数据页面信息表是在所述内存中创建的页面交换队列,所述页面交换队列以队列形式包含多个表项。
24.根据权利要求19-23所述的任一信息处理系统,其特征在于,所述网络接口卡包括控制器和网络端口;其中,
所述网络端口,用于接收所述写数据请求;
所述控制器,用于根据所述数据页面信息表中记录的数据页面的信息,分配所述数据页面信息表中记录的数据页面用于缓存所述写数据请求所要存储的数据,并向所述写数据请求的发送方发送写数据准备完成的响应消息。
25.根据权利要求24所述的信息处理系统,其特征在于,
所述控制器,还用于将接收到的所述写数据请求所要存储的数据,迁移到所分配的数据页面对应的内存中;
所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述内存中空闲的数据页面交换到所述数据页面信息表中。
26.根据权利要求19-25所述的任一信息处理系统,其特征在于,所述处理器还用于通过运行所述网络接口卡的驱动程序,将所述数据页面信息表在所述内存中的虚拟地址转换为物理地址;
所述网络接口卡通过所述数据页面信息表的物理地址访问所述数据页面信息表。
CN201880014873.4A 2018-12-14 2018-12-14 快速发送写数据准备完成消息的方法、设备和系统 Pending CN111642137A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/121054 WO2020118650A1 (zh) 2018-12-14 2018-12-14 快速发送写数据准备完成消息的方法、设备和系统

Publications (1)

Publication Number Publication Date
CN111642137A true CN111642137A (zh) 2020-09-08

Family

ID=71076693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880014873.4A Pending CN111642137A (zh) 2018-12-14 2018-12-14 快速发送写数据准备完成消息的方法、设备和系统

Country Status (2)

Country Link
CN (1) CN111642137A (zh)
WO (1) WO2020118650A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918101A (zh) * 2021-12-09 2022-01-11 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030079087A1 (en) * 2001-10-19 2003-04-24 Nec Corporation Cache memory control unit and method
CN1705269A (zh) * 2004-05-25 2005-12-07 中国科学院计算技术研究所 一种用于虚拟共享存储系统的远程取页方法及网络接口卡
US20100023676A1 (en) * 2008-07-25 2010-01-28 Moon Yang-Gi Solid state storage system for data merging and method of controlling the same according to both in-place method and out-of-place method
CN101827071A (zh) * 2008-06-09 2010-09-08 飞塔公司 网络协议集合加速
CN103645969A (zh) * 2013-12-13 2014-03-19 华为技术有限公司 数据复制方法及数据存储系统
US20160314042A1 (en) * 2015-04-27 2016-10-27 Invensas Corporation Preferred state encoding in non-volatile memories
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030079087A1 (en) * 2001-10-19 2003-04-24 Nec Corporation Cache memory control unit and method
CN1705269A (zh) * 2004-05-25 2005-12-07 中国科学院计算技术研究所 一种用于虚拟共享存储系统的远程取页方法及网络接口卡
CN101827071A (zh) * 2008-06-09 2010-09-08 飞塔公司 网络协议集合加速
US20100023676A1 (en) * 2008-07-25 2010-01-28 Moon Yang-Gi Solid state storage system for data merging and method of controlling the same according to both in-place method and out-of-place method
CN103645969A (zh) * 2013-12-13 2014-03-19 华为技术有限公司 数据复制方法及数据存储系统
US20160314042A1 (en) * 2015-04-27 2016-10-27 Invensas Corporation Preferred state encoding in non-volatile memories
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈艳平;冯萍;徐代阳;姚荦;: "直接内存通信技术的研究与实现", 计算机测量与控制, no. 04, 25 April 2010 (2010-04-25), pages 881 - 883 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918101A (zh) * 2021-12-09 2022-01-11 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质
CN113918101B (zh) * 2021-12-09 2022-03-15 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质
WO2023103296A1 (zh) * 2021-12-09 2023-06-15 苏州浪潮智能科技有限公司 一种写数据高速缓存的方法、系统、设备和存储介质

Also Published As

Publication number Publication date
WO2020118650A1 (zh) 2020-06-18

Similar Documents

Publication Publication Date Title
US9329783B2 (en) Data processing system and data processing method
US10372340B2 (en) Data distribution method in storage system, distribution apparatus, and storage system
JP4691251B2 (ja) 仮想ローカルストレージを与えるためのストレージルータおよび方法
US20020049825A1 (en) Architecture for providing block-level storage access over a computer network
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
US20070067432A1 (en) Computer system and I/O bridge
US10466935B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
JP2009075718A (ja) 仮想i/oパスの管理方法、情報処理システム及びプログラム
CN109308269B (zh) 一种内存管理方法及装置
US20220222016A1 (en) Method for accessing solid state disk and storage device
JP2022541261A (ja) リソース割振り方法、記憶デバイス、および記憶システム
JP2004192174A (ja) ディスクアレイ制御装置
WO2023103704A1 (zh) 数据处理方法、存储介质和处理器
CN113961139A (zh) 使用中间设备对数据处理的方法、计算机系统、及中间设备
CN111642137A (zh) 快速发送写数据准备完成消息的方法、设备和系统
CN105765542A (zh) 访问文件的方法、分布式存储系统和存储节点
US10430220B1 (en) Virtual devices as protocol neutral communications mediators
CN105745900A (zh) 访问文件的方法、分布式存储系统和网络设备
EP4160422A1 (en) Method for using intermediate device to process data, computer system, and intermediate device
CN112714910B (zh) 分布式存储系统及计算机程序产品
JP2866376B2 (ja) ディスクアレイ装置
CN117311596A (zh) 数据读取方法、数据存储方法、装置及系统
CN118193478A (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