分布式存储的数据均衡方法及装置与流程

文档序号:18008677发布日期:2019-06-25 23:43阅读:237来源:国知局
分布式存储的数据均衡方法及装置与流程

本申请涉及分布式存储技术领域,具体而言,涉及一种分布式存储的数据均衡方法及装置。



背景技术:

在分布式存储系统中,存储节点可以基于该存储节点中归置组与对象存储设备建立的对应关系,利用归置组将数据存储到该对象存储设备中。

而针对对应关系的建立,目前可以通过随机算法为每个对象存储设备分配对应的归置组。但这种方式会导致建立的对应关系中每个存储节点对应的归置组的数量差别比较大,例如,对象存储设备a对应的归置组的数量为100,但对象存储设备b对应的归置组的数量却为150。这样就会导致数据在存储过程中分布不均,导致对存储空间的利用率降低。



技术实现要素:

本申请在于提供一种分布式存储的数据均衡方法及装置,以改善数据在存储过程中分布不均的问题,提高对存储空间的利用率。

为了实现上述目的,本申请的实施例通过如下方式实现:

第一方面,本申请实施例提供了一种分布式存储的数据均衡方法,应用于分布式存储系统中的任一个存储节点,所述方法包括:

根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表;

获取所述归置组的数量阈值;

对归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值;

基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

本申请实施例中,在生成每个存储节点中的对象存储设备与归置组对应的映射关系表的基础上,基于归置组的数量阈值,将归置组的数量高于和低于数量阈值的对象存储设备对应的归置组进行调整,从而使得每个对象存储设备对应的归置组的数量趋于数量阈值而比较均匀,故可以改善数据在存储过程中分布不均的问题,提高对存储空间的利用率。

结合第一方面,在第一种可能的实现方式中,归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,包括:

从归置组的数量高于所述数量阈值的对象存储设备对应的归置组中确定出待调出的归置组;

从归置组的数量低于所述数量阈值的对象存储设备中确定出每个所述待调出的归置组应调往的对象存储设备,其中,每个所述待调出的归置组应调往的对象存储设备满足:所述应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一故障域,所述应调往的对象存储设备当前对应的归置组中不包含该待调出的归置组,所述应调往的对象存储设备当前对应的归置组的数量加上该待调出的归置组趋于所述数量阈值;

将每个所述待调出的归置组调整为与各自的所述应调往的对象存储设备对应。

本申请实施例中,由于在调整过程中,应调往的对象存储设备满足:应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一故障域,应调往的对象存储设备当前对应的归置组中不包含该待调出的归置组,应调往的对象存储设备当前对应的归置组的数量加上该待调出的归置组仍趋于数量阈值这三个条件,这样才能保证将待调出的归置组调整为与该应调往的对象存储设备对应后不会对分布式存储系统产生不利的影响。

结合第一方面,在第二种可能的实现方式中,获取所述归置组的数量阈值,包括:

通过对每个所述对象存储设备对应的归置组的数量求平均获得所述数量阈值。

本申请实施例中,利用求平均的方式来对每个对象存储设备对应的归置组的数量求平均,可以使得确定出的数量阈值更合理且也更平衡。

结合第一方面,在第三种可能的实现方式中,在根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表之前,所述方法还包括:

获取在所述分布式存储系统初始建立时或在所述存储节点之间的拓扑发生变化时对应的所述存储拓扑。

本申请实施例中,在获取在分布式存储系统初始建立时或在存储节点之间的拓扑发生变化时都可以获得最新的存储拓扑,并基于该存储拓扑实现后续对归置组数量的调整,从而实现了分布式存储系统无论在何种状态下都可以实现归置组数量的均衡。

结合第一方面或第一方面的第一种至第三种可能的实现方式中任一种方式,在第四种可能的实现方式中,在基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表之后,所述方法还包括:

基于更新后的所述映射关系表,进行数据的读写。

在本申请实施例中,基于更新后的映射关系表进行数据的读写,从而可以实现数据的均匀存储。

