掌桥专利:专业的专利平台
掌桥专利
首页

可用数据条带分片数确定方法及系统

文献发布时间:2023-06-19 18:35:48


可用数据条带分片数确定方法及系统

技术领域

本发明涉及分布式存储系统技术领域,尤其涉及一种可用数据条带分片数确定方法及系统。

背景技术

在分布式存储系统中,对数据通过多个节点实现分布式存储是指将数据进行分片(sharding)以执行数据切分,形成多个数据分片,再将不同的数据分片交由不同的节点进行存储的存储技术。在分布式存储系统上进行数据分布的主流方式有两种。

第一种数据分布方式中,为把数据均匀分割成10MB以内的较小的数据块,然后基于一致性哈希算法把这些数据块分布到集群服务器中各个节点的不同磁盘上。该方法比较适用于大型的分布式存储系统,其优点是不需要一个统一的元数据存储服务,查找分片位置的时候可以直接计算。第二种数据分布方式是把数据分割成有限数量的数据块(Block),在创建存储对象的时候使用规则自动生成这个存储对象的数据分布方案,并且把生成的分布方案使用元数据存储服务记录下来。第二种数据分布方式比较适用于小型分布式存储系统,以便于控制数据分片的位置,并可以实现数据本地化等特殊场景的需求。

在第二种数据分布方式中,首先根据集群服务器中可用磁盘数量和数据保存的副本数量策略,计算出可用的条带分片数,随后按照一定的组合顺序尝试为每个条带分片的几个副本分配磁盘。每次分配的时候都是先为条带上的分片的一个副本分配磁盘,把整个条带上所有分片的一个副本都分配了磁盘之后,再为整个条带上所有分片的下一个副本分配磁盘。然而,每次取出一个节点时,都用完这个节点上面全部可用磁盘,除非会导致同一个条带分片的多个副本落在相同节点上。然而,集群服务器所部署的各个节点中的可用磁盘数量极其不均衡,如果各节点上的可用磁盘数量极不均衡时,则采用第二种数据分布方式会导致分配磁盘给数据分片的效率非常低下,即便是一个不可能达成分布的条带分片数,也需要尝试完所有的排列方式(即,图2至图7所示出的六种排列)之后,才会把条带分片数减少1,然后再次重复前述过程。参图1所示,申请人以一个集群服务器包含三个节点(即node1、node2、node3)且每节点包含四块磁盘(node1包含disk1~disk4,node2包含disk5~disk8,node3包含disk9~disk12)场景为例,对一个文件对象(即,root数据)进行数据分布予以范例性说明。如果要求每个数据分片都有两个副本,且数据分片尽可能使用较多的磁盘。当集群服务器中所有磁盘空间足够的时候,则可用磁盘总数为3×4=12,根据副本数量和总磁盘数,可以计算出可以使用的条带分片数:12÷2=6。参图2至图7所示,数据条带分片数为3,此时整个root数据被切分为6个条带分片,每个分片数据有两个副本(即,mirror0与mirror1),需要使用两块处于不同节点上的磁盘来保存两个分片数据,以避免将相同副本序号的两个或者更多的条带保存在同一个节点。

按照生成数据分布方案的流程,首先为条带stripe1到条带stripe6的副本mirror0分配磁盘,按照节点组合的顺序首先使用节点1上的磁盘,因此依次为stripe1mirror0、stripe2 mirror0、stripe3 mirror0、stripe4 mirror0分配使用了节点1上的四块磁盘,此时节点1上的可用磁盘已经用完,因此接下来转到节点2上并为stripe5 mirror0和stripe6 mirror0分配了两块磁盘,此时整个条带的mirror0副本都已经分配完成,接下来转到mirror1副本,而节点2上还有两个可用磁盘,因此为stripe1 mirror1和stripe2mirror1分配使用节点2上的剩余两个可用磁盘,再转到节点3,把节点3上的四块磁盘逐一分配给stripe3 mirror1,stripe4 mirror1,stripe5 mirror1和stripe6 mirror1。这样所有的条带分片都已经分配了两个副本,以满足副本数量要求。

