CN111758090B - 用于通过网络访问和管理键值数据的系统和方法 - Google Patents
用于通过网络访问和管理键值数据的系统和方法 Download PDFInfo
- Publication number
- CN111758090B CN111758090B CN201880090204.5A CN201880090204A CN111758090B CN 111758090 B CN111758090 B CN 111758090B CN 201880090204 A CN201880090204 A CN 201880090204A CN 111758090 B CN111758090 B CN 111758090B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- value
- value pair
- information
- 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
Links
- 238000000034 method Methods 0.000 title claims description 45
- 230000015654 memory Effects 0.000 claims abstract description 106
- 230000004044 response Effects 0.000 claims description 55
- 238000012937 correction Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 18
- 230000014759 maintenance of location Effects 0.000 description 15
- 239000004744 fabric Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000001152 differential interference contrast microscopy Methods 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/162—Implementing security features at a particular protocol layer at the data link layer
Abstract
一种用于存储键值KV数据的装置包含非易失性存储器和控制器。所述控制器包含解封装器和KV映射器以例如使用第2层协议接收通过网络传送的网络数据。所述解封装器被配置成从所述网络数据解封装有效载荷,所述有效载荷包含键值对和第一信息。所述KV映射器被配置成接收从所述网络数据解封装的所述键值对和所述第一信息并且基于所接收的键值对和第一信息确定所述非易失性存储器的第一位置。所述控制器被进一步配置成基于所述第一信息将与所述键值对相对应的KV数据存储在所述非易失性存储器的所述第一位置处。
Description
技术领域
本公开总体上涉及用于控制用于通过网络进行远程访问的键值数据的系统和方法,并且更具体地,涉及用于通过如以太网等网络来控制计算节点与存储装置之间的键值数据的传送和/或管理的系统和方法。
背景技术
已经由几家供应商例如希捷公司(Seagate)和西部数据公司(Western Digital)(WDC)引入了用于使用网络在存储装置与主机装置之间进行通信的各种配置。希捷公司的产品通过开源对象存储协议API使用简单的放置(put)和获取(get)命令经由以太网将存储应用直接连接到磁盘。WDC在驱动器接口中使用了更复杂的软件,例如可以用于连接装置的iSCSI或Ceph。此外,已经针对数据中心的高度分散且容量优化的工作负荷做出了一些标准化努力。例如,希捷公司建立了开放性动力学论坛(Open-Kinetics forum),包含针对动力学以太网驱动器-API的具体方面、形状因子等的多家供应商。这些产品性能低下,协议开销高。已经开发了使用非易失性存储器快速(NVMe)协议和使用远程直接存储器访问(RDMA)联网适配器的最新高性能产品,但是这些产品需要非常昂贵的网络适配器和基础设施。然而,仍然期望改进成本有效且高效数据存储和访问。
发明内容
根据某些方面,本发明实施例涉及用于使用如以太网或其它第2层(在7层开放系统互连模型中也称为数据链路层)协议等常用协议通过网络存储键值(KV)数据的系统和方法。在实施例中,使用具有非易失性存储器的固态驱动器(SSD)来存储、检索和管理KV数据。在这些和其它实施例中,可以用于管理对KV数据的存储的信息与KV数据和KV命令一起传送。
在一方面,一种用于存储键值(KV)数据的装置包含非易失性存储器和控制器。所述控制器例如使用第2层协议接收通过网络传送的网络数据。所述控制器包含解封装器(解析器)和KV映射器。所述解封装器被配置成从所述网络数据解封装有效载荷,所述有效载荷包含键值对和第一信息。所述KV映射器被配置成接收从所述网络数据解封装的所述键值对和所述第一信息并且基于所接收的键值对和第一信息确定所述非易失性存储器的第一位置。所述控制器被进一步配置成基于所述第一信息将与所述键值对相对应的KV数据存储在所述非易失性存储器的所述第一位置处。
在另一方面,一种存储键值(KV)数据的方法包含由计算节点的第一处理器确定与第一键值对的访问特征相关联的第一信息。所述方法还包含由所述第一处理器例如使用第2层协议通过网络将所述第一键值对和所述第一信息发送到存储装置。所述方法还包含由所述存储装置的第二处理器接收所述第一键值对和所述第一信息。所述方法还包含由所述第二处理器基于所述第一信息确定所述存储装置处的非易失性存储器中的第一位置,以及由所述第二处理器将与所述第一键值对相对应的KV数据存储在所述非易失性存储器的所述第一位置处。
在另一方面,一种通过网络传送键值(KV)数据的方法包含由所述网络中的第一装置的第一处理器接收含有KV数据的键值对。所述方法还包含由所述第一处理器确定用于管理所述键值对的基于键值的命令。所述方法还包含由所述第一处理器将所述键值对和所述基于键值的命令封装在数据包的有效载荷部分中,以及由所述第一处理器例如通过第2层协议将具有带有封装的键值对和所述基于键值的命令的所述有效载荷的所述数据包发送到所述网络中的第二装置。
附图说明
图1示出了根据一些实施方案的包含多个机架的数据中心的框图;
图2A示出了根据现有技术的通过RDMA(远程直接存储器访问)结构(fabric)在计算节点与存储装置之间进行通信的框图;
图2B示出了根据一些实施方案的通过以太网交换机在计算节点与存储装置之间进行通信的框图;
图3A示出了根据一些实施方案的承载键值数据包的示例第2层帧的图;
图3B示出了根据一些实施方案的承载键值数据包的示例第2层帧的图;
图4示出了根据一些实施方案的键值数据包的报头结构(structure)的图;
图5A示出了根据一些实施方案的在计算节点与存储装置之间传送基于键值的命令的框图;
图5B示出了根据一些实施方案的使用多个键值数据包在计算节点与存储装置之间传送基于键值的命令的框图;
图6示出了根据一些实施方案的使用定时器在计算节点与存储装置之间重新发送键值数据的框图;
图7示出了根据一些实施方案的承载键值数据包的示例第4层帧的图;
图8示出了根据一些实施方案的用于使用第2层协议在计算节点与存储装置之间传送键值数据的过程的流程图;并且
图9示出了根据一些实施方案的用于重新发送键值数据的过程的流程图。
具体实施方式
除其它外,本发明申请人认识到许多现有的配置,如上述用于在存储装置与主机装置之间进行通信的那些配置,例如,iSCSI和Ceph,都集中在低性能、低带宽和大容量驱动器上。此类驱动器通常是硬盘驱动器(HDD)与小型CPU的集成,以执行例如基于Linux的软件,如Ceph或其它高层协议。本发明申请人进一步认识到,通过使用固态驱动器(SSD)而不是HDD以及通过使用其它存储方法如键值存储而不是基于块的存储,可以实现对此类现有配置的许多改进。然而,在如数据中心等高性能环境中尝试此类解决方案,同时仍维持低成本,这存在许多挑战。
为了帮助说明本发明实施例的某些方面,图1示出了根据一些实施方案的数据中心的框图。在一些实施方案中,数据中心100包含多个机架。机架120可以填充有运行应用的多个计算节点122、123和维护数据的多个存储装置125、126。例如,计算节点可以运行如NoSQL数据库等应用,并且存储装置可以包含维护数据的非易失性存储器(NVM)装置。在一些实施方案中,机架内的计算节点和存储装置通过机架顶部(TOR)交换机121与彼此连接并通信。
如图1进一步所示,数据中心100可以包含通过广域网10(例如,因特网)促进计算节点与外部装置之间的通信的一或多个路由器110。如此,数据中心100中的计算节点可以被配置为服务器,以运行用于远程客户端的云应用、软件服务、虚拟机等。所述一或多个路由器110可以进一步促进不同机架中的计算装置和/或存储装置之间的通信。
图2A是展示了用于管理对如图1中所示的数据中心等数据中心中的应用的数据的存储的示例常规实施方案(例如,三星键值SSD)的框图。如图2A所示,在此类实施方案中,多个计算节点210可以通过远程直接存储器访问(RDMA)结构201与多个存储装置220通信。在一些实施方案中,RDMA结构201包含一或多个交换装置(例如TOR交换机、路由器等),所述一或多个交换装置支持RDMA流量并且允许从每个计算节点到每个存储装置(反之亦然)的访问,包含例如定位于数据中心的不同机架中的装置。
在如图2A所示的实施方案等实施方案中,计算节点210可以包含应用211、软件堆栈212和启用了远程直接存储器访问的网络接口控制器(RNIC)217。应用211可以是数据库应用(例如,NoSQL数据库)或其它数据中心应用。软件堆栈212可以使应用211能够使用键值对和如放置、获取、删除(Delete)、查询(Query)(存在(Exist))等KV命令来访问或管理存储装置中的数据。软件堆栈212进一步提供支持以用于使用第4层协议(例如,传输协议)与存储装置进行通信。在一些实施方案中,传输协议是用于在RDMA结构上传送NVMe命令的NVMeoF(结构上NVMe(NVMe over Fabric))。尽管为了便于说明,图2A示出了仅具有单个应用211的计算节点210,但是应当显而易见的是,计算节点210可以独立地或同时地运行几个或许多应用。
在这些和其它实施方案中,软件堆栈212包含键值(KV)API 213、NVMe驱动器214、NVMeoF(结构上NVMe)驱动器215和RDMA驱动器216。根据访问和管理存储装置中的数据的需要,应用211与KV API 213介接以生成KV命令和KV对。使用协议数据传输来实施应用211所使用的键值协议,KV API 213和NVMe驱动器214封装所生成的键值命令并通过NVMe供应商特定的命令来捎带所述命令。NVMe驱动器214生成NVMe命令,并且NVMeoF驱动器215进一步封装NVMe命令(例如,朝向块的读取/写入命令)以用于在RDMA结构上传输。具体地,封装的NVMe命令由NVMEoF驱动器215提供到RDMA驱动器216,并且RDMA流量可以通过RNIC 217物理发送到RDMA结构201。
相应地,在如图2A所示的实施方案等一些常规实施方案中,存储装置220可以包含控制器222、与非存储器装置223和RNIC 221。在此类实施方案中,控制器222包含RDMA驱动器225、NVMeoF驱动器226、NVMe驱动器227和键值(KV)映射器228。RNIC 221可以从RDMA结构201接收业务流并将所述业务流传递到RDMA驱动器225。RDMA驱动器225可以将流传输到从流解封装NVMe供应商特定的命令的NVMeoF驱动器226。NVMe驱动器227可以从NVMe供应商特定的命令中提取键值命令并将所述键值命令传递到键值映射器228。键值映射器228可以处理键值命令并且使控制器222根据键值命令对与非存储器装置223执行操作。在一些实施方案中,存储装置220可以包含闪存转换层(FTL)控制器。
尽管在存储装置中使用与非提供了许多性能和带宽优势,但是本发明申请人认识到了与如图2A所示的实施方案等常规实施方案有关的各种问题。例如,RNIC和RDMA需要低网络时延来提高性能,这进而意味着网络中无数据包丢失。对于以太网上RDMA(RDMA overEthernet),这需要无损以太网交换机。与如以太网NIC和交换机等标准NIC和交换机相比,这使RNIC和RDMA联网基础设施变得非常昂贵。此外,由于计算装置通常仅与同一机架内的存储装置进行通信(这可能仅需要第2层网络连通性),因此如TCP、UDP和RDMA等更高层传输协议是不必要的。更进一步地,由于如图2A所示的方法等方法仍是基于如SATA、SAS、iSCSI和NVMe等朝向块的存储协议构建的,因此包含支持通过多个朝向块的层捎带KV的软件堆栈可能造成计算时延和开销。
相关地,尽管从图2A中不容易显而易见,但是本发明申请人认识到了改进如图2A所示的实施方案等常规实施方案的甚至另外的机会。例如,由于KV对可能很小,因此在单个与非页面中置放仅单个对导致与非利用率低下。此外,在块中置放大量KV对(特别是在小对的情况下)可能造成删除期间的大量碎片化和高效垃圾收集问题。数据库应用的主要任务之一(即,应用211的一个实例)是通过覆写删除或无效的数据的压缩或垃圾收集。此任务因如上所述的存储KV对的问题而加剧。将会期望提供一种机制,通过所述机制可以将常规上由数据库和其它应用执行的此负担卸载到其它实体上。
因此,根据一些方面,本发明实施例提供了用于使用如以太网或其它第2层协议等公共协议通过网络存储键值(KV)数据的系统和方法。直接存储、检索和管理SSD的KV数据作为键值对的集合,由此提高了简单性和可伸缩性。更具体地,键值SSD可以减少冗余步骤(例如,块的分配或替换),这导致更快的数据输入和输出,并且增加了TCO(总拥有成本)并显著延长了SSD的寿命。
在一些实施方案中,用于存储KV数据的系统包含非易失性存储器和控制器。控制器使用第2层协议接收通过网络传送的网络数据。控制器可以包含解封装器和KV映射器。解封装器被配置成从网络数据解封装(即,解析)有效载荷,所述有效载荷包含键值对和第一信息。KV映射器可以被配置成接收从网络数据解封装的键值对和第一信息并且基于所接收的键值对和第一信息确定非易失性存储器的第一位置。控制器可以被进一步配置成基于第一信息将与键值对相对应的KV数据存储在非易失性存储器的第一位置处。
根据一些方面,在如图1所展示的机架环境中,由于键值对和第一信息封装在第2层(例如,链路层)数据包中,因此当在机架内发送流量时,无需通过如TCP、UDP和RDMA等上层发送流量。如此,在一些实施方案中,用于存储KV数据的系统包含用于如以太网等公共协议的标准网络接口控制器(NIC)。因此,此配置允许计算节点(例如,主机装置)和键值存储装置通过低成本标准NIC经由标准以太网连接来连接。此外,在不需要支持多个层的大型软件堆栈的情况下,可以显著减少软件开销,从而提供更高的性能和更低的时延。
图2B示出了根据一些实施方案的示例数据中心的框图。如图2B所示,在一些实施方案中,多个计算节点230可以使用用于键值数据访问的以太网层协议通过以太网交换机241与多个存储装置250通信。
更具体地,在如图2B所示的实施方案等实施方案中,计算节点230可以包含应用231、KV API 233和NIC(网络接口控制器)237。根据一些方面,KV API 233允许应用231使用常用协议和相对较便宜的基础设施通过网络访问和管理KV数据。在一些实施方案中,协议是第2层协议,如用于局域网(多节点)的以太网。在其它实施方案中,第2层协议可以包含用于点对点(双节点)连接的点对点协议(PPP)、高级数据链路控制(HDLC)和高级数据通信控制程序(ADCCP)。
在一些实施方案中,应用231是数据库(例如,NoSQL数据库)或其它数据中心应用。每当应用231需要访问或管理存储装置中的数据时,应用231就与生成适当的键值(KV)命令并且将所生成的KV命令封装在第2层协议中的KV API 233介接。KV API 233进一步直接与NIC 237交互,以通过以太网交换机241将封装的KV命令发送到存储装置250。如此,KV API233直接与NIC 237交互,而不与任何其它驱动器或网络层(例如,在第2层上方的上层)交互。应当注意的是,尽管为了便于说明,图2B示出了仅具有单个应用231的计算节点230,但是应当显而易见的是,计算节点230可以独立地或同时地运行几个或许多应用。
相应地,在如图2B所示的实施方案等实施方案中,存储装置250可以包含控制器253、非易失性存储器(例如,与非存储器装置254)和NIC 251。在一些实施方案中,控制器253包含解封装器257和键值(KV)映射器258。NIC 251可以从以太网交换机241接收业务流并将所述业务流传递到控制器253。根据一些方面,NIC 251是不包含RNIC功能的标准以太网NIC。
在一些实施方案中,控制器253使用第2层协议接收通过网络(例如,以太网)传送的网络数据。解封装器257可以被配置成从第2层数据包中的网络数据解封装有效载荷。在一些实施方案中,KV映射器258被配置成接收从网络数据解封装的KV数据(例如,KV命令或键值对)。在一些实施方案中,控制器253被进一步配置成将解封装的KV数据存储在非易失性存储器中。
如图2B进一步所示,在一些实施方案中,应用231通过KV分析器234与KV API 233进行交互。例如,应用231将KV对传递到KV分析器234,而不是直接将KV对传递到KV API233。在一些实施方案中,KV分析器234确定KV对的访问特征并且然后将KV对连同所确定的特征一起传递到KV API 233,使得KV API 233使用第2层协议通过以太网交换机241将KV对连同所确定的特征一起传输到存储装置250。如下文将更详细地描述的,由KV分析器234确定的KV对的访问特征可以包含KV对被访问的频率、KV对的预期保留期(即,预计使用KV对多长时间)、是否有可能一组对可能一起被删除以及检索时的最大时延或相对于其它KV的优先级。尽管为了便于说明而单独示出,但应当注意的是,KV分析器234可以以各种另外的或可替代的方式实施,例如,作为应用231或KV API 233的一部分。本领域技术人员在通过本发明实例进行教导之后将理解各种实施方案替代性方案。
现在将更详细地描述根据如图2B所示的实施例的可以如何使用第2层协议承载KV数据的各种实例。例如,图3A示出了根据一些实施方案的承载键值数据包的示例第2层帧的图。在一些实施方案中,以太网帧(例如,图3A中的以太网II型帧300)包含源MAC地址320和目的MAC地址310,所述源MAC地址和目的MAC地址分别标识数据包发送自的NIC和数据包发送到的NIC。每个MAC地址的长度为6个字节,在全球范围内是唯一的。以太网帧可以包含4字节的CRC校验和390,从而确保数据完整性,例如,从而确保数据如其被发送的那样被接收。以太网帧可以包含2个字节的以太网类型330,所述以太网类型指示以太网的类型,例如,以太网巨型帧。在一些实施方案中,以太网数据有效载荷350包含可变长度46-1500个字节,含有从源到目的地的数据。在一些实施方案中,此数据有效载荷350用作键值数据包,以承载从计算节点(例如,图2B中的计算节点230)到存储装置(例如,存储装置250)的KV命令和响应。在一些实施方案中,可以通过标准以太网帧承载根据KV协议的KV命令或响应。在一些实施方案中,可以通过巨型帧,即具有更大容量的以太网帧承载根据KV协议的KV命令或响应。
如图3A的实例所示,在以太网帧数据有效载荷的所定义的结构中实施KV协议。在一些实施方案中,数据有效载荷350(键值数据包)包含固定大小的报头351(例如,16字节报头),包含用于解析KV命令和响应的字段。在一些实施方案中,以太网帧在数据有效载荷350(键值数据包)中包含任选的可变大小的键字段352,使得KV协议可以允许键长度在1个字节与最大键字节之间。最大键可以是预先定义的。例如,最大键定义为255个字节。在一些实施方案中,以太网帧包含任选的可变大小值字段353,所述任选的可变大小值字段可以承载与在键字段中承载的键相对应的可变大小数据。
图3B示出了根据一些实施方案的承载键值数据包的第2层帧的实例。在这些和其它实施方案中,KV协议命令或响应可以跨越多个以太网帧。如图3B所示,相同的KV协议命令或响应可以跨越多个以太网帧,包含第一以太网帧中的第一KV数据包(承载报头371、键372和值373)和第二以太网帧中的第二KV数据包(承载报头381、键382和值383),从而构成多数据包键值对370。
图4示出了根据一些实施方案的键值(KV)数据包的报头结构的图。在一些实施方案中,可以如图4所示定义KV数据包的报头400,例如图3A中的数据有效载荷350的报头351。换句话说,可以根据图4中的报头结构定义图3A中的报头351。
在一些实施方案中,KV数据包的报头400包含一个定义以太网KV签名410的字节,所述签名指示KV协议的唯一标识符,从而允许计算节点和存储装置过滤非KV信息,例如广播和多播信息,或其它协议的唯一标识符。在一些实施方案中,KV数据包的报头400包含Cmd/Resp标志421,所述Cmd/Resp标志指示KV数据包类型——命令或响应。例如,将命令类型的数据包(“命令数据包”)从计算节点发送到存储装置,并且将响应类型的数据包(“响应数据包”)从存储装置发送到计算节点。在一些实施方案中,KV数据包的报头400包含命令/状态422,所述命令/状态指示命令类型,例如,获取、放置、删除、是否存在或任何其它命令。例如,将放置命令从计算节点发送到存储装置,其中Cmd/Resp标志421设置为命令(例如,设置为“1”)并且命令/状态422设置为0x1。响应于放置命令,存储装置可以发送响应数据包,其中Cmd/Resp标志421设置为响应(例如,设置为“0”)并且命令/状态422设置为0x1。在一些实施方案中,KV数据包的报头400包含一个定义键长度430的字节,所述键长度以字节为单位指示数据有效载荷中的键字段(例如,图3A中的键352)的长度,从而允许键长度从零到255个字节变化。在一些实施方案中,KV数据包的报头400包含两个定义值长度440的字节,所述值长度以字节为单位定义数据有效载荷中的值字段(例如,图3A中的值353)的长度,从而允许值长度从零到16383个字节变化。在一些实施方案中,KV数据包的报头400包含唯一地标识每个键值事务的命令ID 460。也就是说,同一事务的命令和响应数据包包含相同的命令ID。在一些实施方案中,命令ID 460是报头中的4字节字段,从而允许有2^32个唯一命令。在一些实施方案中,命令或响应可以包含多个数据包,以承载如图3B所示的大值数据。在一些实施方案中,KV数据包的报头400包含一个定义承载相同命令或响应的值数据的数据包的数量的字节,从而允许同一命令或响应中有多达255个数据包。在一些实施方案中,承载相同命令或响应的值数据的那些数据包是通过报头400中的数据包ID字段470来排序的。也就是说,数据包的发送/接收顺序是根据数据包的数据包ID确定的,即,数据包是按照数据包0、数据包1等的顺序发送/接收的。也就是说,超过数据包边界的值数据可以在多个数据包之间拆分。在一些实施方案中,接收器(例如,计算节点或存储装置)可以根据承载值数据的多个数据包的数据包ID所指示的顺序将所述多个数据包组装在同一命令或响应中。在一些实施方案中,KV数据包的报头400可以包含2个定义标识虚拟用户的用户ID的字节。在一些实施方案中,可以通过数据包的MAC地址唯一地标识虚拟用户,使得计算节点可以实施访问控制策略。在一些实施方案中,由于计算节点可以包含多个应用或多个虚拟机,因此计算节点可以设置一个以上用户ID。在一些实施方案中,存储装置可以进一步根据数据包的用户ID实施访问策略。
参考图4,在一些实施方案中,KV数据包的报头400可以进一步包含提示字段490,所述提示字段指示在KV数据包的键字段和值字段中承载的键值对的特征(例如,图3A中的键352和值353)。在一些实施方案中,计算节点可以设置报头400的温度字段491,所述温度字段指示访问键值对的概率或频率。在一些实施方案中,从0(“冻结”)到15(“沸腾”)设置温度491。例如,温度字段中的高值(即,“热”对)指示键值对具有高访问频率(即,此对被频繁访问)并且因此如果在快速媒体(如果可用的话)中进行检索将会更好。另一方面,温度字段中的低值(即,“冷”对)指示键值对具有低访问频率(即,此对很少被访问)并且因此可以置放在慢速媒体上。换句话说,第一KV数据包的温度字段中的第一值高于第二KV数据包的温度字段中的第二值指示与第二KV数据包中承载的KV对相比,第一KV数据包中承载的KV对被更频繁地访问。在一些实施方案中,计算节点230(参见图2B)的KV分析器234确定KV对被访问的频率。计算节点可以发送KV对,其中温度491设置为与访问频率相对应的值。作为响应,存储装置可以根据温度字段中指定的频率值将KV对置放在慢速媒体或快速媒体中。例如,存储装置可以配置有如SRAM或DRAM等高速存储器的区域,其中数据可以在刷新到如与非闪速存储器等较慢的非易失性媒体之前快速地缓存。可替代地,除了与非闪速存储器之外,还可以在单个存储装置中采用不同类型的非易失性存储器,如相变存储器(PCM)或磁性RAM(MRAM)。在此情况下,控制器根据温度字段中的值将数据置放在一种类型的存储器中。可以在存储装置250的控制器253初始化时通过执行读取和写入存储器命令的序列以便确定存储器速度的控制器253来配置存储器地址根据存储器速度到存储器的每个区域的映射。可替代地,可以在制造时预先配置映射。
在一些实施方案中,KV数据包的提示字段490包含预期寿命字段492,所述预期寿命字段指示保留KV数据包中承载的键值对的预期时期。例如,如果预期使用与键值对相对应的值一个月,则存储装置可以决定以至少一个月的指定保证数据保留期将数据置放到存储器中。这提高了效率,因为在非易失性闪速存储器中提供有保证的保留期涉及降低容量(保留期根据每个单元存储的位成反比地变化)以及增加功率和降低读取性能(更强的纠错码(ECC)以增加功率和读取访问时间为代价增加保留期)方面的费用。在一些实施方案中,存储装置可以被配置成在预期寿命字段492中指定的时间段之后删除数据,如果字段包含用于指示这可以完成的位的话。在一些实施方案中,计算节点230的KV分析器234(参见图2B)确定KV对的预期保留期,即,预计使用KV对多长时间。计算节点可以发送KV对,其中预期寿命字段492设置为与预期保留期相对应的值。作为响应,存储装置可以根据预期寿命字段492的值选择将数据存储在由某种类型的纠错码(ECC)保护的某种类型的非易失性存储器中。例如,存储装置可以配置有不同类型的与非闪速存储器如单级单元(SLC)、多级单元(MLC)、三级单元和四级单元(QLC),以及不同的纠错码如博斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem)(BCH)、低密度奇偶校验码(LDPC)或四联摆动码(QSBC)。与非闪速存储器中的数据的保留期根据单元中存储的位的数量而变化,由此,随着位的数量的增加,保留期减小。因此,可以将预期寿命短的数据写入QLC存储器;预期寿命长的数据写入SLC存储器,等等。虽然像BCH一样的ECC方案可以在功率消耗较低情况下提供快速访问时间,但使用如LDPC和QSBC等更强大的ECC方案可以增加数据保留期,但是要以读取访问时间和消耗的功率为代价。在一些实施方案中,存储装置还可以实施措施来自动刷新如TLC和QLC与非存储器等较短保留期存储器中的数据。在此情况下,存储装置可以利用预期寿命字段492和温度字段491提示两者,以便例如将低温且预期寿命高的数据置放到由LDPC保护的QLC存储器中并且将高温且预期寿命低的数据置放到由BCH保护的SLC存储器中,因为SLC访问得比QLC快,而QLC存储器更密集并且更适合存储不经常访问的长期批量数据。在一些实施方案中,预期寿命字段492包含用于指示在已经过了预期寿命字段492中指定的周期值之后存储装置可以删除键值对的位。
在一些实施方案中,KV数据包的提示字段490包含标签字段493,所述标签字段指示用相同标签标记的键值对置放在同一与非块上。例如,存储装置可以将用相同标签标记的键值对置放在同一与非块上。在一些实施方案中,计算节点230的KV分析器234(参见图2B)确定是否有可能一组对可能一起被删除。如果有可能所述一组对可能一起被删除,则计算节点可以使用标签字段493用相同的标签对所述一组对进行标记。作为响应,存储装置可以将所述一组对(用相同标签标记的)置放在同一块上,由此避免了碎片化并且提高了垃圾收集效率。
在一些实施方案中,KV数据包的提示字段490包含SLA度量字段494,所述SLA度量字段指示用于KV数据包中承载的KV对的服务水平协议(SLA)。在一些实施方案中,SLA度量字段中的值指示一些确保度量,例如,检索时的最大时延或相对于其它KV对的优先级。在一些实施方案中,计算节点230的KV分析器234(参见图2B)基于用于KV对的服务水平协议来确定KV对相对于其它KV对的优先级。计算节点可以发送KV对,其中SLA度量字段494设置为与所确定的优先级相对应的值(例如,值“1”指示大于由值“2”指示的优先级的优先级)。作为响应,存储装置可以存储KV对并且以比其它KV对更高的优先级来检索所述KV对,所述其它KV对的优先级比所述KV对的优先级低。在一些实施方案中,在配置有多种类型的存储器或在不同单元存储模式(例如,SLC、MLC、TLC和QLC)中使用与非闪速存储器的存储装置中,SL度量字段494可以用于确定应将数据存储在存储器的什么区域或什么类型的存储器中。
应当注意的是,提示字段490不必包含在所有实施例中或特定KV事务的一些或所有单独的数据包中。例如,对于一些事务,提示字段490可以为空白(以及任选地,所插入的默认值)和/或不被存储装置使用或被存储装置忽略。在一些实施方案中,为了帮助确定将对哪些提示字段采取行动,存储装置可以通过使用用于查询存储装置能力的命令来指示支持哪些提示字段。
参考图3A-图4,在一些实施方案中,以太网帧中的有效载荷(例如,图3A中的以太网II型帧300中的有效载荷350)包含键值对(例如,图3A中的键352和值353)和有效载荷的报头(例如,报头351)中的第一信息(例如,图4中的提示490的子字段中的信息)。在一些实施方案中,参考图2B,存储装置250的KV映射器258被配置成接收由解封装器257从网络数据解封装的键值对和第一信息并且基于所接收的键值对和第一信息确定非易失性存储器的第一位置(例如,与非存储器装置254的与非存储器的位置)。在一些实施方案中,存储装置250的控制器253被进一步配置成基于第一信息将与键值对相对应的KV数据存储在非易失性存储器的第一位置处。
在一些实施方案中,第一信息指示键值对的访问特征(例如,图4中的提示490的子字段中的信息)。在一些实施方案中,第一信息指示键值对的访问频率(例如,图4中的温度字段491中指示的访问频率)。在一些实施方案中,存储装置250的控制器253被配置成将具有比第二KV数据的第二访问频率更高的第一访问频率的第一KV数据存储在非易失性存储器的媒体中,所述媒体具有比非易失性存储器的其中存储了第二KV数据的媒体更快的存储器访问。例如,控制器253可以将具有比第二KV数据的第二访问频率更高的第一访问频率的第一KV数据存储在非易失性存储器的快速媒体中,所述快速媒体可以比非易失性存储器的其中存储了第二KV数据的慢速媒体更快地被访问。
在一些实施方案中,第一信息包含指示键值对保留在非易失性存储器中的最大时间段的键值对的预期寿命(例如,图4中的预期寿命字段492中指示的预期保留时间段)。在一些实施方案中,存储装置250的控制器253被配置成以与预期寿命字段492中的值相称的保留特征将与键值对相对应的KV数据存储在非易失性存储器的某个存储器区域或某种存储器类型的非易失性存储器中。在一些实施方案中,存储装置250的控制器253被配置成根据预期寿命字段492和温度字段491中的值的组合将与键值对相对应的KV数据存储在非易失性存储器的某个存储器区域或某种存储器类型的非易失性存储器中。在一些实施方案中,预期寿命字段492包含用于指示当已经过了预期保留时间段时存储装置可以删除键值对的位。
在一些实施方案中,第一信息包含键值对上的标签(例如,图4中的标签字段494中指示的值)。在一些实施方案中,存储装置250的控制器253被配置成通过存储来将与用相同标签标记的多个键值对相对应的KV数据共同定位在非易失性存储器(例如,图2B中的与非存储器装置254)的同一块或块组中。
在一些实施方案中,第一信息包含用于键值对的服务水平协议(SLA),所述SLA指示检索时的最大时延或相对于其它键值对的优先级中的至少一个作为确保度量(例如,图4中的SLA度量字段494中指示的信息)。在一些实施方案中,存储装置250的控制器253被配置成以满足SLA中指示的确保度量的时延或优先级来检索与键值对相对应的KV数据。在一些实施方案中,存储装置250的控制器253被配置成将与键值对相对应的KV数据存储在非易失性存储器的某个存储器区域或某种存储器类型的非易失性存储器中,其中读取和写入访问时间特征满足SLA中指示的确保度量。
图5A示出了根据一些实施方案的在计算节点与存储装置之间传送基于键值的命令的框图。图5A示出了执行适合于KV数据包的边界的值的获取命令从而请求检索与KV数据包中的KV对相对应的数据的实例。在一些实施方案中,计算节点(例如,图2B中的计算节点230)将具有获取命令510的单个KV数据包(例如,以太网帧的有效载荷)发送到存储装置(例如,图2B中的存储装置250)。对于单个数据包命令的实例,计算节点230可以向KV数据包分配为命令ID 0x1000并且在KV数据包的报头511中将数据包ID标记为“0”。Cmd/Resp标志设置为命令(=1),因为获取命令510是由计算节点发出的。KV数据包的数据包数量字段可以设置为1以指示在单个KV数据包中发送获取命令510。KV数据包的键长度可以设置为2个字节。因为获取命令510中没有值,所以值长度字段可以设置为0。键字段512可以连接到报头511以形成KV数据包以发送到存储装置。作为响应,存储装置250可以将获取响应520发送到计算节点230。获取响应520可以包含长度为16的检索到的值,所述值适合以太网帧的边界。存储装置可以用检索到的值组装KV数据包并且相应地在KV数据包的报头521中设置参数。在报头521中,Cmd/Resp标志可以设置为响应(=0)。在与获取命令510相同的事务中发送获取响应520时,可以将命令ID字段设置为0x1000。数据包数量字段可以设置为1,并且数据包ID可以设置为0,因为获取响应520是在单个KV数据包中发送的。值字段522可以连接到报头521,并且KV数据包发送到计算节点。
图5B示出了根据一些实施方案的使用多个键值数据包在计算节点与存储装置之间传送基于键值的命令的框图。图5B是超过键值(KV)数据包的边界的值的获取命令的实例。例如,在单个KV数据包(具有报头531和键532)中从计算节点(例如,计算节点230)发送的获取命令530从存储装置(例如,存储装置250)检索大小为2048个字节的值。存储装置可以将值拆分成分别对应于获取响应540和获取响应550的第一KV数据包(具有报头541和值542)和第二KV数据包(具有报头551和值552)。在一些实施方案中,字节0-1481在第一KV数据包(数据包ID=0)中发送,并且字节1482-2047在第二KV数据包(数据包ID=1)中发送。当这些KV数据包到达计算节点时,计算节点可以根据数据包ID字段中指定的顺序来组装数据,例如,通过将两个KV数据包的值字段按其数据包ID的顺序进行连接来组装。在一些实施方案中,KV协议可以在没有如TCP中的内置排序和重试机制的情况下实施,但是可以以图5B所展示的方式在端点(例如,计算节点和存储装置)上施加此责任。
图6示出了根据一些实施方案的使用超时机制在计算节点与存储装置之间重新发送键值数据的框图。图6示出了此类重新发送或重试机制的实施方案的实例。在一些实施方案中,由计算节点的应用(例如,图2B中的计算节点230的应用231)发出获取命令。在一些实施方案中,在步骤610处,KV API 233创建(即,将此命令转换为)KV数据包。然后在步骤620处将作为KV数据包的命令发送到存储装置,并且在步骤630处,计算节点确定用于从存储值接收响应的超时值,并且在步骤640处,针对所确定的超时值设置定时器。在一些实施方案中,针对不同的命令类型设置不同的超时值(例如,如图4所示,针对获取、放置、删除或是否存在(Is Exist)设置了不同的超时值)。然后,计算节点可以等待具有与在步骤620处发送的KV数据包的命令ID相同的命令ID的KV数据包。例如,存储装置接收命令并且检索其长度超过单个以太网帧的适当值。在步骤660处,存储装置可以根据值的长度将获取响应创建为具有在其报头中设置的值信息的N个KV数据包,并在步骤670处将N个KV数据包(例如,数据包#0-数据包#N)发送回计算节点。计算节点可以接收具有与在步骤620处发送的KV数据包的命令ID相同的命令ID的N个KV数据包。在一些实施方案中,计算节点可以等待具有此命令ID的所有N个KV数据包(N是数据包数量)。在一些实施方案中,在步骤680处,一旦所有N个KV数据包到达计算节点,计算节点就根据其在其报头中指定的顺序组装来自所有KV数据包的值信息,并将此信息返回到应用(例如,应用231)。在一些实施方案中,在步骤690处,当所有KV数据包到达时,计算节点重置定时器。在一些实施方案中,如果定时器在所有KV数据包到达步骤650之前超时(例如,当KV数据包在网络中丢失时)(例如,网络包含以太网交换机241),则计算节点通过在步骤620处将命令重新发送到存储装置来执行重试程序。在一些实施方案中,如果几次重试后计算节点没有接收到值的所有KV数据包(例如,由于断开连接),则计算节点可以返回错误到应用。在一些实施方案中,计算节点和存储装置可以实施除图6所展示的那些算法以外的其它算法。在一些实施方案中,如在步骤620处从计算节点发送的命令信息可以包含供存储装置改进键值对与与非存储器之间的映射的提示(例如,图4中的提示字段490中的值)。
如图3A-图4所展示的第2层网络上的KV协议的实例可以允许第2层网络上的计算节点与装置之间具有低时延、机架内连通性(例如,通过图1中的TOR交换机121)。在一些实施方案中,参考图7,在第3层(例如,IP层)网络上实施KV协议,使得网络流量可以通过例如路由器(例如,图1中的路由器110)在数据中心的机架之间或在数据中心外部发生。在一些实施方案中,在第4层网络上实施KV协议,使得可以通过UDP数据包或多个UDP数据包承载KV数据包(如果值超过UDP数据包的边界的话)。
如图7所示,在一些实施方案中,KV数据包750被定义为UDP数据包7000的UDP数据有效载荷740,所述UDP数据包有效载荷包含报头751、任选的键字段752和任选的值字段753。UDP数据包7000可以具有标准UDP报头730,所述报头包含源端口731、目的端口732、UDP长度733和UDP CRC 734。通过如图7所展示的UDP数据包上的KV数据包的定义,KV协议具有路由能力并且可以允许不同机架中的计算节点和装置通过路由器110连接和通信。
图8示出了根据一些实施方案的用于通过网络在计算节点(例如,图2B中的计算节点230)与存储装置(例如,图2B中的存储装置250)之间传送键值数据的过程的流程图。在步骤801处,由计算节点的第一处理器确定关于第一键值对的访问特征的第一信息(例如,图4中的提示字段490的任何子字段中指示的信息)。在一些实施方案中,第一键值对的访问特征可以是以下中的至少一个:(1)键值对的访问频率(例如,图4中的温度字段491中指示的信息);(2)键值对的预期寿命,所述预期寿命指示键值对保留在非易失性存储器中的预期时间段(例如,图4中的预期寿命字段492中指示的信息);(3)键值对上的标签,所述标签指示存储在非易失性存储器的同一块中的一组键值对的标签(例如,图4中的标签字段493中指示的信息);或(4)用于键值对的服务水平协议(SLA),所述SLA指示为确保度量(例如,图4中的SLA度量字段494中指示的信息)。
在步骤802处,由计算节点的第一处理器将第一键值对和第一信息通过网络发送到存储装置。在一些实施方案中,计算节点创建如图3A-图4所定义的KV数据包,并且通过本地交换机(例如,图2B中的以太网交换机241)经由第2层协议将KV数据包发送到存储装置。在一些实施方案中,计算节点创建KV数据包作为图7中定义的UDP数据包,并且通过路由器(例如,图1中的路由器110)经由第3层或第4层协议将KV数据包发送到存储装置。
在步骤803处,由存储装置的第二处理器接收第一键值对和第一信息。在一些实施方案中,由存储装置的解封装器257(参见图2B)从网络数据解封装第一键值对和第一信息。
在步骤804处,由存储装置的KV映射器258(参见图2B)基于第一信息来确定用于存储与第一键值对相对应的KV数据的在存储装置的非易失性存储器中的第一位置(例如,图2B中的与非存储器装置254中的块)。
在步骤805处,由存储装置230的控制器253(参见图2B)将与第一键值对相对应的KV数据存储在所确定的非易失性存储器的第一位置处。在一些实施方案中,如果第一信息指示键值对的访问频率(例如,图4中的温度字段491中指示的信息),则控制器将与第一键值对相对应的KV数据存储在非易失性存储器的第一位置处,使得具有比第二KV数据的第二访问频率更高的第一访问频率的第一KV数据存储在非易失性存储器的媒体中,所述媒体可以比非易失性存储器的其中存储了第二KV数据的媒体更快地被访问。
在一些实施方案中,如果第一信息包含指示键值对在非易失性存储器中保留的预期时间段的键值对的预期寿命(例如,图4中的预期寿命字段492中指示的信息),控制器以与预期寿命字段492中的值相称的保留特征将与键值对相对应的KV数据存储在非易失性存储器的某个存储器区域或某种存储器类型的非易失性存储器中,并且当自第一信息包含指示KV数据可以被删除的位时,如果自第一时间点起已经过了最大时间段则可以删除KV数据。
在一些实施方案中,如果第一信息包含键值对上的标签(例如,图4中的标签字段493中指示的信息),则控制器将与用相同标签标记的多个键值对相对应的KV数据存储在非易失性存储器的同一(或相同)块或块组(例如,与非存储器装置254中的同一块或块组)中。
在一些实施方案中,如果第一信息包含指示检索时的最大时延或相对于其它键值对的优先级中的至少一个作为确保度量的用于键值对的服务水平协议(SLA)(例如,图4中的SLA度量字段494中指示的信息,则控制器以满足SLA中指示的确保度量的时延或优先级来检索与键值对相对应的KV数据。例如,如果KV对中的报头的SLA度量字段494设置为与所确定的优先级相对应的值(例如,值“1”指示大于由值“2”指示的优先级的优先级),则控制器可以存储KV对并且以比其它KV对更高的优先级来检索所述KV对,所述其它KV对的优先级比所述KV对的优先级低。
图9示出了根据一些实施方案的用于使用超时值重新发送键值(KV)数据的过程的流程图。在步骤901处,在一些实施方案中,参考图2B,由第一装置(例如,计算节点230)的第一处理器从应用(例如,应用231)接收含有KV数据的键值对。在一些实施方案中,第一装置是计算节点230(参见图6B),并且第二装置是存储节点250(参见图6B)。在一些实施方案中,第一装置是存储节点250(参见图6B),并且第二装置是计算节点230(参见图6B)。
在步骤902处,在一些实施方案中,由第一装置的第一处理器确定并创建用于管理键值对的基于键值的命令(也参见图6中的步骤610)。在一些实施方案中,将基于键值的命令创建为图3A-图4中定义的KV数据包。在一些实施方案中,将基于密钥值的命令创建为图7中定义的UDP数据包上的KV数据包。
在步骤903处,在一些实施方案中,由第一装置的第一处理器将键值对和基于键值的命令封装在数据包的有效载荷部分(例如,图3A中的以太网帧300的数据有效载荷350)中。
在步骤904处,在一些实施方案中,由第一装置的第一处理器通过第2层协议将数据包(例如,图3A中的以太网帧300)发送到第二装置(例如,图2B中的存储装置250)(参见图6中的步骤620)。在一些实施方案中,数据包包含多个数据包(例如,多个以太网帧,所述多个以太网帧中的每个以太网帧在相应的有效载荷中包含报头、键字段或值字段;参见图3B)。在一些实施方案中,通过经由第2层协议将所述多个数据包中的每个数据包发送到网络中的第二装置,将数据包(例如,图3A中的以太网帧300)发送到第二装置。
在一些实施方案中,由第二装置的第二处理器接收键值对和基于键值的命令。创建对基于键值的命令的响应(在图6中的步骤660处),并且由第二装置的第二处理器将所述响应封装在响应数据包的有效载荷部分中。由第二处理器通过第2层协议将具有带有封装的响应的有效载荷的响应数据包发送到网络中的第一装置。在一些实施方案中,响应数据包包含多个数据包(例如,图6中的数据包#0-数据包#N-l),并且通过经由第2层协议将所述多个数据包中的每个数据包发送到网络中的第一装置(参见图6中的步骤670),将响应数据包发送到第一装置。
在步骤905处,在一些实施方案中,在步骤904处发送数据包之后,由第一装置的第一处理器针对用于从第二装置接收响应数据包的超时值设置定时器(在图6中的步骤640处)。在一些实施方案中,确定用于接收响应数据包的超时值(在图6中的步骤630处),并且由第一装置的第一处理器针对所确定的超时值设置定时器(在图6中的步骤640处)。
在步骤906处,在一些实施方案中,第一装置(例如,计算节点230)确定在从第二装置接收到响应数据包之前定时器是否超时(图6中的步骤650)。在一些实施方案中,当第一装置确定在从第二装置接收到响应数据包之前定时器超时时(步骤906中为“是”),由第一处理器通过第2层协议将数据包重新发送到第二装置(步骤904)。在一些实施方案中,如果在几次重新发送或重试之后第一节点没有从第二装置接收到响应数据包(例如,由于断开连接),则第一节点可以返回错误到应用。
在步骤907处,当第一装置确定在从第二装置接收到响应数据包之前定时器没有超时时(步骤906中的“否”),由第一装置的第一处理器从第二装置接收响应数据包(图6中的步骤680)并且重置定时器(图6中的步骤690)。
本领域技术人员在通过这些示例描述进行教导之后将理解如何将结合图9的第2层协议示例描述的方法适应于示例第4层协议示例,如结合图7所描述的实例。
本公开的各个方面的其它目的、优点和实施例对于本公开的领域的技术人员而言将是显而易见的并且处于本说明书和所附附图的范围内。例如但不限于,可以与本公开一致地重新布置结构或功能要素。类似地,根据本公开的原理可以应用于其它实例,所述实例即使这里没有详细地具体描述,然而也将会落在本公开的范围内。
Claims (26)
1.一种用于存储键值KV数据的装置,所述装置包括:
非易失性存储器;以及
控制器,所述控制器使用第2层协议接收通过网络传送的网络数据,所述控制器包含:
解封装器,所述解封装器被配置成从所述网络数据解封装有效载荷,所述有效载荷包含键值对和第一信息,所述有效载荷提供关于如何在所述有效载荷中存储与所述键值对相对应的KV数据的信息,其中所述第一信息提供所述键值对的访问频率以及所述键值对上的标签中的至少一者或两者,以及
KV映射器,所述KV映射器被配置成接收从所述网络数据解封装的所述键值对和所述第一信息并且基于所接收的键值对和第一信息确定所述非易失性存储器的第一位置,
其中所述控制器被进一步配置成基于所述第一信息将与所述键值对相对应的所述KV数据存储在所述非易失性存储器的所述第一位置处,所述第一信息与所述KV数据一起在所述网络数据中通过所述网络传送并且从所述网络数据中解封装。
2.根据权利要求1所述的装置,其中所述第2层协议包括以太网。
3.根据权利要求1所述的装置,其中所述第一信息指示所述键值对的访问特征。
4.根据权利要求1所述的装置,其中:
所述第一信息指示所述键值对的所述访问频率,并且
所述控制器被进一步配置成将具有比第二KV数据的第二访问频率更高的第一访问频率的第一KV数据存储在所述非易失性存储器的媒体中,所述媒体具有比所述非易失性存储器的其中存储了所述第二KV数据的媒体更快的存储器访问。
5.根据权利要求1所述的装置,其中:
所述第一信息包含所述键值对的预期寿命,所述预期寿命指示所述键值对保留在所述非易失性存储器中的预期时间段,并且
所述控制器被进一步配置成根据所述预期时间段的值在第一时间点将与所述键值对相对应的所述KV数据存储在由某种类型的纠错码ECC保护的某种类型的非易失性存储器中,并且
当所述第一信息包含指示在所述预期时间段之后可以擦除所述数据的位时,如果自所述第一时间点起已经过了最大时间段则删除所述KV数据。
6.根据权利要求5所述的装置,其中
所述类型的非易失性存储器可以是单级单元SLC、多级单元MLC、三级单元TLC或四级单元QLC非易失性存储器中的一种。
7.根据权利要求5所述的装置,其中
所述类型的ECC可以是博斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem)BCH码、低密度奇偶校验码LDPC码或四联摆动码QSBC码中的一或多种。
8.根据权利要求1所述的装置,其中:
所述第一信息包含所述键值对上的所述标签,并且
所述控制器被进一步配置成将与用相同标签标记的多个键值对相对应的KV数据存储在所述非易失性存储器的相同块或包括多个块的相同块组中。
9.根据权利要求1所述的装置,其中:
所述第一信息包含用于所述键值对的服务水平协议SLA,所述SLA指示检索时的最大时延或相对于其它键值对的优先级中的至少一个作为确保度量,并且
所述控制器被进一步配置成以满足所述SLA中指示的所述确保度量的时延或优先级来检索与所述键值对相对应的所述KV数据。
10.一种存储键值KV数据的方法,所述方法包括:
由计算节点的第一处理器确定关于第一键值对的访问特征的第一信息,其中所述第一信息提供关于如何存储与所述第一键值对相对应的KV数据的信息;
由所述第一处理器使用第2层协议通过网络将所述第一键值对和所述第一信息发送到存储装置,其中在网络数据的有效载荷中共同地提供所述第一键值对和所述第一信息;
由所述存储装置的第二处理器接收所述第一键值对和所述第一信息,其中所述第一信息提供所述第一键值对的访问频率以及所述第一键值对上的标签中的至少一者或两者;
由所述第二处理器基于所述第一信息确定所述存储装置处的非易失性存储器中的第一位置,所述第一信息通过所述网络在与所述网络数据中的所述第一键值对的公共有效载荷中传送,以及
由所述第二处理器将与所述第一键值对相对应的所述KV数据存储在所述非易失性存储器的所述第一位置处。
11.根据权利要求10所述的方法,其中所述第2层协议包括以太网。
12.根据权利要求10所述的方法,其中:
所述第一信息指示所述键值对的访问频率,并且
与所述第一键值对相对应的所述KV数据存储在所述非易失性存储器的所述第一位置处,使得具有比第二KV数据的第二访问频率更高的第一访问频率的第一KV数据存储在所述非易失性存储器的媒体中,所述媒体具有比所述非易失性存储器的其中存储了所述第二KV数据的媒体更快的存储器访问。
13.根据权利要求10所述的方法,其中:
所述第一信息包含所述键值对的预期寿命,所述预期寿命指示所述键值对保留在所述非易失性存储器中的最大时间段,并且
将与所述第一键值对相对应的所述KV数据存储在所述非易失性存储器的所述第一位置处包含由所述第二处理器根据所述预期时间段的值在第一时间点将与所述键值对相对应的所述KV数据存储在由某种类型的纠错码ECC保护的某种类型的非易失性存储器中,并且
当所述第一信息包含指示在所述预期时间段之后可以擦除所述数据的位时,如果自所述第一时间点起已经过了所述最大时间段则由所述第二处理器删除所述KV数据。
14.根据权利要求13所述的方法,其中
所述类型的非易失性存储器可以是单级单元SLC、多级单元MLC、三级单元TLC或四级单元QLC非易失性存储器中的一种。
15.根据权利要求13所述的方法,其中
所述类型的ECC可以是博斯-乔赫里-霍克文黑姆BCH码、低密度奇偶校验码LDPC码或四联摆动码QSBC码中的一或多种。
16.根据权利要求10所述的方法,其中:
所述第一信息包含所述键值对上的标签,并且
所述方法进一步包括由所述第二处理器将与用相同标签标记的多个键值对相对应的KV数据存储在所述非易失性存储器的相同块或包括多个块的相同块组中。
17.根据权利要求10所述的方法,其中:
所述第一信息包含用于所述键值对的服务水平协议SLA,所述SLA指示检索时的最大时延或相对于其它键值对的优先级中的至少一个作为确保度量,并且
所述方法进一步包括以满足所述SLA中指示的所述确保度量的时延或优先级来检索与所述键值对相对应的所述KV数据。
18.一种通过网络传送键值KV数据的方法,所述方法包括:
由所述网络中的第一装置的第一处理器接收含有KV数据的键值对;
由所述第一处理器确定第一信息和用于管理所述键值对的基于键值的命令,并且由所述第一处理器基于所述确定来创建所述第一信息和所述基于键值的命令,其中所述第一信息提供所述键值对的访问频率以及所述键值对上的标签中的至少一者或两者;
由所述第一处理器将所述键值对、所述第一信息和所述基于键值的命令一起封装在数据包的公共有效载荷部分中;以及
由所述第一处理器发送具有带有封装的键值对、所述第一信息和所述基于键值的命令的所述有效载荷的所述数据包。
19.根据权利要求18所述的方法,其中所述数据包包括以太网数据包。
20.根据权利要求18所述的方法,其中所述数据包包括UDP数据包。
21.根据权利要求18所述的方法,其中:
所述数据包包含多个数据包,并且
将所述数据包发送到第二装置包含通过第2层协议将所述多个数据包中的每个数据包发送到所述网络中的所述第二装置。
22.根据权利要求18所述的方法,其进一步包括:
由第二装置的第二处理器接收所述键值对和所述基于键值的命令;
由所述第二处理器将对所述基于键值的命令的响应一起封装在响应数据包的公共有效载荷部分中;
由所述第二处理器将具有带有封装的响应的所述有效载荷的所述响应数据包发送到所述网络中的所述第一装置。
23.根据权利要求22所述的方法,其中:
所述响应数据包包含多个数据包,并且
将所述响应数据包发送到所述第一装置包含将所述多个数据包中的每个数据包发送到所述网络中的所述第一装置。
24.根据权利要求22所述的方法,其进一步包括:
在将具有带有所述封装的键值对和所述基于键值的命令的所述有效载荷的所述数据包发送到所述第二装置之后,由所述第一处理器确定用于从所述第二装置接收所述响应数据包的超时值;
由所述第一处理器针对所确定的超时值设置定时器;以及
由所述第一处理器确定在从所述第二装置接收到所述响应数据包之前所述定时器超时,并且由所述第一处理器将具有带有所述封装的键值对和所述基于键值的命令的所述有效载荷的所述数据包重新发送到所述网络中的所述第二装置;以及
由所述第一处理器从所述第二装置接收所述响应数据包,并且由所述第一处理器确定在从所述第二装置接收到所述响应数据包之前所述定时器没有超时,并且重置所述定时器。
25.根据权利要求22所述的方法,其中所述响应数据包包括以太网数据包。
26.根据权利要求22所述的方法,其中所述响应数据包包括UDP数据包。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/855,713 US10715499B2 (en) | 2017-12-27 | 2017-12-27 | System and method for accessing and managing key-value data over networks |
US15/855,713 | 2017-12-27 | ||
PCT/IB2018/060668 WO2019130249A1 (en) | 2017-12-27 | 2018-12-27 | System and method for accessing and managing key-value data over networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111758090A CN111758090A (zh) | 2020-10-09 |
CN111758090B true CN111758090B (zh) | 2024-03-15 |
Family
ID=66950828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880090204.5A Active CN111758090B (zh) | 2017-12-27 | 2018-12-27 | 用于通过网络访问和管理键值数据的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10715499B2 (zh) |
CN (1) | CN111758090B (zh) |
WO (1) | WO2019130249A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3803587A1 (en) * | 2018-05-29 | 2021-04-14 | Telefonaktiebolaget LM Ericsson (publ) | Improved performance of function as a service |
US11256448B2 (en) * | 2019-12-16 | 2022-02-22 | Samsung Electronics Co., Ltd. | Network storage gateway |
US11934333B2 (en) * | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Storage protocol emulation in a peripheral device |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
CN115599290A (zh) * | 2021-07-07 | 2023-01-13 | 三星电子株式会社(Kr) | 键值固态驱动器中的动态存储 |
US11726666B2 (en) | 2021-07-11 | 2023-08-15 | Mellanox Technologies, Ltd. | Network adapter with efficient storage-protocol emulation |
US20230054002A1 (en) * | 2021-08-18 | 2023-02-23 | Samsung Electronics Co., Ltd. | Lifecycle-aware persistent storage |
CN115174496B (zh) * | 2022-05-23 | 2024-02-13 | 北京大学 | 一种用于网内聚合传输的处理终端和交换机 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469198A (zh) * | 2016-08-31 | 2017-03-01 | 华为技术有限公司 | 键值存储方法、装置及系统 |
CN108702374A (zh) * | 2015-09-02 | 2018-10-23 | 科内克斯实验室公司 | 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7464156B2 (en) | 2001-09-07 | 2008-12-09 | Sanrad, Ltd. | Load balancing method for exchanging data between multiple hosts and storage entities, in IP based storage area network |
US7191249B1 (en) * | 2002-06-14 | 2007-03-13 | Juniper Networks, Inc. | Packet prioritization systems and methods using address aliases |
JP4579000B2 (ja) * | 2005-02-14 | 2010-11-10 | 株式会社日立製作所 | 計算機システムにおけるデータ配置設定 |
US20130312006A1 (en) * | 2005-04-07 | 2013-11-21 | Adaptive Computing Enterprises, Inc. | System and method of managing job preemption |
US8549247B2 (en) | 2010-12-28 | 2013-10-01 | Hitachi, Ltd. | Storage system, management method of the storage system, and program |
US20130297788A1 (en) * | 2011-03-30 | 2013-11-07 | Hitachi, Ltd. | Computer system and data management method |
JP5716537B2 (ja) | 2011-05-20 | 2015-05-13 | 日本電気株式会社 | 記憶媒体制御装置、記憶装置、記憶媒体制御方法、プログラム |
US9081665B2 (en) | 2012-02-02 | 2015-07-14 | OCZ Storage Solutions Inc. | Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components |
US9311376B2 (en) * | 2012-05-02 | 2016-04-12 | Microsoft Technology Licensing, Llc | Performance service level agreements in multi-tenant database systems |
JP2014026356A (ja) | 2012-07-25 | 2014-02-06 | Hitachi-Lg Data Storage Inc | データ記憶装置及びデータ記憶方法 |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US9665658B2 (en) * | 2013-07-19 | 2017-05-30 | Samsung Electronics Co., Ltd. | Non-blocking queue-based clock replacement algorithm |
CN103929475B (zh) | 2014-03-27 | 2017-11-24 | 华为技术有限公司 | 一种以太网架构的硬盘存储系统及硬盘数据操作方法 |
US10642663B2 (en) * | 2014-09-10 | 2020-05-05 | Oracle International Corporation | Coordinated garbage collection in distributed systems |
US10257869B2 (en) * | 2014-10-29 | 2019-04-09 | Hewlett Packard Enterprise Development Lp | Dynamically including an active tunnel as a member of a virtual network |
JP6378044B2 (ja) * | 2014-10-31 | 2018-08-22 | 東芝メモリ株式会社 | データ処理装置、データ処理方法およびプログラム |
US9886347B2 (en) * | 2015-01-08 | 2018-02-06 | International Business Machines Corporation | Data replication in a database management system |
JP2016170583A (ja) | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US9606915B2 (en) | 2015-08-11 | 2017-03-28 | Toshiba Corporation | Pool level garbage collection and wear leveling of solid state devices |
US10432723B2 (en) * | 2015-09-03 | 2019-10-01 | Toshiba Memory Corporation | Storage server and storage system |
US9813396B2 (en) * | 2015-10-30 | 2017-11-07 | Rovi Guides, Inc. | Methods and systems for managing content subscription data |
US10402252B1 (en) * | 2016-03-30 | 2019-09-03 | Amazon Technologies, Inc. | Alternative event reporting for peripheral devices |
US10630410B2 (en) * | 2016-05-13 | 2020-04-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Network architecture, methods, and devices for a wireless communications network |
US9782602B1 (en) * | 2016-06-27 | 2017-10-10 | Seraya Medical Systems LLC | Transcranial magnetic stimulation system and methods |
US10296327B2 (en) * | 2016-10-15 | 2019-05-21 | Vmware, Inc. | Methods and systems that share resources among multiple, interdependent release pipelines |
US10523675B2 (en) * | 2017-11-08 | 2019-12-31 | Ca, Inc. | Remote direct memory access authorization |
-
2017
- 2017-12-27 US US15/855,713 patent/US10715499B2/en active Active
-
2018
- 2018-12-27 WO PCT/IB2018/060668 patent/WO2019130249A1/en active Application Filing
- 2018-12-27 CN CN201880090204.5A patent/CN111758090B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108702374A (zh) * | 2015-09-02 | 2018-10-23 | 科内克斯实验室公司 | 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器 |
CN106469198A (zh) * | 2016-08-31 | 2017-03-01 | 华为技术有限公司 | 键值存储方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20190199690A1 (en) | 2019-06-27 |
US10715499B2 (en) | 2020-07-14 |
WO2019130249A1 (en) | 2019-07-04 |
CN111758090A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111758090B (zh) | 用于通过网络访问和管理键值数据的系统和方法 | |
US20220197838A1 (en) | System and method for facilitating efficient event notification management for a network interface controller (nic) | |
US10503679B2 (en) | NVM express controller for remote access of memory and I/O over Ethernet-type networks | |
US7496690B2 (en) | Method, system, and program for managing memory for data transmission through a network | |
US6789143B2 (en) | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries | |
US10769081B2 (en) | Computer program product, system, and method to allow a host and a storage device to communicate between different fabrics | |
US8504795B2 (en) | Method, system, and program for utilizing a virtualized data structure table | |
US20180188974A1 (en) | Computer program product, system, and method to allow a host and a storage device to communicate using different fabric, transport, and direct memory access protocols | |
JP5324424B2 (ja) | インターネットワーキングプロトコルを通じてのデータグラム破損を解決する方法 | |
US20080301379A1 (en) | Shared memory architecture | |
EP3828709A1 (en) | Communication method and network card | |
WO2017162175A1 (zh) | 一种数据传输方法及装置 | |
US20050187939A1 (en) | Method, system, and program for managing data read operations | |
US11200193B2 (en) | Transferring data between solid state drives (SSDs) via a connection between the SSDs | |
US20130138771A1 (en) | Apparatus and method for transmitting data | |
WO2019127018A1 (zh) | 存储系统访问方法及装置 | |
US11736417B2 (en) | Devices and methods for network message sequencing | |
US10061519B2 (en) | Storage system, method, and apparatus for processing multi-layer protocol encapsulation or decapsulation operation requests | |
JP2007533012A (ja) | データ格納のための情報処理と輸送アーキテクチャ | |
US6898638B2 (en) | Method and apparatus for grouping data for transfer according to recipient buffer size | |
US7404040B2 (en) | Packet data placement in a processor cache | |
WO2019127021A1 (zh) | 存储系统中存储设备的管理方法及装置 | |
WO2019127017A1 (zh) | 存储系统中存储设备的管理方法及装置 | |
US7325075B1 (en) | Methods for address and name discovery for Ethernet entities | |
US7010548B2 (en) | Sparse and non-sparse data management method and system |
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 |