第二方面,本申请实施例提供了一种分布式存储的数据均衡方法,应用于与分布式存储系统通信的主机,所述方法包括:

根据所述分布式存储系统中存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表;

获取所述归置组的数量阈值;

对归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值;

基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表;

将更新后的所述映射关系表同步到每个所述存储节点。

在本申请实施例中,利用数量阈值调整,归置组的数量高于和低于数量阈值的对象存储设备对应的归置组进行调整,从而使得每个对象存储设备对应的归置组的数量趋于数量阈值而比较均匀。这样基于调整后的每个对象存储设备对应的归置组更新映射关系表,并将该更新后的映射关系表同步到每个存储节点,每个存储节点基于该更新后的映射关系表就可以实现对数据的均匀存储,提高对存储空间的利用率。

第三方面,本申请实施例提供了一种分布式存储的数据均衡装置,应用于分布式存储系统中的任一个存储节点,所述装置包括:

映射关系生成模块,用于根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表;

归置组数量获取模块,用于获取所述归置组的数量阈值;

对应关系调整模块,用于归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值;

映射关系更新模块,用于基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

结合第三方面,在第一种可能的实现方式中,

所述对应关系调整模块,还用于从归置组的数量高于所述数量阈值的对象存储设备对应的归置组中确定出待调出的归置组;从归置组的数量低于所述数量阈值的对象存储设备中确定出每个所述待调出的归置组应调往的对象存储设备,其中,每个所述待调出的归置组应调往的对象存储设备满足:所述应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一故障域,所述应调往的对象存储设备当前对应的归置组中不包含该待调出的归置组,所述应调往的对象存储设备当前对应的归置组的数量加上该待调出的归置组趋于所述数量阈值;将每个所述待调出的归置组调整为与各自的所述应调往的对象存储设备对应。

结合第三方面,在第二种可能的实现方式中,

所述归置组数量获取模块,还用于通过对每个所述对象存储设备对应的归置组的数量求平均获得所述数量阈值。

结合第三方面,在第三种可能的实现方式中,所述装置还包括:

拓扑关系获取模块,用于获取在所述分布式存储系统初始建立时或在所述存储节点之间的拓扑发生变化时对应的所述存储拓扑。

结合第三方面或第三方面的第一种至第三种可能的实现方式中任一种方式,在第四种可能的实现方式中,所述装置还包括:

数据读写模块,用于基于更新后的所述映射关系表,进行数据的读写。

第四方面,本申请实施例提供了一种分布式存储的数据均衡装置,应用于与分布式存储系统通信的主机,所述装置包括:

映射关系生成模块,用于根据所述分布式存储系统中存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表;

归置组数量获取模块,用于获取所述归置组的数量阈值;

对应关系调整模块,用于归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值;

映射关系更新模块,用于基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表;

映射关系同步模块,用于将更新后的所述映射关系表同步到每个所述存储节点。

第五方面,本申请实施例提供了一种分布式存储系统,包括:多个存储节点,每个所述存储节点均与至少一个所述存储节点连接,任一个所述存储节点,用于执行如第一方面或第一方面的第一种至第四种可能的实现方式中任一种方式所述的分布式存储的数据均衡方法。

第六方面,本申请实施例提供了一种存储节点,所述存储节点包括:处理器、存储器、通信机构和多个磁盘。

所述处理器、所述存储器和所述多个磁盘通过所述通信机构连接;

所述存储器,用于存储程序;

所述处理器,用于通过调用存储在所述存储器中的程序以执行如第一方面或第一方面的第一种至第四种可能的实现方式中任一种方式所述的分布式存储的数据均衡方法。

第七方面,本申请实施例提供了一种主机,所述主机包括:处理器、存储器和通信机构。

所述处理器和所述存储器通过所述通信机构连接,所述处理器通过所述通信机构与所述分布式存储系统通信;

所述存储器,用于存储程序;

所述处理器,用于通过调用存储在所述存储器中的程序以执行如第二方面所述的分布式存储的数据均衡方法。