例如,构成集群服务器的三个节点中的可用磁盘数量分别为4,1,1。若规定的副本数量为2时,通过计算可以得出条带分片数为(4+1+1)÷2=3。但是,由于相同分片的两个副本不可以位于同一个节点,所以有四块磁盘的节点上最多只能使用三块磁盘,因此无论如何排列节点顺序都无法按照条带分片数3来取得可用的分布,因此在尝试了所有的排列顺序之后都不能成功,之后把条带分片数变为2,此时可以找到可用的分布方案。在该场景中,当条带分片数为3时,尝试了三个节点所有的六种排列都无法找到合理的数据分布方案。把条带分片数减到2之后,可以找到可用的数据分布方案。但是,当集群服务器中节点数量增加时,该方法耗时及资源消耗巨大。例如一个十个节点的集群服务器,则十个节点所形成的排列组合数量为10的阶乘(即,10!)共3628800种不同的组合,并由此导致计算可用数据条带分片数的计算消耗巨大。因此,目前用于确定可用数据条带分片数的现有技术不可能在较短时间之内生成可用的数据分布策略,且即使生成了可用的数据分布策略,也会对分布式存储系统造成巨大且无意义的资源开销,并由此导致分布式存储系统对用户发起的数据读写请求的响应能力不足。

有鉴于此,有必要对现有技术中的分布式存储系统中数据条带分片数确定方法等技术予以改进,以解决上述技术问题。

发明内容

本发明的目的在于揭示一种可用数据条带分片数确定方法及系统,用以实现分布式存储系统所含各个节点中可用磁盘数量极其不均衡的场景下,用以实现在较短时间内快速地确定各个节点中可用数据条带分片数,以提高分布式存储系统对数据读写请求的响应能力。

为实现上述发明目的之一,本发明提供了可用数据条带分片数确定方法,应用于分布式存储系统,

包括:

确定当前状态中各节点所形成的可用磁盘数量、副本数量及节点数量,以计算当前状态中的数据条带分片数;

对组成分布式存储系统的每一个节点循环迭代计算,直至当前状态中数据条带分片数不低于分布式存储系统中任一节点上所形成的可用磁盘数量时,将由最后一次循环迭代计算所确定的数据条带分片数作为可用数据条带分片数。

作为本发明的进一步改进,当对组成分布式存储系统的每一个节点循环迭代计算任一节点上所形成的可用磁盘数量高于当前状态中的数据条带分片数时,将数据条带分片数逐步递减,其中,所述当前状态中的数据条带分片数为分布式存储系统中所含全部节点中在当前状态中的可用磁盘数量之和与副本数量所形成的商。

作为本发明的进一步改进,当任一节点上所形成的可用磁盘数量高于当前状态中的数据条带分片数时,根据所述当前状态的副本数量逐步递减数据条带分片数,并将可用磁盘数量高于当前状态中的数据条带分片数所在节点的可用磁盘数量设定为下一次循环迭代计算所述节点中的可用磁盘数量,以重新确定下一次循环迭代计算所确定的数据条带分片数。

作为本发明的进一步改进,根据所述当前状态的副本数量对数据条带分片数逐步递减时向下取整。

作为本发明的进一步改进,所述分布式存储系统所包含的节点所包含的可用磁盘数量为非均匀分布,所述节点由机械硬盘、固态硬盘或者包含机械硬盘和/或固态硬盘的物理机组成。

作为本发明的进一步改进,还包括:根据所述可用数据条带分片数确定各个节点中所能够形成的最大的数据条带分片数及数据条带分片在分布式存储系统的各个节点中的分布位置。

作为本发明的进一步改进,还包括:生成包含可用数据条带分片数的条带数据分片策略,以基于所述条带数据分片策略将保存至分布式存储系统的数据存储对象予以切分,以形成若干数据分片。

作为本发明的进一步改进,在将由最后一次循环迭代计算所确定的数据条带分片数作为可用数据条带分片数之后,还包括:以分布式存储系统中各个节点中所包含的可用存储空间为权重,随机生成节点序列,以根据所述节点序列确定下一次执行迭代计算所针对的节点。

作为本发明的进一步改进,在随机生成节点序列之后,还包括:

初始化当前节点中数据条带的分片序号与副本序号,判断是否存在下一个可用节点,若是,判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本,若否,认定为分配可用磁盘失败并结束。

作为本发明的进一步改进,所述判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本包括以下逻辑:

若当前节点存在下一个可用磁盘分配给当前状态的数据分片条带副本时,判断当前数据条带的所有数据分片的当前副本是否均被分配;

若当前节点不存在下一个可用磁盘分配给当前状态的数据分片条带副本时,重新执行判断是否存在下一个可用节点的判断。

作为本发明的进一步改进,所述判断当前数据条带的所有数据分片的当前副本是否均被分配包括以下逻辑:

若当前数据条带的所有数据分片的当前副本均被分配,判断当前状态中数据条带分片数是否不低于分布式存储系统中任一节点上所形成的可用磁盘数量;

