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

一种scrub机制的优化方法、系统、装置及可读存储介质与流程

2021-11-22 13:52:00 来源:中国专利 TAG:


1.本发明涉及分布式存储技术领域,更具体的说是涉及一种scrub机制的优化方法、系统、装置及可读存储介质。


背景技术:

2.分布式存储集群,保障副本之间数据的一致性是至关重要的。尤其集群读写过程中,由于各种原因(节点故障、网络故障、磁盘故障等)导致副本之间出现了读写的数据不一致问题,造成客户数据丢失。scrub(数据一致性校验)机制可以校验出数据错误,数据读写期间scrub机制会扫描副本之间的数据进行比较,发现数据丢失或者错误,会立即呈现出来,scrub的操作流程包括如下步骤:
3.1、osd(object

based storage device,对象存储设备)启动后,为每个pg(placement group,归置组)注册scrub的触发状态。
4.2、osd定时扫描pg,符合条件触发scrub。
5.3、主osd开始构建扫描对象列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
6.4、备osd给主osd回应之后,开始比较主osd上读取的数据是否和备osd上的是否一致,如果数据不一致,标记为scrub_error状态。
7.基于上述方案描述,现有的scrub的操作和前端业务是互斥关系,大量scrub触发的时候,会严重影响集群前端业务,这是客户所不能允许的。


技术实现要素:

8.针对以上问题,本发明的目的在于提供一种scrub机制的优化方法、系统、装置及可读存储介质,能够根据前端的业务压力,自动调整当前scrub触发的个数和每次扫描对象的个数,在保证scrub能够执行的情况下,尽可能降低scrub对前端业务影响。
9.本发明为实现上述目的,通过以下技术方案实现:一种scrub机制的优化方法,包括:
10.启动osd,并为每个pg注册scrub的触发状态;
11.定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg;
12.触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描。
13.进一步,所述定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg包括:
14.根据预设的时间间隔定时通过预设命令获取过去一分钟内的集群压力值,判断所述集群压力值是否大于第一压力阈值n1,若是,则不触发scrub机制,否则,osd触发scrub机制去扫描pg。
15.进一步,所述触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描包括:
16.触发scrub机制后,在每次扫描对象之前通过预设命令获取过去一分钟内的集群压力值,若所述集群压力值大于第二压力阈值n2,暂停t秒钟后再启动扫描。
17.进一步,所述触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描还包括:
18.若所述集群压力值大于第三压力阈值n3,将每次扫描的对象数量设为a,并启动扫描;
19.若所述集群压力值为零,将每次扫描的对象数量设为b,并启动扫描;
20.其中,a<b。
21.进一步,所述n1>n2>n3>0;2a=b。
22.进一步,所述t=3。
23.进一步,本方法还包括:
24.将osd划分为主osd和备osd;
25.主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象;
26.备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
27.相应的,本发明还公开了一种scrub机制的优化系统,包括:
28.注册单元,用于启动osd,并为每个pg注册scrub的触发状态;
29.触发单元,用于定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg;
30.调整单元,用于触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描;
31.数据读取单元,用于主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象;
32.一致性比对单元,用于备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
33.进一步,所述调整单元包括:
34.时间设定模块,用于设置扫描的等待时间;
35.数量设定模块,用于设置每次扫描的对象数量。
36.相应的,本发明公开了一种scrub机制的优化装置,包括:
37.存储器,用于存储scrub机制的优化程序;
38.处理器,用于执行所述scrub机制的优化程序时实现如上文任一项所述scrub机制的优化方法的步骤。
39.相应的,本发明公开了一种可读存储介质,所述可读存储介质上存储有scrub机制的优化程序,所述scrub机制的优化程序被处理器执行时实现如上文任一项所述scrub机制的优化方法的步骤。
40.对比现有技术,本发明有益效果在于:本发明提供了一种scrub机制的优化方法、
系统、装置及可读存储介质,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
41.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
43.附图1是本发明的方法流程图;
44.附图2是本发明的系统结构图。
45.图中,1为注册单元;2为触发单元;3为调整单元;4为数据读取单元;5为一致性比对单元;31为时间设定模块;32为数量设定模块。
具体实施方式
46.本发明的核心是提供一种scrub机制的优化方法,现有技术中,由于scrub的操作和前端业务是互斥关系,大量scrub触发的时候,会严重影响集群前端业务,这是客户所不能允许的。
47.而本发明提供的scrub机制的优化方法,首先,启动osd后为每个pg注册scrub的触发状态.然后,定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg。触发scrub机制后,动态调整本次扫描的参数后再启动扫描。最后,比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。由此可见,本发明能够根据前端的业务压力,自动调整当前scrub触发的个数和每次扫描对象的个数,在保证scrub能够执行的情况下,尽可能降低scrub对前端业务影响。
48.为了使本技术领域的人员更好地理解本发明方案,对本发明的scrub机制进行如下说明:
49.scrub是ceph集群副本进行数据扫描的操作,用于检测副本间数据的一致性,其原理为:通过对比各个对象副本的数据和元数据,完成副本一致性检查。ceph scrub的优点是数据可以发现由于磁盘损坏导致的数据不一致现象。缺点是发现的时机比较之后。
50.scrub按照扫描的内容可以分为两种:
51.1.scrub——仅仅对比对象各副本的元数据,来检查数据的一直。由于只检查元数据,读取数据量和计算量都比较小,速度比较快,是一种轻度的数据检查。
52.2.deep

