一种数据写方法、数据读方法及相关设备、系统与流程

文档序号:11176725阅读:224来源:国知局
一种数据写方法、数据读方法及相关设备、系统与流程
本发明涉及存储领域,尤其涉及一种数据写方法、数据读方法及相关设备、系统。
背景技术
:随着信息技术的高速发展,数据海量存储对存储系统系统提出了新的需求和挑战。为了应对这种挑战,键值存储(即key-value储存,简称kv存储)的存储管理技术应运而生。kv存储能够满足对海量数据的高效率存储和访问的需求。另外,非易失性存储标准(non-volatilememoryexpress,nvme)作为一个高效的存储协议已经得到了众多闪存、服务器及存储厂商的支持,其生态日趋成熟。与此同时,更为高效的网络存储协议也随着闪存技术的演进呼之欲出,这就是nvmeoverfabric。nvmeoverfabric替换了以前的前端所使用的iscsi(例如linux下的iser或者windows下的smb3),使得终端用户可以直接通过nvmeoverfabric协议实现对远端nvme设备快速、低延迟的访问。基于nvmeoverfabric支持远端存储的优点,以及kv存储管理技术支持高效率的海量数据存储管理的优点,kv接口与nvmeoverfabric的兼容将在未来存储领域中发挥重要的作用,具有良好和广阔的市场前景。技术实现要素:本发明实施例提供了一种数据写方法、数据读方法及相关设备、系统,可实现将键值存储接口承载在用于网络存储的所述高速网络存储协议上,兼容了键值存储与所述高速网络存储协议各自的存储优势。第一方面,提供了一种数据写方法,应用于主机侧,包括:接收到针对远端存储节点的写请求,所述写请求携带由键和值组成的键值对,并根据所述键值对生成符合高速网络存储协议的写命令,最后通 过所述高速网络存储协议的接口向所述远端存储节点发送所述写命令,触发所述远端存储节点响应所述写命令,将存储于所述源地址处的所述待写入数据写入所述目的地址所映射的物理地址中。具体的,所述写请求是应用程序通过调用用于写数据的键值存储接口,例如kv_write(),发起的请求;所述用于写数据的键值存储接口的输入参数包括所述键值对,其中,所述键用于指示待写入数据的目的地址,所述值用于指示所述待写入数据的源地址和所述待写入数据的大小。具体的,所述写命令可包括:用于指示所述待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二字段,以及用于指示所述待写入数据的大小的第三字段。可以理解的,由于所述键值对包含有所述写命令中的第一字段、第二字段和第三字段的值,因此,主机能够根据所述写请求携带的键值对填充所述写命令的相应字段。实施第一方面描述的数据写方法,可实现将用于写数据的键值存储接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过键值存储接口实现对所述远端存储节点的数据写操作,兼容了所述键值存储接口与所述高速网络存储协议各自的存储优势。第二方面,提供了一种数据写方法,应用于远端存储节点侧,包括:通过高速网络存储协议的接口接收主机发送的符合所述高速网络存储协议的写命令,将所述待写入数据的目的地址与所述待写入数据的元数据一一对应的保存在目标缓存区内的目标数据库中,并分析出所述目的地址所映射的物理地址,然后响应所述写命令,将所述待写入数据写入所述目的地址所映射的物理地址中。具体的,所述写命令可包括:用于指示待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二字段,以及用于指示所述待写入数据的大小的第三字段、用于指示所述待写入数据的元数据的第四字段。所述目标数据库向所述主机提供元数据访问接口,例如增、删、改、查等接口。与实施第一方面描述的数据写方法的有益效果相同,实施第二方面描述的数据写方法,同样地可实现将用于写数据的键值存储接口承载在用于 网络存储的所述高速网络存储协议上,使得应用程序可以通过键值存储接口实现对所述远端存储节点的数据写操作,兼容了所述键值存储接口与所述高速网络存储协议各自的存储优势。并且,可以理解的,本发明提供的所述目标数据库可实现:所述主机直接从远端存储节点的内存(即所述目标数据库)中访问所述待写入数据的元数据,而不必在存储硬盘上逐块的去查找所述待写入数据的元数据,实现了对已写入所述存储硬盘的数据的元数据的高效率访问和管理。在一种实现方式中,在所述远端存储节点将所述待写入数据写入所述目的地址所映射的物理地址中之后,所述远端存储节点可以通过所述高速网络存储协议的接口向主机返回写响应。相应的,所述主机可以通过所述高速网络存储协议的接口接收到远端存储节点返回的所述写响应。具体实现中,在所述主机接收到所述写响应之后,所述主机可以将所述写响应的数据格式转换成用于接收写响应的键值存储接口,例如kv_get_response(),能够识别的写响应格式,使得所述应用程序通过调用该键值存储接口识别出所述写响应。在一种实现方式中,在接收到主机发送的所述写命令之后,远端存储节点可以向主机发送针对所述待写入数据的获取请求,所述获取请求可包含所述待写入数据的源地址。相应的,主机接可收远端存储节点发送的针对所述待写入数据的获取请求。之后,主机可响应所述获取请求,通过所述高速网络存储协议的接口向远端存储节点发送存储于所述源地址处的所述待写入数据。相应的,远端存储节点可通过所述高速网络存储协议的接口接收到主机发送的所述待写入数据。第三方面,提供了一种数据读方法,应用于主机侧,包括:接收到针对远端存储节点的读请求,所述读请求携带由键和值组成的键值对,并根据所述键值对生成符合高速网络存储协议的读命令,最后通过所述高速网络存储协议的接口向远端存储节点发送所述读命令,触发所述远端存储节点响应所述读命令,从所述源地址所映射的物理地址中读出 所述待读取数据。具体的,所述读请求是应用程序通过调用用于读数据的键值存储接口,例如kv_read(),发起的请求,所述用于读数据的键值存储接口的输入参数包括所述键值对;所述键用于指示待读取数据的源地址,所述值用于指示所述待读取数据的目的地址和所述待读取数据的大小;具体的,所述读命令可包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段。可以理解的,由于所述键值对包含有所述读命令中的第一字段、第二字段和第三字段的值,因此,主机能够根据所述读请求携带的键值对填充所述读命令的相应字段。实施第一方面描述的数据读方法,可实现将用于读数据的键值存储接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过键值存储接口实现对所述远端存储节点的数据读操作,兼容了所述键值存储接口与所述高速网络存储协议各自的存储优势。第四方面,提供了一种数据读方法,应用于远端存储节点侧,包括:通过高速网络存储协议的接口接收主机发送的符合所述高速网络存储协议的读命令,分析出所述源地址所映射的物理地址,然后响应所述读命令,从所述源地址所映射的物理地址中读取出所述待读取数据。具体的,所述读命令可包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段。与实施第三方面描述的数据读方法的有益效果相同,实施第四方面描述的数据读方法,同样地可实现将用于读数据的键值存储接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过键值存储接口实现对所述远端存储节点的数据读操作,兼容了所述键值存储接口与所述高速网络存储协议各自的存储优势。在一种实现方式中,在所述远端存储节点从所述源地址所映射的物理地址中读取出所述待读取数据之后,所述远端存储节点可以通过所述高速 网络存储协议的接口向主机返回读响应。相应的,所述主机可以通过所述高速网络存储协议的接口接收到远端存储节点返回的所述读响应。具体实现中,在接收到所述读响应之后,所述主机可以将所述读响应的数据格式转换成用于接收读响应的键值存储接口,例如kv_get_response(),能够识别的读响应格式,使得所述应用程序通过调用该键值存储接口识别出所述读响应。在一种实现方式中,在接收到所述主机发送的所述读命令之后,所述远端存储节点还可以向主机发送针对所述待读取数据的发送请求,所述发送请求包含所述待读取数据的目的地址。相应的,所述主机接可收远端存储节点发送的所述发送请求,并向远端存储节点返回针对所述发送请求的应答。之后,所述远端存储节点可以接收到所述主机返回的所述应答,并通过高速网络存储协议的接口向所述主机发送所述待读取数据。相应的,所述主机可以通过所述高速网络存储协议的接口接收到所述远端存储节点发送的所述待读取数据,并将所述待读取数据存储到所述目的地址处。第五方面,提供了一种数据写设备,包括用于执行第一方面所述的方法的单元。第六方面,提供了一种存储节点,包括用于执行第二方面所述的方法的单元。第七方面,提供了一种数据读设备,包括用于执行第三方面所述的方法的单元。第八方面,提供了一种存储节点,包括用于执行第四方面所述的方法的单元。第九方面,提供了一种数据写设备,用于执行第一方面描述的数据写方法。所述数据写设备站可包括:存储器以及与所述存储器耦合的处理器、发射器和接收器,其中:所述发射器用于与向远端存储节点发送移动通信信号,所述接收器用于接收所述远端存储节点发送的移动通信信号,所述存储器用于存储第一方面描述的数据写方法的实现代码,所述处理器用于 执行所述存储器中存储的程序代码,即执行第一方面描述的数据写方法。第十方面,提供了一种数据读设备,用于执行第三方面描述的数据读方法。所述数据读设备站可包括:存储器以及与所述存储器耦合的处理器、发射器和接收器,其中:所述发射器用于与向远端存储节点发送移动通信信号,所述接收器用于接收所述远端存储节点发送的移动通信信号,所述存储器用于存储第三方面描述的数据读方法的实现代码,所述处理器用于执行所述存储器中存储的程序代码,即执行第三方面描述的数据读方法。第十一方面,提供了一种存储系统,包括:数据写设备和存储节点,其中:所述数据写设备是上述第五方面内容所述的数据写设备,所述存储节点是上述第六方面内容所述的存储节点。在一些可能的实现方式中,所述数据写设备也可以是上述第九方面内容所述的存储节点。第十二方面,提供了一种存储系统,包括:数据读设备和存储节点,其中:所述数据读设备是上述第七方面内容所述的数据读设备,所述存储节点是上述第八方面内容所述的存储节点。在一些可能的实现方式中,所述数据读设备也可以是上述第十方面内容所述的数据读设备。实施本发明实施例,主机可以根据应用程序发送的针对远端存储节点的读写请求所携带的键值对,生成符合高速网络存储协议的读写命令,所述读写请求是所述应用程序通过调用键值存储接口发起的请求;并且,所述主机可以通过所述符合高速网络存储协议的传输接口向所述远端存储节点发送所述符合高速网络存储协议的读写命令,以触发所述远端存储节点响应所述符合高速网络存储协议的读写命令,完成远端读写操作。上述方案可实现将键值存储接口承载在所述高速网络存储协议上,使得应用程序可以通过键值存储接口对所述远端存储节点进行读写操作,兼容了键值存储与所述高速网络存储协议各自的存储优势。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1是本发明实施例提供的一种应用场景的示意图;图2是本发明实施例提供的一种数据写方法的流程示意图;图3是本发明实施例涉及的nvm命令的示意图;图4是本发明实施例涉及的逻辑地址与物理地址相互映射的示意图;图5是本发明实施例涉及的消息流的示意图;图6是本发明实施例提供一种数据读方法的流程示意图;图7是本发明实施例提供的一种数据写设备的结构示意图;图8是本发明实施例提供的一种存储节点的结构示意图;图9是本发明实施例提供的另一种数据写设备的结构示意图;图10是本发明实施例提供的一种数据读设备的结构示意图;图11是本发明实施例提供的一种存储节点的结构示意图;图12是本发明实施例提供的另一种数据读设备的结构示意图。具体实施方式本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。为了更好的理解本发明实施例,下面以nvmeoverfabric协议为例来描述本发明实施例的应用场景。参见图1,图1是本发明实施例公开的应用场景的示意图。在图1所示的应用场景中,主机(host)和远端存储节点形成了一个网络存储系统,所述主机和所述远端存储节点均集成有nvmeoverfabric(以下简称nof)接口,二者通过nof接口通信。其中,所述主机可用于生成标准的nvm命令,并通过集成在主机上的nof接口向远端存储节点发送所述nvm命令;所述远端存储节点可用于通过nof接口接收所述主机发送的nvm命令,并响应所述nvm命令,对所述远端存储节点对应的存储设备,例如附图所示的多个固态硬盘(solidstatedrive,ssd)进行读写操作。具体的,如图1所示,所述主机和所述远端存储节点之间的交互可主要包括:控制层面和数据层面。其中,所述控制层面可以主要负责:所述主机向所述远端存储节点发送nvm标准命令,以及所述远端存储节点向所述主机返回针对所述nvm标准命令的响应(response);所述数据层面可 以主要负责:所述主机向所述远端存储节点发送待写入数据,以及所述远端存储节点向所述主机发送待读取数据。需要说明的,本发明实施例涉及的所述主机可以包括:兼容有nof接口、能够访问所述远端存储节点的计算设备,例如服务器、存储管理设备等等。需要说明的,本发明实施例涉及的所述远端存储节点可以是指集成有所述高速网络存储协议接口的存储节点。这里,所述远端存储节点可以是指相对于所述主机位于远端的网络存储系统中的存储节点,也可以是指位于分布式存储系统(例如云存储)中的存储节点。需要说明的,本实施例涉及的高速网络存储协议是指用于网络存储并且存储带宽达到gbps级别(例如1gbps或更高)的存储协议,例如nvmeoverfabric协议。本发明实施例不限制所述高速网络存储协议的具体形式,未来可能出现的用于网络存储的高速存储协议也属于本发明方案的实施对象。需要说明的,图1所示的网络存储系统仅仅是本发明实施例提供的一种简单的示例,所述网络存储系统的具体组网形式可根据实际应用场景和需求而定,这里不作限制。本发明实施例提供了一种数据写方法、数据读方法及相关设备、系统,主机可以根据应用程序发送的针对远端存储节点的读写请求所携带的键值对(key-value),生成符合高速网络存储协议的读写命令,所述读写请求是所述应用程序通过调用键值存储接口(以下简称kv接口)发起的请求;并且,所述主机可以通过所述符合高速网络存储协议的传输接口向所述远端存储节点发送所述符合高速网络存储协议的读写命令,以触发所述远端存储节点响应所述符合高速网络存储协议的读写命令,完成远端读写操作。本发明方案可实现将kv接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过键值存储接口对所述远端存储节点进行读写操作,兼容了kv存储与所述高速网络存储协议(例如nvmeoverfabric)各自的存储优势。以下分别进行详细说明。参见图2,图2是本发明实施例提供的一种数据写方法的流程示意图。 如图2所示,该方法包括:s101,主机接收到针对远端存储节点的写请求,所述写请求携带由键和值组成的键值对,所述键用于指示待写入数据的目的地址,所述值用于指示所述待写入数据的源地址和所述待写入数据的大小。具体的,所述写请求可以是应用程序通过调用用于写数据的kv接口,例如kv_write(),发起的请求。实际应用中,所述写请求也可以是远端应用程序调用用于写数据的kv接口发起的请求,这里不作限制。这里,所述待写入数据的源地址是指主机上的用于存储写之前的所述待写入数据的地址,该源地址通常位于主机的内存空间;所述待写入数据的目的地址是指远端存储节点上的用于写入所述待写入数据的逻辑地址。s103,主机可以根据所述写请求包含的键值对,生成符合高速网络存储协议的写命令。具体的,符合高速网络存储协议的写命令可包括:用于指示所述待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二字段,以及用于指示所述待写入数据的大小的第三字段。s105,在生成所述写命令之后,主机可以通过所述高速网络存储协议的接口向远端存储节点发送所述写命令。所述写命令用于触发远端存储节点将存储于所述源地址处的所述待写入数据写入所述目的地址映射的物理地址中。相应的,远端存储节点可以通过所述高速网络存储协议的接口接收到主机发送的所述写命令。s107,在接收到主机发送的所述写命令之后,远端存储节点可以分析出所述目的地址所映射的物理地址。s109,远端存储节点响应所述写命令,将所述待写入数据写入所述目的地址所映射的物理地址中。下面以nof这一高速网络存储协议为例说明本发明实施例提供的数据写方法。图3示出了本发明实施例涉及的nvm命令,主要包含:域名空间标识(namespaceidentifier,nsid)、起始逻辑块地址(startinglba)、逻辑块数量(numberoflogicalblocks)以及散列表(scattergatherlist,sgl)等字段。其中,nsid和startinglba结合可以指示出该命令在远端存储节点上涉及的逻辑地址,例如写入数据的目的地址,或者读取数据的源地址; 逻辑块数量可以指示出该命令涉及的数据长度,例如待写入数据的长度,或者待读取数据的长度;sgl是内存地址空间中用于存储数据的缓存区,例如用于存储所述待写入数据的源地址,或者用于存储所述待读取数据的目的地址。本发明实施例中,应用程序可以调用用于写数据的kv接口,例如kv_write(),发起所述写请求,用以请求主机向远端存储节点写入所述待写入数据。该写请求携带的键值对(key-value)可如表1所示:keynsidstartinglbavaluesgllength表1其中,键(key)可包括:nsid和startinglba,用于指示所述待写入数据的目的地址;值(value)可包括:sgl、length,其中,sgl用于指示所述待写入数据的源地址,length用于指示所述待写入数据的大小,相当于nvm命令中的逻辑块数量。需要说明的,如果所述写请求是针对远端存储节点的整个域名空间的写入(如全盘写),则所述键(key)也可以仅包括nsid。可以理解的,从图3示出的nvm命令和表1示出的键值对可知,由于所述键值对包含有所述写命令中的第一字段、第二字段和第三字段的值,因此,主机能够根据所述写请求携带的键值对填充nvm写命令的相应字段。这里,nvm写命令包含的其他字段可以由主机按照nvme协议规定进行填充,具体请参考nvmexpressrevision1.2,这里不赘述。需要说明的,表1仅仅是针对nvm写命令设计的键值对,对于其他类型的高速网络存储协议的写命令来说,本发明实施例涉及的所述写请求携带的键值对可不受表1限制,只要满足该键值对的键用于指示所述待写入数据的目的地址,并且该键值对的值用于指示所述待写入数据的源地址和所述待写入数据的大小即可。本发明实施例中,在远端存储节点接收到主机发送的所述符合高速网络存储协议的写命令之后,远端存储节点可以分析出所述第一字段表示的目的地址所映射的物理地址。具体的,如图4所示,远端存储节点对应的存储设备可集成有多个存储 硬盘(如ssd),所述多个存储硬盘共同映射出一段连续的逻辑块地址。如图4所示,存储于该存储设备上的一份数据对应一个逻辑块地址,而该逻辑块地址可实际映射着多段离散的物理块地址(physicalblockaddress,pba)。例如,数据data1对应逻辑块地址lba-1,而lba-1映射着pba-11,pba-12等多段pba。具体实现中,远端存储节点可以通过闪存转换层(flashtranslationlayer,ftl)分析出所述第一字段表示的目的地址所映射的物理地址,最后将所述待写入数据写入到该物理地址中。可选的,本发明实施例提供所述数据写方法还可进一步包括图2中的s111,即:在将所述待写入数据写入所述目的地址所映射的物理地址中之后,远端存储节点可以通过所述高速网络存储协议的接口向主机返回写响应。相应的,主机可以通过所述高速网络存储协议的接口接收到远端存储节点返回的所述写响应。下面以nof这一高速网络存储协议为例,结合图5示出的消息流图,详细说明本发明实施例涉及的写数据的消息处理过程。如图5所示,上述s101至s109所对应的消息处理过程可包括:1.应用程序(app)通过调用用于写数据的kv接口,例如kv_write(),发起针对远端存储节点的写请求,并通过kv_write()向主机传入键值对key-value;2.主机根据应用程序传入的键值对生成标准的nvm写命令,即图中的nvm_command;3.主机通过nof接口向远端存储节点发送所述标准的nvm写命令。如图5所示,上述s111所对应的消息处理过程可具体包括:4.主机通过nof接口接收远端存储节点返回的写响应,即图中的nvm_response;5.主机将所述写响应的数据格式转换成用于接收写响应的kv接口,例如kv_get_response(),能够识别的写响应格式,即图中kv_response的数据格式;6.应用程序(app)通过掉kv接口,例如kv_get_response(),接收远端存储节点返回的写响应。上述内容从控制层面详细说明了本发明实施例提供的所述数据写方法。从数据层面来讲,本发明实施例提供的所述数据写方法还可包括:在接收到主机发送的所述写命令之后,远端存储节点可以向主机发送针对所述待写入数据的获取请求,所述获取请求可包含所述待写入数据的 源地址;相应的,主机接可收远端存储节点发送的针对所述待写入数据的获取请求。之后,主机可响应所述获取请求,通过所述高速网络存储协议的接口向远端存储节点发送存储于所述源地址处的所述待写入数据;相应的,远端存储节点可通过所述高速网络存储协议的接口接收到主机发送的所述待写入数据。进一步的,本发明实施例中,所述写请求携带的键值对中的值(value)还可包括:所述待写入数据的元数据(metadata),所述元数据是用于描述所述待写入数据的属性(例如业务类型、创建时间等)的一种数据。相应的,主机生成的符合所述高速网络存储协议的写命令还包括:用于指示所述待写入数据的元数据的第四字段。也即是说,远端存储节点接收到的所述写命令还包括:用于指示所述待写入数据的元数据的第四字段。具体实现中,远端存储节点可以将所述待写入数据的目的地址与所述待写入数据的元数据一一对应的保存在目标缓存区内的目标数据库中,所述目标缓存区位于远端存储节点的内存地址空间,可向主机提供元数据访问接口。例如,所述目标数据库可如表2所示:nsidstartinglbametadata01lba-11metadata101lba-12metadata202lba-21metadata3………表2其中,“nsid”和“startinglba”相结合用于指示所述待写入数据的目的地址,“metadata”用于指示所述待写入数据的元数据。需要说明的,表2仅仅是本发明实施例的一种实现方式,实际应用中还可以不同,不应构成限定。具体的,在将所述待写入数据的目的地址与所述待写入数据的元数据一一对应的保存在目标缓存区内的目标数据库中时,远端存储节点可以:判断所述目标数据库中是否已经有所述目的地址,如果有,则将所述目标数据库中所述目的地址对应的元数据替换为所述待写入数据的元数据,否则,在所述目标数据库中新建映射关系,用于对应的存储所述待写入数据 的目的地址与所述待写入数据的元数据。具体实现中,所述目标数据库向主机提供数据访问接口可包括:增、删、改、查等接口,用于管理所述目标数据库中的元数据。可以理解的,由于所述目标缓存区位于远端存储节点的内存地址空间,而不是存储节点对应的存储硬盘上的物理存储空间,因此,本发明提供的所述目标数据库可实现:主机直接从远端存储节点的内存(即所述目标数据库)中访问所述待写入数据的元数据,而不必在存储硬盘上逐块的去查找所述待写入数据的元数据,实现了对已写入所述存储硬盘的数据的元数据的高效率访问和管理。实施本发明实施例,在接收到应用程序发送的针对远端存储节点的写请求(所述写请求携带键值对,所述键用于指示待写入数据的目的地址,所述值用于指示所述待写入数据的源地址和所述待写入数据的大小)之后,主机可以根据该键值对生成符合高速网络存储协议的写命令,并通过所述高速网络存储协议的接口向所述远端存储节点发送所述写命令,触发所述远端存储节点将待写入数据写入所述目的地址所映射的物理地址中。所述数据写方法可实现将用于写数据的kv接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过用于写数据的kv接口实现对所述远端存储节点的数据写操作,兼容了kv存储与所述高速网络存储协议各自的存储优势。参见图6,图6是本发明实施例提供的一种数据读方法的流程示意图。如图6所示,该方法包括:s201,主机接收到针对远端存储节点的读请求,所述读请求携带由键和值组成的键值对,所述键用于指示待读取数据的源地址,所述值用于指示所述待读取数据的目的地址和所述待读取数据的大小。具体的,所述读请求可以是主机上的应用程序(app)通过调用用于读数据的kv接口,例如kv_read(),发起的请求。实际应用中,所述读请求也可以是远端应用程序调用用于读数据的kv接口发起的请求,这里不作限制。这里,所述待读取数据的源地址是指远端存储节点上的用于存储读之前的所述待读取数据的逻辑地址;所述待读取数据的目的地址是指主机上 的用于存储读取出的所述待读取数据的地址,该目的地址通常位于主机的内存空间。s203,主机根据所述读请求包含的键值对,可以生成符合高速网络存储协议的读命令。具体的,所述读命令可包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段。s205,在生成所述读命令之后,主机可以通过所述高速网络存储协议的接口向远端存储节点发送所述读命令。相应的,远端存储节点可以通过所述高速网络存储协议的接口接收到主机发送的所述读命令。s207,在接收到主机发送的所述读命令之后,远端存储节点可以分析出所述源地址所映射的物理地址。具体的,关于分析出所述源地址所映射的物理地址的方法可参考图2方法实施例中的相关内容,这里不再赘述。s209,远端存储节点响应所述读命令,从所述源地址所映射的物理地址中读取出所述待读取数据。本发明实施例涉及的所述待读取数据可以是通过图2方法实施例提供的数据写方法写入到远端存储节点对应的存储设备上的。需要说明的,实际应用中,所述待读取数据还可以是通过其他途径写入到所述存储设备上的,这里不作限制。下面以nof这一高速网络存储协议为例说明本发明实施例提供的数据读方法。图3示出了nvm命令,具体格式可参考图2方法实施例中的相关内容,这里不再赘述。本发明实施例中,应用程序可以调用用于读数据的kv接口,例如kv_read(),发起所述读请求,用以请求主机从远端存储节点中读取出所述待读取数据。该读请求携带的键值对(key-value)可如表3所示:keynsidstartinglbavaluesgllength表3其中,键(key)可包括:nsid和startinglba,用于指示所述待读取数据的源地址;值(value)可包括:sgl、length,其中,sgl用于指示所 述待读取数据的目的地址,length用于指示所述待读取数据的大小,相当于nvm命令中的逻辑块数量。需要说明的,如果所述读请求是针对远端存储节点的整个域名空间的写入(如全盘读),则所述键(key)也可以仅包括nsid。可以理解的,从图3示出的nvm读写命令和表3示出的键值对可知,主机能够根据所述读请求携带的键值对填充nvm读命令的相应字段。这里,nvm读命令包含的其他字段可以由主机按照nvme协议规定进行填充,具体请参考nvmexpressrevision1.2,这里不赘述。需要说明的,表3仅仅是针对nvm读命令设计的键值对,对于其他类型的高速网络存储协议的读命令来说,本发明实施例涉及的所述读请求携带的键值对可不受表3限制,只要满足该键值对的键用于指示所述待读取数据的源地址,并且该键值对的值用于指示所述待读取数据的目的地址和所述待读取数据的大小即可。可选的,本发明实施例提供所述数据读方法还可进一步包括图6中的s211,即:在从所述源地址所映射的物理地址中读取出所述待读取数据之后,远端存储节点可以通过所述高速网络存储协议的接口向主机返回读响应。相应的,主机可以通过所述高速网络存储协议的接口接收到远端存储节点返回的所述读响应。下面以nof这一高速网络存储协议为例,结合图5示出的消息流图,详细说明本发明实施例涉及的读数据的消息处理过程。如图5所示,上述s201至s209所对应的消息处理过程可包括:1.应用程序(app)通过调用用于读数据的kv接口,例如kv_read(),发起针对远端存储节点的读请求,并通过kv_read()向主机传入键值对key-value;2.主机根据应用程序传入的键值对生成标准的nvm读命令,即图中的nvm_command;3.主机通过nof接口向远端存储节点发送所述标准的nvm读命令。如图5所示,上述s211所对应的消息处理过程可具体包括:4.主机通过nof接口接收远端存储节点返回的读响应,即图中的nvm_response;5.主机将所述读响应的数据格式转换成kv接口,例如kv_get_response(),能够识别的读响应格式,即图中kv_response的数据格式;6.应用 程序(app)通过掉kv接口,例如kv_get_response(),接收远端存储节点返回的读响应。上述内容从控制层面详细说明了本发明实施例提供的所述数据读方法。从数据层面来讲,本发明实施例提供的所述数据读方法还可包括:在接收到主机发送的所述读命令之后,远端存储节点可以向主机发送针对所述待读取数据的发送请求,所述发送请求包含所述待读取数据的目的地址;相应的,主机接可收远端存储节点发送的所述发送请求,并向远端存储节点返回针对所述发送请求的应答。之后,远端存储节点可以接收到所述主机返回的所述应答,并通过高速网络存储协议的接口向所述主机发送所述待读取数据;相应的,所述主机可以通过所述高速网络存储协议的接口接收到所述远端存储节点发送的所述待读取数据,并将所述待读取数据存储到所述目的地址处。实施本发明实施例,在接收到应用程序发送的针对远端存储节点的读请求(所述读请求携带键值对,所述键用于指示待读取数据的源地址,所述值用于指示所述待读取数据的目的地址和所述待读取数据的大小)之后,主机可以根据该键值对生成符合高速网络存储协议的读命令,并通过所述高速网络存储协议的接口向所述远端存储节点发送所述读命令,触发所述远端存储节点从所述源地址所映射的物理地址中读取出所述待读取数。所述数据读方法可实现将用于据读数据的kv接口承载在用于网络存储的所述高速网络存储协议上,使得应用程序可以通过用于读数据的kv接口对远端存储节点进行读数据操作,兼容了kv存储与所述高速网络存储协议各自的存储优势。参见图7,图7是本发明实施例提供的一种数据写设备的结构示意图。如图7所示,数据写设备10可包括:第一接收单元101、写命令生成单元103和写命令发送单元105。其中:第一接收单元101,用于接收到针对远端存储节点的写请求,所述写请求携带由键和值组成的键值对,其中,所述键用于指示待写入数据的目的地址,所述值用于指示所述待写入数据的源地址和所述待写入数据的大小;写命令生成单元103,用于根据所述键值对,生成符合高速网络存储协 议的写命令;所述写命令包括:用于指示所述待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二字段,以及用于指示所述待写入数据的大小的第三字段;写命令发送单元105,用于通过所述高速网络存储协议的接口向所述远端存储节点发送所述写命令,触发所述远端存储节点响应所述写命令,将存储于所述源地址处的所述待写入数据写入所述目的地址所映射的物理地址中。如图7所示,数据写设备10还可进一步的包括:第二接收单元107和数据发送单元109,其中:第二接收单元107,可用于在写命令发送单元105通过所述高速网络存储协议的接口向所述远端存储节点发送所述写命令之后,接收所述远端存储节点发送的针对所述待写入数据的获取请求,所述获取请求包含所述待写入数据的源地址;数据发送单元109,可用于响应所述获取请求,通过所述高速网络存储协议的接口向所述远端存储节点发送存储于所述源地址处的所述待写入数据。本发明实施例中,所述键值对中的值还可包括:所述待写入数据的元数据,则所述写命令相应的还可包括:用于指示所述待写入数据的元数据的第四字段。可以理解的,数据写设备10包括的功能单元的具体实现可参考图2方法实施例中所述主机的功能,这里不再赘述。参见图8,图8是本发明实施例提供的一种存储节点的结构示意图。存储节点20与图7所示的数据写设备10对应,用于接收数据写设备10发送的符合高速网络存储协议的写命令,执行写操作。如图8所示,存储节点20可包括:写命令接收单元201、保存单元203、分析单元205和写入单元207。其中:写命令接收单元201,用于通过高速网络存储协议的接口接收主机发送的符合所述高速网络存储协议的写命令;所述写命令包括:用于指示待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二 字段,以及用于指示所述待写入数据的大小的第三字段、用于指示所述待写入数据的元数据的第四字段;保存单元203,用于将所述待写入数据的目的地址与所述待写入数据的元数据一一对应的保存在目标缓存区内的目标数据库中,所述目标数据库向所述主机提供元数据访问接口分析单元205,用于分析出所述目的地址所映射的物理地址;写入单元207,用于响应所述写命令,将所述待写入数据写入所述目的地址所映射的物理地址中。如图8所示,存储节点20还可进一步的包括:发送单元211和数据接收单元209,其中:发送单元211,可用于在写命令接收单元201通过高速网络存储协议的接口接收主机发送的符合所述高速网络存储协议的写命令之后,向所述主机发送针对所述待写入数据的获取请求,所述获取请求包含所述待写入数据的源地址;数据接收单元209,可用于通过所述高速网络存储协议的接口接收所述主机响应所述获取请求所发送的所述待写入数据。具体实现中,所述保存单元可具体用于:判断所述目标数据库中是否已经有所述目的地址,如果有,则将所述目标数据库中所述目的地址对应的元数据替换为所述待写入数据的元数据,否则,在所述目标数据库中新建映射关系,用于对应的存储所述待写入数据的目的地址与所述待写入数据的元数据。可以理解的,存储节点20包括的功能单元的具体实现可参考图2方法实施例中所述远端存储节点的功能,这里不再赘述。为了便于实施本发明实施例,本发明提供了另一种数据写设备。参见图9,数据写设备90可包括:发射器903、接收器904、存储器902和与存储器902耦合的处理器901(数据写设备90中的处理器901的数量可以是一个或多个,图9中以一个处理器为例)。在本发明的一些实施例中,发射器903、接收器904、存储器902和处理器901可通过总线或者其它方式连接,其中,图9中以通过总线连接为例。其中,发射器903用于向远端存储节点发送数据,接收器904用于向远端存储节点接收数据。具体实现中,发射器903与接收器904可集成为:无线收发模块、有线收发模块等收发器件。存储器902用于存储程序代码,具体实现中,存储器902可以采用只读存储器(readonlymemory,rom),可用于存储前述图2方法实施例中描述的数据写方法的实现代码。处理器901,例如cpu,用于调用存储于存储器902中程序代码执行如下步骤:接收到针对远端存储节点的写请求,所述写请求携带由键和值组成的键值对,其中,所述键用于指示待写入数据的目的地址,所述值用于指示所述待写入数据的源地址和所述待写入数据的大小;所述写请求是应用程序调用用于写数据的键值存储接口发起的请求,所述用于写数据的键值存储接口的输入参数包括所述键值对;根据所述键值对,生成符合高速网络存储协议的写命令;所述写命令包括:用于指示所述待写入数据的目的地址的第一字段、用于指示所述待写入数据的源地址的第二字段,以及用于指示所述待写入数据的大小的第三字段;通过所述高速网络存储协议的接口利用发射器903向所述远端存储节点发送所述写命令,触发所述远端存储节点响应所述写命令,将存储于所述源地址处的所述待写入数据写入所述目的地址所映射的物理地址中。本发明实施例中,在利用发射器903向所述远端存储节点发送所述写命令之后,处理器901还可以:利用接收器904接收所述远端存储节点发送的针对所述待写入数据的获取请求,所述获取请求包含所述待写入数据的源地址;响应所述获取请求,通过所述高速网络存储协议的接口利用发射器903向所述远端存储节点发送存储于所述源地址处的所述待写入数据。进一步的,所述键值对中的所述值还可包括:所述待写入数据的元数据,则所述写命令还包括:用于指示所述待写入数据的元数据的第四字段。可理解的是,处理器901的执行步骤还可参照图2方法实施例中所述主机涉及的内容,这里不再赘述。参见图10,图10是本发明实施例提供的一种数据读设备的结构示意图。 如图10所示,数据读设备30可包括:第一接收单元301、读命令生成单元303和读命令发送单元305。其中:第一接收单元301,用于接收到针对远端存储节点的读请求,所述读请求携带由键和值组成的键值对,其中,所述键用于指示待读取数据的源地址,所述值用于指示所述待读取数据的目的地址和所述待读取数据的大小;读命令生成单元303,用于根据所述键值对,生成符合高速网络存储协议的读命令;所述读命令包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段;读命令发送单元305,用于通过所述高速网络存储协议的接口向远端存储节点发送所述读命令,触发所述远端存储节点响应所述读命令,从所述源地址所映射的物理地址中读出所述待读取数据。如图10所示,数据读设备30还可进一步的包括:第二接收单元307、应答单元309和数据接收单元311,其中:第二接收单元307,可用于在所述读命令发送单元通过所述高速网络存储协议的接口向远端存储节点发送所述读命令之后,接收所述远端存储节点发送的针对所述待读取数据的发送请求,所述发送请求包含所述待读取数据的目的地址;应答单元309,可用于响应所述发送请求,针对所述发送请求向远端存储节点返回应答;数据接收单元311,可用于通过所述高速网络存储协议的接口接收所述远端存储节点发送的所述待读取数据,并将所述待读取数据存储到所述目的地址处。可以理解的,数据读设备30包括的功能单元的具体实现可参考图6方法实施例中所述主机的功能,这里不再赘述。参见图11,图11是本发明实施例提供的一种存储节点的结构示意图。存储节点40与图9所示的数据读设备30对应,用于接收数据读设备30发送的符合高速网络存储协议的读命令,执行读操作。如图11所示,存储节点40可包括:读命令接收单元401、分析单元403和读取单元405。其中:读命令接收单元401,用于通过高速网络存储协议的接口接收主机发送的符合所述高速网络存储协议的读命令;所述读命令包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段;分析单元403,用于分析出所述源地址所映射的物理地址;读取单元405,用于响应所述读命令,从所述源地址所映射的物理地址中读取出所述待读取数据。如图11所示,存储节点40还可进一步的包括:发送单元407、应答接收单元409和数据发送单元411,其中:发送单元407,可用于在所述读取单元从所述源地址所映射的物理地址中读取出所述待读取数据之后,向所述主机发送针对所述待读取数据的发送请求,所述发送请求包含所述待读取数据的目的地址;应答接收单元409,可用于接收到所述主机返回的针对所述发送请求的应答;数据发送单元411,可用于通过高速网络存储协议的接口向所述主机发送所述待读取数据。可以理解的,存储节点40包括的功能单元的具体实现可参考图6方法实施例中所述远端存储节点的功能,这里不再赘述。为了便于实施本发明实施例,本发明提供了另一种数据读设备。参见图12,数据读设备100可包括:发射器1003、接收器1004、存储器1002和与存储器1002耦合的处理器1001(数据读设备100中的处理器1001的数量可以是一个或多个,图12中以一个处理器为例)。在本发明的一些实施例中,发射器1003、接收器1004、存储器1002和处理器1001可通过总线或者其它方式连接,其中,图12中以通过总线连接为例。其中,发射器1003用于向远端存储节点发送数据,接收器1004用于向远端存储节点接收数据。具体实现中,发射器1003与接收器1004可集成为:无线收发模块、有线收发模块等收发器件。存储器1002用于存储程序代码,具体实现中,存储器1002可以采用只读存储器(readonlymemory,rom),可用于存储前述图6方法实施例中描述的数据读方法的实现代码。 处理器1001,例如cpu,用于调用存储于存储器1002中程序代码执行如下步骤:接收到针对远端存储节点的读请求,所述读请求携带由键和值组成的键值对,其中,所述键用于指示待读取数据的源地址,所述值用于指示所述待读取数据的目的地址和所述待读取数据的大小;所述读请求是应用程序调用用于读数据的键值存储接口发起的请求,所述用于读数据的键值存储接口的输入参数包括所述键值对;根据所述键值对,生成符合高速网络存储协议的读命令;所述读命令包括:用于指示所述待读取数据的源地址的第一字段、用于指示所述待读取数据的目的地址的第二字段,以及用于指示所述待读取数据的大小的第三字段;通过所述高速网络存储协议的接口利用发射器1003向远端存储节点发送所述读命令,触发所述远端存储节点响应所述读命令,从所述源地址所映射的物理地址中读出所述待读取数据。本发明实施例中,在所述从所述源地址所映射的物理地址中读取出所述待读取数据之后,处理器1001还可以:利用发射器1003向所述主机发送针对所述待读取数据的发送请求,所述发送请求包含所述待读取数据的目的地址;利用接收器1004接收到所述主机返回的针对所述发送请求的应答,并通过高速网络存储协议的接口利用发射器1003向所述主机发送所述待读取数据。可理解的是,处理器1001的执行步骤还可参考图6实施例中所述主机涉及的内容,这里不再赘述。另外,本发明实施例提供了一种存储系统(如图1所示),所述存储系统包括:主机和远端存储节点。其中:所述主机可以是由图7描述的数据写设备10,所述远端存储节点可以是图8描述的存储节点20。需要说明的,所述主机可以图2方法实施例提及的所述主机,所述远端存储节点可以图2方法实施例提及的所述远端存储节点,这里不再赘述。本发明实施例还提供了一种存储系统(如图1所示),所述存储系统包括:主机和远端存储节点。其中:所述主机可以是由图10描述的数据读设 备30,所述远端存储节点可以是图11描述的存储节点40。需要说明的,所述主机可以图6方法实施例提及的所述主机,所述远端存储节点可以图6方法实施例提及的所述远端存储节点,这里不再赘述。综上所述,实施本发明实施例,主机可以根据应用程序发送的针对远端存储节点的读写请求所携带的键值对,生成符合高速网络存储协议的读写命令,所述读写请求是所述应用程序通过调用键值存储接口发起的请求;并且,所述主机可以通过所述符合高速网络存储协议的传输接口向所述远端存储节点发送所述符合高速网络存储协议的读写命令,以触发所述远端存储节点响应所述符合高速网络存储协议的读写命令,完成远端读写操作。上述方案可实现将键值存储接口承载在所述高速网络存储协议上,使得应用程序可以通过键值存储接口对所述远端存储节点进行读写操作,兼容了键值存储与所述高速网络存储协议各自的存储优势。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1