一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据处理方法、装置、设备及可读存储介质与流程

2022-12-09 10:12:33 来源:中国专利 TAG:


1.本技术涉及存储技术领域,特别是涉及一种数据处理方法、装置、设备及可读存储介质。


背景技术:

2.基于分布式存储软件提供统一的存储资源池,分布式存储集群可以扩展到数千个节点eb级别容量。分布式存储系统的数据冗余保护一般采用多副本和纠删技术。其中,纠删技术通过用k m表示,例如4 2的纠删技术,数据会被切分成4个相同大小的分片,并通过校验算法生成2个同样大小的校验分片p和q,纠删具有较好的存储可用空间,但校验码的计算有性能损耗且相对于副本技术io性能较低。
3.在有限的硬件资源条件下,如何实现更高的存储空间利用率,与此同时,提供更高的存储系统io性能。即,分布式存储中的纠删技术如何做到存储空间利用率与性能二者兼得已经成为业界的难题。
4.综上所述,如何在兼顾存储空间利用率的情况下,保障纠删性能等问题,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

5.本技术的目的是提供一种数据处理方法、装置、设备及可读存储介质,能够自适应当前场景需求,可以有效地兼顾存储空间利用率与性能。
6.为解决上述技术问题,本技术提供如下技术方案:一种数据处理方法,包括:获取不同纠删策略的纠删参数,并分别按照各个所述纠删参数,生成对应的纠删预置组;按照各个所述纠删预置组,在分布式存储系统中创建不同的纠删池;启用各个所述纠删池,并获取各个所述纠删池的服务性能;比对各个所述服务性能,确定最佳服务性能;关闭所述最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
7.优选地,还包括:基于最佳服务性能对应的纠删参数,选取若干个目标条带;对所述目标条带的修改覆盖写进行记录,并将对应数据段标记为垃圾数据分片;对所述目标条带中未标记所述垃圾数据分片的有效数据进行重组,得到新的满条带数据分片;基于所述满条带数据分片生成校验位数据分片;将所述满条带数据分片和所述检验位数据分片写入所述最佳服务性能对应的纠删池中。
8.优选地,还包括:对所述垃圾数据分片进行垃圾回收。
9.优选地,对所述目标条带的修改覆盖写进行记录,并将对应数据段标记为垃圾数据分片,包括:记录每个所述目标条带的数据分片修改覆盖写的offset和到校验分片的长度;利用所述offset和所述长度计算偏移,确定修改覆盖写的对应数据段;将所述数据段记录为所述垃圾数据分片。
10.优选地,所述以满条带为下刷数据的触发条件进行数据处理,包括:若满条带,则以顺序写方式下刷数据。
11.优选地,所述获取不同纠删策略的纠删参数,包括:获取不同的k m、以及分别对应故障域和条带单元;其中,所述k对应纠删的数据分片数量,所述m对应纠删的校验分片数量。
12.优选地,所述获取不同的k m、以及分别对应故障域和条带单元,包括:获取各个所述k m,判断是否存在对应的条带单元;如果否,则将条带单元设置为4096字节。
13.优选地,所述分别按照各个所述纠删参数,生成对应的纠删预置组,包括:利用各个所述k m,以及所述k m对应的所述故障域和所述条带单元生成名称;生成各个所述名称对应的所述纠删预置组。
14.优选地,所述利用各个所述k m,以及所述k m对应的所述故障域和所述条带单元生成名称,包括:比对各个所述k m,以及所述k m对应的所述故障域和所述条带单元,确定是否配置相同;如果是,则复用同一个所述名称。
15.优选地,所述按照各个所述纠删预置组,在分布式存储系统中创建不同的纠删池,包括:分别判断所述纠删预置组是否生成失败;如果是,则返回错误;如果否,则按照当前纠删预置组,在分布式存储系统中创建对应的纠删池。
16.优选地,在关闭所述最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理之后,还包括:获取当前服务性能;若所述当前服务性能低于预设阈值,则返回执行所述启用各个所述纠删池,并获取各个所述纠删池的服务性能的步骤。
17.优选地,在返回执行所述启用各个所述纠删池,并获取各个所述纠删池的服务性能的步骤之前,还包括:判断当前数据处理场景是否为小文件场景;如果是,则确定纠删单元为4096字节,分布式存储节点数大于8节点,则确定k m为8 2。
18.一种数据处理装置,包括:
纠删预置组生成模块,用于获取不同纠删策略的纠删参数,并分别按照各个所述纠删参数,生成对应的纠删预置组;纠删池创建模块,用于按照各个所述纠删预置组,在分布式存储系统中创建不同的纠删池;性能监测模块,用于启用各个所述纠删池,并获取各个所述纠删池的服务性能;性能比对模块,用于比对各个所述服务性能,确定最佳服务性能;纠删择优模块,用于关闭所述最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
19.一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述数据处理方法的步骤。
20.一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
21.应用本技术实施例所提供的方法,获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组;按照各个纠删预置组,在分布式存储系统中创建不同的纠删池;启用各个纠删池,并获取各个纠删池的服务性能;比对各个服务性能,确定最佳服务性能;关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
22.在本技术中,为自适应不同的数据情况,可首先获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组。基于不同的纠删预置组可以创建不同的纠删池。然后,启用各个纠删池,并获取各个纠删池的服务性能、通过比对各个服务性能,可以找出最佳服务性能。从而将最佳服务性能之外的纠删池进行关闭,仅保留该最佳服务性能对应的纠删池,并已满条带为下刷数据的触发条件进行数据处理。如此,可根据处理数据的性能情况自动调整纠删条带大小,以取得最优的聚合纠删效果,而每次写入均写满整个条带,可省去数据补齐环节,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题。也就是说,本技术可以在相同资源配置情况下,能够提升分布式存储的io性能,提升存储利用率。
23.相应地,本技术实施例还提供了与上述数据处理方法相对应的数据处理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
24.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1为本技术实施例中一种数据处理方法的实施流程图;图2为一种修改写纠删条带固定映射地址写放大流程图;图3为本技术实施例中一种满条带聚合纠删的示意图;图4为本技术实施例中一种自适应条带有效数据重组结构示意图;
图5为本技术实施例中一种数据处理装置的结构示意图;图6为本技术实施例中一种电子设备的结构示意图;图7为本技术实施例中一种电子设备的具体结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.请参考图1,图1为本技术实施例中一种数据处理方法的流程图,该方法包括以下步骤:s101、获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组。
28.纠删技术用k m表示,其中,k对应纠删的数据分片数量,m对应纠删的校验分片数量。例如,4 2的纠删技术,数据会被切分成4个相同大小的分片,并通过校验算法生成2个同样大小的校验分片p和q。纠删技术中数据被分割为k和m份,根据分布式存储故障域规则,存储在不同的节点上,故障域可以在故障m个节点时,通过更新计算进行数据恢复。
29.在本技术实施例中,纠删参数即为实施纠删策略所需要的参数,如k和m的具体数值等。将实施不同纠删策略所对应的参数称之为不同纠删参数。具体的来说,即k和m的数值变化。
30.在本技术中,首先获取到不同纠删策略的纠删参数,即不同的k m。然后,再分别按照不同的纠删参数,生成对应的纠删预置组,即纠删profile。
31.具体来说,可以一种纠删策略对应一个纠删预置组。
32.对于具体如何基于纠删参数,生成纠删预置组,可参照纠删技术的具体实现方案,在此不再一一赘述。
33.s102、按照各个纠删预置组,在分布式存储系统中创建不同的纠删池。
34.由于纠删预置组对应不同的纠删策略,而不同的纠删策略对应不同的纠删池。可以分先后分别按照各个纠删预置组分别在分布式存储系统中创建不同的纠删池,也可以并行在分布式存储系统中同时创将各个纠删预置组的纠删池。
35.纠删池具体如何基于纠删预置组进行创建,可以具体参照纠删技术的具体实现方案,在此不再一一赘述。
36.s103、启用各个纠删池,并获取各个纠删池的服务性能。
37.创建好纠删池之后,可以启用所创建的纠删池。即,使得多种纠删策略被实施。
38.启用方式可以采用逐一启用,也可以以分流的方式同时启用多个纠删池。
39.在纠删池被启用的期间,可以获取各个纠删池分别对应的服务性能。由于不同的纠删池对应了不同的纠删策略,因而纠删池的服务性能即个不同纠删策略对应的服务性能。其中,服务性能可以包括单位时间内的数据读取次数、数据读写响应时长、存储利用率等。
40.s104、比对各个服务性能,确定最佳服务性能。
41.当所获取到的服务性能为单一指标,则直接比对服务性能的大小值,即可确定出最佳服务性能;当所获取的服务性能为两个或两个以上的指标,则可将这些指标进行加权求和的方式,计算出一个综合指标,然后再比较这个综合指标,从而确定最佳服务性能。
42.例如,服务性能仅有io性能指标,则直接比对各个io性能指标,从而得到最佳服务性能。
43.s105、关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
44.确定出最佳服务性能之后,便可将非最佳服务性能之外的纠删池关闭,仅保留最佳服务性能对应的纠删池。如此,便可实施最佳服务性能对应的纠删策略。
45.此外,在向存储设备下刷数据时,以满条带为触发条件进行数据处理。也就是说,当条带满了才进行数据下刷,而不存在数据补齐环节。
46.其中,数据处理具体包括对数据进行写入存储、修改、查看和删除等操作。
47.在本技术中的一种具体实施方式中,步骤s105以满条带为下刷数据的触发条件进行数据处理,包括:若满条带,则以顺序写方式下刷数据。由于本实施例中进行数据处理与写入寻址地址无关,任意随机的修改写,均能聚合成完整条带,并下刷到存储设备为顺序写方式,有利于存储设备垃圾数据回收,并且不存在数据补齐操作,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题。
48.应用本技术实施例所提供的方法,获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组;按照各个纠删预置组,在分布式存储系统中创建不同的纠删池;启用各个纠删池,并获取各个纠删池的服务性能;比对各个服务性能,确定最佳服务性能;关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
49.在本技术中,为自适应不同的数据情况,可首先获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组。基于不同的纠删预置组可以创建不同的纠删池。然后,启用各个纠删池,并获取各个纠删池的服务性能、通过比对各个服务性能,可以找出最佳服务性能。从而将最佳服务性能之外的纠删池进行关闭,仅保留该最佳服务性能对应的纠删池,并已满条带为下刷数据的触发条件进行数据处理。如此,可根据处理数据的性能情况自动调整纠删条带大小,以取得最优的聚合纠删效果,而每次写入均写满整个条带,可省去数据补齐环节,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题。也就是说,本技术可以在相同资源配置情况下,能够提升分布式存储的io性能,提升存储利用率。
50.需要说明的是,基于上述实施例,本技术实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
51.在本技术中的一种具体实施方式中,相对于上述数据处理方法,还提供了修改写的对应改进策略。具体实现过程包括:步骤一、基于最佳服务性能对应的纠删参数,选取若干个目标条带。
52.具体的,在修改写场景下,一般情况会涉及到m个校验节点和至少1个数据节点的改动,修改数据较多时,则需要更多的节点参与修改写操作,由于,纠删策略的冗余规则,k
m最多可以故障m个节点,并且需要k个节点的数据进行恢复,所以修改写场景会触发k个节点的数据分片更新来保证k个节点间数据分片版本一致性。因而可根据最佳服务性能对应的纠删参数,确定出n个目标条带。这n个目标条带即修改时涉及数据改动的条带。
53.步骤二、对目标条带的修改覆盖写进行记录,并将对应数据段标记为垃圾数据分片。
54.确定出目标条带之后,则对目标条带的修改覆盖写进行记录,并将对应的数据段标记为垃圾数据分片。
55.具体的,步骤二对目标条带的修改覆盖写进行记录,并将对应数据段标记为垃圾数据分片,包括:步骤1、记录每个目标条带的数据分片修改覆盖写的offset和到校验分片的长度;步骤2、利用offset和长度计算偏移,确定修改覆盖写的对应数据段;步骤3、将数据段记录为垃圾数据分片。
56.即记录每个条带的数据分片修改覆盖写的offset和到校验分片的长度length;将offset和length计算偏移,将该段数据记录为垃圾数据分片。对于具体如何基于offset和length计算偏移则可参照具体的偏移计算方式,在此不再赘述。
57.步骤三、对目标条带中未标记垃圾数据分片的有效数据进行重组,得到新的满条带数据分片。
58.对n个条带数据进行有效数据和垃圾数据分片的重组,依据是垃圾数据标记位,得到覆盖写的条带的偏移和长度,重组得到新的满条带数据分片k;步骤四、基于满条带数据分片生成校验位数据分片。
59.由k m纠删策略可知,已知新的数据分片k可计算出m校验位分片数据。
60.步骤五、将满条带数据分片和检验位数据分片写入最佳服务性能对应的纠删池中。
61.写入时,可以继续采用顺序写入的方式进行。
62.根据修改写数据分片的范围将多个条带的有效数据块组成新的条带,修改写的数据分片标记为垃圾数据块,不同条带的垃圾数据进行重置计算得出新的数据分片,组合后的满条带进行下刷到磁盘设备进行持久化存储。
63.相应地,在进行数据重组之后,可以对垃圾数据分片进行垃圾回收。由于数据重组之后,原有的条带中的有效数据得到的有效保存,则此时可以直接将涉及覆盖写的条带均视为垃圾数据分片,可以对整个条带进行垃圾回收。如此,可以有效提升存储使用过程中的垃圾回收效率。
64.在本技术中的一种具体实施方式中,步骤s101获取不同纠删策略的纠删参数,包括:获取不同的k m、以及分别对应故障域和条带单元;其中,k对应纠删的数据分片数量,m对应纠删的校验分片数量。
65.即,不同的纠删策略对应具体的k m,故障域和条带单元。
66.在具体实施时,可以获取各个k m,判断是否存在对应的条带单元;如果否,则将条带单元设置为4096字节。也就是说,如果输入了条带单元,则直接应用该条带单元,如果没有输入条带单元,则将条带单元设置为默认的4096字节。
67.相应地,在获取到纠删参数之后,步骤s102分别按照各个纠删参数,生成对应的纠
删预置组,包括:步骤一、利用各个k m,以及k m对应的故障域和条带单元生成名称;步骤二、生成各个名称对应的纠删预置组。
68.即,修改纠删profile名的生成逻辑,改为由k、m、故障域和条带单元生成一个new profile名,这样可以创建尽量少的文件。
69.进一步,在生成名称时,还可复用名称。具体的,上述步骤二利用各个k m,以及k m对应的故障域和条带单元生成名称,具体包括:比对各个k m,以及k m对应的故障域和条带单元,确定是否配置相同;如果是,则复用同一个名称。即,相同的配置复用同一个名称,以避免相同配置重复构建纠删池。
70.在本技术中的一种具体实施方式中,上述步骤s103按照各个纠删预置组,在分布式存储系统中创建不同的纠删池,包括:步骤一、分别判断纠删预置组是否生成失败;步骤二、如果是,则返回错误;步骤三、如果否,则按照当前纠删预置组,在分布式存储系统中创建对应的纠删池。
71.也就是说,当纠删预置组生成失败时,则直接返回错误,而无需执行纠删池创建操作,即当new profile创建失败,则不再创建纠删池,直接返回错误。仅当纠删预置组生成成功的情况下,继续按照当前纠删预置组,在分布式存储系统中的创建对应的纠删池。
72.在本技术中的一种具体实施方式中,在执行步骤s105关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理之后,还可以执行以下步骤:步骤一、获取当前服务性能;步骤二、若当前服务性能低于预设阈值,则返回执行启用各个纠删池,并获取各个纠删池的服务性能的步骤。
73.为便于描述,下面将上述两个步骤结合起来进行说明。
74.当仅保留了最佳服务性能对应的纠删池,并以满条带为下刷数据的触发条件进行数据处理后,还可获取当前的服务性能。若出现当前服务性能低于预设阈值,则表明当前的纠删策略不满足实际数据处理需求,此时可以对纠删策略再次进行自适应调整。具体的,即返回执行如图1所示的步骤s104的步骤,然后再执行步骤s105,可以再次选出符合当前实际数据处理需求的最佳服务性能对应的纠删策略。
75.为缩短自适应调整纠删策略的时间,在本技术中的一个具体实施方式中,还可以在返回执行启用各个纠删池,并获取各个纠删池的服务性能的步骤之前,执行以下步骤:步骤一、判断当前数据处理场景是否为小文件场景;步骤二、如果是,则确定纠删单元为4096字节,分布式存储节点数大于8节点,则确定k m为8 2。
76.步骤三、返回执行步骤s104的步骤。
77.为便于描述,下面将上述三个步骤结合起来进行说明。
78.具体来说,若当前的数据处理场景为小文件场景,则可直接确定纠删策略,即纠删单元为4096字节,且在分布式存储节点数大于8节点的情况下,直接确定k m为8 2。如此,可快速为小文件场景确定纠删策略。若并非为小文件场景,则返回执行步骤s104的步骤。
79.为便于本领域技术人员更好地理解和实施上述数据处理方法,下面结合相关技术对数据处理方法的进行详细说明。
80.分布式存储系统的数据冗余保护一般采用多副本和纠删技术,副本技术即一个数据复制多份副本,分别存放在多个不同存储节点上,读写性能高,但存储可用空间低,成本高;纠删技术通过用k m表示,纠删具有较好的存储可用空间,但校验码的计算有性能损耗且相对于副本技术io性能较低。
81.在有限的硬件资源条件下,如何实现更高的存储空间利用率,与此同时,提供更高的存储系统io性能,已成为分布式存储系统研究领域中的方向,分布式存储中的纠删技术如何做到存储空间利用率与性能二者兼得已经成为业界的难题。
82.以下相关技术为了在分布式存储系统的可用容量和性能之间寻找一个平衡点,根据应用需求的不同,对数据冗余技术、存储资源计算能力、性能以及成本进行不断的控制和优化:相关技术点1:在元数据索引池采用副本策略,数据池采用纠删策略,但是,随着海量数据的不断增长,小文件在纠删存储池存在严重的写放大,例如默认情况下存储磁盘设备的最新分配单元为4kb,对于k=4,m=2的纠删池,要写入1kb的对象数据时将分配 (6 * 4kb) = 24kb的设备容量,数据放大24倍,数据纠删池到达一定水位会出现较高的对象量和垃圾数据回收压力,出现故障时,集群恢复的时间会很长,势必会导致性能衰减和集群稳定性下降。
83.相关技术点2:在分布式存储系统client层,文件系统接口动态库对小文件进行聚合,将小于128k的文件聚合成4m大文件进行存储,但该技术存在两个严重问题,一方面,小文件的聚合过程是在内存中进行的,若发生存储节点宕机故障时,非持久话内存聚合数据必然会丢失,另一方面,对需要进行聚合的小文件进行标记,必须符合一定的规律才能聚合,限制因素较多,无法适应多种不同业务场景。
84.相关技术点3:现有技术中的分级聚合特性,先将小对象数据写入采用ssd高速介质的副本池,并聚合成逻辑化的大对象,然后,将大对象迁移到纠删策略的数据池中,不足之处在于,需要前期规划制定迁移策略防止高速池数据写满业务无法写入的问题,高速池向纠删池迁移速度过慢会导致存储写满问题。更重要的,在海量小文件覆盖修改写场景中,无法实现高效的自适应聚合io,非整条带的数据补齐操作会导致更多的磁盘垃圾数据,在垃圾数据回收过程会对性能造成严重影响,存储水位越高,垃圾回收越频繁,存储系统性能衰减更严重,同时,不对齐时需要先读取整个纠删条带数据然后进行覆盖写,造成读放大问题。
85.基于以上问题,本技术基于自适应条带的聚合纠删方法与系统,提出一种自适应条带化技术,即数据处理方法,可以在海量小文件数据聚合纠删存储处理过程中,根据处理数据的数据特征自动调整纠删条带大小,以取得最优的聚合纠删效果,且每次写入均写满整个条带。也就是说,本技术提出了不同粒度数据的io策略,节约存储资源成本,写入数据快速响应,增加细粒度聚合为大读写概率,进而提升性能;本技术自适应条带的聚合纠删方法与写入寻址地址无关,任意随机的修改写,均能聚合成完整条带,并下刷到存储设备为顺序写方式,有利于存储设备垃圾数据回收,并且不存在数据补齐操作,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题,综上方法,在相同资源配置情况下,本
申请能够提升分布式存储的io性能。
86.下面对本技术实施例所提供的数据处理方法所要解决的技术问题以及技术实现进行逐一说明:举例说明,分布式存储系统6节点,以4 2纠删策略进行存储,纠删单元为4kb的情况下,由于固定的映射地址,补齐的操作需要额外的读op,随着数据量的增长,小文件修改写增加,会导致分布式存储的性能衰减。
87.本技术修改随机写基于自适应条带聚合,每次均为满条带下刷数据不存在额外读op,并且与写入地址无关,任意修改写都能保证纠删满条带条写入,减少数倍的读写网络放大和读写磁盘放大。
88.进一步,本技术自适应条带聚合纠删方法,根据修改写数据分片的范围将多个条带的有效数据块组成新的条带,修改写的数据分片标记为垃圾数据块,不同条带的垃圾数据进行重置计算得出新的数据分片,组合后的满条带进行下刷到磁盘设备进行持久化存储,同时对存储使用过程中的垃圾回收提供了高效的方法。
89.本技术自适应条带聚合方法具有可行性和优益性,设计了不同条带大小对性能的影响,设计不同的条带大小和迭代次数特征值,对k m纠删策略进行不断训练最终生成适用于分布式存储系统的最优纠删策略。根据不同的k m策略组合,在小文件场景下,特别是覆盖修改写选择4k大小为纠删单元,分布式存储节点数大于8节点选用8 2纠删策略性能效果最佳。
90.根据处理数据的数据特征自动调整纠删条带大小,以取得最优的聚合纠删效果,其特征满足每次写入均写满整个条带;本技术提出了不同粒度数据的io策略,节约存储资源成本,写入数据快速响应,增加细粒度聚合为大读写概率,进而提升性能;本技术自适应条带的聚合纠删方法与写入寻址地址无关,任意随机的修改写,均能聚合成完整条带,并下刷到存储设备为顺序写方式,有利于存储设备垃圾数据回收,并且不存在数据补齐操作,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题,在相同资源配置情况下,本技术能够提升分布式存储的io性能。
91.在本技术中,分布式存储系统实现高可靠性,高扩展性以及高性能的特点,需要监控进程件维护分布式集群的运行状态版本,多监控进程实现其高可用,监控进程之间通过paxos算法保持一致性,客户端通过监控进程获取最新的集群运行状态版本;osd响应客户端请求返回具体数据的进程,该进程检查自身的运行状态以及与其他进程的状态,定期上报给监控进程,该进程以对象形式承载客户端的读写数据,并存储到指定的存储设备中。osd进程以对象为载体进行存储,对象包括文件的inode号,相对于文件的偏移和对象存储属性信息;根据分布式存储系统数据冗余技术,主osd进程负责读写、检索对象、故障恢复、重平衡和一致性,副osd仅用于存储,当主osd进程故障,副osd更新替换为主osd,单点故障对存储性能无影响。
92.分布式存储系统集群在数据冗余保护中,通常采用多副本和erasure code纠删策略。副本技术即一个数据复制多份副本,分别存放在多个不同存储节点上,读写性能高,但存储可用空间低,成本高;纠删技术通过用k m表示,例如4 2的纠删技术,数据会被切分成4个相同大小的分片,并通过校验算法生成2个同样大小的校验分片p和q,纠删具有较好的存储可用空间,但校验码的计算有性能损耗且相对于副本技术io性能较低。纠删技术中数据
被分割为k和m份,根据分布式存储故障域规则,存储在不同的节点上,故障域可以在故障m个节点时,通过更新计算进行数据恢复。
93.数据被分割到k m个分布式存储节点上,k表示数据分片,m表示校验分片,在修改写场景下,一般情况会涉及到m个校验节点和至少1个数据节点的改动,修改数据较多时,则需要更多的节点参与修改写操作,由于,纠删策略的冗余规则,k m最多可以故障m个节点,并且需要k个节点的数据进行恢复,所以修改写场景会触发k个节点的数据分片更新来保证k个节点间数据分片版本一致性。针对每次的纠删修改写,更新数据分片和校验分区有所不同,现有技术中会对条带增加额外的读条带操作,来补齐缺失的分片;校验分片的更新,首先会读取数据分片,这部分数据分片上的数据没有修改操作,将读到的分片数据和修改写的部分分片进行合并,然后得出最新的k数据分片,进而计算出校验分片。在海量分布式存储修改写场景中,使用纠删策略,需要读取整个条带进行校验分片和数据分片的更新,对整个存储性能有较大影响。
94.纠删修改写过程,需要读操作才能对数据分片k和校验分片m进行更新,完成修改写操作,该过程对存储性能影响较大,磁盘将会导致大量4k(纠删条带单元)读op,导致磁盘性能利用率衰减,本技术基于自适应条带的聚合纠删方法与系统,提出一种自适应条带化技术,在海量小文件数据聚合纠删存储处理过程中,根据处理数据的数据特征自动调整纠删条带大小,以取得最优的聚合纠删效果,其特征满足每次写入均写满整个条带。
95.相关技术中,如图2,修改写纠删条带固定映射地址写放大流程图,不失一般性,分布式存储系统6节点,以4 2纠删策略进行存储,纠删单元为4kb的情况下,纠删条带即进行读写的最小单元为4kb乘以k数据分片个数即16k,如果第一次写数据只有10k,第二次写时,需要把第一次写的10k读出来合并后再进行存储,导致额外的读op;文件file1和file2进行修改写入时,file在条带1上的数据需要补齐a2,a4;file2在条带2上的数据需要补齐b2,b3,b4;由于固定的映射地址,补齐的操作需要额外的读op,随着数据量的增长,小文件修改写增加,会导致分布式存储的性能衰减。
96.在本技术中,如图3,本技术修改随机写基于自适应条带聚合,每次均为满条带下刷数据不存在额外读op,并且与写入地址无关,任意修改写都能保证纠删满条带条写入,减少数倍的读写网络放大和读写磁盘放大。具体的,对于不同块大小的修改覆盖写,采用不同的自适应条带方法,file1,file2进行修改写时,按照顺序写a1-b1-b7-a3,b9-a6-b5-a8以及校验分片x与y,每个条带均为对齐满条带进行下刷,任意时刻随机修改写入,与写入地址无关,因此,可以减少读操作read op的次数,减少对磁盘或ssd的读开销和读过程的网络资源占用。
97.进一步,本技术自适应条带聚合纠删方法,如图4,自适应条带有效数据重组结构图,根据修改写数据分片的范围将多个条带的有效数据块组成新的条带,修改写的数据分片标记为垃圾数据块,不同条带的垃圾数据进行重置计算得出新的数据分片,组合后的满条带进行下刷到磁盘设备进行持久化存储,同时对存储使用过程中的垃圾回收提供了高效的方法,纠删覆盖写自适应重组的具体步骤:步骤1.根据纠删k m冗余策略,选取n个条带数据,并记录每个条带的数据分片修改覆盖写的offset和到校验分片的长度length;步骤2.将offset和length计算偏移,将该段数据记录为垃圾数据分片;
步骤3.对n个条带数据进行有效数据和垃圾数据分片的重组,依据是垃圾数据标记位,得到覆盖写的条带的偏移和长度,重组得到新的满条带数据分片k;步骤4.有k m纠删策略可知,已知新的数据分片k可计算出m校验位分片数据。
98.本技术数据处理方法具有可行性和优益性,设计了不同条带大小对性能的影响,设计不同的条带大小和迭代次数特征值,对k m纠删策略进行不断训练最终生成适用于分布式存储系统的最优纠删策略。具体的,包括以下步骤:步骤1.首先根据不同的参数(k、m、条带单元等)生成一个纠删profile;步骤2.然后再根据纠删profile创建分布式存储系统纠删池。可选的,首先检查是否有参数指定纠删条带单元,若没有传入参数为4096字节;然后修改纠删profile名的生成逻辑,改为由k、m、故障域和条带单元生成一个new profile名,这样创建尽量少的文件,同样配置的应该复用同一个new profile;最后增加异常处理。当new profile创建失败,则不再创建纠删池,直接返回错误。
99.步骤3.读写文件,进行测试,得到测试性能,统计,得到最优结果。
100.基于以上方法,根据不同的k m策略组合,在小文件场景下,特别是覆盖修改写选择4k大小为纠删单元,分布式存储节点数大于8节点选用8 2纠删策略性能效果最佳。
101.综上,本技术一种基于自适应条带的聚合纠删方法与系统,旨在通过自适应的纠删条带对覆盖小块写,提高分布式存储系统性能。根据处理数据的数据特征自动调整纠删条带大小,以取得最优的聚合纠删效果,其特征满足每次写入均写满整个条带;本技术提出了不同粒度数据的io策略,节约存储资源成本,写入数据快速响应,增加细粒度聚合为大读写概率,进而提升性能;本技术自适应条带的聚合纠删方法与写入寻址地址无关,任意随机的修改写,均能聚合成完整条带,并下刷到存储设备为顺序写方式,有利于存储设备垃圾数据回收,并且不存在数据补齐操作,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题,在相同资源配置情况下,本技术能够提升分布式存储的io性能。
102.相应于上面的方法实施例,本技术实施例还提供了一种数据处理装置,下文描述的数据处理装置与上文描述的数据处理方法可相互对应参照。
103.参见图5所示,该装置包括以下模块:纠删预置组生成模块101,用于获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组;纠删池创建模块102,用于按照各个纠删预置组,在分布式存储系统中创建不同的纠删池;性能监测模块103,用于启用各个纠删池,并获取各个纠删池的服务性能;性能比对模块104,用于比对各个服务性能,确定最佳服务性能;纠删择优模块105,用于关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
104.应用本技术实施例所提供的装置,获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组;按照各个纠删预置组,在分布式存储系统中创建不同的纠删池;启用各个纠删池,并获取各个纠删池的服务性能;比对各个服务性能,确定最佳服务性能;关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理。
105.在本技术中,为自适应不同的数据情况,可首先获取不同纠删策略的纠删参数,并分别按照各个纠删参数,生成对应的纠删预置组。基于不同的纠删预置组可以创建不同的纠删池。然后,启用各个纠删池,并获取各个纠删池的服务性能、通过比对各个服务性能,可以找出最佳服务性能。从而将最佳服务性能之外的纠删池进行关闭,仅保留该最佳服务性能对应的纠删池,并已满条带为下刷数据的触发条件进行数据处理。如此,可根据处理数据的性能情况自动调整纠删条带大小,以取得最优的聚合纠删效果,而每次写入均写满整个条带,可省去数据补齐环节,解决了非对齐条带需要读取整个条带,再进行覆盖写导致的读放大问题。也就是说,本技术可以在相同资源配置情况下,能够提升分布式存储的io性能,提升存储利用率。
106.在本技术的一种具体实施方式中,还包括:覆盖写模块,用于基于最佳服务性能对应的纠删参数,选取若干个目标条带;对目标条带的修改覆盖写进行记录,并将对应数据段标记为垃圾数据分片;对目标条带中未标记垃圾数据分片的有效数据进行重组,得到新的满条带数据分片;基于满条带数据分片生成校验位数据分片;将满条带数据分片和检验位数据分片写入最佳服务性能对应的纠删池中。
107.在本技术的一种具体实施方式中,还包括:垃圾回收模块,用于对垃圾数据分片进行垃圾回收。
108.在本技术的一种具体实施方式中,覆盖写模块,具体用于记录每个目标条带的数据分片修改覆盖写的offset和到校验分片的长度;利用offset和长度计算偏移,确定修改覆盖写的对应数据段;将数据段记录为垃圾数据分片。
109.在本技术的一种具体实施方式中,纠删择优模块105,具体用于若满条带,则以顺序写方式下刷数据。
110.在本技术的一种具体实施方式中,纠删预置组生成模块101,具体用于获取不同的k m、以及分别对应故障域和条带单元;其中,k对应纠删的数据分片数量,m对应纠删的校验分片数量。
111.在本技术的一种具体实施方式中,纠删预置组生成模块101,具体用于获取各个k m,判断是否存在对应的条带单元;如果否,则将条带单元设置为4096字节。
112.在本技术的一种具体实施方式中,纠删预置组生成模块101,具体用于利用各个k m,以及k m对应的故障域和条带单元生成名称;生成各个名称对应的纠删预置组。
113.在本技术的一种具体实施方式中,纠删预置组生成模块101,具体用于比对各个k m,以及k m对应的故障域和条带单元,确定是否配置相同;如果是,则复用同一个名称。
114.在本技术的一种具体实施方式中,纠删池创建模块102,具体用于分别判断纠删预置组是否生成失败;如果是,则返回错误;
如果否,则按照当前纠删预置组,在分布式存储系统中创建对应的纠删池。
115.在本技术的一种具体实施方式中,还包括:条带自适应调整触发模块,用于在关闭最佳服务性能之外的纠删池,并以满条带为下刷数据的触发条件进行数据处理之后,获取当前服务性能;若当前服务性能低于预设阈值,则返回执行启用各个纠删池,并获取各个纠删池的服务性能的步骤。
116.在本技术的一种具体实施方式中,条带自适应调整触发模块,具体用于在返回执行启用各个纠删池,并获取各个纠删池的服务性能的步骤之前,判断当前数据处理场景是否为小文件场景;如果是,则确定纠删单元为4096字节,分布式存储节点数大于8节点,则确定k m为8 2。
117.相应于上面的方法实施例,本技术实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种数据处理方法可相互对应参照。
118.参见图6所示,该电子设备包括:存储器332,用于存储计算机程序;处理器322,用于执行计算机程序时实现上述方法实施例的数据处理方法的步骤。
119.具体的,请参考图7,图7为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
120.电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
121.上文所描述的数据处理方法中的步骤可以由电子设备的结构实现。
122.相应于上面的方法实施例,本技术实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据处理方法可相互对应参照。
123.一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据处理方法的步骤。
124.该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
125.本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献