第八方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如第一方面、第一方面的第一种至第四种可能的实现方式中任一种方式或第二方面所述的分布式存储的数据均衡方法。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例提供的一种分布式存储系统的第一结构框图;

图2示出了本申请实施例提供的一种分布式存储系统中存储节点的结构框图;

图3示出了本申请实施例提供的一种分布式存储系统的第二结构框图;

图4示出了本申请实施例提供的一种主机的结构框图;

图5示出了本申请实施例提供的一种分布式存储的数据均衡方法的第一流程图;

图6示出了本申请实施例提供的一种分布式存储的数据均衡方法的第二流程图;

图7示出了本申请实施例提供的一种分布式存储的数据均衡装置的第一结构框图;

图8示出了本申请实施例提供的一种分布式存储的数据均衡装置的第二结构框图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部位的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

请参阅图1,本申请一些实施例提供了一种分布式存储系统10,其中,该分布式存储系统10可以是基于ceph架构实现的分布式存储系统,但并不作为限定,例如,其还可以是基于gluster、luster或sheepdog等架构实现的分布式存储系统。进一步的,该分布式存储系统10可以包括:多个存储节点11。

每个存储节点11可以与其它的至少一个存储节点11连接,使得多个存储节点11构成一定的拓扑关系。

如图2所示,在物理层面上,每个存储节点11可以是分布式存储系统10中的服务器,例如可以是多磁盘的大存储空间的存储型服务器,或功能比较均衡的通用服务器。进一步的,每个存储节点11可以包括:一个或多个处理器21、存储器22、通信机构23和多个磁盘24。该处理器21、存储器22和多个磁盘24可以通过通信机构23连接。

存储器22可以是例如,rom、或ram,或其任意组合。示例性地,存储器22可以用于存储程序指令。

磁盘24可以是固态或机械式的硬盘。

处理器21可以用于通过调用并运行存储在存储器22中的程序以执行本申请中所述的方法,并实现可以从相应的磁盘24读取数据,或者将数据写入到相应的磁盘24。

进一步的,在逻辑层面上,每个存储节点11可以包含多个pg(placementgroup、归置组)和多个osd(objectstoragedevice,对象存储设备),其中,归置组和对象存储设备均可以是由程序构成的逻辑概念。具体的,每个存储节点11可以获取由表示该拓扑关系的存储拓扑而生成的映射关系表,该映射关系表可以表示归置组和对象存储设备的对应关系。每个存储节点11利用该映射关系表,以及利用相应的归置组和对象存储设备对数据读写的管理功能,每个存储节点11可以进行相应的数据读写操作,即每个存储节点11可以将需要自身读写的数据执行相应读写操作,或将需要由其它存储节点11存储的数据发送到相应的存储节点11。

结合参阅图1和图3,本实施例中,该分布式存储系统10还可以包含主机12。

如图3所示,在一些情况下,该主机12可以是独立于存储节点11而存在的物理设备,例如,在数据量大的情况下,主机12可以是计算服务器或工作站,或者在性能要求不太高的情况下主机12还可以是pc(personalcomputer、个人电脑)。且根据系统需求,主机12的数量可以不止一个。

如图1所示,而在另一些情况下,主机12则可以是分布式存储系统10中一些特殊的存储节点11,例如可以是具有超融合功能的存储节点11,比如系统中的监控节点。

示例性的,主机12可以用于监控和管理分布式存储系统10中的存储节点11,例如实现监测自身的状态、相应归置组的状态、分布式存储系统10中相应磁盘24的状态、以及获取分布式存储系统10的存储拓扑并监测其是否发生变化。并且主机12还可以提供用于数据读写的接口,以便客户端通过该接口与分布式存储系统进行数据读写的交互。

请参阅图3和图4,该主机12中也可以包含由存储拓扑生成的映射关系表,并通过与分布式存储系统10的通信而将该映射关系表同步到每个存储节点11,使得每个存储节点11也利用该映射关系表来实现数据的读写。