若当前数据条带的所有数据分片的当前副本均未被分配,将数据分片的分片序号加1且保持副本序号不变,重新执行判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本的判断。

作为本发明的进一步改进,所述判断当前状态中数据条带分片数是否不低于分布式存储系统中任一节点上所形成的可用磁盘数量包括以下逻辑:

若是,认定分配可用磁盘成功并结束;

若否,将分片序号重置为0并将副本序号加1,并重新执行判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本的逻辑。

基于相同发明思想,本发明还揭示了一种可用数据条带分片数确定系统,部署于分布式存储系统,包括:存储管理模块与数据分片管理模块;

所述存储管理模块接收创建数据存储对象请求,将所述存储管理模块生成数据分片策略生成请求发送至数据分片管理模块;

所述数据分片管理模块执行如上述任一项发明创造所述的可用数据条带分片数确定方法的步骤,并向所述存储管理模块返回包含用于确定可用数据条带分片数的数据分片策略。

作为本发明的进一步改进,还包括:连接所述存储管理模块的元数据服务器;所述元数据服务器部署一元数据存储服务,所述元数据存储服务保存所述数据分片策略。

与现有技术相比,本发明的有益效果是:

在本申请中,可将计算出的数据条带分片数与各个节点的可用磁盘数量进行比较,并对各个节点的可用磁盘数量通过多次循环迭代计算,以得到可用数据条带分片数收敛到足以保证形成可用数据分布的合理数值,从而减少了各个节点间由于可用磁盘数极其不均衡所导致的试错时间,从而减少了分布式存储系统造成巨大且无意义的资源开销,并提高了分布式存储系统对数据读写请求的响应能力。

附图说明

图1为现有技术中一个集群服务器包含三个节点且每个节点包含四块磁盘所构建的分布式存储系统场景中,将root数据切分为六个条带分片(stripe)且每个条带分片具两个副本(即,mirror0与mirror1)分配至三个节点(即,node1~node3)所形成的数据分片分布示意图;

图2为数据条带分片数为3尝试第一种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图3为数据条带分片数为3尝试第二种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图4为数据条带分片数为3尝试第三种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图5为数据条带分片数为3尝试第四种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图6为数据条带分片数为3尝试第五种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图7为数据条带分片数为3尝试第六种排列无法找到合理的数据分布的示意图,其中,数据分片stripe2mirror1无法找到可用磁盘;

图8为本发明一种可用数据条带分片数确定方法的整体流程图;

图9为本发明一种可用数据条带分片数确定方法的详细流程图;

图10为基于本发明一种可用数据条带分片数确定方法在运行该可用数据条带分片数确定方法的分布式存储系统的同一个节点为数据分片分配磁盘的详细流程图;

图11为经过在一种实施例中经过四次循环迭代计算以确定出最终的可用数据条带分片数的示意图;

图12为本发明一种可用数据条带分片数确定系统的拓扑图。

具体实施方式

下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。

需要说明的是,当一个元件/逻辑单元被认为是“连接”另一个元件/逻辑单元,它可以是直接连接到另一个元件或者可能同时存在居中元件,也是可以由计算机可执行程序封装形成的逻辑单元之间的交互和/或会话。在详细阐述本申请所含技术方案及发明思想之前,对本申请所涉及的部分术语或者缩写所指技术含义予以简述或者定义。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。

在详细阐述本申请各个实施例之前,对各实施例中所涉及的主要技术术语及英文缩写的含义予以必要解释或者定义。术语“节点(node)”(即,图1至图7中的node1、node2及node3)与术语“节点服务器”或者术语“HOST”具等同含义。如无特殊说明,本申请各个实施例中的术语“磁盘”是指物理磁盘,物理磁盘包括但不限于机械硬盘、磁带、RAID、固态硬盘或者NVMe(Non-Volatile Memory express)。术语“集群”(或者“集群服务器”)泛指由多个物理磁盘(即,图12中的磁盘201、磁盘202至磁盘20i,其中,参数i取大于或者等于1的正整数)所构成的分布式存储系统200或者由多个物理服务器,且每个物理服务器中包含一个或者多个物理磁盘所构成的分布式存储系统。申请人通过下述具体实施方式对本发明所揭示的一种可用数据条带分片数确定方法及一种可用数据条带分片数确定系统的具体实现过程予以范例性阐述。

