数据处理方法和装置转让专利

申请号 : CN201480075499.0

文献号 : CN106164898B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 罗雄

申请人 : 华为技术有限公司

摘要 :

一种数据处理技术,交换设备接收服务器发送的Key‑Value报文,获取分区号,查询分区视图获得所述分区号对应的存储盘地址;通过将所述Key‑Value报文的目的地址改为所述存储盘地址,把所述Key‑Value报文转换成存储盘报文;交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘。

权利要求 :

1.一种数据处理方法,包括:

交换设备接收服务器发送的键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;

交换设备从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;

通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;

交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘。

2.根据权利要求1所述的方法,所述Key-Value报文是数据Key-Value报文,在交换设备接收所述Key-Value报文之前,该方法还包括:所述服务器按照数据键Key算法计算与数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value报文的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。

3.根据权利要求2所述的方法,还包括:

所述服务器按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息;

所述交换设备接收所述元数据Key-Value报文,通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。

4.根据权利要求2或3所述的方法,服务器按照数据键Key算法获得数据Value的数据Key之前,还包括:所述服务器接收待写数据;

所述服务器把所述待写数据拆分成数据Value。

5.根据权利要求2所述的方法,所述按照分区号算法获得数据Value的分区号,具体包括:对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。

6.根据权利要求1所述的方法,其中,所述Key-Value报文是元数据请求Key-Value报文,在所述交换设备接收Key-Value报文之前,进一步包括:服务器接收读数据请求,请求获得待读数据;

服务器按照所述元数据Key算法获得待读数据的元数据Key,用所述元数据Key按照所述分区号算法获得所述元数据分区号,生成所述元数据请求Key-Value报文,把所述元数据请求Key-Value报文发送给所述交换设备,其中,所述元数据请求Key-Value报文的目的地址是所述元数据分区号,所述元数据请求Key-Value报文携带所述元数据Key。

7.根据权利要求6所述的方法,所述交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘之后,还包括:所述交换设备接收元数据响应报文并转发给所述服务器,所述元数据响应报文的净荷中携带元数据Value,所述元数据响应报文是所述存储盘报文的响应报文;

服务器解封装所述元数据响应报文,从所述元数据Value中获得数据Key,用所述数据Key按照所述分区号算法计算数据分区号,生成数据请求Key-Value报文,所述数据请求Key-Value报文的目的地址是分区号,所述数据请求Key-Value报文中携带所述数据Key,把所述数据请求Value Key-Value报文发送给所述交换设备;

所述交换设备接收所述数据请求Key-Value报文,通过查询分区视图获得所述数据分区号对应的存储盘地址,以所述存储盘地址作为目的地址,把所述数据请求Key-Value报文转换成数据请求存储盘报文,发送所述数据请求存储盘报文给所述数据Value存储盘地址对应的存储盘;

所述交换设备接收数据响应存储盘报文并转发给所述服务器,所述数据响应存储盘报文是所述数据请求存储盘报文的响应报文,所述数据响应存储盘报文中携带有数据Value;

所述服务器解封装所述数据响应存储盘报文获得数据Value,将多个数据Key的数据Value组合成所述待读数据。

8.根据权利要求6所述的方法,其中:

所述Key-Value报文使用帧类型字段对报文类型进行标记。

9.一种数据交换装置,包括:

接收模块,用于接收服务器发送的键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;

查询模块,用于从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;

报文转换模块,用于通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;

发送模块,用于发送所述存储盘报文给与所述存储盘地址对应的存储盘。

10.根据权利要求9所述的装置,其中,所述Key-Value报文是元数据请求Key-Value报文,所述接收模块还用于:接收元数据响应报文并转发给所述服务器,所述元数据响应报文的净荷中携带元数据Value,所述元数据响应报文是所述存储盘报文的响应报文。

11.根据权利要求9所述的装置,其中:

所述接收模块,还用于通过读取帧类型字段确定所述Key-Value报文的报文类型。

12.一种写数据系统,包括服务器和权利要求9或11的数据交换装置,其中,所述Key-Value报文是数据Key-Value报文:所述服务器,用于按照数据键Key算法计算与数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述数据交换装置,其中,所述数据Key-Value报文的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。

13.根据权利要求12所述的系统,所述服务器还用于:

按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息;

所述接收模块,还用于接收所述元数据Key-Value报文;

所述查询模块,还用于通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址;

所述报文转换模块,还用于通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,所述发送模块,还用于发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。

14.根据权利要求12或13所述的系统,所述服务器还用于:

接收待写数据;

所述待写数据拆分成数据Value。

15.根据权利要求12或13所述的系统,所述按照分区号算法获得数据Value的分区号,具体包括:所述服务器对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。

16.一种写数据系统,包括服务器和交换设备,其中:

所述服务器,用于按照数据键Key算法计算与数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成数据键-值Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value报文的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value;

所述交换设备和所述服务器连接,用于接收所述服务器发送的Key-Value报文;

所述交换设备,还用于从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述数据分区号和所述数据存储盘地址的对应关系;

所述交换设备,还用于通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;

所述交换设备,还用于发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘。

17.根据权利要求16所述的系统,其中:

所述服务器还用于,按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息;