其中,在该主机12是独立于存储节点11而存在的设备的情况下,该主机12可以包括:处理器31、存储器32和通信机构33。该处理器31和存储器22可以通过通信机构33连接,且该处理器31通过该通信机构33还可以与分布式存储系统10通信。存储器32可以是例如,磁盘、rom、或ram,或其任意组合。示例性地,存储器32可以用于存储程序指令。

处理器31可以用于通过调用并运行存储在存储器32中的程序以执行本申请中所述的方法,并实现将生成映射关系表同步到分布式存储系统10中的每个存储节点11。

请参阅图5,本申请的一些实施例提供了一种分布式存储的数据均衡方法,该分布式存储的数据均衡方法可以由分布式存储系统中的任一个存储节点执行。进一步的,该分布式存储的数据均衡方法可以包括:步骤s100、步骤s200、步骤s300和步骤s400。

步骤s100:根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表。

步骤s200:获取所述归置组的数量阈值。

步骤s300:对相应的所述存储节点中归置组的数量高于和/或低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值。

步骤s400:基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

下面将对本申请的方法的流程进行详细地描述。

步骤s100:根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表。

由于在分布式存储系统初始建立时还未进行过数据的读写,故需要基于存储拓扑生成映射关系表,以便后续进行数据读写。故利用主机对存储拓扑的监测,存储节点可以获取在分布式存储系统初始建立时对应的最新的存储拓扑。

此外,一旦存储节点之间的拓扑发生了变化,例如有些存储节点则可能不存在了,但若还按照原来的存储拓扑对应的映射关系表进行数据读写,则会导致还需要该不存在的存储节点来读写数据,进而导致数据无法被正确的读写。故利用主机对存储拓扑的监测,存储节点还可以获取存储节点之间的拓扑发生变化时对应的最新的存储拓扑。

本实施例中,为便于实现数据的读写,存储节点基于最新的存储拓扑可以以随机的方式生成用于表示每个存储节点中的对象存储设备与归置组对应的映射关系表。

示例性的,作为生成映射关系表的可选方式,存储节点便可以按照最新的存储拓扑,并基于crush这种伪随机算法来生成用于表示每个存储节点中的对象存储设备与归置组对应的映射关系表,当然采用crush算法并不作为限定,存储节点也可以采用其它的伪随机算法来生成映射关系表。

可以理解到的是,基于伪随机算法生成的映射关系表中每个存储对象设备对应的归置组的数量并不均匀,即任意两个存储对象设备对应的归置组的数量相差可能在20%以上。例如,存储对象设备a对应1000个归置组,但存储对象设备b对应1300个归置组。这样,存储节点便可以对归置组的数量不均匀的存储对象设备对应的归置组数量进行调整。

步骤s200:获取所述归置组的数量阈值。

本实施例中,存储节点中可以获取归置组的数量阈值。

作为一种方式,存储节点可以采用求平均的方式获取该数量阈值,即存储节点可以通过对每个对象存储设备对应的归置组的数量求平均,获得数量阈值。

作为另一种方式,存储节点可以采用预设的方式设置该数量阈值,例如,可以直接设置该数量阈值为1000。

此外,为便于实际应用,存储节点还可以在该数量阈值的基础上设置一个波动值,例如,波动值可以是2%,这样数量阈值基于该该波动值上下波动可以形成一个数量范围,即归置组的数量在数量范围内便可以认为是趋于该数量阈值。

能够理解到的是,若基于波动值的2%对归置组的数量进行调整,并使得调整后的每个对象存储设备对应的归置组的数量趋于该数量阈值,故可以使得调整后的任意两个对象存储设备对应的归置组的数量相差最大不超过4%,这样就可以将分布式存储系统中存储空间的利用率提高到96%左右。

当然,本实施例中所谓的波动值的2%为本实施例的例举说,其不作为对本实施例的限定。波动值可以根据实际使用需要进行选择,例如,实际中所需要存储空间具有更高的利用率,则可以将波动值设置的更小,使得预设数量范围的范围越小。

