基于动态窗口来创建条带的方法、设备和程序产品与流程

文档序号:31674697发布日期:2022-09-28 01:44阅读:46来源:国知局
基于动态窗口来创建条带的方法、设备和程序产品与流程

1.本公开的各实现方式涉及存储管理,更具体地,涉及用基于动态窗口来在存储系统中创建条带的方法、设备和计算机程序产品。


背景技术:

2.随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力。在提高数据存储能力的同时,用户对于数据可靠性和存储系统的可扩展性也提供了越来越高的需求。目前,已经开发出了基于独立磁盘冗余阵列(redundant array of independent disks,raid)的多种数据存储系统来提高数据的可靠性。当存储系统中的一个或者多个磁盘出现故障时,可以从其他正常操作的磁盘上的数据来重建故障磁盘中的数据。
3.目前已经开发出了映射独立磁盘冗余阵列(mapped raid)。在该映射raid中,磁盘是一个逻辑概念并且可以包括多个区块(extent)。一个逻辑磁盘中包括的多个区块可以分布在存储系统中的不同物理存储设备上。对于映射raid的一个条带中的多个区块而言,该多个区块应当分布在不同的物理存储设备上,以便当该多个区块中的一个区块所在的物理存储设备出现故障时,可以执行重建操作以便从其他区块所在的物理存储设备中恢复数据。
4.为了便于管理存储系统中的多个存储设备,目前已经提出了按照分组阈值(包括上限阈值和下限阈值),将多个存储设备划分为至少一个分组。可以基于每个分组中的各个存储设备来创建用户存储系统中的条带。由于分组内的存储设备的数量存在限制,在某些情况下,并不能将存储系统中的每个存储设备划分至相应的分组。进一步,可能会出现各个分组中的存储设备出现使用负载严重不平衡的情况。此时,如何以更为有效的方式创建条带进而尽可能有效地利用各个存储设备中的存储空间,成为一个技术难题。


技术实现要素:

5.因而,期望能够开发并实现一种以更为有效的方式来在存储系统中创建条带的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为有效的方式管理存储设备。
6.根据本公开的第一方面,提供了一种用于在存储系统中创建条带的方法,该存储系统包括多个存储设备。在该方法中,响应于在所述存储系统中创建条带的请求,从所述多个存储设备中选择用于创建所述条带的第一存储设备。将所述第一存储设备中的第一区块添加至所述条带。基于预定窗口大小确定与所述第一存储设备相关联的第一存储设备序列,所述第一存储设备序列包括所述第一存储设备以及所述多个存储设备中的与所述第一存储设备相邻的一组连续存储设备。基于所述第一存储设备序列中的、所述第一存储设备以外的其他存储设备,确定用于创建所述条带中的至少一个其他存储设备。
7.根据本公开的第二方面,提供了一种电子设备。该电子设备包括:至少一个处理
器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行根据本公开的第一方面的方法。
8.根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
9.结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
10.图1示意性示出了根据一个技术方案的存储系统的示意图;
11.图2示意性示出了根据本公开的一个实现方式的用于基于动态窗口来创建条带的过程的框图;
12.图3示意性示出了根据本公开的一个实现方式的用于基于动态窗口来创建条带的方法的流程图;
13.图4示意性示出了根据本公开的一个实现方式的用于确定两个存储设备之间的相关度的过程的框图;
14.图5示意性示出了根据本公开的一个实现方式的动态窗口的框图;
15.图6a至图6e示意性示出了根据本公开的一个实现方式的用于选择条带中的各个区块的过程的框图;以及
16.图7示意性示出了根据本公开的一个实现方式的用于基于动态窗口来管理条带的设备的框图。
具体实施方式
17.下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
18.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
19.首先参见图1描述存储系统的应用环境。图1示意性示出了根据一个技术方案的存储系统100的示意图。如图1所示,存储系统100可以包括资源池110,资源池110可以包括多个存储设备。为了便于管理,可以将多个存储设备划分至一个或多个分组。例如,存储设备122、

、124、

、以及126可以被划分至分组120,并且存储设备132、

、134、