参图8至图11所揭示的本发明一种可用数据条带分片数确定方法的一种具体实施方式。该可用数据条带分片数确定方法(以下或简称“确定方法”)用于对分布式存储系统200中可用数据条带分片数予以快速且准确地确定,以在较短时间内快速地确定各个节点中可用数据条带分片数,从而提高分布式存储系统200对数据读写请求的响应能力(即,IOPS与TPS)。

由于数据分片对用户(应用层)是透明的,因此用户不会知道其向构成分布式存储系统200发起的数据操作请求(即,写入数据操作、修改数据操作、迁移数据操作、删除数据操作等计算机操作)究竟在发生在构成分布式存储系统200所含多个节点中的哪个节点中。采用分布式存储架构,可以突破单个节点的I/O性能限制,确保由分布式存储系统200的计算机系统(例如,云平台或者数据中心)扩展性的问题。数据分片所形成的条带分片数是指将一个待存储数据副本进行分片的分片数。在进行分片数据存储时,待存储的主数据及备份数据均需要以相同的分片方式进行分片,从而得到相同的数据分片。通常地,条带分片数越高,存储到存储节点中的数据分片的分片数越多,从而减少数据分片粒度,以更容易地将数据均匀地存储到集群的各个节点中,以实现分布式存储系统200中各节点的负载均衡及数据容灾备份的可靠性。

一种可用数据条带分片数确定方法,应用于分布式存储系统200(参图12所示),其中,分布式存储系统200所包含的节点所包含的可用磁盘数量为非均匀分布,节点(node)由机械硬盘、固态硬盘或者包含机械硬盘和/或固态硬盘的物理机组成。

该可用数据条带分片数确定方法包括如下步骤S1及步骤S2,且该可用数据条带分片数确定方法尤其适用于组成分布式存储系统200的多个节点中所含可用磁盘极其不均衡的应用场景,并通过该方法以极低的计算开销快速收敛至一个合理的可用数据条带分片数,以根据可用数据条带分片数确定某一个root数据在数据条带化过程中,究竟要需要被切分的条带宽度(或者也可被理解为“可用数据条带分片数”的数值)及副本数量。例如,mirror0与mirror1代表副本数量为2,stripe0与stripe代表条带宽度(stripe width)。同时,数据条带化过程就是将连续的数据(例如,root数据)分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。

步骤S1、确定当前状态中各节点所形成的可用磁盘数量、副本数量及节点数量,以计算当前状态中的数据条带分片数。

当对组成分布式存储系统200的每一个节点循环迭代计算任一节点上所形成的可用磁盘数量高于当前状态中的数据条带分片数时,将数据条带分片数逐步递减,其中,当前状态中的数据条带分片数为分布式存储系统200中所含全部节点中在当前状态中的可用磁盘数量之和与副本数量所形成的商。假设当前状态中全部节点的可用磁盘数量之和为12,副本数量为2,则在本次循环迭代计算中所形成的商为12除以2,从而确定出商为6,并在下一次循环迭代计算中将具有较多磁盘数的节点的可用磁盘数量设为6,尽管此时该节点中依然有10块磁盘,那么其他4块磁盘依然不会作为用于保存分片数据的可用磁盘之用。

当任一节点上所形成的可用磁盘数量高于当前状态中的数据条带分片数时,根据当前状态的副本数量逐步递减数据条带分片数,并将可用磁盘数量高于当前状态中的数据条带分片数所在节点的可用磁盘数量设定为下一次循环迭代计算所述节点中的可用磁盘数量,以重新确定下一次循环迭代计算所确定的数据条带分片数。具体而言,多次的循环迭代计算所针对的节点为node1,则前述将可用磁盘数量高于当前状态中的数据条带分片数所在节点的可用磁盘数量设定为下一次循环迭代计算所针对的节点依然是node1。因此,在确定下一次循环迭代计算所确定的数据条带分片数的过程中,在每一次循环迭代计算过程中数据条带分片数的递减幅度由大变小,并趋于收敛状态,从而进一步降低计算可用数据条带分片数所消耗的计算资源与计算开销。优选地,在本实施例中,根据当前状态的副本数量对数据条带分片数逐步递减时向下取整。

步骤S2、对组成分布式存储系统的每一个节点历经至少一次循环迭代计算,直至当前状态中数据条带分片数不低于分布式存储系统中任一节点上所形成的可用磁盘数量时,将由最后一次循环迭代计算所确定的数据条带分片数作为可用数据条带分片数。最后一次循环迭代计算所确定出的可用数据条带分片数被确定为条带数据分片策略并予以生成,以基于条带数据分片策略将保存至分布式存储系统的数据存储对象(即,root数据的上位概念)予以切分,以形成若干数据分片,并最终将若干数据分片分别保存至三个节点中。在实施例中,root数据被最终切分形成四个数据分片,并保存在node1~node3中。