那么,在确定出数量阈值,存储节点后续便可以基于该数量阈值来对归置组的数量进行调整。

步骤s300:对相应的所述存储节点中归置组的数量高于和/或低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值。

于本实施例中,存储节点可以基于数量阈值,从归置组的数量高于数量阈值的对象存储设备对应的归置组中确定出待调出的归置组。然后,存储节点还可以基于从数量阈值,从归置组的数量低于数量阈值的对象存储设备中确定出每个待调出的归置组应调往的对象存储设备。

需要说明的是,为保证调整后分布式存储系统的稳定性,确定出的每个待调出的归置组应调往的对象存储设备可以满足:1.应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一故障域;2.应调往的对象存储设备当前对应的归置组中不包含该待调出的归置组;3.应调往的对象存储设备当前对应的归置组的数量加上该待调出的归置组趋于数量阈值。

其中,若一个设备故障会影响到另一设备的正常工作,那么这两设备则属于同一故障域,故不属于同一故障域可以指:应调往的对象存储设备所在的存储节点与该待调出的归置组当前对应的对象存储设备所在的存储节点不属于同一故障域;或应调往的对象存储设备本身与该待调出的归置组当前对应的对象存储设备本身不属于同一故障域;或应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一存储节点。

之后,存储节点便可以将每个待调出的归置组调整为与各自的应调往的对象存储设备对应。

本实施例中,作为选择并调整待调出的归置组的第一种可选方式,存储节点可以一次性的先选择出所有的待调出的归置组,再将每个待调出的归置组调整为与各自的应调往的对象存储设备对应。这样,一次性的全部调整后,使得调整后的所有对象存储设备对应的归置组的数量都可以趋于数量阈值。

或者,作为选择并调整待调出的归置组的第二种可选方式,存储节点可以按照归置组的数量由大至小的顺序,且每次调整以一个对象存储设备为单位依次进行调整。即存储节点可以从数量最多的归置组中选择出本次调整中的所有待调出的归置组,并将所有待调出的归置组调整为与各自应调往的对象存储设备对应。然后存储节点再判断本次调整后是否所有对象存储设备对应的归置组的数量都趋于数量阈值,若是,则调整结束,反之,则继续从下一个数量最多的归置组中选择出本次调整中的所有待调出的归置组,并进行调整,直至调整后的所有对象存储设备对应的归置组的数量都趋于数量阈值时结束调整。

例如,存储节点按照归置组数量为由大至小的顺序,先对对象存储设备a对应的992个归置组进行分析,从992个归置组中选择出待调出的归置组a1-a12,以及确定出符合条件的对象存储设备,并将待调出的归置组a1-a12调整为与各自的对象存储设备对应。然后,该对象存储设备a对应的归置组的数量则由992变化为980个,从而趋于数量阈值。然后,存储节点则继续按照归置组数量为由大至小的顺序,继续对对象存储设备b对应的984个归置组进行分析,从984个归置组中选择出待调出的归置组b1-b4,以及确定出符合条件的对象存储设备,并将待调出的归置组b1-b4调整为与各自的对象存储设备对应。然后,该对象存储设备b对应的归置组的数量则由984变化为980个,从而趋于数量阈值。

或者,作为选择并调整待调出的归置组的第三种可选方式,存储节点按照归置组的数量由大至小的顺序依次进行调整,即从当前数量最多的归置组中选择出本次调整中的一个待调出的归置组,并将该待调出的归置组调整为与应调往的对象存储设备对应。然后存储节点再判断本次调整后是否所有对象存储设备对应的归置组的数量都趋于数量阈值,若是,则调整结束,反之,则继续从当前数量最多的归置组中选择出本次调整中的一个待调出的归置组,并进行调整,直至调整后的所有对象存储设备对应的归置组的数量都趋于数量阈值时结束调整。