、以及136可以被划分至分组130。
20.存储系统100可以是基于raid的存储系统。基于raid的存储系统可以将多个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备,可以使得整个磁盘组的可靠
性大大超过单一的存储设备。raid可以提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强容错功能,增加吞吐量或容量,等等。raid存在多个标准,例如raid-1,raid-2,raid-3,raid-4,raid-5,raid-6,raid-10,raid-50等等。
21.可以基于映射raid技术,可以利用分组中的各个存储设备中的存储空间来创建用户存储系统。例如,可以基于分组120中的各个存储设备分别创建用户存储系统140、

、以及142。此时,对于用户存储系统中的一个条带而言,仅能从一个分组中各个存储设备中选择空闲区块来创建条带。换言之,条带中的多个区块仅能来自一个分组并且不能跨越多个分组。
22.将会理解,分组中包括的存储设备的数量具有阈值范围(例如,包括上限阈值和下限阈值)。通常而言,上限阈值可以被设置为64或者其他数值,并且下限阈值可以根据存储系统的条带宽度和所要求的后备存储设备的数量来确定。例如,在4d+1p的存储系统中,条带宽度为4+1=5,并且后备存储设备的数量为1,则可以基于两者的求和来确定下限阈值:5+1=6。此时,每个分组可以包括6至64个存储设备。当资源池110包括的存储设备的数量超过64时,可以存在多个分组。
23.将会理解,阈值范围可能会对存储系统的管理造成诸多限制。例如,在扩展资源池110中的存储系统的数量时,可能会出现不能将新添加的存储系统划分至某个分组的情况。又例如,各个分组中的存储设备可能会出现使用负载严重不平衡的情况,这将造成存储系统中的各个存储设备的可用存储空间和使用寿命的严重不平衡,等等。
24.为了至少部分地解决上述技术方案中的不足,根据本公开的示例性实现方式,提供了一种基于动态窗口来在存储系统中创建条带的技术方案。在下文中,将参见图2概括描述根据本公开的示例性实现方式的过程。图2示意性示出了根据本公开的一个实现方式的用于基于动态窗口来创建条带的过程200的框图。如图2所示,可以基于动态窗口(例如,窗口210和220)来选择用于创建条带的存储设备。根据本公开的一个示例性实现方式,抛弃了已有技术方案中“分组”的概念,可以从资源池中的全部存储设备(而不是一个分组中的存储设备)中选择创建条带的区块。
25.在下文中,将仅以4d+1p的存储系统作为示例进行描述。可以在多个轮次中分别选择条带中的每个区块。在第一个轮次中,可以选择存储设备126中的一个空闲区块来作为条带中的第一个区块。可以确定包括该存储设备126的窗口210,该窗口210可以具有预定宽度。继而,可以基于窗口210中的不同于存储设备126的存储设备,来确定用于创建条带的其他存储设备。在第二个轮次中,可以选择另一存储设备124中的空闲区块,来作为条带中的第二个区块。进一步,可以确定包括存储设备124的另一窗口220,并且在后续步骤中可以基于两个窗口的交集230中的存储设备,来确定用于创建条带的其他存储设备。
26.利用本公开的示例性实现方式,抛弃了已有存储系统中的分组,这可以以更加灵活的方式统一管理存储系统中的全部存储设备。可以避免在存储系统中的存储设备的数量出现变化时导致的不能将全部存储设备划分至相应分组的情况。进一步,由于窗口的位置可以随着先前选择的存储设备的位置而变化,可以以更为灵活的方式从更多的存储设备中选择用于创建条带的下一存储设备。以此方式,可以避免存储系统中的各个存储设备的使用负载的不平衡,进而可以更为充分地利用每个存储设备中的存储空间。
27.在下文中,将参见图3描述根据本公开的一个示例性实现方式的更多细节。图3示
意性示出了根据本公开的一个实现方式的用于基于动态窗口来创建条带的方法300的流程图。在框310处,响应于在存储系统110中创建条带的请求,从多个存储设备中选择用于创建条带的第一存储设备。在4d+1p的存储系统中,条带包括4+1=5个区块,因而需要选择5个存储设备。此时,框310涉及从存储系统中的全部存储设备中选择用于创建条带的第一存储设备。
28.根据本公开的一个示例性实现方式,可以随机地选择第一存储设备。备选地和/或附加地,可以基于每个存储设备的相关度来从存储系统的多个存储设备中选择第一存储设备。为了确保各个存储设备的工作负载平衡,提出了存储设备的设备相关度的概念。在此,特定存储设备的设备相关度表示存储系统中已经被创建的一组条带在该特定存储设备以及该特定存储设备以外的其他存储设备之间的分布。
29.当接收到在存储系统中创建条带的请求时,可以确定多个存储设备中的存储设备的设备相关度。在此,设备相关度和存储设备可以具有一一对应的关系。例如,可以基于已经被创建的一组条带在存储设备与其他存储设备之间的分布,确定存储设备的设备相关度。类似地,可以确定存储设备的设备相关度,进一步可以确定每个存储设备的设备相关度。
30.根据本公开的一个示例性实现方式,可以基于两个存储设备之间的相关度来确定设备相关度。在下文中,首先介绍两个存储设备之间的相关度的概念。4d+1p的raid条带包括5个区块,并且5个区块中的数据通常被相关联地访问。这导致分别包括5个区块的5个存储设备的访问量有所提高。概括地讲,对于任意两个存储设备而言,这两个存储设备所共同服务的条带数量越多,则这两个存储设备被同时访问的可能性越大,并且这两个存储设备的工作负载越高。因而,应当尽量避免两个存储设备同时服务于过多的条带。
31.对于多个存储设备中的第i个存储设备和第j个存储设备(i≠j),这两个存储设备之间的相关度可以表示为γ
disk i,disk j
。根据本公开的示例性实现方式,可以将存储设备自身的相关度设置为0,也即,γ
disk i,disk i
=0。随着存储系统的使用,在存储系统中将会创建一些条带,在下文中,将参见图4描述如何确定存储设备之间的相关度。
32.图4示意性示出了根据本公开的一个实现方式的用于确定两个存储设备之间的相关度的过程400的框图。如图4所示,假设存储系统包括n(n为正整数)个存储设备d0至dn-1。存储系统中已经创建了3个条带410、420和430,可以基于共同涉及第i个存储设备和第j个存储设备的条带的数量,确定相关度γ
disk i,disk j
。如果期望确定存储设备d0和存储设备d1之间的相关度(即,i=0,j=1),可以发现仅有条带410同时使用了存储设备d0和存储设备d1中的区块,因而γ
disk 0,disk 1
=1。
33.又例如,如果期望确定存储设备d1和存储设备d2之间的相关度(即,i=1,j=2),可以发现条带410同时使用了存储设备d1和存储设备d2中的区块,并且条带420也同时使用了存储设备d1和存储设备d2中的区块,因而γ
disk 1,disk 2
=2。类似地,可以确定多个存储设备中的任意两个存储设备之间的相关度。可以从存储系统的地址映射中方便地获取条带与条带中的区块之间的映射关系。因而,利用本公开的示例性实现方式可以以简单并且有效的方式确定任意两个存储设备之间的相关度γ
disk 1,disk 2

