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

选择备份目的地的方法、电子设备和计算机程序产品与流程

2022-04-02 02:23:03 来源:中国专利 TAG:


1.本公开的实现方式一般地涉及存储系统,并且更特别地涉及用于选择备份目的地存储设备的方法、电子设备和计算机程序产品。


背景技术:

2.如今,许多公司或企业每天都会生成大量的数据。为了数据的安全,对数据的保护变得越来越重要。在这方面,备份存储系统可以提供数据保护,并且可以将待备份的数据复制到多个存储设备,从而获得存放在不同存储设备中的多个数据副本。
3.目前已经提出了基于存储设备集合中的多个可选存储设备的状态,来选择可以作为备份目的地的存储设备子集。例如,可以为存储设备集合中的每个存储设备的状态设置评分,并且确定生成存储设备子集的各种组合方式(例如,基于排列组合的方式)的评分。然而,当存在大量(例如,数十甚至更多)存储设备时,基于备份目的地所涉及的存储设备的数量,将存在数万甚至数十万种组合方式。此时,在选择备份目的地时,将涉及巨大的计算量因而不能以有效的方式向用户提供备份目的地的建议。


技术实现要素:

4.本公开的实现方式提出了一种在存储设备集合中确定用于数据备份的备份目的地的技术方案,并且具体提供了一种用于选择备份目的地的方法、电子设备和计算机程序产品。
5.在本公开的第一方面,提供了一种用于为备份任务选择备份目的地的方法,包括:在存储设备集合中,获取第一组候选子集,第一组候选子集中的候选子集包括的存储设备的数量是基于备份任务指定的副本数量来确定的;确定第一组候选子集的第一组子集代码,第一组子集代码中的代码唯一地标识第一组候选子集中的候选子集;根据第一组子集代码生成第二组子集代码,第二组子集代码中的代码唯一地标识候选子集;以及基于第一组候选子集和与第二组子集代码相对应的第二组候选子集,选择目标子集以作为备份任务的备份目的地。
6.在本公开的第二方面,提供了一种电子设备。该电子设备包括:至少一个处理器;以及至少一个存储器,存储有计算机程序指令,至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使电子设备执行一种用于为备份任务选择备份目的地的动作。该动作包括:在存储设备集合中,获取第一组候选子集,第一组候选子集中的候选子集包括的存储设备的数量是基于备份任务指定的副本数量来确定的;确定第一组候选子集的第一组子集代码,第一组子集代码中的代码唯一地标识第一组候选子集中的候选子集;根据第一组子集代码生成第二组子集代码,第二组子集代码中的代码唯一地标识候选子集;以及基于第一组候选子集和与第二组子集代码相对应的第二组候选子集,选择目标子集以作为备份任务的备份目的地。
7.在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地
存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
8.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实现方式的关键或重要特征,亦非用于限制本公开的范围。本公开的其他特征通过以下的描述将变得容易理解。
附图说明
9.通过参考附图阅读下文的详细描述,本公开的实现方式的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实现方式。
10.图1示意性示出了本公开的示例性实现方式可以在其中实现的应用环境的框图。
11.图2示意性示出了根据本公开的示例性实现方式的用于确定备份目的地的过程的框图。
12.图3示意性示出了根据本公开的示例性实现方式的用于确定备份目的地的方法的流程图。
13.图4示意性示出了根据本公开的示例性实现方式的用于获取第一组候选子集的过程的框图。
14.图5示意性示出了根据本公开的示例性实现方式的用于确定设备代码的过程的框图。
15.图6示意性示出了根据本公开的示例性实现方式的用于确定子集代码的过程的框图。
16.图7a和7b分别示意性示出了根据本公开的示例性实现方式的用于基于交换操作来生成第二组子集代码的过程的框图。
17.图8示意性示出了根据本公开的示例性实现方式的用于基于翻转操作来生成第二组子集代码的过程的框图。
18.图9示意性示出了根据本公开的示例性实现方式的用于基于全局均衡度来选择目标子集的过程的框图。
19.图10示意性示出了一种可以被用来实施本公开的示例性实现方式的设备的框图。
20.贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
21.下面将参考附图中示出的若干示例性实现方式来描述本公开的原理和精神。应当理解,描述这些实现方式仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。在本文的描述和权利要求中,除非另有定义,否则本文中使用的所有技术术语和科学术语具有与本公开所属领域的普通技术人员通常所理解的含义。
22.目前已经提出了分布式存储系统的概念,分布式存储系统可以包括上百甚至更多的存储设备。例如,这些存储设备可以分布在全世界的各个地理位置。首先参见图1描述根据本公开的示例性实现方式的应用环境。图1示意性示出了本公开的示例性实现方式可以
在其中实现的示例应用环境的框图。图1示意性示出了本公开的示例性实现方式可以在其中实现的示例应用环境的框图100。如图1所示存储系统可以包括存储设备集合110,该集合可以包括n个存储设备,如图1所示的存储设备110-1、110-2、110-3、110-4、110-5、110-6、110-7、
……
、以及110-n。
23.备份任务120可以指定备份副本的数量,例如,可以指定需要3个备份副本。此时,需要从大量存储设备中选择3个存储设备来作为备份目的地。将会理解,可以存在多个候选子集130,并且每个候选子集包括3个存储设备。例如,候选子集130-1可以包括存储设备110-1、110-2以及110-3,
……
,以及候选子集130-m可以包括存储设备110-6、110-7以及110-n。在此的m和n为正整数,此时可以从多个候选子集130中选择目标子集140,以便用于作为备份任务120的目的地。
24.目前已经提出了基于存储设备集合110中的多个可选存储设备的状态,来选择可以作为备份目的地的存储设备子集。例如,可以确定存储设备子集的各种组合方式(例如,基于排列组合的方式)的评分。然而,当存在大量(例如,数十甚至更多)存储设备时,将存在数万甚至数十万种组合方式。假设存在n个存储设备,并且期望存储x个副本,则可以存在种组合方式。例如,n=1000并且x=3,则组合方式的数量为此时,在选择备份目的地时,将涉及巨大的计算量因而处理效率低下。
25.鉴于传统方案中存在的上述问题以及潜在的其他问题,本公开的实现方式提出了一种在存储设备集合中为备份任务选择备份目的地的技术方案。在本公开的实现方式中,可以为每个候选子集设置唯一的子集代码,可以通过代码变换来生成新的子集代码。继而,可以将由新的子集代码所表示的候选子集作为备份目的地的候选。在下文中,将参见图2描述根据本公开的示例性实现方式的概要。
26.图2示意性示出了根据本公开的示例性实现方式的用于确定备份目的地的过程的框图200。如图2所示,可以从存储设备集合110中选择第一组候选子集210。例如,第一组候选子集210可以包括u个候选子集(u为正整数并且其数值可以远远小于组合方式的数量)。为每个候选子集设置子集代码以形成第一组子集代码230。例如,候选子集210-1的代码为子集代码230-1,以及候选子集210-u的代码为子集代码230-u,等等。
27.可以基于第一组子集代码230来生成第二组子集代码240。将会理解,在此第一组子集代码230和第二组子集代码240可以具有相同或者不同的数量的子集代码,例如,第二组子集代码240可以包括子集代码240-1、
……
、以及204-v。继而,可以基于第二组子集代码240来生成第二组候选子集220,并且可以从候选子集220-1、
……
以及220-v中选择目标子集140。
28.利用本公开的示例性实现方式,并不需要逐一遍历每种组合方式。而是可以基于最初的第一组候选子集210来获得更多候选子集。以此方式,可以大大降低选择目标子集的计算量。尽管以此方式获得的目标子集可能并非全局最优,然而该技术方案可以在有限的时间和计算开销内获得局部最优的目标子集。以此方式,可以提高选择备份目的地的速度,并且在处理速度与存储系统的整体性能之间实现平衡。
29.在下文中,将参见图3描述根据本公开的示例性实现方式的更多细节。图3示意性示出了根据本公开的示例性实现方式的用于确定备份目的地的方法300的流程图。在框310
处,在存储设备集合110中,获取第一组候选子集210,第一组候选子集210中的候选子集包括的存储设备的数量是基于备份任务120指定的副本数量来确定的。每个候选子集可以作为一个备份目的地。
30.根据本公开的示例性实现方式,可以从多个候选子集中选择第一组候选子集210。例如,可以基于对备份目的地的预定性能要求,从存储设备集合的多个候选子集中选择第一组候选子集210。以此方式,可以从多个候选子集中排除掉不满足预定性能要求的候选子集,从而确保用作初始种子的第一组候选子集210中的各个候选子集均满足性能要求。
31.可以确定备份任务120指定的副本数量。根据本公开的示例性实现方式,副本数量可以由存储系统的用户来输入。例如,用户可以在服务等级协议(sla)中指定副本数量。为方便描述起见,在下文中将仅以副本数量3作为示例进行描述。应当理解,本公开的实现方式可以适用于其他任何数量的副本的情形。
32.根据本公开的示例性实现方式,多个候选子集中的每个初始候选子集的存储设备的数量可以等于副本数量,也即,每个存储设备上可以存储一个数据副本。此时,将会存在个候选子集。当n的数量较大时,将会存在大量候选子集,此时可以仅从个候选子集。根据本公开的示例性实现方式,可以选择预定数量的候选子集,例如,可以随机地选择500(或者其他数量)个候选子集。此时,第一组候选子集210将会包括500个候选子集。根据本公开的示例性实现方式,可以指定第一组候选子集210应当包括全部的n个存储设备。
33.继而,可以基于预定性能要求来过滤第一组候选子集210。例如,可以基于存储设备之间的距离来设置预定性能要求。预定性能要求可以包括:第一组候选子集210中的每个候选子集中的任意两个存储设备之间的距离大于阈值距离。假设第一组候选子集210中的给定候选子集包括3个存储设备,并且其中的两个设备之间的距离小于阈值距离。可以从第一组候选子集210中删除该候选子集。
34.进一步,如果确定存储设备集合中的两个存储设备之间的距离小于阈值距离,则可以从第一组候选子集210中移除包括这两个存储设备的候选子集。将会理解,该阈值距离可以确保每个候选子集中的存储设备都具有不同的物理环境,因此降低不同存储设备同时遭受故障(例如,停电、洪水、机械撞击等)的可能性。将理解,这里列举的阈值距离的具体数值仅为示例性的,而并非以任何方式限制本公开的范围。在其他实现方式中,阈值距离可以根据具体的技术环境和性能要求被设置为任何值。
35.根据本公开的示例性实现方式,可以基于存储设备中的可用资源来设置预定性能要求。具体地,预定性能要求可以包括:第一组候选子集中的任意存储设备的可用资源量大于阈值资源量。以此方式,可以确保任何候选子集均能够完成数据备份任务。例如,这里的可用资源量可以包括存储设备的计算资源量、存储器资源量、存储容量、网络带宽,等等。因此,如果确定某个(或某些)存储设备的可用资源量少于阈值资源量,则可以从第一组候选子集中排除掉包括这样的存储设备的初始候选子集。根据本公开的示例性实现方式,阈值资源量可以基于备份任务所需要的资源量来设置。在其他实现方式中,阈值资源量也可以是根据具体的技术环境和性能要求预先确定的。
36.根据本公开的示例性实现方式,还可以基于多个候选子集的全局均衡度来确定第一组候选子集210。在此,全局均衡度指示在候选子集中的存储设备被用于备份任务情况下的存储设备集合的使用均衡度。将会理解,“使用均衡度”可以是指对于多个存储设备在任
何方面的“使用”的均衡程度。例如,“使用均衡度”可以是指对于多个存储设备的可用存储容量的“使用均衡度”,对于多个存储设备的输入网络带宽的“使用均衡度”,对于多个存储设备的处理资源的“使用均衡度”,对于多个存储设备的存储器资源的“使用均衡度”,等等。
37.可以分别确定多个候选子集130中的各个候选子集的全局均衡度,继而基于全局均衡度来确定第一组候选子集210。在下文中,将参见图4描述更多细节,该图4示意性示出了根据本公开的示例性实现方式的用于获取第一组候选子集的过程的框图400。如图4所示,可以确定候选子集130-1的全局均衡度410-1,
……
、可以确定候选子集130-m的全局均衡度410-m,等等。可以将全局均衡度410-1至410-m进行排序,并且选择预定数量(或者预定百分比)的候选子集来创建第一组候选子集210。
38.根据本公开的示例性实现方式,可以基于多种方式来确定全局均衡度。根据本公开的示例性实现方式,可以基于候选子集中的各个存储设备的使用度量以及向候选子集中的各个存储设备传输备份数据所需的时间,来确定候选子集的全局均衡度。
39.根据本公开的示例性实现方式,期望多个存储设备的使用率均匀地增长,而并不希望某个存储设备过早被用尽。因而,可以利用使用度量来衡量存储设备被用尽的时间。例如,可以基于存储设备中的剩余存储容量、待备份的源数据的大小、以及源数据每天的增长速度来确定存储设备何时被用尽。例如,可以基于如下公式1和公式2来确定第i个存储设备被用尽的时间:
[0040][0041]
其中vei表示第i个存储设备每天的数据增长量,i为正整数并且i≤存储设备的数量n,n表示带备份的源数据的数量,sdss表示第s个源数据,ddii表示第i个存储设备每天的数据增长(例如,以百分比表示),并且dr表示数据重复率。
[0042][0043]
其中etfri表示第i个存储设备的预测的用尽时间,其中vei表示第i个存储设备每天的数据增长量,以及rci表示在第i个存储设备上的可用存储空间。
[0044]
进一步,可用基于如下公式3来确定各个存储设备的有关用尽时间的标准差:
[0045][0046]
其中σ1表示有关用尽时间的标准差,n表示存储设备的数量,etfri表示第i个存储设备的预测的用尽时间,表示各个存储设备的用尽时间的均值。将会理解,上文的公式1至3仅仅是用于确定全局均衡度中有关用尽时间的分量的具体示例。根据本公开的示
例性实现方式,可以基于其他公式来确定该分量。
[0047]
在下文中,将介绍有关确定传输时间的更多信息。根据本公开的示例性实现方式,可以基于各个存储设备的带宽来确定向某个存储设备传输源数据所需要的时间。例如,可以基于如下公式4来确定向第i个存储设备传输源数据的时间。
[0048][0049]
其中etci表示向第i个存储设备传输源数据的时间,vei表示第i个存储设备每天的数据增长量,以及nbi表示第i个存储设备的带宽。
[0050]
进一步可以基于公式5来确定各个存储设备的有关传输时间的标准差:
[0051][0052]
其中σ2表示有关传输时间的标准差,n表示存储设备的数量,etci表示第i个存储设备的预测的传输时间,表示各个存储设备的传输时间的均值。将会理解,上文的公式4至5仅仅是用于确定全局均衡度中有关传输时间的分量的具体示例。根据本公开的示例性实现方式,可以基于其他公式来确定该分量。
[0053]
根据本公开的示例性实现方式,可以基于如下公式6来确定与每个候选子集相关联的全局均衡度函数ge:
[0054]
ge=σ1*v1 σ2*v2 v3
[0055]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式6
[0056]
其中v1和v2分布表示自定义权重,σ1和σ2是按照上文描述的公式确定的分量,v3表示自定义的偏移值。将会理解,在此的公式6仅仅是示意性的。根据本公开的示例性实现方式,可以采用其他的公式来确定全局均衡度函数ge。例如,可以基于σ1和σ2的乘积来确定全局均衡度函数ge。
[0057]
根据本公开的示例性实现方式,可以针对第一组候选子集210中的每个候选子集来确定相应的全局均衡度函数ge。假设存储设备集合包括n个存储设备,并且每个存储设备的状态参数如下文表1所示:
[0058]
表1存储设备的状态参数
[0059] ve
t
(gb/day)rc
t
(gb)nb
t
(gb/s)ve
t
(gb/s)第1个存储设备15018,0000.10.001736第2个存储设备8016,0000.10.000926
……………
第n个存储设备9015,0000.10.001042
[0060]
假设需要生成3个副本,每天增加6gb的数据,则第一组候选子集210包括u个候选子集,则第一组候选子集210中的各个候选子集的全局均衡度ge可以如下文表2所示。
[0061]
表2候选子集的全局均衡度
[0062]
候选子集全局均衡度第1个候选子集10.70986
…ꢀ
第u个候选子集10.36655
[0063]
可以将表2中的全局均衡度进行排序,并且从第一组候选子集210中过滤掉具有较大全局均衡度的候选子集。换言之,可以优先地选择具有较小全局均衡度的候选子集来生成第一组候选子集210。
[0064]
根据本公开的示例性实现方式,可以指定全局均衡度的阈值,并且可以指定从第一组候选子集210中过滤掉高于该阈值的候选子集。根据本公开的示例性实现方式,可以基于历史经验来设置该阈值。根据本公开的示例性实现方式,可以基于各个存储设备的当前状态来设置该阈值。
[0065]
将会理解,在此的全局均衡度表示当选择某个候选子集作为备份目的地之后,存储设备集合中的各个存储设备的使用之间的差异。全局均衡度的数值越小,则表示选取该候选子集更加有助于各个存储设备的使用平衡。利用本公开的示例性实现方式,可以尽量选择有助于各个存储设备的使用平衡的候选子集来生成第一组候选子集210。进一步,可以基于第一组候选子集210来作为“种子”以便生成更加丰富的候选子集,进而有助于找到局部最优的候选子集。
[0066]
上文已经描述了确定第一组候选子集210的具体步骤,在下文中将返回图3继续描述如何确定候选子集的子集代码。在图3的框320处,确定第一组候选子集210的第一组子集代码230,第一组子集代码230中的每个子集代码可以唯一地标识第一组候选子集210中的一个候选子集。根据本公开的示例性实现方式,可以基于候选子集中包括的多个存储设备的设备代码,来确定候选子集的子集代码。首先参见图5描述确定设备代码的具体细节,该图5示意性示出了根据本公开的示例性实现方式的用于确定设备代码的过程的框图500。
[0067]
可以首先确定存储设备集合110中的多个存储设备的设备数量。如图5所示,此时设备数量为n,则可以基于设备数量n来确定每个存储设备的设备代码。例如,存储设备110-1可以以设备代码510-1来表示,存储设备110-2可以以设备代码510-2来表示,存储设备110-3可以以设备代码510-3来表示,
……
,存储设备110-n可以以设备代码510-n来表示。
[0068]
对于多个存储设备中的给定存储设备而言,可以基于设备数量n确定设备代码的长度。根据本公开的示例性实现方式,可以利用二进制表示存储设备的设备代码。此时,可以基于如下公式来确定设备代码的长度假设n=1024,则可以以10位长度来表示设备代码。如图5所示,可以以设备代码510-1(即,00

000)来表示第1个存储设备110-1,可以以设备代码510-2(即,00

001)来表示第2个存储设备110-2,可以以设备代码510-3(即,00

010)来表示第3个存储设备110-3,
……
,可以以设备代码510-n(即,11

111)来表示第n个存储设备110-n。
[0069]
将会理解,上文仅以示意性方式示出了基于二进制来表示设备代码的具体示例。根据本公开的示例性实现方式,还可以基于其他方式来表示设备代码。例如,可以基于四进制、八进制或者十六进制来表示设备代码。
[0070]
进一步,可以基于给定候选子集中的各个存储设备的设备代码,确定给定候选子集的代码。在下文中,将参见图6描述更多细节,该图6示意性示出了根据本公开的示例性实现方式的用于确定子集代码的过程的框图600。候选子集210-1包括3个存储设备:存储设备110-1、存储设备110-2和存储设备110-3,可以基于上述三个存储设备的设备代码来确定候选子集210-1的子集代码230-1。如图6所示,可以组合设备代码510-1、设备代码510-2设备代码510-n,以便生成子集代码230-1。由于每个设备代码的长度为10位,此时子集代码的长度将是10
×
3=30位。当采用其他方式时,设备代码和子集代码可以具有不同的长度。
[0071]
上文已经描述了确定子集代码的具体过程,可以针对第一组候选子集210中的每个候选子集执行类似的操作,以便为每个候选子集确定相应的子集代码。在下文中,将返回图3描述有关生成第二组子集代码240的更多细节。在框330处,根据第一组子集代码230生成第二组子集代码240,第二组子集代码240中的每个代码唯一地标识一个候选子集。根据本公开的示例性实现方式,可以交换第一组子集代码210中的一部分,以便生成第二组子集代码。
[0072]
在下文中,将仅以第一组候选子集210中的两个子集代码为示例描述有关交换操作的更多细节。图7a和7b分别示意性示出了根据本公开的示例性实现方式的用于基于交换操作来生成第二组子集代码的过程的框图。具体地,图7a示出了交换前的子集代码的框图700a。子集代码710a和720a是第一组候选子集210中的两个候选子集的代码。
[0073]
如图7a所示,可以按照预定长度,将第一组子集代码230中的各个代码分别划分为多个分段。为简单起见,图7a中仅示意性示出了将一个子集代码划分为两个分段的示例。具体地,阴影部分示出了一个分段,并且空白部分示出了另一分段。可以交换子集代码710a和720a中的以阴影部分示出的各个位。如箭头730a所示,子集代码710a中的各个位“00