每一次循环迭代计算对应于图9中虚线框11所含的步骤110、步骤111与步骤112。虚线框11所含步骤循环地执行后,进一步跳转执行虚线框12中所含的步骤121、步骤122及步骤123。

结合图9所示,该可用数据条带分片数确定方法还包括:根据可用数据条带分片数确定各个节点中所能够形成的最大的数据条带分片数及数据条带分片在分布式存储系统的各个节点中的分布位置。

具体而言,在本实施例中,首先执行步骤121、可用数据条带分片数计算完毕,并生成可用生成条带数据分片策略。条带数据分片策略生成后,以基于条带数据分片策略将保存至分布式存储系统200的数据存储对象(例如,root数据)予以切分,以形成若干数据分片。通过多次循环迭代计算确定可用数据条带分片数的计算,并在计算完毕后确定可用数据条带分片数,从而生成可用数据条带分片策略。在将由最后一次循环迭代计算所确定的数据条带分片数作为可用数据条带分片数之后,还包括跳转执行步骤122:以分布式存储系统200中各个节点中所包含的可用存储空间为权重,随机生成节点序列。示例性地,节点序列为分布式存储系统200中三个节点中各个数据分片的保存入节点中顺序。最后,执行步骤123:根据节点序列确定下一次执行迭代计算所针对的节点。假设虚线框11所指循环迭代计算过程所针对的节点是node1,则根据生成的节点序列确定下一次执行迭代计算所针对的节点,例如,在先生成的节点序列为[1,2,3],则下一次执行迭代计算所针对的节点则是node2。

结合图11所示,申请人以三个节点(即,node1、node2、node3)所组成的分布式存储系统200的实例场景予以范例性阐述。同时,三个节点也可以部署形成集群服务器。当前状态是针对每一轮循环迭代计算而言的一种状态。在本申请所揭示的实例中,需要进行四次循环迭代计算状态,从而呈现出五个当前状态,即,三个节点中的可用磁盘数量依次从[10,1,1]的当前状态通过第一次循环迭代计算变化为可用磁盘数量为[6,1,1]的当前状态,然后通过第二次循环迭代计算变化为可用磁盘数量为[4,1,1]的当前状态,然后通过第三次循环迭代计算变化为可用磁盘数量为[3,1,1]的当前状态,最终通过第四次循环迭代计算变化为可用磁盘数量为[2,1,1]的当前状态并结束。多次循环迭代计算所确定的数据条带分片数作为可用数据条带分片数。因此,在本实施例中,历经了四次循环迭代计算,最终计算并确定的数据条带分片数为2,从而将2作为可用数据条带分片数。

为进一步阐述前述技术方案所蕴含的技术思想,申请人结合图11予以进一步具体分析。在第一个当前状态中,假设node1有10块可用磁盘,node2有1块可用磁盘,node3有1块可用磁盘。此时,三个节点中在第一个当前状态中可用磁盘的分布是极其不均衡的。node1在第一个当前状态中有10块磁盘并均作为当前状态中的1块可用磁盘,node2在第一个当前状态中有1块磁盘并均作为当前状态中的1块可用磁盘,node2在第一个当前状态中有1块磁盘并均作为当前状态中的1块可用磁盘。需要说明的是,在对root数据进行条带化过程中,对root数据进行切分形成多个分片数据,并对该等分片数据进行保存时,仅仅是根据第一个当前状态所确定的数据条带分片数确定切分粒度及存放位置。需要说明的是,客观上node1~node3中还可包括一个或者多个其他磁盘,只不过这些磁盘并非用于保存用户对分布式存储系统200所发起的读写请求所针对的其他数据或者root数据。在执行第一次循环迭代计算过程中,node1~node3对某个特定的root数据执行数据切分所形成的分片数据进行保存的可用磁盘数量为12个(即,12+1+1),副本数量为2(即,形成mirror0与mirror1),节点数量为3。由此,在第一个当前状态中的数据条带分片数为分布式存储系统200中所含全部节点中在第一个当前状态中的可用磁盘数量之和与副本数量所形成的商为6(即,12/2=6)。由此计算出对第一个节点执行循环迭代计算所确定的数据条带分片数为6,此时会形成6个分片数据(即,stripe0~stripe5),每个分片数据有2个副本,副本序号分别为mirror0与mirror1,从而形成12个描述符。此时,如果向原先有10块磁盘的节点保存7个数据分片(或者8个数据分片或者更多的数据分片)均会导致有2个(或者更多个)相同数据分片的不同副本写入同一个节点中,显然这是不允许的。即使具有10块可用磁盘的某个节点客观上仍有4块磁盘未被分配使用,也不能被写入分片数据。因此,需要执行第二次循环迭代计算。例如,stripe1mirror0与stripe1mirror1这两个分片数据,分片序号均为1,mirror0与mirror1为两个不同副本。因此,本申请所揭示的技术方案旨在每一次循环迭代计算过程确保避免具有相同分片序号的不同副本所形成的两个(甚至更多个)的分片数据被写入同一个节点中。