scrub——不但检查对象各副本的元数据,还检查对象的数据内容是否一致,实现深度扫描,几乎要扫描磁盘上所有的数据并计算其crc32校验值,耗时耗资源。
53.scrub按照扫描的方式可以分为:
54.1.在线扫描——不影响正常业务,即不中断系统当前的读写请求,客户端可以继
续完成读写访问,整个系统并不会暂停,但是后天正在进行scrub的对象要被阻止读写,指导该对象完成scrub才会解除阻止。
55.2.离线扫描——整个系统暂停或者冻结。
56.其中scrub只对元数据信息进行扫描,相对比较快;而deep

scrub不仅对元数据进行扫描,还会对存储的数据进行扫描,相对比较慢。osd的scrub默认策略是每天到每周(如果集群负载大周期就是一周,如果集群负载小周期就是一天)进行一次,时间区域默认为全体(0时

24时),deep

scrub默认策略是每周一次。为了避开客户业务高峰时段,建议在晚上0点到第二天早上5点之间,执行scrub操作。
57.下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.实施例一:
59.如图1所示,本实施例提供了一种scrub机制的优化方法,包括如下步骤:
60.s1:启动osd,并为每个pg注册scrub的触发状态。
61.s2:定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg。
62.s3:触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描。
63.s4:将osd划分为主osd和备osd。
64.s5:主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
65.s6:备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
66.本实施例提供了一种scrub机制的优化方法,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
67.实施例二:
68.基于实施例一,本实施例还提供了一种scrub机制的优化方法,包括如下步骤:
69.s1:启动osd,并为每个pg注册scrub的触发状态。
70.s2:根据预设的时间间隔定时通过预设命令获取过去一分钟内的集群压力值,判断所述集群压力值是否大于第一压力阈值n1,若是,则不触发scrub机制,否则,osd触发scrub机制去扫描pg。
71.s3:触发scrub机制后,在每次扫描对象之前通过预设命令获取过去一分钟内的集群压力值,若所述集群压力值大于第二压力阈值n2,暂停t秒钟后再启动扫描;若所述集群压力值大于第三压力阈值n3,将每次扫描的对象数量设为a,并启动扫描;若所述集群压力值为零,将每次扫描的对象数量设为b,并启动扫描;其中,a<b,n1>n2>n3>0。
72.s4:将osd划分为主osd和备osd。
73.s5:主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
74.s6:备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
75.本实施例提供了一种scrub机制的优化方法,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
76.实施例三:
77.基于实施例一,本实施例还提供了一种scrub机制的优化方法,包括如下步骤:
78.s1:启动osd,并为每个pg注册scrub的触发状态。
79.s2:根据预设的时间间隔定时通过预设命令获取过去一分钟内的集群压力值,判断所述集群压力值是否大于第一压力阈值n,若是,则不触发scrub机制,否则,osd触发scrub机制去扫描pg。
80.s3:触发scrub机制后,在每次扫描对象之前通过预设命令获取过去一分钟内的集群压力值,若所述集群压力值大于第二压力阈值0.8n,暂停t秒钟后再启动扫描;若所述集群压力值大于第三压力阈值0.6n,将每次扫描的对象数量设为a,并启动扫描;若所述集群压力值为零,将每次扫描的对象数量设为2a,并启动扫描。
81.s4:将osd划分为主osd和备osd。
82.s5:主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
83.s6:备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
84.本实施例提供了一种scrub机制的优化方法,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
85.实施例四:
86.基于上述实施例,本实施例还提供了一种scrub机制的优化方法,包括:
87.1、osd启动后,为每个pg注册scrub的触发状态。
88.2、osd在每日0时通过scrub机制去扫描pg,检查过去一分钟osd进程的压力值,压力值大于50%则不触发scrub,直到一定期限才触发scrub。若过去一分钟的压力值小于50%,可正常触发scrub。
89.3、触发scrub的之后,在每次扫描对象之前,都检查一下过去一分钟osd进程的压力值,动态调整本次扫描的参数。具体来说,压力值大于40%时,先sleep3秒钟再进行扫描工作;若压力值小于30%,每次扫描5个对象;若压力值为0,每次扫描10个对象。
90.4、主osd根据调整的参数开始构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
91.5、备osd给主osd回应之后,开始比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
92.本实施例提供了一种scrub机制的优化方法,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
93.实施例五:
94.如图2所示,本发明还公开了一种scrub机制的优化系统,包括:注册单元1、触发单元2、调整单元3、数据读取单元4和一致性比对单元5。
95.注册单元1,用于启动osd,并为每个pg注册scrub的触发状态。
96.触发单元2,用于定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg。
97.调整单元3,用于触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描。
98.调整单元3包括:时间设定模块31,用于设置扫描的等待时间;数量设定模块32,用于设置每次扫描的对象数量。
99.数据读取单元4,用于主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
100.一致性比对单元5,用于备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
101.本实施例提供了一种scrub机制的优化系统,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
102.实施例六:
103.本实施例公开了一种scrub机制的优化装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的scrub机制的优化程序时实现以下步骤:
104.1、启动osd,并为每个pg注册scrub的触发状态。
105.2、定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg。
106.3、触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描。
107.4、将osd划分为主osd和备osd。
108.5、主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
109.6、备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
110.进一步的,本实施例中的scrub机制的优化装置,还可以包括:
111.输入接口,用于获取外界导入的scrub机制的优化程序,并将获取到的scrub机制的优化程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于usb接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。
112.输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于usb接口、串行接口等。
113.通讯单元,用于在scrub机制的优化装置和外部服务器之间建立远程通讯连接,以便于scrub机制的优化装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。
114.键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。
115.显示器,用于运行服务器供电线路短路定位过程的相关信息进行实时显示。
116.鼠标,可以用于协助用户输入数据并简化用户的操作。
117.本实施例提供了一种scrub机制的优化装置,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
118.实施例七:
119.本实施例还公开了一种可读存储介质,这里所说的可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动硬盘、cd