需要说明的是,在出现归置组数量最多的对象存储设备不止两个时,作为一种示例性的方式,无论归置组数量最多的对象存储设备中是否存在前一次调整过的对象存储设备,存储节点都随机的从归置组数量最多的对象存储设备中选择出本次需要调整的对象存储设备。或作为另一种示例性的方式,若归置组数量最多的对象存储设备存在前一次调整过的对象存储设备,那么存储节点本次便继续对该上一次调整过的对象存储设备进行调整;但若归置组数量最多的对象存储设备中不存在前一次调整过的对象存储设备,则存储节点可以随机的从归置组数量最多的对象存储设备中选择出本次需要调整的对象存储设备。

例如,存储节点按照归置组数量为由大至小的顺序,先对对象存储设备a对应的992个归置组进行分析,从992个归置组中选择出待调出的归置组a1,以及确定出符合条件的对象存储设备b,并将待调出的归置组a1调整为与对象存储设备b对应。然后,该对象存储设备a对应的归置组的数量则由992变化为991个,其数量仍然是最大的。这样,存储节点便可以继续对象存储设备a对应的991个归置组进行分析,从991个归置组中选择出待调出的归置组a2,以及确定出符合条件的对象存储设备c,并将待调出的归置组a2调整为与对象存储设备c对应。然后,该对象存储设备a对应的归置组的数量则由991则变化为990个。此时,若存在对象存储设备e对应的归置组的数量也为990个,那么存储节点可以继续对对象存储设备a对应的归置组进行调整,或者从对象存储设备a和对象存储设备e中随机选择出当前需要调整的对象存储设备,并继续执行调整,直至调整后所有对象存储设备对应的归置组的数量均趋于数量阈值。

还需要说明的是,选择出待调出的归置组的方式可以为按照归置组的编号随机、按照归置组的编号由大至小的顺序或按照归置组的编号由小至大的顺序选择出待调出的归置组,并针对该待调出的归置组判断是否有符合上述三个条件的应调往的对象存储设备。若是,则确定将该待调出的归置组调整为与符合条件的应调往的对象存储设备对应,否则则重新按照归置组的编号随机、按照归置组的编号由大至小的顺序或按照归置组的编号由小至大的顺序选择出待调出的归置组,并重新确定应调往的对象存储设备,直至确定出符合条件的应调往的对象存储设备。

可以理解到,实际中无论是采用随机还是采用按照大小顺序选择的方式,其都可以以快速且准确的确定出待调出的归置组。

当然,本实施例中对归置组数量的调整也不限于上述的方式,例如,在所有的对象存储设备中没有对象存储设备对应的归置组的数量大于数量阈值基于波动值向上波动的最大值时,则可以先选择出归置组的数量小于数量阈值基于波动值向下波动的最小值对应的待调入的对象存储设备,再从归置组的数量趋于数量阈值对应的对象存储设备中选出待调出的归置组,且该待调入的对象存储设备和待调出的归置组也满足上述的三个条件。从而再将待调出的归置组调整为与该待调入的对象存储设备对应。

步骤s400:基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

存储节点在确定调整后的每个对象存储设备对应的归置组的数量都趋于数量阈值,存储节点可以确定调整结束,从而存储节点便可以基于调整后的每个对象存储设备对应的归置组更新映射关系表,使得更新的映射关系表中每个对象存储设备对应的归置组的数量都趋于数量阈值。

这样,存储节点将该更新的映射关系表同步给分布式存储系统中的每个存储节点,使得包含该存储节点在内的每个存储节点都可以基于更新后的映射关系表通过与外部的客户端的交互而进行数据的读写。

需要说明的是,对映射关系表的更新的方式也不限于本实施例所采用的在调整结束后更新的方式,实际中其也可以采用其它方式,例如,在调整过程中,每一次调整归置组与对象存储设备的对应关系时,都同步的更新映射关系表,那么在调整结束后,映射关系表也同步的更新结束。

请参阅图6,本申请的一些实施例提供了一种分布式存储的数据均衡方法,该分布式存储的数据均衡方法可以由与分布式存储系统通信的主机执行,进一步的,该分布式存储的数据均衡方法可以包括:步骤s101、步骤s201、步骤s301、步骤s401和步骤s501。