所述交换设备,还用于接收所述元数据Key-Value报文,通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。

18.根据权利要求16或17所述的系统,所述服务器在按照数据键Key算法获得数据Value的数据Key之前,还用于:接收待写数据;

把所述待写数据拆分成数据Value。

19.根据权利要求16所述的系统,所述按照分区号算法获得数据Value的分区号,具体包括:所述服务器对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。

20.一种交换设备,包括:

接口,被配置为用于提供对外连接;

计算机可读介质,被配置为用于存储计算机程序;

处理器,和所述接口、计算机可读介质连接,被配置为用于通过运行所述程序,执行以下步骤:接收服务器发送的键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;

从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;

通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;

发送所述存储盘报文给与所述存储盘地址对应的存储盘。

21.根据权利要求20所述的交换设备,所述Key-Value报文是数据Key-Value报文,所述处理器还被配置为执行:接收元数据Key-Value报文,通过查询所述分区视图获得元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。

22.根据权利要求20所述的交换设备,其中,所述Key-Value报文是元数据请求Key-Value报文,所述处理器还被配置为执行:接收元数据响应报文并转发给所述服务器,所述元数据响应报文的净荷中携带元数据Value,所述元数据响应报文是所述存储盘报文的响应报文。

23.根据权利要求20所述的交换设备,其中,所述处理器还被配置为执行:通过读取帧类型字段确定所述Key-Value报文的报文类型。

24.一种写数据系统,包括交换设备和服务器:

所述服务器被配置为,用于按照数据键Key算法计算与数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value报文的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value;

所述交换设备,和所述服务器连接,被配置为用于接收所述服务器发送的数据Key-Value报文;从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述数据分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述分区号和所述数据存储盘地址的对应关系;通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘。

25.根据权利要求24所述的系统,其中:

所述服务器还被配置为用于,按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息;

所述交换设备还被配置为用于,接收所述元数据Key-Value报文,通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。

26.根据权利要求24所述的系统,其中,所述服务器还被配置为用于:

接收待写数据;

把所述待写数据拆分成数据Value。

27.根据权利要求24所述的系统,其中,所述按照分区号算法获得数据Value的分区号,具体包括:所述服务器对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。

说明书 :

数据处理方法和装置

技术领域

[0001] 本申请涉及一种数据处理技术,特别有关于一种数据处理方法和装置。

背景技术

[0002] 随着社会的发展,需要被存储和管理的数据的规模越来越多,甚至被称为海量数据。用传统的集中存储管理超大规模数据时,难以提供高效的读写操作,难以满足良好的扩展性以及高可用性。
[0003] 在这种背景下,出现了由多个物理存储节点(本申请中简称为物理节点)共同组成的存储系统,每个存储节点都可以提供存储空间,这种存储方式称为分布式存储。一种分布式存储方式被称为键-值(Key-Value)存储,在Key-Value存储中,被存储的数据(或者数据分片)被称为值(Value),每个数据拥有一个在整个存储系统范围内唯一的标识,这个标识就是键(Key),Key和Value一一对应。比如要存取位于某个磁盘扇区内的数据,那么Key可以是“卷名+逻辑块地址(Logical Block Address,LBA)”,而Value是这个扇区所记录的数据,数据大小例如512字节。
[0004] 同一个数据的Key和Value作为整体称为Key-Value,简称K-V。每一个Key-Value存储在存储系统的一个物理节点中。对某个具体的Key-Value而言,存储它的物理节点可以由一个映射规则确定,这个映射规则是建立在对Key进行哈希(hash)运算生成的Hash值,然后将Hash值和物理节点进行映射。基于这种方法,如果两个不同的key计算出的hash值相同,那么这两个Key对应的Key-Value一定存储在同一个物理节点上。
[0005] 此外,由于物理节点的数量往往是固定的,而Key-Value数量不定,经常会超过物理节点数量,因此允许同一个物理节点存储拥有不同Key的多个Key-Value。也就是说,如果两个不同的key计算出的hash值不同,那么这两个Key各自对应的Key-Value也有可能存储在同一个物理节点上。
[0006] 根据Key计算出的Hash值,会落入在[0,2^32-1]的整数区间内,在系统初始化的时候,对这个大范围的整数区间进行分段,分成多个区间大小相等或近似的分区(Partition),每个分区内的哈希(Hash)值的数量基本一样。比如把整个Hash分成分区1和分区2共2个分区,那么分区1代表的区间为:[0,2^32/2],分区2代表的区间为:[2^32/2+1,2^32-1]。
[0007] 物理节点包括存储介质,还可以进一步包括内存、CPU等组件。虚拟存储节点是相对于物理存储节点区别而言的,是对物理节点的存储空间的逻辑划分,每个物理节点可以虚拟出一个或多个虚拟节点;少部分情况下,也可以把多个物理节点虚拟成一个虚拟节点;或者,每个分区和一个虚拟节点(Virtual Node)对应。存储系统收到一个新的Key-Value后,根据这个Key-Value的Key的Hash值落入的分区,选择这个分区对应的虚拟节点存储Key-Value。
[0008] 在一种网络拓扑中,业务主机和服务器连接,通过服务器把数据写入存储介质。因此服务器需要记录记录分区和物理节点之间映射关系的映射表(也叫做分区视图)。服务器负荷重,操作复杂。