同理所述,在第二次循环迭代计算以第一次循环迭代计算结果为基础。因此,在第二个当前状态中,node1中形成6块可用磁盘,node2中形成1块可用磁盘,node3中形成1块可用磁盘,此时,三个节点中形成8块可用磁盘,并形成可用磁盘数量为[6,1,1]的第二个当前状态。由于副本数量依然为2,因此,在第二个当前状态中的数据条带分片数为分布式存储系统200中所含全部节点中在第二个当前状态中的可用磁盘数量之和与副本数量所形成的商为4(即,8/2=4)。数据条带分片数逐步递减幅度为2,并最终计算出在第二次循环迭代计算得到的数据条带分片数为4,此时会形成4个分片数据。因此,如果第二次循环迭代计算所针对的当前节点中即使依然有10块磁盘,当前节点(即,node1)则最多也只能保存4个分片数据,并将剩余2个分片数据保存在其他两个节点(即,node2与node3)中,以避免同一个节点保存两个具有相同分片序号的不同副本的分片数据。

进一步地,再执行第三次循环迭代计算,并以第二次循环迭代计算的结果为基础。此时,三个节点中形成6块可用磁盘,并形成可用磁盘数量为[4,1,1]的第三个当前状态。由于副本数量依然为2,因此,在第三个当前状态中的数据条带分片数为分布式存储系统200中所含全部节点中在第三个当前状态中的可用磁盘数量之和与副本数量所形成的商为3(即,6/2=3),由此使得在本次循环迭代计算所确定的数据条带分片数为3,并形成可用磁盘数量为[3,1,1]的第四个当前状态。此时如果在当前节点中则最多也只能保存3个分片数据。两个具有相同分片序号且不同副本的分片数据不允许被保存至同一节点,即使当前节点(即,node1)存在4块可用磁盘,则依然不允许被写入,并将剩余2个分片数据保存在其他两个节点(即,node2与node3)中,以避免同一个节点保存两个具有相同分片序号且不同副本序号的分片数据。

最后,继续重复上述循环迭代计算步骤,并执行第四次循环迭代计算。此时,三个节点中形成5块可用磁盘,并形成可用磁盘数量为[3,1,1]的第四个当前状态。同时,在本申请中,需要根据第四当前状态的副本数量对数据条带分片数逐步递减时向下取整。由于副本数量依然为2,因此,在第四个当前状态中的数据条带分片数为分布式存储系统中所含全部节点中在第四个当前状态中的可用磁盘数量之和与副本数量所形成的商为2.5(即,5/2=2.5),通过向下取整计算后,使得最终被确定的数据条带分片数为2(即,对2.5向下取整而计算得到2),并形成可用磁盘数量为[2,1,1]的第五个当前状态。此时,对于副本数量为2,数据条带分片数为2且节点数量为3的分布式存储系统200而言,原来具有10块可用磁盘的当前节点(例如,node1)中能够用于保存数据分片的可用磁盘数已经变更为2,node2与node3中能够用于保存数据分片的可用磁盘数依然均为1。此时,node1中只能写入2个分片数据,并将其他两个分片数据分别写入node2与node3中分别具有的1个可用磁盘中,且不存在两个具有相同分片序号的分片数据保存保存至同一节点的可能性。至此,对当前节点(即,node1)所执行的多次循环迭代计算的过程结束,并得到最终可用数据条带分片数为2的结果,而可用数据条带分片数为2也就是最终被确定的条带宽度,且此时历经多次循环迭代计算所针对的节点(例如,node1)的循环迭代计算结束,此时node1中只有两块磁盘可被作为写入分片数据的可用磁盘。需要说明的是,循环迭代计算的次数可为1次,也可为2次或者多次。