步骤s101:根据所述分布式存储系统中存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表。

步骤s201:获取所述归置组的数量阈值。

步骤s301:对相应的所述存储节点中归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值。

步骤s401:基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

步骤s501:将更新后的所述映射关系表同步到每个所述存储节点。

需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的方法工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

请参阅图7,本申请实施例提供了一种分布式存储的数据均衡装置100,该分布式存储的数据均衡装置100也可以应用于分布式存储系统中的任一个存储节点,该分布式存储的数据均衡装置100可以包括:

映射关系生成模块110,用于根据所述存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表。

归置组数量获取模块120,用于获取所述归置组的数量阈值。

对应关系调整模块130,用于对相应的所述存储节点中归置组的数量高于和/或低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值。

映射关系更新模块140,用于基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

可选地,分布式存储的数据均衡装置100还可以包括:

拓扑关系获取模块150,用于获取在所述分布式存储系统初始建立时或在所述存储节点之间的拓扑发生变化时对应的所述存储拓扑。

可选地,分布式存储的数据均衡装置100还可以包括:

数据读写模块160,用于基于更新后的所述映射关系表,进行数据的读写。

可选地,所述对应关系调整模块130,还用于从归置组的数量高于所述数量阈值的对象存储设备对应的归置组中确定出待调出的归置组;从归置组的数量低于所述数量阈值的对象存储设备中确定出每个所述待调出的归置组应调往的对象存储设备,其中,每个所述待调出的归置组应调往的对象存储设备满足:所述应调往的对象存储设备与该待调出的归置组当前对应的对象存储设备不属于同一故障域,所述应调往的对象存储设备当前对应的归置组中不包含该待调出的归置组,所述应调往的对象存储设备当前对应的归置组的数量加上该待调出的归置组趋于所述数量阈值;将每个所述待调出的归置组调整为与各自的所述应调往的对象存储设备对应。

可选地,所述归置组数量获取模块120,还用于通过对每个所述对象存储设备对应的归置组的数量求平均获得所述数量阈值。

需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

请参阅图8,本申请实施例提供了一种分布式存储的数据均衡装置200,该分布式存储的数据均衡装置200也可以应用于与分布式存储系统通信的主机,该分布式存储的数据均衡装置200可以包括:

映射关系生成模块210,用于根据所述分布式存储系统中存储节点之间的存储拓扑,生成用于表示每个所述存储节点中的对象存储设备与归置组对应的映射关系表。

归置组数量获取模块220,用于获取所述归置组的数量阈值。

对应关系调整模块230,用于对相应的所述存储节点中归置组的数量高于和低于所述数量阈值的对象存储设备对应的归置组进行调整,使得调整后的每个所述对象存储设备对应的归置组的数量趋于所述数量阈值。

映射关系更新模块240,用于基于调整后的每个所述对象存储设备对应的归置组更新所述映射关系表。

映射关系同步模块250,用于将更新后的所述映射关系表同步到每个所述存储节点。

需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请一些实施例还提供了一种计算机可执行的非易失的程序代码的计算机可读储存介质,该计算机可读存储介质上存储有程序代码,该程序代码被计算机运行时执行上述任一实施方式的分布式存储的数据均衡方法的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的程序代码被运行时,以改善数据在存储过程中分布不均的问题,提高对存储空间的利用率。

本申请实施例所提供的数据调整方法的程序代码产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

综上所述,本申请实施例提供了一种分布式存储的数据均衡方法及装置。在生成每个存储节点中的对象存储设备与归置组对应的映射关系表的基础上,基于归置组的数量阈值,将数量高于和低于数量阈值的对象存储设备对应的归置组进行调整,从而使得每个对象存储设备对应的归置组的数量趋于数量阈值而比较均匀,故可以改善数据在存储过程中分布不均的问题,提高对存储空间的利用率。

以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1