发明内容

[0009] 本发明提供一种数据处理技术,可以降低服务器负荷和操作复杂性。
[0010] 第一方面,本发明一方面提供一种数据处理方法,包括:交换设备接收服务器发送的键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;交换设备从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘。
[0011] 第二方面,本发明提供一种数据交换装置,包括:接收模块,用于接收键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;查询模块,用于从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;报文转换模块,用于通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;发送模块,用于发送所述存储盘报文给与所述存储盘地址对应的存储盘。
[0012] 第三方面,本发明提供一种写数据系统,包括服务器和本发明第二方面的交换设备,其中,所述Key-Value报文是数据Key-Value报文:
[0013] 所述服务器用于,按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。
[0014] 第四方面,本发明提供一种写数据系统,包括服务器和交换设备。其中,所述服务器,用于按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据键-值Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value;所述交换设备和所述服务器连接,用于接收所述服务器发送的Key-Value报文;所述交换设备,还用于从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述数据分区号和所述数据存储盘地址的对应关系;所述交换设备,还用于通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;所述交换设备,还用于发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘。
[0015] 第五方面,本发明提供一种交换设备,包括:接口,被配置为用于提供对外连接;计算机可读介质,被配置为用于存储计算机程序;处理器,和所述接口、计算机可读介质连接。处理器被配置为用于通过运行所述程序,执行以下步骤:接收键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;发送所述存储盘报文给与所述存储盘地址对应的存储盘。
[0016] 第六方面,本发明提供一种写数据系统,包括交换设备和服务器。所述服务器被配置为,用于按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。所述交换设备,和所述服务器连接,被配置为用于接收所述数据Key-Value报文;从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述数据分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述分区号和所述数据存储盘地址的对应关系;通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘。
[0017] 应用本发明方案,Key-Value报文使用分区号作为目的地址,并且分区视图和服务器分离,由交换设备进行报文转换。提高了服务器的数据处理效率,降低了其负载和操作复杂性。此外还可以节约整个存储系统的网络带宽。

附图说明

[0018] 图1是本发明存储系统实施例拓扑图;
[0019] 图2是本发明写数据方法和读数据方法实施例流程图;
[0020] 图3本发明写数据方法实施例流程图;
[0021] 图4本发明读数据方法实施例流程图;
[0022] 图5是本发明交换设备结构实施例图;
[0023] 图6是本发明交换设备实施例框图。

具体实施方式

