一种数据分布方法及装置的制造方法

文档序号:9826060阅读:405来源:国知局
一种数据分布方法及装置的制造方法
【技术领域】
[0001]本发明涉及网络通信技术领域,尤其涉及一种数据分布方法及装置。
【背景技术】
[0002]在传统的虚拟化架构中,存储与计算分离,扩展性受到存储限制,极大阻碍企业业务发展。而在超融合基础架构中,存储与计算融合,每个hypervisor ( 一种运行在物理服务器和操作系统之间的中间软件层)主机拥有本地存储,使用分布式存储软件将存储资源池化后形成共享存储池。
[0003]超融合基础架构的核心是存储的融合,存储的融合由分布式存储软件实现,其中数据分布算法关系着分布式存储系统最终的可管理性,可扩展性以及可用性,是最关键的组成部分。
[0004]然而实践发现,基于现有超融合基础架构中的数据分布方式,虚拟机的数据的主副本在本地的概率通常不超过50%,从而导致数据读写性能较差。

【发明内容】

[0005]本发明提供一种数据分布方法及装置,以解决现有超融合基础架构的数据分布方式中虚拟机的数据的主副本在本地的概率较低的问题。
[0006]根据本发明实施例的第一方面,提供一种数据分布方法,包括:
[0007]确定虚拟机对应的卷中各数据块对应的存储组件序列;
[0008]根据数据块的位置信息以及对应的存储组件序列中各存储组件的位置信息,调整各存储组件在存储组件序列中的顺序,将与数据块的位置最接近的存储组件作为数据块对应的主副本所在存储组件。
[0009]根据本发明实施例的第二方面,提供一种数据分布装置,包括:
[0010]确定单元,用于确定虚拟机对应的卷中各数据块对应的存储组件序列;
[0011]调整单元,用于根据数据块的位置信息以及对应的存储组件序列中各存储组件的位置信息,调整各存储组件在存储组件序列中的顺序,将与数据块的位置最接近的存储组件作为数据块对应的主副本所在的存储组件。
[0012]应用本发明实施例,在确定虚拟机对应的卷中各数据块对应的存储组件序列之后,通过根据数据块的位置信息以及对应的存储组件序列中各存储组件的位置信息,调整各存储组件在存储组件序列中的顺序,将与各数据块的位置最接近的存储组件作为各数据块对应的主副本所在的存储组件,提高了虚拟机的数据的主副本在本地的概率,进而可以提高数据读写的性能,减少数据读写过程中网络资源浪费。
【附图说明】
[0013]图1是一种超融合基础架构的不意图;
[0014]图2是本发明实施例提供的一种数据分布方法的流程示意图;
[0015]图3是本发明实施例提供的一种数据读取方法的流程示意图;
[0016]图4是本发明实施例提供的一种数据分布装置的结构示意图;
[0017]图5是本发明实施例提供的数据分布装置所在设备的一种硬件结构图。
【具体实施方式】
[0018]为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面对超融合基础架构中较常用的数据分布方式进行简单说明。
[0019]目前,超融合基础架构中较常用的一种数据分布方式如下:(以图1所示场景中vml为例):
[0020]1、vm(Virtual Machine,虚拟机)I对应的卷实际被分割为η个固定大小数据块,每个数据块编号为:
[0021]固定前缀.卷编号(十六进制).序号(十六进制);
[0022]比如 rbd.vml-1.0 ?rbd.vml-1.n,后续称为 OID (Object Identificat1n,对象标识)。
[0023]2、对 OID 进行 hash (散列),得到 GID (Group Identificat1n,组标识),GID 范围为(O?m),其中m约为集群中实际磁盘数量的100倍,并且应该是2的整数次幂。
[0024]3、使用GID计算出本组对象应该存放在那些存储组件(storage)中,例如,在三副本情况下,每个对象都可以得到一个存储组件序列,序列式完全均匀随机的:
[0025]rbd.vml-1.0—>GID—> {storagel, storage2, storage3}
[0026]rbd.vml-1.1—>GID—> {storage3, storagel, storage2}
[0027]......
[0028]rbd.vml-1.n—>GID—> {storage2, storage3, storagel}
[0029]其中第一个为主副本所在存储组件,剩余的为副副本,平均情况下只有三分之一的主副本在本地。
[0030]4、数据读写流程为:
[0031]写流程:数据先发送到主副本,主副本负责分发数据到其余副本。
[0032]读流程:数据只从主副本读取数据。
[0033]在上述数据分布方案中,虚拟机的主副本平均只有三分之一在本地,从而导致数据读写性能较差。
[0034]为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
[0035]参见图2,为本发明实施例提供的一种数据分布方法的流程示意图,如图2所示,该方法可以包括:
[0036]步骤201、确定虚拟机对应的卷中各数据块对应的存储组件序列。
[0037]本发明实施例中,上述方法可以应用于超融合基础架构中的主机(host)中,为便于描述,以下以上述方法的执行主体为主机进行描述。
[0038]本发明实施例中,超融合基础架构中的存储集群中可以包括两个或两个以上的存储组件。
[0039]本发明实施例中,各数据块对应存储组件序列中可以包括两个或三个存储组件。
[0040]本发明实施例中,存储组件可以包括一个物理磁盘或多个物理磁盘组成的磁盘组。
[0041]为便于描述和理解,以下以超融合基础架构中的存储集群中包括三个存储组件,以及各数据块对应的存储组件序列中包括三个存储组件(即三副本,一个存储主副本、两个存储副副本)为例进彳丁说明。
[0042]本发明实施例中,当主机需要确定主机上创建的虚拟机对应的卷中各数据块对应的主副本,例如,虚拟机需要进行数据读取或写入时,主机可以先确定虚拟机对应的卷中各数据块对应的存储组件序列。
[0043]作为另一种可选的实施方式,在本发明实施例中,确定虚拟机对应的卷中各数据块对应的存储组件序列,可以包括以下步骤:
[0044]11)、确定各数据块的对象标识;其中,该对象标识包括数据块的位置信息;
[0045]12)、根据对象标识中包括的位置信息之外的其余信息确定各数据块的组标识;
[0046]13)、根据该组标识确定各数据块对应的存储组件序列。
[0047]在该实施方式中,主机确定各数据块的对象标识时,可以在该对象标识中增加数据块的位置信息。即在该实施方式中,数据块的对象标识可以为:固定前缀.卷编号(十六进制).序号(十六进制)@位置信息。例如,rbd.vml-1.0istoragel0
[0048]其中,数据块的位置信息可以包括但不限于磁盘编号、主机编号和/或机架编号。即在该实施方式中,可以将虚拟机所在主机的磁盘编号、主机编号或机架编号中的一个或多个的组合作为数据块的位置信息添加到数据块的对象标识中。
[0049]主机确定各数据块的对象标识之后,可以根据该对象标识中包括的位置信息之外的其余信息确定各数据块的组标识。
[0050]例如,假设数据块的对象标识为:rbd.vml-1.0Ostoragel,则可以通过对数据块的对象标识中除位置信息之外的其余信息进行hash的方式,即对rbd.vml-1.0进行hash,以得到该对象标识对应的组标识。
[0051]主机确定各数据块的组标识之后,可以根据该组标识确定各数据块对应的存储组件序列。其中,主机可以根据CRush算法实现根据组标识确定各数据块对应的存储组件序列。
[0052]步骤202、根据数据块的位置信息以及对应的存储组件序列中各存储组件的位置信息,调整各存储组件在存储组件序列中的顺序,将与数据块的位置最接近的存储组件作为数据块对应的主副本所在的存储组件。
[0053]本发明实施例中,主机确定各数据块对应的存储组件序列之后,可以根据各数据块的位置信息,以及各存储组件序列中各存储组件的位置信息调整存储组件序列中各存储组件的顺序,以使与各数据块的位置最接近的存储组件作为各数据块对应的主副本所在存储组件,从而,可以提高数据读写的性能。
[0054]举例来说,假设主机确定的vml对应的卷中各数据块对应的存储组件序列如下:
[0055]rbd.vml-1.0—> {storagel, storage2, storage3}
[0056]rbd.vml-1.1—> {storage3, storagel, storage2}
[0057]......
[0058]rbd.vml-1.η—> {storage2, storage3, storagel}
[0059]由于vml对应的卷中各数据块的位置最接近的存储组件为vml所在主机上的存储组件,即storagel,从而主机可以根据各数据块的位置信息,以及存储组件序列中各存储组件的位置信息调整该存储组件序列中各存储组件的顺序的结果为:
[0060]rbd.vml-1.0—> {storagel, storage2, storage3}
[0061]rbd.vml-1.1—> {storagel, storage3, storage2}
[0062]......
[0063]rbd.vml-1.n—> {storagel, storage2, storage3}
[0064]即vml对应的卷中各数据块对应的主副本所在存储组件均为storagel,也即vml对应的卷中各数据块对应的主副本均在本地。
[0065]在一种优选地实施方式中,存储组件在存储组件序列中排序第一,表示该存储组件为主副本所在存储组件。
[0066]例如,假设目标数据块对应的存储组件序列为{storagel, storage2, storage3},则storagel为该目标数据块对应的主副本所在存储组件。
[0067]本发明实施例中,由于虚拟机对应的卷中各数据块对应的主副本均在本地,当需要进行数据读取时,可以直接从本地的主副本读取数据,而不需要跨设备读取数据,提高了数据读取性能,减少了数据读取时的网络资源的消耗;当需要进行数据存储时,可以直接存储在本地的主副本,由本地的主副本将数据分发到副副本,减少了数据跨设备的次数,提高了数据写入的性能,减少了数据写入时的网络资源浪费。
[0068]举例来说,以三副本情况下的数据写入为例,若目标数据块的主副本不在本地,则数据写入主副本时,数据需要跨设备存储,主副本将数据分发给副副本时,数据需要分别跨设备转发,即数据总共需要三次跨设备传输;若目标数据块的主副本在本地,则数据写入主副本时,数据不需要跨设备存储,主副本将数据分发给副副本时,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1