34.根据本公开的示例性实现方式,可以基于两个存储设备之间的相关度,来确定多个存储设备中的特定存储设备的设备相关度。具体地,可以分别确定该特定存储设备与该
特定存储设备以外的每个其他存储设备之间的相关度。进一步,可以基于确定的相关度,确定特定存储设备的设备相关度。
35.根据本公开的示例性实现方式,可以将设备相关度设置为正比于存储设备与每个其他存储设备之间的相关度。例如,可以获取多个相关度的和,并且基于求和操作来确定设备相关度。利用本公开的示例性实现方式,可以基于简单的数学运算,来基于特定存储设备与其他存储设备之间的相关度,确定该特定存储设备的设备相关度。假设期望确定第i个存储设备的设备相关度,可以基于上文参见图4描述的方法来确定第i个存储设备与其他的第j个存储设备(0≤j≤n-1,并且i≠j)之间的相关度。根据本公开的示例性实现方式,可以基于如下公式1来确定第i个存储设备的设备相关度γ
disk i

[0036][0037]
其中γ
disk i
,表示第i个存储设备的设备相关度,γ
diski,disk j
表示第i个存储设备和第j个存储设备之间的相关度,n表示资源池中的存储设备的数量。
[0038]
利用本公开的示例性实现方式,对于第i个存储设备而言,该设备的设备相关度γ
disk i
表示第i个存储设备与其他n-1个存储设备之间的相关度的总和。此时,设备相关度可以准确地衡量第i个存储设备与其他存储设备之间的相关程度,并且可以反映该存储设备的工作负载。基于设备相关度来选择用于创建条带的存储设备,可以准确地基于各个存储设备的工作负载,来选择有助于实现负载均衡的适合的存储设备。
[0039]
将会理解,上文公式1仅仅示意性示出了用于确定设备相关度的一个具体示例。根据本公开的示例性实现方式,还可以采用其他公式来确定设备相关度。例如,可以基于多个相关度的乘积来确定设备相关度。上文已经描述了如何确定第i个存储设备的设备相关度γ
disk i,
,在已经确定每个存储设备的设备相关度之后,可以基于设备相关度从多个存储设备中选择一个存储设备。在已经确定每个存储设备的设备相关度的情况下,可以比较各个设备相关度,以便从多个存储设备中选择第一存储设备。
[0040]
根据本公开的一个示例性实现方式,可以从多个存储设备中选择具有较低设备相关度的存储设备。假设多个存储设备中的第i个存储设备的设备相关度γ
disk i,
小于多个存储设备中的第j个存储设备的设备相关度γ
disk j
,则可以选择第i个存储设备。利用本公开的示例性实现方式,可以基于设备相关度来优先地选择工作负载最低的存储设备,进而使得所创建的条带可以尽量利用资源池中的工作状态较好的存储设备。根据本公开的示例性实现方式,可以比较每个存储设备的设备相关度,并且选择具有最小设备相关度的存储设备中的区块来作为条带中的第一个区块。以此方式,可以尽可能利用具有最低工作负载的存储设备中的区块来创建条带。
[0041]
已经描述了选择用于创建条带的第一存储设备的过程,在下文中,返回图3描述有关创建条带的后续操作。在框320处,将第一存储设备中的第一区块添加至条带。此时,可以从第一存储设备中选择一个空闲区块以便用于创建条带。可以将选择的区块作为第一个区块,并且加入条带。在框330处,基于预定窗口大小确定与第一存储设备相关联的第一存储设备序列。在下文中,将参见图5描述有关预定窗口的更多细节。图5示意性示出了根据本公开的一个实现方式的动态窗口500的框图。假设存储系统包括160个存储设备(即,存储设备
d0至d159),坐标轴示出了按顺序排列的各个存储设备,其中坐标点示出了存储设备的id。如图5所示,黑点表示被选择用于创建条带的存储设备,此时存储系统中的存储设备510(d80)被选择作为第一存储设备。
[0042]
根据本公开的一个示例性实现方式,可以基于第一存储设备的位置来确定与该存储设备相关联的第一序列(如窗口512所示),在此第一存储设备序列包括第一存储设备以及多个存储设备中的与第一存储设备相邻的一组连续存储设备。可以预先指定窗口512的宽度,例如,可以基于已有技术方案中的分组的阈值上限和/或其他数值来设置窗口的宽度。根据本公开的一个示例性实现方式,可以将窗口宽度指定为64(或者其他数值)。
[0043]
根据本公开的一个示例性实现方式,可以基于预定窗口大小确定第一存储设备序列,以使得第一存储设备靠近第一存储设备序列的中心。例如,可以从第一存储设备左侧选择32个存储设备,并且从第一存储设备右侧选择31个存储设备,此时第一存储设备序列将包括64个存储设备。在图5的示例中,第一存储设备序列可以包括存储设备d48至d111。又例如,可以从第一存储设备左侧选择31个存储设备,并且从第一存储设备右侧选择32个存储设备。
[0044]
将会理解,尽管上文示意性示出了从被选择存储设备两侧以基本对称的方式来确定存储设备序列。根据本公开的一个示例性实现方式,可以指定窗口512的滑动范围,以便确保滑动窗口包括足够数量的存储设备来用于创建条带。例如,可以从存储设备左侧选择30个存储设备,并且从存储设备右侧选择33个存储设备。又例如,可以从存储设备左侧选择29个存储设备,并且从存储设备右侧选择34个存储设备。
[0045]
将会理解,在4d+1p的条带中,条带包括5个区块。此时,在确定与第一存储设备相关联的第一存储设备序列之后,需要基于第一存储设备序列与其他存储设备序列的交集中选择后续的4个存储设备。因而,应当确保在极端情况下(每次选择交集中位于边缘的存储设备),在选择最后一个存储设备时交集中至少包括一个存储设备。因而,窗口的滑动范围应当大于或等于5-1=4。也即,在确定第一存储设备序列时,窗口边缘与第一存储设备之间的距离应当大于或者等于4。
[0046]
根据本公开的一个示例性实现方式,对于宽度为m的条带而言,在确定与每个所选择的存储设备相关联的存储设备序列时,应当确保窗口边缘与所选择的存储设备之间的距离大于或者等于m-1。将会理解,在此的窗口边缘包括窗口的左边缘和右边缘。也即在极端情况下,存储设备序列可以包括:被选择的存储设备左侧(或者右侧)的m-1个存储设备、以及被选择的存储设备右侧(或者左侧)的64-(m-1)-1个存储设备。利用本公开的示例性实现方式,可以确保在确定条带中的最后一个区块时,各个存储设备序列的交集中至少包括1个存储设备。
[0047]
根据本公开的一个示例性实现方式,为了确保可以以连续的方式确定存储设备序列,可以将多个存储设备以环形方式排列。将会理解,如果存储系统中的多个存储设备的数量小于上限阈值(例如,64),则此时无论怎样滑动窗口,多个存储设备将位于相同的分组阈值范围之内。如果多个存储设备的数量大于上限阈值,则窗口的滑动将会使得更多存储设备可以用于创建条带,进而提高存储系统的使用效率和均衡度。
[0048]
在已经确定第一存储设备序列的情况下,可以基于第一存储设备序列中的其他存储设备来创建条带中的其他区块。返回图3,在图3的框340处,基于第一存储设备序列中的、
第一存储设备以外的其他存储设备,确定用于创建条带中的至少一个其他存储设备。将会理解,基于raid的原理,条带中的各个区块应当来自于不同的存储设备,因而此时需要从第一存储设备序列中选择未曾被选择的存储设备。
[0049]
根据本公开的一个示例性实现方式,可以从其他存储设备中选择用于创建条带的第二存储设备。例如,可以基于随机方式来从其他存储设备中选择第二存储设备。备选地和/或附加地,为了确保条带的性能,可以基于条带相关度来选择第二存储设备。在此条带相关度描述一个存储设备与一个条带所在的多个存储设备之间的相关度。条带相关度越高则表示该存储设备与条带之间的关系越密切。例如,可以基于如下公式2来确定第i个存储设备与第k个条带之间的条带相关度γ
disk i,re k