00”将与子集代码720a中的各个位“11

11”进行交换。
[0074]
图7b示出了交换后的子集代码的框图700b,其中子集代码710b和720b是交换后的子集代码。如图7b所示,此时子集代码710b中的阴影部分的各个位已经被设置为“11

11”,并且子集代码710b中的阴影部分的各个位已经被设置为“00

00”。利用本公开的示例性实现方式,可以基于原有的第一组子集代码230来生成更多的子集代码(即,第二组子集代码240)。以此方式,可以确保生成的子集代码具有更高的多样性。
[0075]
将会理解,尽管图7a和图7b仅仅示出了将子集代码划分为两个分段的示例,根据本公开的示例性实现方式,可以将子集代码划分为更多的分段。例如,可以将子集代码划分为4个分段,并且可以交换两个子集代码中的第一分段和第三分段的各个位。又例如,可以交换两个子集代码中的第一分段和第四分段的各个位。
[0076]
根据本公开的示例性实现方式,可以指定各个分段的长度,并且各个分段可以具有相同或者不同的长度,例如,第一分段的长度可以为4,第二分段的长度可以为8,第三分段的长度可以为18。又例如,三个分段的长度可以均为10。
[0077]
将会理解,尽管上文描述了交换两个子集代码的相应分段的具体方式。根据本公开的示例性实现方式,还可以在多个子集代码的相应分段之间进行交换。例如,可以将第一组候选子集210划分为多个分组,假设每个分组包括k个候选子集,则可以循环地交换k个子集代码中的相应分段。例如,在一个分组中,可以利用第2个子集代码中的第一分段替换第1个子集代码中的第一分段,可以利用第3个子集代码中的第一分段替换第2个子集代码中的
第一分段,以此类推。
[0078]
根据本公开的示例性实现方式,可以在多个子集代码的不同分段之间进行交换。假设各个分段的长度相同,则可以直接交换各个子集代码中的不同分段。假设各个分段的长度不相同,则可以通过截取操作来获得较短的长度,并且通过填充操作来获得较长的长度。具体地,假设第一分段和第二分段的长度分别为4和6,在交换过程中可以将子集代码a的第一分段(包括4位)存储至临时存储区,并且利用子集代码b中的第二分段(包括6位)中的前4位替换子集代码a的第一分段。继而,可以利用临时存储区中的4位数值和随机生成的2位数值来替换子集代码b中的第二分段。
[0079]
将会理解,上文仅示意性示出了基于交换操作来生成新的子集代码的过程。根据本公开的示例性实现方式,可以在多个轮次中,不断地基于已有的子集代码来生成新的子集代码,以此方式可以获得更多的子集代码,进而获得更为丰富的候选子集。利用本公开的示例性实现方式,丰富的候选子集可以确保尽量覆盖更多的情况,以此方式,可以确保在更大的范围内生成局部最优的候选子集。
[0080]
根据本公开的示例性实现方式,可以从第一组子集代码230中选择至少一个子集代码,继而可以更新至少一个子集代码中的至少一部分,以形成至少一个更新的子集代码。具体地,可以从第一组子集代码230中选择预定数量(或者比例)的子集代码,并且改变所选择的子集代码中的某个或者某些数位。以此方式,可以确定第二组子集代码240。
[0081]
根据本公开的示例性实现方式,可以改变代码中的至少一部分数位。具体地,可以预先指定将要被修改的位的位置和数量。例如,可以指定改变3个位,并且指定改变第1位、第10位和第20位。当以二进制表示子集代码时,可以翻转被指定的数位。在下文中,将参见图8描述有关修改操作的更多细节,该图8示意性示出了根据本公开的示例性实现方式的用于基于翻转操作来生成第二组子集代码的过程的框图800。如图8所示,可以翻转子集代码710a中的以阴影示出的3个位。如箭头820所示,可以将“0”翻转为“1”;如箭头822所示,可以将“0”翻转为“1”;如箭头824所示,可以将“1”翻转为“0”。
[0082]
将会理解,上文图8仅示意性示出了以二进制表示的子集代码的修改操作的具体细节。当以其他方式表示子集代码时,可以基于其他数学操作来修改指定的位。例如,可以将指定位的数值加一、减一、或者执行其他数学操作。将会理解,上文仅示意性示出了基于修改操作来生成新的子集代码的过程。根据本公开的示例性实现方式,可以在多个轮次中,不断地基于已有的子集代码来生成新的子集代码,以此方式可以获得更多的子集代码,进而获得更多的候选子集。
[0083]
根据本公开的示例性实现方式,可以在一个或多个轮次中执行上文描述的交换操作和修改操作,以便生成更为丰富的子集代码。以此方式,可以以简单并且有效的方式从原始的第一组子集代码230生成更多的第二组子集代码240。此时,第二组子集代码240将包括更多可能的组合,进而丰富用于从中选择目标子集的组合的候选子集所覆盖的场景。
[0084]
返回图3继续描述有关选择目标子集140的更多细节。在图3的框340处,基于第一组候选子集210和与第二组子集代码240相对应的第二组候选子集220,选择目标子集140以作为备份任务140的备份目的地。在下文中,将参见图9示出更多细节,该图9示意性示出了根据本公开的示例性实现方式的用于基于全局均衡度来选择目标子集的过程的框图900。
[0085]
如图9所示,可以确定第一组候选子集210和第二组候选子集220中的各个候选子
集的全局均衡度,并且在第一组候选子集210和第二组候选子集220中,基于各个候选子集的全局均衡度,确定目标子集。继而,基于候选子集210-1的全局均衡度910-1、
……
、候选子集210-u的全局均衡度910-u、候选子集220-1的全局均衡度920-1、
……
、候选子集220-v的全局均衡度920-v,来确定目标子集140。
[0086]
可以基于多种方式来确定目标子集140。例如,可以设置阈值均衡度,如果某个候选子集的全局均衡度高于阈值均衡度,则将该候选子集标识为目标子集。以此方式,可以确定多个目标子集,以便于用户从中选择期望的目标子集。又例如,可以将各个全局均衡度进行排序,以便选择具有最佳局部均衡度的目标子集140。
[0087]
根据本公开的示例性实现方式,可以向目标子集140中的各个存储设备传输待备份数据,进而完成备份任务120。假设备份任务120指定向3个存储设备备份源数据,并且目标子集140包括存储设备110-1、110-2和110-3,则可以分别向存储设备110-1、110-2和110-3备份源数据。此时,在存储设备110-1、110-2和110-3中将分别包括源数据的一个副本。
[0088]
利用本公开的示例性实现方式,通过为每个候选子集设置全局唯一的子集代码,可以基于代码的交换操作和修改操作来生成更多的子集代码,进而确定更多的候选子集。以此方式,可以基于最初的候选子集来获得包括各种组合的更多的候选子集,进一步可以从更多的候选子集中选择局部最优的候选子集。
[0089]
上文已经参见图2至图9描述了用于执行根据本公开的示例性实现方式的方法。根据本公开的示例性实现方式,提供了一种用于为备份任务选择备份目的地的装置。该装置包括:获取模块,配置用于在存储设备集合中,获取第一组候选子集,第一组候选子集中的候选子集包括的存储设备的数量是基于备份任务指定的副本数量来确定的;确定模块,配置用于确定第一组候选子集的第一组子集代码,第一组子集代码中的代码唯一地标识第一组候选子集中的候选子集;生成模块,配置用于根据第一组子集代码生成第二组子集代码,第二组子集代码中的一个代码唯一地标识一个候选子集;以及选择模块,配置用于基于第一组候选子集和与第二组子集代码相对应的第二组候选子集,选择目标子集以作为备份任务的备份目的地。根据本公开的示例性实现方式,该装置进一步包括用于执行上文描述的方法中的其他步骤的模块。
[0090]
图10示意性示出了一种可以被用来实施本公开的示例性实现方式的设备1000的框图。根据本公开的示例性实现方式,设备1000可以是电子设备。示例设备1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储设备(rom)1002中的计算机程序指令或者从存储单元1008加载到随机访问存储设备(ram)1003中的计算机程序指令,来执行各种适当的动作和处理。在ram 1003中,还可存储示例设备1000操作所需的各种程序和数据。cpu 1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
[0091]
示例设备1000中的多个部件连接至i/o接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许示例设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0092]
上文所描述的各个过程和处理,例如示例方法或示例过程可由处理单元1001来执行。例如,根据本公开的示例性实现方式,各种示例方法或示例过程可被实现为计算机软件
程序,其被有形地包含于机器可读介质,例如存储单元1008。根据本公开的示例性实现方式,计算机程序的部分或者全部可以经由rom 1002和/或通信单元1009而被载入和/或安装到示例设备1000上。当计算机程序被加载到ram 1003并由cpu 1001执行时,可以执行上文描述的示例方法或示例过程的一个或多个步骤。
[0093]
根据本公开的示例性实现方式,提供了一种电子设备,包括:至少一个处理器;以及至少一个存储器,存储有计算机程序指令,至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使电子设备执行一种用于为备份任务选择备份目的地的动作。该动作包括:在存储设备集合中,获取第一组候选子集,第一组候选子集中的候选子集包括的存储设备的数量是基于备份任务指定的副本数量来确定的;确定第一组候选子集的第一组子集代码,第一组子集代码中的代码唯一地标识第一组候选子集中的候选子集;根据第一组子集代码生成第二组子集代码,第二组子集代码中的一个代码唯一地标识一个候选子集;以及基于第一组候选子集和与第二组子集代码相对应的第二组候选子集,选择目标子集以作为备份任务的备份目的地。
[0094]
根据本公开的示例性实现方式,确定第一组候选子集的第一组子集代码包括:针对第一组候选子集中的给定候选子集,确定存储设备集合中的多个存储设备的设备数量;基于设备数量,分别确定多个存储设备的设备代码;以及基于给定候选子集中的各个存储设备的设备代码,确定给定候选子集的代码。
[0095]
根据本公开的示例性实现方式,分别确定多个存储设备的设备代码包括:针对多个存储设备中的给定存储设备,基于设备数量确定给定存储设备的设备代码的长度;以及基于长度,利用二进制表示存储设备的设备代码。
[0096]
根据本公开的示例性实现方式,根据第一组子集代码生成第二组子集代码包括:交换第一组子集代码中的一部分,以便生成第二组子集代码。
[0097]
根据本公开的示例性实现方式,交换第一组子集代码中的一部分包括:按照预定长度,将第一组子集代码中的各个子集代码分别划分为多个分段;以及交换各个子集代码的多个分段中的至少一个分段。
[0098]
根据本公开的示例性实现方式,根据第一组子集代码生成第二组子集代码包括:从第一组子集代码中选择至少一个子集代码;更新至少一个子集代码中的至少一部分,以形成至少一个更新的子集代码;以及基于至少一个更新的子集代码,确定第二组子集代码。
[0099]
根据本公开的示例性实现方式,更新至少一个子集代码中的至少一部分包括:改变至少一个子集代码中的至少一部分数位。
[0100]
根据本公开的示例性实现方式,确定第一组候选子集包括:基于对备份目的地的预定性能要求,从存储设备集合的多个候选子集中选择第一组候选子集。
[0101]
根据本公开的示例性实现方式,预定性能要求包括以下中的至少任一项:第一组候选子集中的每个候选子集中的任意两个存储设备之间的距离大于阈值距离;以及第一组候选子集中的任意存储设备的可用资源量大于阈值资源量。
[0102]
根据本公开的示例性实现方式,确定第一组候选子集包括:分别确定存储设备集合的多个候选子集中的候选子集的全局均衡度,全局均衡度指示在候选子集中的存储设备被用于备份任务的情况下的存储设备集合的使用均衡度;以及基于多个候选子集中的候选子集的全局均衡度,确定第一组候选子集。
[0103]
根据本公开的示例性实现方式,确定候选子集的全局均衡度包括:基于以下中的至少任一项来确定全局均衡度:候选子集中的各个存储设备的使用度量;以及向候选子集中的各个存储设备的传输备份数据所需的时间。
[0104]
根据本公开的示例性实现方式,选择目标子集包括:确定第一组候选子集和第二组候选子集中的各个候选子集的全局均衡度;以及在第一组候选子集和第二组候选子集中,基于各个候选子集的全局均衡度,确定目标子集。
[0105]
根据本公开的示例性实现方式,确定目标子集包括:针对第一组候选子集和第二组候选子集中的给定候选子集,响应于确定给定候选子集的全局均衡度高于阈值均衡度,将给定候选子集标识为目标子集。
[0106]
根据本公开的示例性实现方式,提供了一种计算机程序产品,计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行上文描述的方法。
[0107]
根据本公开的示例性实现方式,提供了一种计算机可读介质,该介质包括机器可执行指令,机器可执行指令在被执行时使机器执行上文描述的方法。
[0108]
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实现方式”或“该实现方式”应当理解为“至少一个实现方式”。术语“第一”、“第二”等等可以指代不同的或相同的对象。本文还可能包括其他明确的和隐含的定义。
[0109]
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
[0110]
应当注意,本公开的实现方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
[0111]
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
[0112]
虽然已经参考若干具体实现方式描述了本公开,但是应当理解,本公开不限于所公开的具体实现方式。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。
再多了解一些

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

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

相关文献