rom或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有scrub机制的优化程序,所述scrub机制的优化程序被处理器执行时实现以下步骤:
120.1、启动osd,并为每个pg注册scrub的触发状态。
121.2、定时进行osd进程的第一压力测试,第一压力测试通过后,osd触发scrub机制去扫描pg。
122.3、触发scrub机制后,在每次扫描对象之前进行第二压力测试,根据测试结果动态调整本次扫描的参数后再启动扫描。
123.4、将osd划分为主osd和备osd。
124.5、主osd根据调整的本次扫描的参数构建扫描对象的列表,并把对象读取上来,同时给备osd发送消息,读取列表中的对象。
125.6、备osd收到消息后向主osd发送回应信息,并比较主osd上读取的数据是否和备osd上的一致,如果数据不一致,标记为scrub_error状态。
126.本实施例提供了一种可读存储介质,通过提前检测机制,判断集群读写压力是否满足运行scrub校验,并根据前端业务压力,自动调整当前scrub的触发和每次扫描对象的
个数。在保障scrub机制有效运行的情况下,使用提前检查存储集群读写压力的大小,控制触发scrub机制的运行,有效降低了scrub校验机制对前端读写的影响,同时又保障了读写数据地准确性。
127.综上所述,本发明能够根据前端的业务压力,自动调整当前scrub触发的个数和每次扫描对象的个数,在保证scrub能够执行的情况下,尽可能降低scrub对前端业务影响。
128.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
129.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
130.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
131.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
132.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
133.同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
134.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
135.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
136.以上对本发明所提供的scrub机制的优化方法、系统、装置及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献