[0050][0051]
其中γ
disk i,re k
表示第i个存储设备与第k个条带之间的条带相关度,γ
disk i,disk j
表示第i个存储设备和第j个存储设备之间的相关度,以及第j个存储设备表示包括在第k个条带中的区块的各个存储设备。利用本公开的示例性实现方式,存储设备与条带中的每个区块所在的存储设备之间的相关度可以反映存储设备与条带所涉及的各个存储设备之间的密切程度。通过将多个相关度求和,可以以简单并且有效的方式确定设备与条带之间的密切程度。
[0052]
将会理解,由于条带中的多个区块需要位于不同的存储设备,因而需要从条带不涉及的其他存储设备中选择区块来创建条带。此时,可以确定条带所涉及的一组存储设备以及条带并不涉及的一组存储设备。在创建条带的初始阶段,条带仅包括第一存储设备中的区块。可以逐步确定后续的第二、第三、第四和第五个区块。根据本公开的一个示例性实现方式,在选择用于创建条带的第二至第五个存储设备时,可以首选确定每个备选存储设备与当前条带之间的条带相关度,并且优先地选择具有较低(或者最低)条带相关度的存储设备。
[0053]
根据本公开的一个示例性实现方式,可以将第二存储设备中的第二区块添加至条带。进一步,可以确定当前条带中的区块数量是否达到条带的预定宽度。如果条带中的区块的数量低于条带的预定宽度,基于分别与条带中的各个区块相关联的各个存储设备序列,确定用于创建条带的下一存储设备。换言之,可以分别确定条带中的每个区块的存储设备序列,并且利用确定的各个存储设备序列来确定下一存储设备。
[0054]
根据本公开的一个示例性实现方式,可以确定分别与条带中的各个区块相关联的各个存储设备序列的交集,并且从交集中的不同于条带中的各个区块所在的各个存储设备的其他存储设备中,选择下一存储设备。例如,可以基于随机方式来从交集中选择任意存储设备,又例如,可以基于上文描述的条带相关度,来从交集中选择具有最小条带相关度的存储设备。
[0055]
根据本公开的一个示例性实现方式,针对交集中的不包括条带中的任何区块的第一组存储设备,可以确定第一组存储设备中的给定存储设备与条带之间的条带相关度。根据本公开的示例性实现方式,期望创建的条带中的区块所在的各个存储设备之间的整体相关度尽量小,因而可以优先地选择具有较小条带相关度的存储设备中的区块。进一步,可以
将选择的存储设备中的一个空闲区块加入条带。利用本公开的示例性实现方式,在每次选择条带中的下一区块时,可以利用条带相关度来以简单并且有效的方式来选择相关度较小的存储设备中的区块。以此方式,可以尽量利用与当前条带所涉及的一个或多个存储设备之间关系较为疏远的存储设备,这使得条带可以以较高的性能运行。
[0056]
为了方便描述起见,可以利用符号γ
disk i,re current
表示第i个存储设备与当前条带之间的条带相关度。其中re current表示当前条带中的区块所在的存储设备。为了确定条带中的第二个区块,可以选择具有最小条带相关度的存储设备。
[0057]
将会理解,由于条带中区块的数量是由条带宽度确定的,当条带中的区块的数量低于条带宽度时,则可以不断重复上述步骤。根据本公开的示例性实现方式,可以首先确定条带的宽度,并且基于当前条带中的区块数量与宽度的比较,来确定是否执行选择步骤。具体地,如果区块的数量小于条带宽度,则选择下一区块;否则停止选择操作。为了选择后续的一个或多个区块,可以不断地基于上文公式2来确定每个可选择存储设备与当前条带之间的条带相关度,进而选择具有最小条带相关度的存储设备中的空闲区块。
[0058]
利用本公开的示例性实现方式,仅需要通过简单的数学计算,即可逐一确定条带中的每个区块。以此方式,可以确保每次从多个存储设备中选择最为有助于实现负载平衡的存储设备中的区块来创建条带。
[0059]
上文已经描述了基于条带相关度来选择后续的一个或多个区块。根据本公开的示例性实现方式,还可以基于存储设备的条带相关度和设备相关度两者,来选择存储设备。将会理解,条带中的多个区块将被相关联地访问,基于条带相关度来选择存储设备可以考虑所创建的条带中的各个存储设备之间的相互影响。在后续操作过程中,存储设备的性能还会受到该存储设备与其他存储设备之间的相关度(即,设备相关度)的影响。因而,可以基于条带相关度和设备相关度两者来选择存储设备。利用本公开的示例性实现方式,可以充分考虑以上两方面因素,进而提高存储系统的整体性能。
[0060]
根据本公开的示例性实现方式,可以基于公式3来确定第i个存储设备与当前条带之间的组合相关度γ