最后,通过图10所示出的步骤执行分布式存储系统200的同一个节点为数据分片分配磁盘的操作。参图10所示,在本实施例中,在随机生成节点序列之后,并具体为当步骤123结束后,该可用数据条带分片数确定方法还包括如下步骤301至步骤309。

步骤301、初始化当前节点中数据条带的分片序号与副本序号,并跳转执行步骤302、判断是否存在下一个可用节点,若是,跳转执行步骤303、判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本,若否,认定为分配可用磁盘失败并结束,参步骤309。参图2所示,stripe0中的“0”是分片序号,当分片序号加1后,则变成stripe1。mirror0中的“0”是副本序号,当副本序号加1后,则变成mirror1,并以此类推。一个分片序号与一个副本序号共同组成了一个用于唯一描述某个具体数据分片的描述符,从而通过唯一的描述符记载数据分片在各个节点中的保存位置。

同时,结合图2至图7所示,本申请所揭示的可用数据条带分片数确定方法旨在避免相同分片序号和/或相同副本序号所对应的两个数据分片保存在同一个节点中。例如,图2中node1中的stripe2mirror0与stripe2mirror1不能保存在node1中,且此时分布式存储系统200中所包含的三个节点的节点序列为[1,2,3]。又例如,图6中stripe2mirror0与stripe2mirror1不能保存在node1中且此时分布式存储系统200中所包含的三个节点的节点序列为[2,3,1]。由此,避免将相同分片序号的两个不同副本(例如,stripe2mirror0与stripe2mirror1)所对应的两个数据分片保存在同一个节点中。

在步骤303中,判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本包括以下逻辑:若当前节点存在下一个可用磁盘分配给当前状态的数据分片条带副本时,则进一步跳转执行步骤304、判断当前数据条带的所有数据分片的当前副本是否均被分配;若当前节点不存在下一个可用磁盘分配给当前状态的数据分片条带副本时,重新执行判断是否存在下一个可用节点的判断,并再次循环执行步骤302与步骤303的判断逻辑。在本实施中,步骤303的判断逻辑若为否,则证明当前节点没有可用磁盘或者继续将条带的副本分配至该节点会导致同一条带分片的两个副本位于同一节点。

步骤304中判断当前数据条带的所有数据分片的当前副本是否均被分配包括以下逻辑:若当前数据条带的所有数据分片的当前副本均被分配,判断当前状态中数据条带分片数是否不低于分布式存储系统200中任一节点上所形成的可用磁盘数量;若当前数据条带的所有数据分片的当前副本均未被分配,跳转执行步骤305、将数据分片的分片序号加1且保持副本序号不变,重新执行判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本的判断。步骤305执行完毕后重新跳转执行步骤303。前述当前副本为在任意一个当前状态中的数据分片条带副本,例如,在最后一次循环迭代计算所确定出并写入node1中的stripe0mirror0与stripe1mirror0,写入node2中的stripe0mirror1,写入node3中的stripe1mirror1,stripe0mirror0与stripe0mirror1为两个在最后一个当前状态(即,第五个当前状态)中stripe0的两个当前副本,stripe1mirror0与stripe1mirror1为两个在最后一个当前状态(即,第五个当前状态)中stripe1的两个当前副本。

然后,执行步骤306、判断当前状态中数据条带分片数是否不低于分布式存储系统200中任一节点上所形成的可用磁盘数量包括以下逻辑:若是,则执行步骤307、认定分配可用磁盘成功并结束;若否,执行步骤308、将分片序号重置为0并将副本序号加1,并重新执行判断当前节点是否存在下一个可用磁盘分配给当前状态的数据分片条带副本的逻辑。步骤308执行完毕后重新跳转执行步骤303。

步骤309、认定为分配可用磁盘失败并结束。

承前所述,当最终确定的可用数据条带分片数为2时,则该分布式存储系统200中的三个节点中形成了4块可用磁盘。那么会将node1中的2块可用磁盘用于保存stripe0mirror0与stripe1mirror0,将node2中的1块可用磁盘用于保存stripe0mirror1,将node3中的1块可用磁盘用于保存stripe1mirror1,至此,对三个节点中可用磁盘用于保存具有唯一描述符的数据分片的分配流程结束。