[0024] 下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例所获得的所有其他实施例,都属于本发明保护的范围。
[0025] Key-Value存储是一种分布式存储方式,存储对象是Key-Value,Key-Value存储可以把多个Key-Value分散存储到多个存储盘中。
[0026] 本发明实施例涉及以下名词。
[0027] (1)Key-Value:由值(Value)和键(Key)两部分信息组成,其中Value部分是数据本身,Key是Value的索引,Key和Value一一对应,通过Key可以查找到对应的Value。
[0028] (2)元数据:数据的描述信息,也称为数据的数据,例如可以是数据的索引。在本发明实施例中,在无特别说明的情况下,“数据”是专指元数据的描述对象,不包括元数据。数据Value:数据本身。数据Key:Key-Value存储中,数据Value的标签。元数据Value:元数据本身。元数据Key:Key-Value存储中,元数据Value的标签。就像数据Key和元数据Key都是Key一样,数据Value和元数据Value都是Value。
[0029] (3)Key-Value报文:一种新报文格式,其与IP报文的区别在于,目的地址是分区号,用帧类型字段标记这是Key-Value报文,其余部分可以与IP报文相同。
[0030] (4)数据Key-Value报文:Key-Value报文的一种,净荷中携带有数据Key及数据Value,可以用于把Key-Value存储到存储盘中。
[0031] (5)元数据Key-Value报文:Key-Value报文的一种,净荷中携带有元数据Key及元数据Value,可以用于把Key-Value存储到存储盘中。
[0032] (6)数据请求Key-Value报文:Key-Value报文的一种,净荷中携带有数据的Key,由服务器发送给交换设备,可以用于请求获得净荷中的Key所对应的Value,也就是数据Value。
[0033] (7)元数据请求Key-Value报文:Key-Value报文的一种,净荷中携带有元数据的Key,由服务器发送给交换设备,可以用于请求获得净荷中的Key所对应的Value,也就是请求元数据Value。
[0034] (8)存储盘:存储设备,可以采用闪存(Flash)、磁盘或者磁带作为存储介质,对外接口可以使用IP接口或者其他接口。当使用IP接口时,也称为IP盘。IP盘拥有CPU和内存,因此具有一定的处理能力,因此从某种程度上来讲,IP盘相当于存储控制器和存储介质的组合。
[0035] (9)存储盘报文:能够被存储盘识别的报文。当存储盘是IP盘时,存储盘报文是IP报文。元数据存储盘报文的净荷和元数据Key-Value报文相同,不同之处在于目的地地址不同,存储盘报文的目的地址是能够被存储盘识别的地址,而Key-Value报文的目的地址是分区号;此外,标签字段也不同,通过标签设备可以区分出存储盘报文和Key-Value报文。数据存储盘报文和元数据存储盘报文相似,不同之处在于净荷不同。
[0036] (10)数据响应存储盘报文,存储盘报文的一种,数据请求存储盘报文的响应报文,净荷中携带有数据请求Key-Value报文所请求的数据Value。
[0037] (11)元数据响应存储盘报文:存储盘报文的一种,元数据请求存储盘报文的响应报文,净荷中携带有元数据请求Key-Value报文所请求的元数据Value。
[0038] 本发明实施例提供一种写数据方法以及一种读数据方法,可以应用在服务器和交换设备组成的存储系统中。如图1所示,服务器1的一端和交换设备连接,交换设备2的另一端可以和存储设备3连接,存储设备3例如存储器,或者存储器组成的存储阵列。图2是基于这个系统的写数据方法和读数据方法,这两个方法之间是相对独立的。交换设备例如是交换机,或者具有路由功能的交换机。
[0039] 应用本发明提供的方案,在读数据或者写数据时,不需要由服务器1查询分区视图,降低了服务器的资源占用。此外,在系统初始化时,或者系统中的存储设备有增删时,需要把分区视图发给各个交换设备,以便能够对存储设备进行读访问或者写访问。服务器1的数量往往远大于交换设备2的数量,把分区视图发布到所有服务器1所需要的数据量远大于把分区视图发布到所有交换设备的数据量。分区视图不再存储在服务器1后,发布分区视图的数据量大大减少。
[0040] 此外,现有技术中,服务器和交换机使用IP协议通信,存储数据时服务器必须掌握存储盘的地址,才能实现数据的读取,交换机仅仅作为中转设备。而本发明实施例中,各个必须知道各个服务器1和交换设备2之间使用Key-Value报文进行通信,服务器1计算出Key-Value报文的分区号即可,无需掌握存储盘的地址。本发明实施例一方面减小了服务器的资源占用;另一方面,由于服务器1没有存储盘地址,也提高了整个存储系统的安全性,无法通过入侵服务器1获得存储盘的地址。
[0041] 更进一步的,在多副本的场景下,相同的副本需要存储到不同的存储设备中。现有技术中,在写数据时,服务器需要发送多个相同的副本给交换机,再由交换机逐个转发到对应的存储器。本发明实施例中,在写数据时,服务器1可以只发送一个副本给交换设备2,由交换设备2生成多个副本,然后转发给各个存储器。本发明实施例所的技术减少了服务器1和交换设备2之间发送的报文数量。
[0042] 服务器1可以从外部主机中接收数据,通过交换设备2存入存储设备3。或者通过交换设备2读出存储设备3中的数据。
[0043] 交换设备2可以支持OSI二层协议,例如是交换机;或者同时支持OSI二层协议与三层协议,例如交换机与路由器的结合体。
[0044] 存储设备3用于存储数据。每个存储设备3包含一个或多个分区,分区是一种逻辑概念。
[0045] 写数据方法实施例包括如下步骤。
[0046] 11,服务器接收待写数据。
[0047] 待写数据例如可以是一个完整的文件,或者一个数据流,也可以是文件的一部分或者数据流的一部分。
[0048] 12,服务器将所述待写数据拆分成至少一个分片,分片又称为数据值(Value)。按照数据键(Key)算法获得每个数据Value的数据Key,按照分区号算法获得每个数据Value的分区号。以分区号作为目的地址生成所述数据Value的数据Key-Value报文,把所述数据Key-Value报文发送给交换设备,其中,每个所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Key对应的数据Value。Key-Value报文也可以简称为K-V报文。
[0049] 本步骤中,由于这些Value是由服务器发送的数据拆分而产生的,所以称之为数据Value。后文中把元数据生成的Value称为元数据Value。数据Value和元数据Value统称为Value。
[0050] 分区号的概念可以参考分布式哈希表(Distributed hash table,DHT)技术。将哈希空间按序均匀分割成分区(partition),并给每个hash空间分配一个唯一的编号,这个编号就是分区号。其中哈希空间可以是Key经过哈希功能(hash function)后得到的值的范围。
[0051] 例如当数据大于1MB(Mega Bytes)时,服务器把待写数据以1MB为粒度进行拆分,拆分后形成的多个数据分片,每个数据分片也称作一个数据值(Value)。获得数据Value所对应的数据Key的算法可以任意设置,只要符合二者的一一对应即可,例如可以由第三方提供一个编号作为Value的Key,也可以根据Value的参数计算获得。Key可以看作Value的标签,可以唯一标识一个Value。
[0052] 每个分区号唯一标记一个分区,分区和存储盘有对应关系,例如多个分区对应一个存储盘。分区号可以是数字也可以是字母或者其他形式的标记方式。分区号也可以称为分区地址。获得每个Value的分区号的方法也有很多种,满足把Value大致均匀的分配到各个分区中即可。在特殊情况下,不均匀也是可以的。其中一种算法是:对Value进行编号,逐个对应到各个分区中。
[0053] 例如:一种算法可以是:对Value的Key进行哈希计算,把获得的哈希值按所有存储盘拥有的分区总数取余,把余数作为分区号,按余数的数值把Value存入对应编号的分区中。例如余数是3就存入第3个分区中,这个分区的分区号也可以命名为分区3。
[0054] 另外一种算法可以是:假设一共有3个分区,分别是分区1、分区2和分区3。那么第一个Value存入分区1,第二个Value存入分区2,第三个Value存入分区3,第四个Value存入分区1,第五个Value存入分区2,第六个Value存入分区3,第七个Value存入分区1……还有一种算法是采用伪随机数,对每个Value随机指定一个分区号,从统计上看,Value也会大致平均的对应到各个分区号。
[0055] 例如,假设待写数据的文件名是aaa.doc,大小为9MB,那么拆分成的9个数据分片的Key分别是aaa.doc-1、aaa.doc-2、aaa.doc-3……aaa.doc-9,这9个数据分片的命名方式就是数据Key算法。假设一共有4个分区,分别是分区1,分区2,分区3以及分区4。对这9个数据Key的哈希值按照分区数量4取余,余数是1的,对应的就是分区1,余数是2的,对应的分区就是分区2,以此类推。
[0056] 本步骤中,发给交换设备的K-V报文是一种新定义的报文,它以分区号作为目的地址K-V报文的源地址可以是是服务器的IP地址。除了目的地址不同以外,用于区分K-V报文和IP报文的标签字段也不同,K-V报文的其余字段可以和IP报文保持一致。
[0057] K-V报文和IP报文相似,在网络协议中都属于开放系统互连(OSI)模型的网络层。不同之处在于IP报文中是32位目的IP地址,KV报文中是分区号,分区号也可以是32位的。和IP报文一样,K-V报文采用的协议的上层协议为UDP协议,下层协议为MAC协议。在把K-V报文由服务器发送给交换设备时,把K-V报文封装成MAC帧,MAC帧的源地址是服务器的MAC地址,目的地址是交换设备的MAC地址,或者是广播地址0xFFFFFFFFFFFF。在“帧类型”字段中标记这是一个K-V报文,以与IP报文进行区分。在真正传输时,MAC帧还需要进行物理层的封装。
[0058] 13,所述交换设备接收所述数据K-V报文,通过查询分区视图获得所述数据Value的分区号对应的存储盘地址。以数据Value的分区号对应的存储盘地址作为目的地址,把所述数据K-V报文转换成数据存储盘报文,发送所述数据存储盘报文。其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系,分区视图可以存储在交换设备中,通过和交换设备通信的控制器进行更新。
[0059] 本步骤中,由于数据报文的目的地址是存储盘地址,发送数据存储盘报文后,相应的存储盘会收到数据报文,然后对报文中的Key和Value进行存储。数据存储盘报文和数据K-V报文的净荷相同。
[0060] 分区视图记录有分区号和存储盘地址的对应关系。交换设备的工作原理是:交换设备在收到服务器发送的Key-Value报文后,读取报文中携带的分区号,查询这个分区视图就可以获得存储盘地址。当分区数量大于存储盘数量时,可以多个分区对应同一个存储盘。这里的存储盘是物理存储器,例如可以是磁盘、固态硬盘SSD,可擦写光盘等。
[0061] 存储盘的地址可以是IP地址。需要说明的是,和步骤12类似,交换设备和存储盘之间可以通过以太网连接,交换设备发送给存储盘的报文如果是IP报文,由于TCP/IP协议不是底层的协议,在实际方案中,需要对IP报文再进行一次封装,例如封装成以太帧,然后发送给存储盘。存储盘收到以太帧后,解封装即可获得IP报文。除了以太网,也可以采用异步传输模式(Asynchronous Transfer Mode,ATM)等承载协议,进行交换设备和存储盘之间的底层数据传输。在实际业务中,以太帧还需要进一步封装成物理层的格式才能发送给存储盘。
[0062] 步骤12-13介绍了数据Key-Value的发送过程,需要说明的是,对于有校验分片存在的情况,例如每5个数据分片对应有2个校验分片,那么校验分片的也按数据分片同样的操作发送。也就是说,当有校验分片的情况下,本方法各个步骤中提到的数据Value包括2种类型,一种类型是直接由数据拆分获得,是原始数据Value,另一种类型是原始数据Value的校验信息。由于校验Value按照和原始数据Value同样的流程处理,可以不进行区分,统称为数据Value。
[0063] 每个数据Key-Value都按照步骤13的方式进行存储。存储盘成功存储完数据Key-Value后,发送存储成功的响应消息给交换设备,交换设备发送存储成功的响应消息给服务器。服务器收到交换设备发送的存储成功响应消息后,进行步骤14-15的元数据Key-Value的处理。
[0064] 下面介绍元数据Key-Value的发送过程,元数据是相对于数据而言,在数据被拆分成数据Value之后生成元数据Value,元数据Value可以记录数据被拆分成哪些数据Value,也就是数据Value的索引;以及这些数据Value在数据中的顺序关系。
[0065] 14,元数据Value可以由数据获得,服务器按照元数据Key算法获得和元数据Value对应的元数据Key,按照分区号算法获得元数据Value的分区号,元数据Value的分区号称为元数据分区号。以元数据分区号作为目的地址生成所述元数据Value的元数据K-V报文,把所述元数据K-V报文发送给交换设备,其中,每个所述元数据K-V报文的净荷中携带所述元数据Key以及所述元数据Key对应的元数据Value。
[0066] 元数据Value记录所述数据Value的索引信息。如果元数据小于数据Value的大小,元数据不用拆分。按照前面的举例,对于文件名是aaa.doc的数据,其元数据Key算法可以是在文件名后增加-detadata,其元数据的Key可以是aaa.doc-metadata。元数据Key算法可以和数据Key算法不同。
[0067] 15,所述交换设备接收所述元数据K-V报文,通过查询分区视图获得所述元数据分区号对应的存储盘地址,以元数据分区号对应的存储盘地址作为目的地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给对应的存储盘。
[0068] 由于元数据的发送过程和数据相似,也就是说步骤14-15和步骤12-13相似,不同之处在于数据变成了元数据,所以本实施例不再详述。例如步骤14中获得分区号的方式,可以采用步骤12提到的三种方法中的任意一种。交换设备可以通过读取帧类型字段,对K-V报文和其他报文(例如IP报文)进行区分。
[0069] 读数据方法和写数据方法相对独立,下面对读数据方法实施例进行介绍。
[0070] 21,服务器接收读数据请求。
[0071] 读数据请求所请求的待读数据例如可以是一个完整的文件,或者一个数据流,也可以是文件的一部分或者数据流的一部分。
[0072] 22,服务器根据所述读数据请求,使用元数据Key算法计算元数据Key,按照分区号算法获得所述元数据的分区号,以分区号作为目的地址生成所述元数据读请求Key-Value报文,元数据读请求Key-Value报文的净荷中携带元数据Key,把元数据读请求发送给交换设备。元数据的Key也可以称为元数据的元数据。
[0073] 读数据请求中携带有待读数据的信息,根据待读数据的信息使用元数据Key算法计算元数据Key。本步骤的元数据Key算法和步骤14的元数据Key算法可以相同,例如待读数据的信息是待读数据的文件名,而元数据Key算法是文件名后面增加后缀-meta data,那么文件名为aaa.doc的待读数据的元数据Key是aaa.doc-metadata。
[0074] 服务器获得元数据分区号的算法和步骤12相同,也就是说对于同一个数据的读请求和写请求,按照预设的分区号算法计算出的分区号相同。按照前面的举例,可以根据Key获得分区号。对于文件名是aaa.doc的数据的读请求,在本步骤中,由于元数据Key的生成规则相同,其元数据Key也是aaa.doc-metadata。在获得元数据Key以后,可以使用步骤12提到的方法中的一种,获得元数据分区号。当然,也可以不使用Key,通过其他手段获得元数据分区号。
[0075] 获得元数据分区号以后,把元数据分区号放在元数据读请求Key-Value报文头中作为目的地址,把Key放在元数据读请求Key-Value报文的净荷中,生成所述元数据读请求Key-Value报文。元数据读请求Key-Value报文所请求获得的内容是元数据Value,服务器把这个读请求发送给交换设备。元数据读请求的报文格式和步骤12中的K-V报文相同,净荷写的元数据Key。同样的,这个报文需要封装成MAC帧,甚至进一步转换成物理信号以便发送给交换设备。
[0076] 23,所述交换设备接收所述元数据读请求Key-Value报文,从报文头中获得作为目的地址的元数据分区号,通过查询分区视图获得所述元数据分区号对应的存储盘地址。以把元数据读请求Key-Value报文的目的地址替换成元数据分区号对应的存储盘地址,从而把所述元数据Value读请求转换成元数据请求存储盘报文,发出所述元数据请求存储盘报文给对应的存储盘。其中,所述分区视图中记录有所述元数据分区号和与其对应的存储盘地址的对应关系。
[0077] 本步骤中,元数据读请求Key-Value报文的目的地址是存储盘地址,存储盘收到元数据请求报文后,返回元数据Value给交换设备。返回的报文格式可以是IP报文,元数据Value携带在IP报文的净荷中。
[0078] 24,存储盘发送元数据响应存储盘报文给交换设备,交换设备接收元数据响应存储盘报文并转发给所述服务器。交换设备转发给服务器的报文可以不使用K-V报文格式,而是使用IP报文。元数据响应存储盘报文是元数据请求存储盘报文的响应报文。
[0079] 25,服务器解封装收到的元数据响应存储盘报文,通过元数据响应存储盘报文的净荷中携带的元数据Value,获得各个所述数据Value的数据Key。以及获得存储数据Value的分区的数据分区号。以数据分区号作为目的地址生成数据请求Key-Value报文,数据请求Key-Value报文中携带数据Key,把所述数据请求Key-Value报文发送给所述交换设备。
[0080] 获得数据Key和数据分区号的具体方法可以和步骤22相同。
[0081] 元数据Value中携带有数据Value之间的顺序以及各个数据Value的索引(例如数据Value对应的数据Key),通过数据Key获得数据Value的分区号,算法与步骤12提到的算法相同。
[0082] 元数据Value也可以不携带数据Key,而是携带可以获得数据Key的参数,由服务器计算获得数据Key。通过数据Key获得数据分区号的具体算法与步骤12提到的算法相同。元数据Value还可以直接携带数据分区号,这样可以省去由数据Key计算获得数据分区号的过程。
[0083] 26,所述交换设备接收数据请求Key-Value报文,通过查询分区视图获得数据分区号对应的数据Value存储盘地址,以数据分区号对应的存储盘地址作为目的地址,把所述数据请求Key-Value报文转换成数据请求存储盘报文,发送数据请求存储盘报文给对应的存储盘。
[0084] 存储盘收到数据请求存储盘报文后,查找数据Key对应的数据Value,把查找到的数据Value携带在IP报文的净荷中返回给交换设备,这个IP报文称为数据响应存储盘报文。
[0085] 本步骤技术原理和步骤23相似,不同之处在于步骤23是获取元数据Value,本步骤的获取对象是数据Value。
[0086] 27,所述交换设备还用于,接收数据响应存储盘报文并转发给所述服务器。
[0087] 28,所述服务器还用于,解封装数据响应存储盘报文,把多个数据Value组合成读数据请求所请求的待读数据。
[0088] 当服务器凑齐组成待读数据的所有数据分片后,根据元数据Value中记录的数据分片的顺序信息,把这些数据分片依顺序组合起来形成待读数据,把待读数据返回给请求者。
[0089] 上述方法中,Key-Value报文除了目的地址是分区号,还在报文头中使用专门的字段标记这是一个Key-Value,以便和IP报文进行区分。例如在该帧类型字段中用0x8040标记这是一个Key-Value报文。
[0090] 本发明另外一实施例一种数据处理方法,是对上述方法的另外一种表达方式,包括由交换设备执行的如下步骤33-36。参见图3、图4。
[0091] 33、交换设备接收键-值Key-Value报文,所述Key-Value报文的目的地址是分区号。
[0092] 34、交换设备从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系。
[0093] 35、通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文。
[0094] 36、交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘。
[0095] 步骤33-步骤36由交换设备执行,没有区分是写数据的方法还是读数据的方法。
[0096] 当步骤33-步骤36是写数据方法时,参见图3。假设所述Key-Value报文是数据Key-Value报文,那么在交换设备接收Key-Value报文的步骤之前,该方法还包括步骤30。
[0097] 30、服务器按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。
[0098] 在步骤30中,所述服务器按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息。按照分区号算法获得数据分区号包括:对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。
[0099] 基于步骤30,所述交换设备接收所述元数据Key-Value报文,通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。
[0100] 在步骤30之前,还可以包括以下步骤401和402。
[0101] 301、所述服务器接收待写数据。
[0102] 302、所述服务器把所述待写数据拆分成数据Value。
[0103] 当步骤33-步骤36是读数据方法时,参见图4。所述Key-Value报文是元数据请求Key-Value报文,在所述交换设备接收Key-Value报文之前,进一步包括步骤31和32。
[0104] 31、服务器接收读数据请求,请求获得待读数据;
[0105] 32、服务器按照所述元数据Key算法获得待读数据的元数据Key,用所述元数据Key按照所述分区号算法获得所述元数据分区号,生成所述元数据请求Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备,其中,所述元数据请求Key-Value报文的目的地址是所述元数据分区号,所述元数据请求Key-Value报文携带所述元数据Key。
[0106] 在所述交换设备发送所述存储盘报文给与所述存储盘地址对应的存储盘之后,还可以包括步骤37-步骤41。
[0107] 37、所述交换设备接收元数据响应报文并转发给所述服务器,所述元数据响应报文的净荷中携带元数据Value,所述元数据响应报文是所述存储盘报文的响应报文。
[0108] 38、服务器解封装所述元数据响应报文,从所述元数据Value中获得数据Key,用所述数据Key按照所述分区号算法计算数据分区号,生成数据请求Key-Value报文,所述数据请求Key-Value报文的目的地址是以数据分区号,所述数据请求Key-Value报文中携带所述数据Key,把所述数据请求Key-Value报文发送给所述交换设备。
[0109] 39、所述交换设备接收所述数据请求Key-Value报文,通过查询分区视图获得所述数据分区号对应的存储盘地址,以所述存储盘地址作为目的地址,把所述数据请求Key-Value报文转换成数据请求存储盘报文,发送所述数据请求存储盘报文给所述数据Value存储盘地址对应的存储盘。
[0110] 40、所述交换设备接收数据响应存储盘报文并转发给所述服务器,所述数据响应报文是所述数据请求存储盘报文的响应报文,所述数据响应报文中携带有数据Value。
[0111] 41、所述服务器解封装所述数据响应Key-Value获得数据Value,将多个数据Key的数据Value组合成所述待读数据。
[0112] 前述步骤中,Key-Value报文使用帧类型字段对报文类型进行标记。
[0113] 本发明方法实施例包括步骤11-28,步骤301-36,以及步骤31-41。由前文描述可知,一部分操作由服务器执行,另一部分操作由交换设备执行。如图5所示,本发明实施例中的交换设备2可以由处理器51、计算机可读介质52和接口53组成,处理器51通过总线分别和计算机可读介质52、接口53连接。接口53提供对外连接,例如和服务器1连接,计算机可读介质52用于存储计算机程序代码,处理器51通过运行计算机可读介质52程序代码执行交换设备在步骤11-28中的操作,或者交换设备在步骤301-36,或者交换设备在步骤31-41中的操作。
[0114] 本发明实施例提供的服务器可以由处理器、存储介质和接口组成,处理器分别和存储介质、接口连接。接口提供对外连接,存储介质用于存储计算机程序代码,处理器通过运行存储介质程序代码执行服务器在步骤11-28中的操作,或者服务器在步骤301-36,或者服务器在步骤31-41中的操作。
[0115] 参见图6,本发明实施例提供的交换设备2,包括接收模块61、查询模块62、报文转换模块63以及发送模块64。交换设备2可以执行上面提到的方法,例如交换设备在步骤11-28中的操作,或者交换设备在步骤301-36,或者交换设备在步骤31-41中的操作。
[0116] 接收模块61,用于接收键-值Key-Value报文,所述Key-Value报文的目的地址是分区号;查询模块62,用于从所述Key-Value报文中获得所述分区号,查询分区视图获得所述分区号对应的存储盘地址,其中,所述分区视图中记录有所述分区号和所述存储盘地址的对应关系;报文转换模块63,用于通过将所述Key-Value报文的目的地址改为所述存储盘地址,把所述Key-Value报文转换成存储盘报文;发送模块64,用于发送所述存储盘报文给与所述存储盘地址对应的存储盘。
[0117] 所述接收模块61接收的Key-Value报文可以是元数据请求Key-Value报文。那么所述接收模块61还用于接收元数据响应报文并转发给所述服务器1,所述元数据响应报文的净荷中携带元数据Value,所述元数据响应报文是所述存储盘报文的响应报文。接收模块61,还用于通过读取帧类型字段确定所述Key-Value报文的报文类型。由于Key-Value报文和IP报文类似,可以使用帧类型字段对Key-Value报文和IP报文进行区分。
[0118] 所述接收模块61接收的Key-Value报文可以是数据请求Key-Value报文。交换设备2和服务器1共同组成本发明实施例的写数据系统。所述服务1器用于:按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备2,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。
[0119] 所述服务器1还用于:按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备2,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息。所述接收模块61,还用于接收所述元数据Key-Value报文;所述查询模块62,还用于通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址;所述报文转换模块63,还用于通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,所述发送模块64,还用于发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘。
[0120] 可选的,服务器还用于,在对数据Value进行处理之前,接收待写数据,以及所述待写数据拆分成数据Value。可选的,所述按照分区号算法获得数据Value的分区号,具体包括:所述服务器1对所述数据Key的哈希值按照分区的数量取余,得到的数值作为数据分区号。
[0121] 类似的,服务器1用于执行上述方法中涉及服务器的部分。例如在步骤11-28中服务器的操作,或者服务器在步骤301-36,或者服务器在步骤31-41中的操作。
[0122] 下面从另外一个角度来介绍本发明实施例的写数据系统。写数据系统由服务器1和交换设备2。
[0123] 其中,所述服务器1,用于按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据键-值Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。
[0124] 所述交换设备2和所述服务器1连接,用于接收所述服务器1发送的Key-Value报文。所述交换设备2,还用于从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述数据分区号和所述数据存储盘地址的对应关系。
[0125] 所述交换设备2,还用于通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;所述交换设备2,还用于发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘3。
[0126] 可选的,所述服务器1还用于,按照元数据键Key算法计算元数据Value对应的元数据Key,按照所述分区号算法获得元数据Value的元数据分区号,生成元数据Key-Value报文,把所述元数据Key-Value报文发送给所述交换设备2,其中,所述元数据Key-Value报文的目的地址是所述元数据分区号,所述元数据Key-Value报文的净荷中携带所述元数据Key以及所述元数据Value,所述元数据Value记录所述数据Value的索引信息。可选的,所述交换设备2,还用于接收所述元数据Key-Value报文,通过查询所述分区视图获得所述元数据Value的分区号对应的元数据存储盘地址,通过将所述元数据Key-Value报文的目的地址改为所述元数据存储盘地址,把所述元数据Key-Value报文转换成元数据存储盘报文,发送所述元数据存储盘报文给与所述元数据存储盘地址对应的存储盘3。
[0127] 下面从再一个角度来描述存储系统:存储系统包括交换设备2和服务器1。所述服务器1被配置为,用于按照数据键Key算法计算与所述数据值Value对应的数据Key,按照分区号算法获得所述数据Value的数据分区号,生成所述数据Key-Value报文,把所述数据Key-Value报文发送给所述交换设备,其中,所述数据Key-Value的目的地址是所述数据分区号,所述数据Key-Value报文的净荷中携带所述数据Key以及所述数据Value。
[0128] 所述交换设备2,和所述服务器1连接,被配置为用于接收所述数据Key-Value报文;从所述数据Key-Value报文中获得所述数据分区号,查询分区视图获得所述数据分区号对应的数据存储盘地址,其中,所述分区视图中记录有所述分区号和所述数据存储盘地址的对应关系;通过将所述数据Key-Value报文的目的地址改为所述数据存储盘地址,把所述数据Key-Value报文转换成数据存储盘报文;发送所述数据存储盘报文给与所述数据存储盘地址对应的数据存储盘3。
[0129] 本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
[0130] 计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
[0131] 计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。