本发明属于数据处理,具体涉及一种分布式对象存储的数据恢复优化方法。
背景技术:
1、分布式存储系统中,通常采用多副本或者纠删码(erasure code,ec)的方式来存储数据,以提高数据的安全性。实际上,分布式存储系统在发生硬盘故障时,会采用降级写来保证系统的可用性。降级写通常是减少副本数或者ec分块数,降低写操作的副本数量要求,使写入可以成功完成。当硬盘恢复正常,重新构建缺失的副本数据或者分片数据,通常称这个过程为数据恢复。数据恢复过程会在分布式存储系统内部产生大量读写数据的操作,从而影响分布式存储系统外部读写数据的性能。
2、现有技术的问题:
3、1、根据外部读写请求来对数据恢复速度进行调节,但是,实际需要恢复的数据量并未减少。
4、2、数据恢复产生大量的随机读,导致机械硬盘的写时延显著增加。数据恢复和外部请求使用相同的硬盘,从而导致外部写请求变慢。
5、3、数据恢复速度根据时间或者根据外部请求数据量自适应调整,若外部请求数据量持续较大,数据恢复速度则会一直很慢。
技术实现思路
1、本发明目的在于提供一种分布式对象存储的数据恢复优化方法,用于解决上述现有技术中存在的技术问题,即,根据外部读写请求来对数据恢复速度进行调节,但是,实际需要恢复的数据量并未减少。数据恢复产生大量的随机读,导致机械硬盘的写时延显著增加。数据恢复和外部请求使用相同的硬盘,从而导致外部写请求变慢。数据恢复速度根据时间或者根据外部请求数据量自适应调整,若外部请求数据量持续较大,数据恢复速度则会一直很慢。
2、为实现上述目的,本发明的技术方案是:
3、一种分布式对象存储的数据恢复优化方法,包括以下步骤:
4、s1、基于不同的硬盘,创建不同的数据存储池;
5、s2、创建桶,桶关联步骤s1中创建的多个数据存储池;
6、s3、监控步骤s2中数据存储池的状态;
7、s4、根据步骤s3中数据存储池的状态,确定数据写入的位置。
8、进一步的,步骤s1具体如下:
9、在分布式对象存储系统选择一定数量硬盘创建数据存储池,数据存储池用于存储数据;
10、每个数据存储池相互独立,互不影响;
11、数据存储池的冗余策略包括多副本和纠删码;
12、多副本是将数据复制若干份,存储到不同存储节点上;
13、纠删码是将数据分为k个数据块,并进行编码,生成m个校验块,只要有任意k个块都可重建完整数据。
14、进一步的,在分布式对象存储系统选择一定数量硬盘创建数据存储池,具体如下:
15、根据实际物理资源选择选择硬盘数量,即,每个存储池存储的数据量预计为total,存储节点的数量为n,每个硬盘的容量为space,冗余策略的数据利用率为util,其中,若为n副本,数据利用率为1/n * 100%,若为ec k + m,数据利用率为k/(k+m) * 100%,则每个存储节点选择d个硬盘,d = total/(space*n*util)。
16、进一步的,步骤s2中,用户可往桶里面写入数据,分布式对象存储系统根据算法决定数据存入的某个数据存储池,即一个桶内的数据可存入不同的数据存储池。
17、进一步的,步骤s3中数据存储池的状态具体如下:
18、数据存储池的状态分为正常、降级、数据恢复、异常状态;
19、正常状态是数据存储池对应的硬盘无异常;
20、降级状态是数据存储池有硬盘故障或存储节点异常,可降级写入数据;
21、数据恢复状态是数据存储池发生硬盘故障或存储节点异常,降级写入数据以后,硬盘或者存储节点恢复正常,数据存储池正在进行数据恢复;
22、异常状态是数据存储池出现故障,不能提供读写服务;
23、其中,数据存储池的状态发生变化,需记录数据存储池最新的状态。
24、进一步的,步骤s3中监控步骤s2的数据存储池的状态具体如下:
25、对象网关为客户提供对象存储服务,将客户的请求转化为对分布式存储系统的操作;
26、监控集群是分布式强一致性的集群,负责修改和扩散分布式存储系统的信息,即,硬盘状态、数据存储池的状态;
27、当数据存储池的状态发生变化时,监控集群向对象网关和分布式存储系统扩散最新的信息;同时,对象网关向监控集群获取最新的数据存储池的信息;
28、如果数据存储池的状态未发生改变,监控集群不会向对象网关推送数据存储池的信息;但是,对象网关会定时获取数据存储池的信息。
29、进一步的,步骤s4具体如下:
30、s41、生成可写存储池集合;
31、依次从状态为正常、降级、数据恢复、异常的数据存储池放入可写存储池集合,直到满足以下2个条件停止将存储池放入可写存储池集合:1、正常状态的数据存储池全部放入可写存储池集合,2、可写存储池集合的存储池数量不小于m;
32、s42、容量均衡地写入数据;
33、若可写存储池集合有3个数据存储池,数据存储池的剩余容量依次为available_space1、available_space2、available_space3,数据存储池已写入的数据量分别为write_bytes1、write_bytes2、write_bytes3;分别计算write_bytes1/available_space1、write_bytes2/available_space2、write_bytes3/available_space3,选择结果最小的数据存储池进行写入;写入成功后,对应数据存储池的write_bytes加上当前的写入的数据量;在更新状态时会更新available_space;同时,也会定时更新数据存储池的available_space;在更新available_space时,将对应的write_bytes设置为0;
34、s43、若存在数据恢复的数据存储池,调整对应的恢复策略;
35、若数据恢复的数据存储池在可写存储池集合,设置恢复策略为业务优先;否则,设置恢复策略为恢复优先。
36、进一步的,步骤s42中,分别计算write_bytes1/available_space1、write_bytes2/available_space2、write_bytes3/available_space3,选择结果最小的数据存储池进行写入,选择步骤具体如下:
37、判断三个计算结果中的最小值是否唯一,若判断为唯一,则保存当前最小值,记为预留最小值,并,重复上述计算过程,此时,若最小值仍唯一且与预留最小值一致,则写入预留最小值;
38、判断三个计算结果中的最小值是否唯一,若判断为不唯一,则更换计算模块后再次计算;若此时三个计算结果中的最小值唯一,则将更换计算模块后的最小值写入;若此时三个计算结果中的最小值仍不唯一,则将更换计算模块前的多个最小值写入。
39、一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被运行时执行如上述的一种分布式对象存储的数据恢复优化方法。
40、与现有技术相比,本发明所具有的有益效果为:
41、本方案其中一个有益效果在于,本发明根据数据池的状态生成可写存储池集合,在部分数据存储池降级时,减少降级写入数据。从而减少需要恢复的数据,降低了数据丢失的风险。本发明在分布式对象存储进行数据恢复时,根据数据存储池的状态和可用容量进行分类,一部分数据存储池提供外部写服务,一部分数据存储池进行数据恢复。从物理资源上,对外部写请求和数据恢复进行了隔离,数据恢复产生的随机读不影响外部写请求。根据数据存储池集合的状态自适应调整数据池的恢复速度,进行数据恢复的存储池可以长时间保持较高的恢复速度,缩短数据恢复的时间。