然而,上述诸如[2,1,1]的节点序列是可变的,并可根据节点的实际运行情况及容量予以自适应调节。例如,节点序列还可为[1,2,1],此时node1中的1块可用磁盘用于保存stripe0mirror0,node2中的2块可用磁盘用于保存stripe0mirror1与stripe1mirror0,node3中的1块可用磁盘用于保存stripe1mirror1。同时,节点序列还可为[1,1,2]。此时node1中的1块可用磁盘用于保存stripe0mirror0,node2中的1块可用磁盘用于保存stripe0mirror1,将node3中的2块可用磁盘用于保存stripe1mirror0与stripe1mirror1。以上三种节点序列均能够确保具有相同描述符的两个数据分片不会保存至同一节点中,以避免相同分片序号的不同副本所形成的两个或者多个数据分片被保存至同一个节点中的多个磁盘,从而避免造成数据分片发生冲突现象。需要说明的是,如无特征说明,在本申请中,数据分片与分片数据含义相同。

综上所述,通过本申请所揭示的可用数据条带分片数确定方法,能够显著地提高分布式存储系统200的IOPS(即,每秒I/O操作次数)与TPS(即,数据传输率),从而提高了分布式存储系统200对用户发起的数据读写请求的响应能力。尤其地,在本实施例中,通过一次或者多次的循环迭代计算最终得出的可用数据条带分片数能够收敛于一个恰好确保形成可用的分片数据保存位置,因此可显著地减少了由于各个节点间基于在第一个当前状态中可用磁盘数极其不均衡的客观原因所导致的试错时间,并减少了分布式存储系统200造成巨大且无意义的资源开销。最后,相对于现有技术中需要反复尝试不同分片数量以确定条带宽度的技术方案而言,本实施例所揭示包括3个节点的分布式存储系统200的可用数据条带分片数确定方法无需从24种不同的组合中试错出合理的可用数据条带分片数,并通过收敛方法代替对3个节点的排列试错后,再逐步递减数据条带分片数(即,递减条带宽度),从而极大地降低了计算可用数据条带分片数的计算开销,缩短了计算可用数据条带分片数的计算时间,并有效地避免了同一个数据条带的两个或者多个副本被保存至同一个节点中的技术问题。

基于前述实施例所揭示的一种可用数据条带分片数确定方法所包含的技术方案,本申请还揭示了一种可用数据条带分片数确定系统100。

参图12所示,一种可用数据条带分片数确定系统100,部署于分布式存储系统200。可用数据条带分片数确定系统100包括:存储管理模块20、数据分片管理模块30以及连接存储管理模块20的元数据服务器40。用户通过图形界面10及网络11与可用数据条带分片数确定系统100建立会话,以向可用数据条带分片数确定系统100发起创建数据存储对象请求。数据存储对象请求包括但不限于向分布式存储系统发起写入数据、修改数据、迁移数据或者创建文件等计算机事件。同时,本申请对分布式存储系统200的类型并不需要予以具体限定,诸如,基于Hadoop分布式文件系统(HDFS)、Ceph、DAS、NAS、SAN等类型均可适用。分布式存储系统200可部署i个磁盘,例如图12中的磁盘201~磁盘20i。i个磁盘通过虚拟化技术形成多个节点(例如,node1~node3,但绝非仅限于这个三个节点)。鉴于将物理态的i个磁盘虚拟化呈多个节点为成熟的现有技术且并非本申请的发明点,故,在本说明书中予以省略阐述。

存储管理模块20接收创建数据存储对象请求,将存储管理模块20生成数据分片策略生成请求发送至数据分片管理模块30。数据分片管理模块30执行如上述实施例所揭示的一种可用数据条带分片数确定方法的步骤,并向存储管理模块20返回包含用于确定可用数据条带分片数的数据分片策略。可用数据条带分片数通过存储管理模块20以通知形式发送至网络11,并最终被用户所获知。元数据服务器40部署一元数据存储服务41,元数据存储服务41保存数据分片策略,从而根据数据分片策略确定基于用户发起的读写请求所针对的数据存储对象(例如,某个root数据)执行数据切分后所形成的多个数据分片的保存位置,并记录保存位置,从而满足后续通过多个数据分片组成一个完整的数据存储对象,并向用户予以反馈。元数据存储服务41保存节点数量、节点名称、每个节点逻辑上被划分形成的磁盘、副本数量、数据分片等保存位置等元数据。

本实施例所揭示的可用数据条带分片数确定系统100与前述实施例所揭示的可用数据条带分片数确定方法中具有相同技术方案,参前文所述,在此不再赘述。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

相关技术
  • 一种用于确定大数据存储系统的数据平衡性的方法及系统
  • 一种基于数据传输确定数据分片的方法和相关装置
  • 能量管理系统分片实时数据库的数据分片方法
技术分类

06120115628985