1.本发明涉及存储系统领域,具体而言,涉及一种数据冗余策略变更方法、装置、存储节点和存储介质。
背景技术:2.存储系统中主要依赖数据冗余策略提供数据的安全性和可靠性。常见的数据冗余策略有副本、raid和纠删码,其中副本、raid和纠删码各自细分冗余级别,如副本有两副本、三副本等,raid有raid5、raid6等,纠删码有纠删码4+2、纠删码8+2等。数据在产生初期以特定的一种数据冗余策略保存到存储系统中,随着时间的推移,数据的可靠性等级要求不断变化,数据的读写性能要求不断变化,数据的保存成本要求也不断变化。这些变化需要数据冗余策略做相应的变更实现数据转储。
3.现有技术中,通过数据冗余策略变更实现数据转储时,原有条带的数据块重新切片后写入新条带,这样的转储方式会产生较多的写io,从而增加磁盘io负载。
技术实现要素:4.有鉴于此,本发明的目的在于提供一种数据冗余策略变更方法、装置、存储节点和存储介质,能够直接使用原有条带的数据块,只将新生成的校验块或副本写入存储空间,由原有条带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储。有效避免因数据块新写带来io开销,从而减少磁盘io负载,提升存储系统性能。
5.为了实现上述目的,本发明实施例采用的技术方案如下:第一方面,本发明提供一种数据冗余策略变更方法,应用于存储节点,所述方法包括:当满足冗余策略切换条件时,确定目标条带;所述目标条带表征满足冗余策略切换需求的条带;根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块;所述待写入数据块表征所述数据块对应的校验块或所述数据块对应的副本;将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带。
6.在可选的实施方式中,所述当满足冗余策略切换条件时,确定目标条带的步骤,包括:当磁盘的负载利用率大于盘负载高阈值时,将磁盘确定为第一类目标盘;所述第一类目标盘表征业务负载高的磁盘;遍历系统中所有条带,确定第一目标条带,所述第一目标条带的第一类数据块存储于所述第一类目标盘上,所述第一目标条带为所述目标条带的一种。
7.在可选的实施方式中,所述根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块的步骤,包括:分别读取每个所述第一类数据块;
将所述第一类数据块划分为至少两组第一类数据组;分别根据每个第一类数据组计算对应的校验块,将所述校验块作为所述第一类数据组对应的待写入数据块;所述将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带的步骤,包括:将所述校验块写入存储空间,与对应的第一类数据组构成所述逻辑条带。
8.在可选的实施方式中,所述根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块的步骤,包括:分别读取每个所述第一类数据块;分别生成每个所述第一类数据块对应的数据副本;将所述数据副本作为每个第一类数据块对应的待写入数据块;所述将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带的步骤,包括:将所述数据副本写入存储空间,与对应的第一类数据块构成所述逻辑条带。
9.在可选的实施方式中,所述当满足冗余策略切换条件时,确定目标条带的步骤,包括:当磁盘的负载利用率小于盘负载低阈值时,将磁盘确定为第二类目标盘;所述第二类目标盘表征业务负载低的磁盘;遍历系统中所有条带,确定第二目标条带,所述第二目标条带的第二类数据块存储于所述第二类目标盘上,所述第二目标条带为所述目标条带的一种。
10.在可选的实施方式中,所述根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块的步骤,包括:分别读取至少两个所述第二目标条带的所述第二类数据块;将全部所述第二类数据块组合为至少一组第二类数据组;分别根据每个第二类数据组计算对应的校验块,将所述校验块作为第二类数据组对应的待写入数据块;所述将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带的步骤,包括:将所述校验块写入存储空间,与对应的第二类数据组构成所述逻辑条带。
11.在可选的实施方式中,所述根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块的步骤,包括:分别读取至少两个所述第二目标条带的所述第二类数据块;分别生成每个所述第二类数据块对应的数据副本;将所述数据副本作为每个第二类数据块对应的待写入数据块;所述将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带的步骤,包括:将所述数据副本写入存储空间,与对应的第一类数据块构成所述逻辑条带。
12.第二方面,本发明提供一种数据冗余策略变更装置,应用于存储节点,所述装置包括:
决策模块,用来当满足冗余策略切换条件时,确定目标条带;所述目标条带表征满足冗余策略切换需求的条带;生成模块,用于根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块;所述待写入数据块表征所述数据块对应的校验块或所述数据块对应的副本;写入模块,用于将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带。
13.第三方面,本发明提供一种存储节点,所述存储节点包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在调用所述计算机程序时执行如前述实施方式任一项所述的数据冗余策略变更方法。
14.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述实施方式任一项所述的数据冗余策略变更方法。
15.相对现有技术,本发明实施例提供的数据冗余策略变更方法、装置、存储节点和存储介质,当满足冗余策略切换条件时,确定目标条带;所述目标条带表征满足冗余策略切换需求的条带;根据所述目标条带中的至少一个数据块,确定至少一个待写入数据块;所述待写入数据块表征所述数据块对应的校验块或所述数据块对应的副本;将所述待写入数据块写入存储空间,与所述至少一个数据块构成逻辑条带。本方案实现数据转储时并没有为数据块新申请空间,而是直接使用目标条带的数据块,只将新生成的校验块或副本,由目标条带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储。有效避免因数据块新写带来io开销,从而减少磁盘io负载,提升存储系统性能。
16.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
17.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
18.图1示出了现有技术冗余策略变更的一种示意图。
19.图2示出了本发明实施例提供的数据冗余策略变更方法的一种流程示意图。
20.图3示出了条带元数据的一种示意图。
21.图4示出了数据冗余策略变更前后文件映射元数据变化对比的一种示意图。
22.图5示出了图2中步骤s101的一种子步骤流程示意图。
23.图6示出了冗余策略从纠删码8+2变更为纠删码4+2的一种示意图。
24.图7示出了冗余策略从纠删码4+2变更为三副本的一种示意图。
25.图8示出了冗余策略从三副本变更为纠删码4+2的一种示意图。
26.图9示出了冗余策略从纠删码4+2变更为纠删码8+2的一种示意图。
27.图10示出了本发明实施例提供的数据冗余策略变更装置的方框示意图。
28.图11示出了本发明实施例提供的存储节点的方框示意图。
29.图标:100-存储节点;110-存储器;120-处理器;130-通信模块;200-数据冗余策略
变更装置;201-决策模块;202-生成模块;203-写入模块。
具体实施方式
30.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
31.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
32.需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
33.企业级存储系统经历了多年发展,早期多为直接连接存储(direct attached storage,简称:das)、存储区域网络(storage area network,简称:san)等存储方式,近年发展迅速,主要形态为分布式存储,企业级存储最主要特征是提供非常高的数据可靠性,为用户提供块、文件、对象的存储服务。企业级存储在可靠性方面通常依赖一种或多种数据冗余策略。
34.随着业务需求的不断变化,为了更切合实际应用场景需要进行数据转储,数据转储技术的一个重要作用是解决性能与成本的平衡。目前数据转储方式主要是从原有条带中读取数据,按照切换后的冗余策略切片后写入新条带,这样的转储方式会产生较多的写io,从而增加磁盘io负载。
35.为了更清晰地了解现有技术进行数据转储的操作流程,以图1为例进行详细阐述。假设文件1采用三副本机制保证文件数据的可靠性,即文件1的每个数据块都被复制为三份,分散在不同磁盘存放,由此可知,三副本存储空间利用率为33%。为了提高空间利用率,节省成本,例如采用纠删码4+2转储文件1,纠删码4+2机制是将数据切分为4个相同大小的分片,并通过校验算法生成2个大小相同的校验块,即保存四个分片数据需要使用6个分片空间,由此可知,纠删码4+2存储空间利用率为67%。假设文件1只有一个条带,对于现有技术,通常在转储文件1时,首先读取原有条带中数据三副本中的任一份数据,再将读取的数据进行切片,分为4个相同大小的数据分块,并根据数据分块生成2个校验块,最后将4个数据分块和2个校验块写入磁盘。可见,转储文件1需要7次io的调度操作,其中包含1次读io和6次写io。
36.显然,现有技术为了实现数据转储,将读取的数据块进行重新切片后再写入存储空间,这样的转储方式会产生较多的写io,从而增加磁盘io负载,影响存储系统的性能。
37.基于此,本发明实施例提供了一种数据冗余策略变更方法、装置、存储节点和存储介质。通过直接使用原有条带的数据块,只将新生成校验块或副本写入存储空间,由原有条
带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储。有效避免因数据块新写带来io开销,从而减少磁盘io负载,提升存储系统性能。
38.下面结合附图对本发明的各实施例进行详细说明。
39.本发明实施例提供的数据冗余策略变更方法及装置应用于存储节点,由存储节点执行本发明实施例提供的数据冗余策略变更方法。在本发明实施例中,存储节点可以是单存储节点,也可以是分布式存储节点或集中式存储节点,对此,本发明不予限定。
40.请参照图2,图2示出了本发明实施例提供的数据冗余策略变更的一种示意图,该方法包括以下步骤:步骤s101,当满足冗余策略切换条件时,确定目标条带;其中,目标条带表征满足冗余策略切换需求的条带;在本发明实施例中,存储系统大多采用条带技术实现系统的io负载均衡,即是将一块连续的数据分割成大小相同的数据块,并将每个数据块存储在不同磁盘上。当数据转储需要变更冗余策略时,条带要随之改变,因此要根据冗余策略切换条件找到需要做数据转储的目标条带,目标条带即为上文提及的原有条带。上述冗余策略切换条件可以根据实际应用场景设置,对此,本发明不予限定。
41.在本发明实施例中,冗余策略切换条件可以包含冗余策略对、盘负载阈值和磁盘的负载利用率。其中,冗余策略对用于记录数据转储前后的两种冗余策略,盘负载阈值指的是磁盘读写压力的边界值,用于判断磁盘数据是否需要进行冗余策略切换,磁盘的负载利用率指的是磁盘实际读写压力。
42.在本发明实施例中,冗余策略对和盘负载阈值可以由管理员通过交互界面或第三方服务器进行预置,而磁盘负载利用率是存储系统后台程序定期采样得到的各个磁盘的负载利用率。
43.在本发明实施例中,管理员可以设置多个冗余策略对,提供灵活多样地数据转储方式。每个冗余策略对包含第一冗余策略和第二冗余策略,第一冗余策略和第二冗余策略分别对应数据转储前后的冗余策略。待转储的目标条带的冗余策略在冗余策略对中找到与之吻合的第一冗余策略或第二冗余策略,假设待转储的目标条带的冗余策略是第二冗余策略,那么转储后的新条带的冗余策略则是第一冗余策略,例如设置的冗余策略对为纠删码4+2和纠删码8+2,如果检测到磁盘负载过大,需要将纠删码8+2的数据转储提升存储系统性能,则首先通过纠删码8+2在冗余策略对中找到与之对应的纠删码4+2,再使用纠删码4+2进行数据转储。相反,如果检测到磁盘负载较小,需要将纠删码4+2数据转储减少存储空间,则找到与之对应的纠删码8+2进行数据转储。
44.在本发明实施例中,盘负载阈值可以包含盘负载高阈值和盘负载低阈值,该盘负载阈值可以被用来定义“热数据”与“冷数据”,其中,“热数据”指频繁被访问的数据,该数据所处磁盘读写压力相对较大,业务负载较高;“冷数据”指很少被访问的数据,该数据所处磁盘的读写压力相对较小,业务负载较低;通过上述盘负载阈值,能够识别出需要转储数据的“热数据”盘和“冷数据”盘,其中“热数据”盘即为第一类目标盘,“冷数据”盘即为第二类目标盘;进而,为了平衡系统性能和成本而发生数据转储时,针对不同的数据,进行针对性的冗余策略切换。
45.需要说明的是,盘负载阈值支持管理员设置和修改,同样也可以使用系统默认值,
例如,系统默认的盘负载高阈值为80%,盘负载低阈值为60%,对此,本发明不予限定。
46.值得一提的是,为了避免转储产生的io负载对用户业务的影响,可以避开业务高峰期进行数据转储。例如,管理员根据系统业务分布选择业务空闲期作为最佳转储时间段,并将最佳转储时间段预设在存储节点上,存储节点在指定的最佳转储时间段进行数据转储,将对业务性能的影响降到最低。
47.步骤s102,根据目标条带中的至少一个数据块,确定至少一个待写入数据块;其中,待写入数据块表征数据块对应的校验块或数据块对应的副本;在本发明实施例中,为了实现目标条带数据的转储,首先读取目标条带的数据块,再根据目标条带的冗余策略查找冗余策略对,找到与之对应的新条带的冗余策略,最后根据新条带的冗余策略生成新条带的校验块或副本,新条带的校验块或副本即为待写入数据块。
48.步骤s103,将待写入数据块写入存储空间,与至少一个数据块构成逻辑条带。
49.其中,逻辑条带指的是由目标条带的数据块和新生成的校验块或数据块对应的副本构成的新条带,也就是数据转储后的条带。
50.综上所述,相较于前文介绍的现有技术转储数据,需要将目标条带中的数据块重新切片,再将切片后的数据分块和新生成的校验块或副本一起写入存储空间,这样会产生较多的写io,增加磁盘io负载。本方案为了减少转储io产生的磁盘负载,直接使用目标条带中的数据块,只将新生成的校验块或副本写入存储空间,由目标条带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储,有效避免因数据块新写带来的io开销,从而减少磁盘io负载,提升存储系统性能。
51.在本发明实施例中,为了高效管理逻辑条带,快速找到逻辑条带中的数据块以及校验块或副本。可以利用元数据来建立逻辑条带与逻辑条带中的数据块以及校验块或副本的映射关系,从而通过元数据来确定逻辑条带中的数据块以及校验块或副本,还可以确定数据块以及校验块或副本所属磁盘,以及在所属磁盘内的位置偏移。从而通过所属磁盘和磁盘内的位置偏移进行数据读写。
52.具体的,在一种可能的实现方式中, 逻辑条带的元数据中可以包含条带id、条带使用的冗余策略和条带分布数组。
53.以图3为例,条带分布数组元素是条带中每个单元的相关信息,相关信息中包含磁盘id、盘内偏移、条带内冗余计算序号、文件id。
54.其中,条带内冗余计算序号用于记录每个条带分布数组元素在条带内的相对位置,防止因位置混乱造成用户业务数据出错。通过逻辑条带的元数据可以确定条带各单元分布在磁盘的物理位置,条带各单元在冗余计算时的逻辑关系,以及条带各单元中存储的数据属于哪个文件。
55.为了建立转储后文件与数据块的映射关系,需要将逻辑条带id反向更新到文件映射元数据中,文件映射元数据用来记录文件与文件数据所属的条带的映射关系,每个文件对应一条元数据记录,其中包含文件名、文件id、条带id数组,通过文件名可以查询到文件对应的条带。
56.反向更新文件映射元数据中的条带id时,首先在条带元数据中找到条带中条带分布数组元素所属文件id,根据文件id在文件映射元数据中找到对应的记录,并将新生成的
逻辑条带id更新到记录中。例如,文件1的数据块a转储前的条带id为1,则文件映射元数据中记录的文件1的数据块对应的条带id是1,数据块a转储后的条带id为2,则文件映射元数据中文件1的数据块对应的条带id更新为2,更新前后文件映射元数据中条带id的变化如图4所示。在本示例中,文件元数据和条带元数据都被存放在kv数据库中,对此,本发明不予限制。
57.可见,本发明实施例提供的数据冗余策略更新方法应用于存储节点,当满足冗余策略切换条件时,确定目标条带;目标条带表征满足冗余策略切换需求的条带;根据目标条带中的至少一个数据块,确定至少一个待写入数据块;待写入数据块表征数据块对应的校验块或数据块对应的副本;将待写入数据块写入存储空间,与至少一个数据块构成逻辑条带。本方案实现数据转储时并没有为数据块新申请空间,而是直接使用目标条带的数据块,只切换后将新生成的校验块或副本写入存储空间,由目标条带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储。有效避免因数据块新写带来io开销,从而减少磁盘io负载,提升存储系统性能。
58.可选地,在实际应用中,为了解决系统io负载大,选择“热数据”盘进行数据转储提升性能。当磁盘的负载利用率大于盘负载高阈值时,在图2的基础上,请参照图5,步骤s101的子步骤,步骤s101的子步骤可以包括:步骤s10111,当磁盘的负载利用率大于盘负载高阈值时,将磁盘确定为第一类目标盘;其中,第一类目标盘表征业务负载高的磁盘;在本发明实施例中,为了更合理的挑选“热数据”盘,防止出现突发的高负载利用率。例如,在使用磁盘的负载利用率之前,先将各个磁盘最近一天采样结果中的负载利用率最高的千分之五去掉,取剩余的采样结果中的最高值作为磁盘的负载利用率。当磁盘的负载利用率大于等于盘负载低阈值,小于等于盘负载高阈值时,磁盘不做数据转储。当磁盘的利用率大于盘负载高阈值时,说明磁盘业务负载高,属于“热数据”盘,即为第一类目标盘。
59.步骤s10112,遍历系统中所有条带,确定第一目标条带;其中,第一目标条带的第一类数据块存储于第一类目标盘上,第一目标条带为目标条带的一种;在本发明实施例中,可以通过遍历条带的方式,找到将全部数据都储存在第一类目标盘的条带,得到的这些条带作为第一目标条带进行数据转储。
60.需要说明的是,为了更切合当前系统的实际运行情况,可以通过后台监测条带的访问次数,记录系统中访问频率高的条带。例如,在本示例中,使用热条带区保存近一周内被访问的条带信息,条带信息用于记录条带id和条带的访问次数。热条带区中的条带按照访问次数从高到低进行排序,采用末位淘汰制清理访问次数少的条带信息,这样可以保证热条带区中保存的都是近期访问频率高的条带。
61.作为一种具体实现方式,根据第一类目标盘获得的条带如果没在热条带区,则在本次转储数据过程中不对该条带进行转储,关键在于通过转储提升系统中被频繁访问的数据的性能。
62.需要说明的是,现有技术中冗余策略切换条件依赖管理员配置,例如管理员需要预先设置一段时间内数据的访问频率或访问概率相关的阈值,对统计的访问频率或访问概
率满足阈值的数据进行转储。存储管理员在配置过程中遇到的关键问题是,不清楚或无法准确评估阈值的具体数字,而且随着业务变化,最佳阈值也在不断变化,最终的转储效果也不理想。
63.综上所述,本技术实施例提供灵活多样的冗余策略变更配置,并通过监控磁盘的利用率决策数据如何存储,避免管理员观察评估热度阈值,做到在保障业务性能的前提下,最大化降低存储成本。
64.可选地,在实际应用中,需要通过转储“热数据”盘来提升系统性能,转储后的数据可以采用校验块提升数据可靠性,基于校验块的冗余方式,图2中的步骤s102可以包括:分别读取每个第一类数据块;将第一类数据块划分为至少两组第一类数据组;其中,分别根据每个第一类数据组计算对应的校验块,将校验块作为第一类数据组对应的待写入数据块;对于采用校验块转储数据的方式,图2中步骤s103可以包括:将校验块写入存储空间,与对应的第一类数据组构成逻辑条带。
65.在本发明实施例中,以纠删码为例进行说明,纠删码4+2指条带包含6块磁盘,其中有4块数据盘和2块校验盘,空间利用率为67%,读取条带数据需要在4块磁盘中读取数据块。纠删码8+2指条带包含10块磁盘,其中有8块数据盘和2块校验盘,空间利用率为80%,读取条带数据需要在8块磁盘中读取数据块。由此可见,纠删码4+2的性能高于纠删码8+2,纠删码4+2成本高于纠删码8+2。
66.以图6为例,通过将纠删码8+2存储的数据转储为纠删码4+2,提升“热数据”的访问性能,那么纠删码8+2条带即为第一目标条带,纠删码8+2条带中的数据块即为第一类数据块,转储后的纠删码4+2条带即为逻辑条带。将第一目标条带的8块第一类数据块拆分为2个第一类数据块组,每个第一类数据组中包含4个第一类数据块。根据每个第一类数据组计算校验值,得到2个校验块,将每个第一类数据组生成的2个校验块写入存储空间,并与对应的第一类数据组中的4块第一类数据块构成逻辑条带。一个纠删码8+2的条带可以拆分成2个纠删码4+2的条带,2个新生成的逻辑条带只产生4个校验块的写io,逻辑条带中的数据块使用第一目标条带的第一类数据块不产生写io,可以大幅减少转储数据时产生的io开销。
67.可选地,在实际应用中,需要通过转储“热数据”盘来提升系统性能,转储后的数据可以采用副本提升数据可靠性,基于副本的冗余方式,图2中的步骤s102可以包括:分别读取每个第一类数据块;分别生成每个第一类数据块对应的数据副本;其中,将数据副本作为每个第一类数据块对应的待写入数据块;对于采用副本转储数据的方式,图2中步骤s103可以包括:将数据副本写入存储空间,与对应的第一类数据块构成逻辑条带。
68.以图7为例,通过将纠删码4+2存储的数据转储为三副本,提升“热数据”的访问性能,那么纠删码4+2条带即为第一目标条带,纠删码4+2条带中的数据块即为第一类数据块,转储后的三副本条带即为逻辑条带。由于副本中的数据块是完全相同的冗余备份,因此在转储数据时,第一目标条带中的4个第一类数据被分别转储为三副本,由此可知,每个三副本都需要根据与之对应的第一类数据块生成2个冗余备份,并写入存储空间。因此,一个纠删码4+2的条带可以拆分成4个三副本条带,4个三副本只产生8个冗余备份的写io。另外的4个数据块使用第一目标条带的第一类数据块,并不产生写io,可以大幅减少转储数据时产
生的io开销。
69.可选地,在实际应用中,为了节省磁盘空间,降低数据存储成本,选择“冷数据”盘进行转储。当磁盘的负载利用率小于盘负载低阈值时,在图2的基础上,请参照图5,步骤s101的子步骤,步骤s101的子步骤可以包括:步骤s10121,当磁盘的负载利用率小于盘负载低阈值时,将磁盘确定为第二类目标盘;其中,第二类目标盘表征业务负载低的磁盘;步骤s10122,遍历系统中所有条带,确定第二目标条带;其中,第二目标条带的第二类数据块存储于第二类目标盘上,第二目标条带为目标条带的一种。
70.在本发明实施例中,处理磁盘的负载利用率采样数据和确定目标条带的方式与步骤s10111中阐述的方式类似,区别在于选择第二类目标盘的条件是磁盘的负载利用率小于盘负载低阈值且条带不属于热条带区,此处不再赘述。
71.可选地,在实际应用中,需要通过转储“冷数据”盘来减少存储空间,降低存储成本,转储后的数据可以采用校验块提升数据可靠性,基于校验块的冗余方式,图2中的步骤s102可以包括:分别读取至少两个第二目标条带的第二类数据块;将全部第二类数据块组合为至少一组第二类数据组;其中,分别根据每个第二类数据组计算对应的校验块,将校验块作为第二类数据组对应的待写入数据块;对于采用校验块转储数据的方式,图2中步骤s103可以包括:将校验块写入存储空间,与对应的第二类数据组构成逻辑条带。
72.为了更清楚说明本技术实施例提供的数据冗余策略变更方法,结合现有技术对比进行示例性说明。
73.作为一种实施方式,以图8为例,假设文件1-4采用三副本保证文件数据的可靠性,三副本存储空间利用率为33%。为了提高空间利用率,节省成本,采用纠删码4+2转储这四个文件,那么三副本条带即为第二目标条带,三副本中任一数据块即为第二类数据块,转储后的纠删码4+2条带即为逻辑条带。基于纠删码4+2算法,四个文件中读取每个文件中一块第二类数据块作为纠删码4+2的数据块,根据纠删码4+2的数据块生成2个校验块。由此可知,4个数据块在转储过程中需要6个io,其中包含4次数据块的读io和2个校验块的写io。现有技术实现相同的数据冗余策略变更,则需要28个io,其中转储每个文件需要1个读io和6个写io,如图1所示。可见,转储数据时,本发明实施例直接使用原有三副本条带中的数据块,并未申请空间重写文件数据块,只需要新写2个校验块,由第二目标条带的4个数据块和新生成的2个校验块构成逻辑条带。避免了数据块重新切分保存,大大减少io开销,提升数据存储性能。
74.作为又一种实施方式,以图9为例,假设文件1和文件2采用纠删码4+2保证文件数据的可靠性,为了节省成本,采用纠删码8+2转储这两个文件。那么纠删码4+2条带即为第二目标条带,纠删码4+2条带中的数据块即为第二类数据块,转储后的纠删码8+2条带即为逻辑条带。基于纠删码8+2算法,从2个第二目标条带中读取2个文件的8个数据块,这8个数据
块作为纠删码8+2的数据块,根据8个数据块生成2个校验块,写入新生成的2个校验块。8个数据块在转储过程中需要10个io,其中8个读io和2个写io。现有技术实现相同的数据冗余策略变更,则需要28个io,其中8个读io和20个写io。可见,转储数据时,本发明实施例直接使用纠删码4+2条带中的数据块,并未申请空间重写文件数据块,只需要新写2个校验块,由第二目标条带中的8个数据块和新生成的2个校验块构成逻辑条带。避免了数据块重新切分保存,大大减少io开销。
75.可选地,在实际应用中,需要通过转储“冷数据”盘来减少存储空间,降低存储成本,转储后的数据可以采用副本提升数据可靠性,基于副本的冗余方式,图2中的步骤s102可以包括:分别读取至少两个第二目标条带的第二类数据块;分别生成每个第二类数据块对应的数据副本;其中,将数据副本作为每个第二类数据块对应的待写入数据块;对于采用副本转储数据的方式,图2中步骤s103可以包括:将数据副本写入存储空间,与对应的第一类数据块构成逻辑条带。
76.在本发明实施例中,为了节省空间,通过副本间转储实现,例如将四副本条带转储为二副本条带,与图7的示例类似,从四副本条带中读取一个数据块作为第二类数据块,并对第二类数据块拷贝一份数据副本,将数据副本写入存储空间,并将数据副本与对应的第二类数据块构成二副本的逻辑条带,此处不再赘述。
77.需要说明的是,在本发明实施例中数据冗余策略变更并不局限于本实施例中的几种冗余策略之间的变更,可以用于各种副本、各种raid和各种纠删码之间的相互变更,本发明实施例对此不予限定。
78.基于同一发明构思,本实施例还提供了一种数据冗余策略变更装置,请参照图10,图10示出了本发明实施例提供的数据冗余策略变更装置200的方框示意图。数据冗余策略变更装置200应用于存储节点,数据冗余策略变更装置200包含决策模块201、生成模块202和写入模块203。
79.决策模块201,用来当满足冗余策略切换条件时,确定目标条带;目标条带表征满足冗余策略切换需求的条带;生成模块202,用于根据目标条带中的至少一个数据块,确定至少一个待写入数据块;待写入数据块表征数据块对应的校验块或数据块对应的副本;写入模块203,用于将待写入数据块写入存储空间,与至少一个数据块构成逻辑条带。
80.可选地,决策模块201,具体用于当磁盘的负载利用率大于盘负载高阈值时,将磁盘确定为第一类目标盘;第一类目标盘表征业务负载高的磁盘;遍历系统中所有条带,确定第一目标条带,第一目标条带的第一类数据块存储于第一类目标盘上,第一目标条带为目标条带的一种。
81.可选地,决策模块201,当磁盘的负载利用率小于盘负载低阈值时,将磁盘确定为第二类目标盘;第二类目标盘表征业务负载低的磁盘;遍历系统中所有条带,确定第二目标条带,第二目标条带的第二类数据块存储于第二类目标盘上,第二目标条带为目标条带的一种。
82.可选地,生成模块202,具体用于分别读取每个第一类数据块;将第一类数据块划分为至少两组第一类数据组;分别根据每个第一类数据组计算对应的校验块,将校验块作为第一类数据组对应的待写入数据块。写入模块203,具体用于将校验块写入存储空间,与对应的第一类数据组构成逻辑条带。
83.可选地,生成模块202,具体用于分别读取每个第一类数据块;分别生成每个第一类数据块对应的数据副本;将数据副本作为每个第一类数据块对应的待写入数据块。写入模块203,具体用于将数据副本写入存储空间,与对应的第一类数据块构成逻辑条带。
84.可选地,生成模块202,具体用于分别读取至少两个第二目标条带的第二类数据块;将全部第二类数据块组合为至少一组第二类数据组;分别根据每个第二类数据组计算对应的校验块,将校验块作为第二类数据组对应的待写入数据块。写入模块203,具体用于将校验块写入存储空间,与对应的第二类数据组构成逻辑条带。
85.可选地,生成模块202,具体用于分别读取至少两个第二目标条带的第二类数据块;分别生成每个第二类数据块对应的数据副本;将数据副本作为每个第二类数据块对应的待写入数据块。写入模块203,具体用于将数据副本写入存储空间,与对应的第二类数据块构成逻辑条带。
86.请参照图11,为本发明实施例提供的存储节点100的一种方框示意图。存储节点100可以是单存储节点、分布式存储节点、集中式存储节点等。存储节点100包括存储器110、处理器120及通信模块130。存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
87.其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
88.处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。例如,当存储器110中存储的计算机程序被处理器120执行时,可以实现上述各实施例所揭示的数据冗余策略变更方法。
89.通信模块130用于通过网络建立存储节点100与其它通信终端之间的通信连接,并用于通过网络收发数据。
90.应当理解的是,图11所示的结构仅为存储节点100的结构示意图,存储节点100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。图11中所示的各组件可以采用硬件、软件或其组合实现。
91.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时实现上述各实施例所揭示的数据冗余策略变更方法。
92.综上所述,本发明实施例提供了一种数据冗余策略变更方法、装置、电子设备和存储介质,当满足冗余策略切换条件时,确定目标条带;目标条带表征满足冗余策略切换需求的条带;根据目标条带中的至少一个数据块,确定至少一个待写入数据块;待写入数据块表征数据块对应的校验块或数据块对应的副本;将待写入数据块写入存储空间,与至少一个
数据块构成逻辑条带。本方案实现数据转储时并没有为数据块新申请空间,而是直接使用目标条带的数据块,根据切换后的冗余策略生成校验块或副本,由目标条带的数据块和新生成的校验块或副本构成逻辑条带,完成数据转储。有效避免因数据块新写带来io开销,从而显著减少磁盘io负载,提升存储系统性能。
93.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
94.另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
95.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
96.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。