disk i,re k

[0061]
γ

disk i,recurrent
=γ
disk i,re current

disk i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式3
[0062][0063]
其中γ

disk i,re current
表示第i个存储设备与当前条带之间的组合相关度,γ
disk i,re current
表示第i个存储设备与当前条带之间的条带相关度,以及γ
disk i
表示第i个存储设备的设备相关度。将会理解,公式3仅仅是用于计算组合相关度的一个具体示例,根据本公开的示例性实现方式,可以采用其他公式来确定组合相关度。例如,可以基于条带相关度和设备相关度的乘积来确定组合相关度。
[0064]
上文已经基于公式2和公式3描述了如何确定交集中的各个存储设备与当前条带的条带相关度。根据本公开的一个示例性实现方式,可以基于公式2或3来确定可以用于创建条带的各个存储设备的条带相关度,进而选择具有较低(最低)条带相关度的存储设备来创建条带。
[0065]
上文已经描述了用于确定条带中的各个区块的过程,在下文中,将分别结合图6a至图6e描述如何确定条带中的第1个区块至第5个区块。图6a示意性示出了根据本公开的一个实现方式的用于选择条带中的第1个区块的过程600a的框图。假设基于设备相关度选择
了存储设备610(d80),此时,可以确定与存储设备610相关联的存储设备序列612的范围为:存储设备d48至d111(从存储设备610左侧选择32个存储设备,并且从存储设备610右侧选择31个存储设备)。此时,用于创建条带的存储设备包括:存储设备d80。
[0066]
图6b示意性示出了根据本公开的一个实现方式的用于选择条带中的第2个区块的过程600b的框图。可以基于上文描述的方法来从存储设备序列612中选择用于提供第2个区块的存储设备(不同于存储设备610)。假设选择了存储设备620(d96),可以确定与存储设备620相关联的存储设备序列622的范围为:d64至d127。此时,两个存储设备序列612和622的交集624包括:d64至d111;并且用于创建条带的存储设备包括:d80和d96。
[0067]
图6c示意性示出了根据本公开的一个实现方式的用于选择条带中的第3个区块的过程600c的框图。可以基于上文描述的方法来从交集624中选择用于提供第3个区块的存储设备(不同于存储设备610和620)。假设选择了存储设备630(d100),可以确定与存储设备630相关联的存储设备序列632的范围为:d68至d131。此时,三个存储设备序列612、622、632的交集634包括:d68至d111;并且用于创建条带的存储设备包括:d80、d96和d100。
[0068]
图6d示意性示出了根据本公开的一个实现方式的用于选择条带中的第4个区块的过程600d的框图。可以基于上文描述的方法来从交集634中选择用于提供第4个区块的存储设备(不同于存储设备610、620、以及630)。假设选择了存储设备640(d70),可以确定与存储设备640相关联的存储设备序列642的范围为:d38至d101。此时,四个存储设备序列612、622、632、和642的交集644包括:d68至d第101;并且用于创建条带的存储设备包括:d80、d96、d100、以及d70。
[0069]
图6e示意性示出了根据本公开的一个实现方式的用于选择条带中的第5个区块的过程600e的框图。可以基于上文描述的方法来从交集644中选择用于提供第5个区块的存储设备(不同于存储设备610、620、630以及640)。假设选择了存储设备650(d90)。此时,已经选择了用于创建条带的5个存储设备:d80、d96、d100、d70、以及d90个存储设备。利用本公开的示例性实现方式,可以以方便并且有效的方式选择用于创建一个条带的5个存储设备。此时,相对于已有技术方案中在分组内部创建条带而言,利用图6a至6e所示过程创建的条带中的存储设备的位置不再局限于一个分组之内,进而确保存储系统中的各个存储设备的工作负载的均衡。
[0070]
根据本公开的一个示例性实现方式,可以基于用户存储系统中所包括的条带数量,来创建一个或多个条带。如果接收到在存储系统中创建另一条带的另一请求,可以从多个存储设备中的第一存储设备序列以外的存储设备中,选择用于创建另一条带的存储设备。以此方式,可以尽量使得用户存储系统中的各个条带尽量分布在跨越更大位置范围的存储设备中,进而使得各个存储设备的工作负载尽量均衡。
[0071]
例如,在创建第一个条带时,第一存储设备序列的范围包括:d48至d111。在创建第二个条带时,可以尽量从第一存储设备序列以外的其他存储设备中选择用于创建第二个条带的多个存储设备。例如,可以选择d0来作为创建第二条带的第一个存储设备,此时,与第二条带中的第一个存储设备相关联的存储设备序列将包括d128至d31。此时,第二条带中的区块将会来自d128至d31。在创建后续条带时,可以尽量将没有被先前条带的存储设备序列所覆盖的存储设备作为后续条带的第一存储设备。
[0072]
利用本公开的示例性实现方式,随着存储系统内条带数量的增加,各个存储设备
的使用负载将会在整个存储系统中保持均匀分布。以此方式,将会避免基于分组来创建条带的已有存储系统导致的各个存储设备的使用负载不均匀的情况。
[0073]
在上文中已经参见图2至图6详细描述了根据本公开的方法的示例,在下文中将描述相应的装置的实现。根据本公开的示例性实现,提供了一种用于在存储系统中创建条带的装置,该存储系统包括多个存储设备。该装置包括:选择模块,配置用于,响应于在存储系统中创建条带的请求,从多个存储设备中选择用于创建条带的第一存储设备;添加模块,配置用于将第一存储设备中的第一区块添加至条带;序列确定模块,配置用于基于预定窗口大小确定与第一存储设备相关联的第一存储设备序列,第一存储设备序列包括第一存储设备以及多个存储设备中的与第一存储设备相邻的一组连续存储设备;设备确定模块,配置用于基于第一存储设备序列中的、第一存储设备以外的其他存储设备,确定用于创建条带中的至少一个其他存储设备。根据本公开的示例性实现方式,该装置还包括用于执行上文描述的方法中的其他步骤的模块。
[0074]
图7示意性示出了根据本公开的示例性实现的用于基于动态窗口来管理条带的设备700的框图。如图所示,设备700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序指令,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。cpu 701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
[0075]
设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0076]
上文所描述的各个过程和处理,例如方法300,可由处理单元701执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实现中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到ram 703并由cpu 701执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实现中,cpu 701也可以以其他任何适当的方式被配置以实现上述过程/方法。
[0077]
根据本公开的示例性实现方式,提供了一种电子设备,设备包括:至少一个处理器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行一种用于在存储系统中创建条带的方法,存储系统包括多个存储设备。该方法包括:响应于在存储系统中创建条带的请求,从多个存储设备中选择用于创建条带的第一存储设备;将第一存储设备中的第一区块添加至条带;基于预定窗口大小确定与第一存储设备相关联的第一存储设备序列,第一存储设备序列包括第一存储设备以及多个存储设备中的与第一存储设备相邻的一组连续存储设备;以及基于第一存储设备序列中的、第一存储设备以外的其他存储设备,确定用于创建条带中的至少一个其他存储设备。
[0078]
根据本公开的一个示例性实现方式,确定至少一个其他存储设备包括:从其他存储设备中选择用于创建条带的第二存储设备;将第二存储设备中的第二区块添加至条带;
以及响应于确定条带中的区块的数量低于条带的预定宽度,基于分别与条带中的各个区块相关联的各个存储设备序列,确定用于创建条带的下一存储设备。
[0079]
根据本公开的一个示例性实现方式,确定下一存储设备包括:确定分别与条带中的各个区块相关联的各个存储设备序列的交集;以及
[0080]
从交集中的不同于条带中的各个区块所在的各个存储设备以外的其他存储设备中,选择下一存储设备。
[0081]
根据本公开的一个示例性实现方式,选择下一存储设备包括:针对交集中的不包括条带中的任何区块的第一组存储设备,确定第一组存储设备中的给定存储设备与条带之间的条带相关度;以及基于确定的条带相关度,从第一组存储设备中选择下一存储设备。
[0082]
根据本公开的一个示例性实现方式,确定给定存储设备与条带之间的条带相关度包括:在交集中,确定分别包括条带中的各个区块的第二组存储设备;以及基于给定存储设备与第二组存储设备中的每个存储设备的相关度,确定给定存储设备与条带的条带相关度。
[0083]
根据本公开的一个示例性实现方式,基于确定的条带相关度,选择第一组存储设备中的下一存储设备包括:基于条带相关度和下一存储设备的设备相关度,选择下一存储设备。
[0084]
根据本公开的一个示例性实现方式,从多个存储设备中选择第一存储设备包括:确定多个存储设备中的存储设备的设备相关度,设备相关度表示存储系统中已经被创建的一组条带在存储设备以及存储设备以外的其他存储设备之间的分布;以及基于确定的设备相关度,从多个存储设备中选择第一存储设备。
[0085]
根据本公开的一个示例性实现方式,基于预定窗口大小确定与第一存储设备相关联的第一存储设备序列包括:基于预定窗口大小确定第一存储设备序列,以使得第一存储设备靠近第一存储设备序列的中心。
[0086]
根据本公开的一个示例性实现方式,该方法进一步包括:响应于接收到在存储系统中创建另一条带的另一请求,从多个存储设备中的第一存储设备序列以外的存储设备中,选择用于创建另一条带的存储设备。
[0087]
根据本公开的一个示例性实现方式,多个存储设备以环形方式排列,条带是独立磁盘冗余阵列中的条带,多个存储设备的数量大于用于形成独立磁盘冗余阵列的分组中包括的存储设备的数量的阈值上限,以及预定窗口大小是基于阈值上限确定的。
[0088]
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
[0089]
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
[0090]
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
[0091]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储
设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0092]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0093]
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0094]
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0095]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0096]
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0097]
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0098]
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1