CN110058785B - 用于管理存储系统的方法和设备 - Google Patents
用于管理存储系统的方法和设备 Download PDFInfo
- Publication number
- CN110058785B CN110058785B CN201810048517.6A CN201810048517A CN110058785B CN 110058785 B CN110058785 B CN 110058785B CN 201810048517 A CN201810048517 A CN 201810048517A CN 110058785 B CN110058785 B CN 110058785B
- Authority
- CN
- China
- Prior art keywords
- stripe
- stripes
- coupling
- reconstructed
- storage device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Abstract
本公开涉及一种用于管理存储系统的方法和设备。具体地,提供了一种方法。该方法包括:响应于一组存储设备中的存储设备出现故障,确定存储系统中的与故障存储设备相关联的多个条带;分别从一组存储设备中选择第一存储设备和第二存储设备,第一存储设备和第二存储设备是分别用于将多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选;获取第一重建条带和第二重建条带之间的耦合度,耦合度描述第一条带和第二条带被并行地重建的冲突程度;以及基于获取的耦合度标识第一候选和第二候选。以此方式,可以选择导致产生较低耦合度的存储设备来执行重建。进一步,提供了用于管理存储系统的设备。
Description
技术领域
本公开的各实现方式涉及存储管理,更具体地,涉及用于管理存储系统(例如,独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)的方法和设备。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。在提高数据存储能力的同时,用户对于数据可靠性和存储系统的响应时间也提供了越来越高的需求。目前,已经开发出了基于冗余磁盘阵列的多种数据存储系统来提高数据的可靠性。当存储系统中的一个或者多个磁盘出现故障时,可以从其他正常操作的磁盘上的数据来恢复出故障磁盘中的数据。
目前已经开发出了映射独立磁盘冗余阵列(Mapped RAID)。在该映射RAID中,磁盘是一个逻辑概念并且可以包括多个区块(extent)。一个逻辑磁盘中包括的多个区块可以分布在资源池中的不同物理存储设备上。对于映射RAID的一个条带中的多个区块而言,该多个区块应当分布在不同的物理存储设备上,以便当该多个区块中的一个区块所在的物理存储设备出现故障时,可以执行重建操作以便从其他区块所在的物理存储设备中恢复数据。
重建操作将涉及针对资源池中的相应存储设备的大量访问操作。由于存储设备的访问带宽的限制,对于一个待重建条带而言,如何选择用于执行重建操作的存储设备(即,将出现故障的存储设备中的区块重建至何处)成为一个技术难题。进一步,在已经选择了使用哪些存储设备来恢复存储系统中的各个待重建条带之后,如何尽可能并行地针对多个区块执行重建,同样也成为目前的一个技术难题。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储系统的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为有效的方式管理存储系统。
在本公开的一个实现方式中,提供了一种用于管理存储系统的方法。该方法包括:响应于一组存储设备中的存储设备出现故障,确定存储系统中的与故障存储设备相关联的多个条带;分别从一组存储设备中选择第一存储设备和第二存储设备,第一存储设备和第二存储设备是分别用于将多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选;获取第一重建条带和第二重建条带之间的耦合度,耦合度描述第一条带和第二条带被并行地重建的冲突程度;以及基于获取的耦合度标识第一候选和第二候选。
在本公开的一个实现方式中,提供了一种用于管理存储系统的设备,包括:一个或者多个处理器;耦合至一个或者多个处理器中的至少一个处理器的存储器;在存储器中存储的计算机程序指令,当由至少一个处理器执行计算机程序指令时,使得系统执行用于管理存储系统的方法。存储系统包括多个条带,多个条带中的一个条带包括多个区块,多个区块来自与存储系统相关联的资源池中的一组存储设备。方法包括:响应于一组存储设备中的存储设备出现故障,确定存储系统中的与故障存储设备相关联的多个条带;分别从一组存储设备中选择第一存储设备和第二存储设备,第一存储设备和第二存储设备是分别用于将多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选;获取第一重建条带和第二重建条带之间的耦合度,耦合度描述第一条带和第二条带被并行地重建的冲突程度;以及基于获取的耦合度标识第一候选和第二候选。
在本公开的一个实现方式中,提供了一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据本公开的方法的动作。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了适于实现本公开实现方式的示例性计算系统的框图;
图2A和2B示意性示出了其中可以实现根据本公开的实现方式的应用环境的示意图;
图3示意性示出了与存储系统相关联的资源池中的存储设备的图示。
图4示意性示出了根据本公开的一个实现方式的用于管理存储系统的架构图;
图5示意性示出了根据本公开的一个实现方式的用于管理存储系统的方法的流程图;
图6示意性示出了根据本公开的一个实现方式的用于确定第一重建条带和第二重建条带之间的耦合度的图示;
图7示意性示出了根据本公开的一个实现方式的用于确定各个重建条带的方法的流程图;
图8示意性示出了根据本公开的一个实现方式的根据图7所示的方法所确定的用于重建各个条带的存储设备的图示;
图9示意性示出了根据本公开的一个实现方式的用于管理存储系统的控制节点的图示;
图10A和10B分别示意性示出了根据本公开的一个实现方式的用于选择在第一和第二轮次中将被重建的条带所基于的耦合度关系的图示;以及
图11A和11B示意性示出了根据本公开的实现方式的存储系统中的条带的图示。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现方式。虽然附图中显示了本公开的优选实现方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现方式所限制。相反,提供这些实现方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本公开实现方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外设112、并行外设113和具有触摸屏的显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外设112与串行接口控制器107耦合,并行外设113与并行接口控制器108耦合,以及具有触摸屏的显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本公开范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本公开可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实现方式中,本公开还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如使用因特网服务提供者来通过因特网连接)。
下面将参照本公开实现方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
独立磁盘冗余阵列可以将多个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备,可以使得整个磁盘组的可靠性大大超过单一的存储设备。RAID可以提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强容错功能,增加吞吐量或容量,等等。RAID存在多个标准,例如RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-50等等。关于RAID级别的更多细节,本领域技术人员例如可以参见https://en.wikipedia.org/wiki/Standard_RAID_levels、以及https://en.wikipedia.org/wiki/Nested_RAID_levels等。
图2A示意性示出了根据一个技术方案的独立磁盘冗余阵列的结构的示意图200A。在图2A中,以包括五个独立存储设备(210、212、214、216以及218)的RAID-5(4D+1P,其中4D表示存储系统中包括四个存储设备来用于存储数据,1P表示存储系统中包括一个存储设备来用于存储P校验)阵列为示例,来说明RAID的工作原理。应当注意,尽管图2A中示意性示出了五个存储设备,在其他的实现方式中,根据RAID的等级不同,还可以包括更多或者更少的存储设备。尽管图2A中示出了条带220、222、224、…、226,在其他的示例中,RAID系统还可以包括不同数量的条带。
在RAID中,条带跨越多个物理存储设备(例如,条带220跨越存储设备210、212、214、216以及218)。可以简单地将条带理解为多个存储设备中的满足一定地址范围的存储区域。在条带220中存储的数据包括多个部分:存储在存储设备210上的数据块D00、存储在存储设备212上的数据块D01、存储在存储设备214上的数据块D02、存储在存储设备216上的数据块D03、以及存储在存储设备218上的数据块P0。在此示例中,数据块D00、D01、D02、以及D03是被存储的数据,而数据块P0是被存储数据的P校验。
在其他条带222和224中存储数据的方式也类似于条带220,不同之处在于,有关其他数据块的校验可以存储在不同于存储设备218的存储设备上。以此方式,当多个存储设备210、212、214、216以及218中的一个存储设备出现故障时,可以从其他的正常的存储设备中恢复出故障设备中的数据。
图2B示意性示出了根据一个技术方案的独立磁盘冗余阵列的重建过程的示意图200B。如图2B所示,当一个存储设备(例如,以阴影示出的存储设备216)出现故障时,可以从其余的正常操作的多个存储设备210、212、214、218中恢复数据。此时,可以向RAID中加入新的后备存储设备218B来替代存储设备218,以此方式,可以将恢复的数据写入218B并实现系统的重建。
应当注意,尽管在上文中参见图2A和图2B描述了包括5个存储设备(其中4个存储设备用于存储数据,1个存储设备用于存储校验)的RAID-5的存储系统,根据其他RAID等级的定义,还可以存在包括其他数量的存储设备的存储系统。例如,基于RAID-6的定义,可以利用两个存储设备来分别存储校验P和Q。又例如,基于三重校验RAID的定义,可以利用三个存储设备来分别存储校验P、Q和R。
应当注意,在本发明的上下文中仅以4D+1P的RAID-5存储系统为示例,示出了包括多个存储设备的存储系统的示例。当采用其他RAID等级时,本领域技术人员可以基于上文的原理来实现具体细节。例如,在4D+2P的RAID-6存储系统中,4个存储设备用于存储数据,2个存储设备用于存储校验。在4D+3P的三重校验RAID中,4个存储设备用于存储数据,3个存储设备用于存储校验。
图3示意性示出了与存储系统相关联的资源池300的图示。图3示意性示出了多个存储设备310、320、330、340、…、350、360。每个存储设备可以包括多个区块,其中空白区块360表示空闲的区块,以条纹示出的区块362表示用于第一条带的区块,而以阴影示出的区块364表示用于第二条带的区块。此时,用于第一条带的区块312、322、332、342、352分别用于存储第一条带的数据块D11、D12、D13、D14和校验P1。用于第二条带的区块324、334、344、366和314分别用于存储第二条带的数据块D21、D22、D23、D24和校验P2。
如图3所示,在各个存储设备中还可以存在预留的空闲部分370,以便用于在资源池中的一个存储设备出现故障时,可以选择各个存储设备中的空闲部分370中的区块,来重建故障存储设备中的各个区块。
应当注意,图3仅以4D+1P的RAID-5存储系统为示例示出了各个条带中的区块如何均匀地分布在资源池的多个存储系统中。当采用基于其他RAID等级时,本领域技术人员可以基于上文的原理来实现具体细节。例如,在6D+2P的RAID-6存储系统中,每个条带中的8个区块可以均匀地分布在多个存储设备上,进而保证多个存储设备的负载均衡。
在上文中仅参见图3示意性示出了两个条带中的多个区块分布在多个存储设备上的分布的一个示例。当映射RAID中包括更多存储设备时,可能的分布方式的数量将大幅度增加。为了确保资源池中的各个物理存储设备的负载均衡,期望存储系统中的各个条带中的区块应当尽可能均匀地分布在资源池中的各个物理存储设备上。
当资源池中的一个存储设备出现故障,则与故障的存储设备相关联的存储系统需要被重建。在存储系统的重建期间,一方面需要考虑选择可以使得各个存储设备之间的负载趋于均衡的存储设备来执行重建;另一方面,还需要考虑如何尽可能以并行的方式执行重建操作。然而,现有的重建方案并不考虑重建期间的并行效率,而是可能出现当某个存储设备被大量访问时出现响应速度降低的问题。
为了解决上述缺陷,本公开的实现方式提供了一种用于管理存储系统的方法、设备和程序产品。具体地,根据本公开内容的一个实现方式,提供了一种用于管理存储系统的技术方案。图4示意性示出了根据本公开的一个实现方式的用于管理存储系统的架构图400。在此实现方式中,通过考虑两个条带之间的耦合度来确定将故障存储设备中的区块重建至资源池中的哪个存储设备。以此方式,可以便于在后期以更为并行化的方式来执行重建操作。
为了方便描述期间,在下文中仅以4D+1P的映射存储系统430为具体示例描述。如图4所示,存储系统430可以包括多个(例如,8个)条带410至417,并且每个条带中可以包括5个区块(4D+1P)。与存储系统430相关联的资源池432可以包括多个存储设备(例如,8个)存储设备420至427。
应当注意,图4中所示出的存储系统430中的条带的数量和资源池432中的存储设备的数量仅仅是示意性的。根据本公开内容的示例性实现方式,还可以涉及其他数量的条带和存储设备。根据本公开内容的示例性实现方式,提出了条带之间的耦合度的概念,该耦合度可以表示两个条带可以在重建时的冲突程度。
将会理解,在4D+1P的存储系统中,当一个条带中的一个区块所在的存储设备出现故障时,则需要读取条带中的正常区块中的数据,并且基于读取的数据来重建故障区块中的数据。继而可以将重建的数据写入资源池中的另一存储设备中的空闲区块。此时,重建过程将涉及读取4个正常区块中的数据的读操作以及向空闲区块中写入数据的写操作。
在下文中将基于两个场景说明耦合度的概念。场景1:假设一个待重建条带的4个正常区块分别位于存储设备1-4,并且另一待重建条带的4个正常区块也分别位于这四个存储设备1-4。进一步,假设从相同的存储设备5上分别选择两个空闲区块来用于重建这两个条带,那么在重建期间将会出现严重的冲突。换言之,在重建期间,两个重建线程将并行地读取四个存储设备1-4中的数据,继而并行地向相同目标存储设备上写入重建的数据。由于与每个待重建条带相关联的存储设备之间存在严重的重叠,因而将会产生两个重建线程针对相同的存储设备进行读写的访问冲突。
场景2:假设两个待重建条带中的4个正常区块分别位于8个不同存储设备,并且从两个不同的目标存储设备上分别选择两个空闲区块来用于重建这两个条带,那么在重建期间将不会出现读写冲突。换言之,在重建期间,两个重建线程将分别从四个不同的存储设备中的数据,并且分别向两个不同的目标存储设备上写入重建的数据。由于与每个待重建条带相关联的存储设备之间并不存在重叠,因而不会产生两个重建线程针对相同的存储设备进行读写的访问冲突。
基于上述考虑,根据本公开内容的示例性实现方式,提供了一种基于两个条带之间的耦合度来选择将与故障存储设备相关联的区块重建至哪个存储设备的技术方案。在下文中,将参见图5的流程图来示出用于管理存储系统的方法的具体步骤。
图5示意性示出了根据本公开的一个实现方式的用于管理存储系统的方法500的流程图。在方框510处,判断一组存储设备中的存储设备是否出现故障。如果判断结果为“是”,则在方框520处,确定存储系统中的与故障存储设备相关联的多个条带。如图4所示,假设一组存储设备420至427中的存储设备420出现故障,可以确定存储系统430中的与故障存储设备420相关联的多个条带。在存储系统430中,具有相同图案的区块表示位于同一条带中区块。例如,以空白图案示出了位于条带410中的区块,以斜条纹图案示出了位于条带411中的区块,以方格图案示出了位于条带412中的区块,以此类推。在资源池432中,每个存储设备可以包括多个区块。例如,存储设备420可以包括k个区块,分别标识为DE(0,0)、DE(0,1)、……、DE(0,k-2)、DE(0,k-1)和DE(0,k)。
根据本公开内容的示例性实现方式,区块可以标识为DE(x,y),其中x表示区块所在的存储设备的编号,而y表示区块在存储设备中的位置。具体地,DE(0,0)表示该区块位于第0号存储设备的第0个位置,DE(0,k-2)表示该区块位于第0号存储设备的第k-2个位置。如图4所示,在每个存储设备中的最后三个区块(如预留部分430所示,位置k-2至位置k)是预留的空闲区块。当资源池432中的一个存储设备420出现故障时,可以将故障存储设备420中的区块重建至预留部分430中。
如图4所示,存储设备420出现故障,此时可以确定故障的存储设备420中的区块DE(0,0)、DE(0,1)、DE(0,2)、DE(0,3)和DE(0,4)分别位于条带410、411、412、415和417中(以星形表示)。
在图5中的方框530处,可以分别从一组存储设备421至427中选择第一存储设备和第二存储设备。将会理解,第一存储设备和第二存储设备是分别用于将多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选。返回图4,为了重建条带410中的区块DE(0,0),可以以随机方式、按顺序或者以其他方式从资源池432中的正常存储设备中选择一个存储设备421。为了重建条带411中的区块DE(0,1),还可以以类似方式选择一个正常的存储设备(例如,存储设备422)。
将会理解,选择用于重建的存储设备时还应当遵循RAID的原理。换言之,应当从资源池432中的其中不包括待重建条带中的区块的正常存储设备中选择用于重建的存储设备。具体地,如图4所示,条带410包括的区块分别位于存储设备420、422、423、424和425。当存储设备420出现故障时,应当从存储设备421、426和427中选择用于重建的存储设备。
在图5中的方框540处,确定第一重建条带和第二重建条带之间的耦合度,该耦合度描述第一条带和第二条带被并行地重建的冲突程度。在此,重建条带是指采用选择的存储设备进行重建之后的条带。例如,与条带410相对应的重建条带将包括:从存储设备421中选择的用于重建的区块DE(1,k-2)以及原本在条带410中的区块DE(2,0)、DE(3,0)、DE(4,0)和DE(5,0)。又例如,与条带411相对应的重建条带将包括:从存储设备422中选择的用于重建的区块DE(2,k-2)以及原本在条带411中的区块DE(1,0)、DE(3,1)、DE(6,0)和DE(7,0)。可以基于确定的两个重建条带中的各个区块之间的关系来确定两个重建条带之间的耦合度。
最后,在方框550处,基于确定的耦合度确定第一候选和第二候选。在此,由于耦合度表示重建期间的冲突程度,因而可以尽量选择适当的第一候选和第二候选,以便使得两个重建条带之间的耦合度较低。
在下文中将参见图6来描述有关确定耦合度的更多细节。图6示意性示出了根据本公开的一个实现方式的用于确定第一重建条带和第二重建条带之间的耦合度的图示600。继续上文图4的示例,假设从存储设备421中选择区块610(标识符为DE(1,k-2))来用于重建条带410,从存储设备422中选择区块611(标识符为DE(2,k-2))来用于重建条带411,并且从存储设备423中选择区块612(标识符为DE(2,k-2))来用于重建条带412。此时,第一重建条带和第二重建条带可以分别表示为:
第一重建条带={DE(1,k-2),DE(2,0)、DE(3,0)、DE(4,0),DE(5,0)}
第二重建条带={DE(1,0)、DE(2,k-2)、DE(3,1)、DE(6,0),DE(7,0)}
根据本公开内容的示例性实现方式,基于第一重建条带中所包括的各个区块的地址以及第二重建条带中所包括的各个区块的地址,确定耦合度。根据本公开内容的示例性实现方式,条带中的各个区块位于哪个存储设备中将会影响到重建期间访问该存储设备的访问速度。因而,基于各个区块的地址(例如,以标识符表示)来确定耦合度,可以考虑一个存储设备在重建期间被不同的重建操作所访问时造成的冲突,因而以更为准确的方式来衡量重建期间的冲突程度。
参见上文描述的第一重建条带和第二重建条带,基于两个条带中的区块的地址可知,第一重建条带中的区块分别位于编号为1、2、3、4、5的存储设备,第二重建条带中的区块分别位于编号为1、2、3、6、7的存储设备。此时编号为1、2、3的三个存储设备需要同时为第一重建条带和第二重建条带提供区块(换言之,编号为1、2、3的三个存储设备在第一重建条带和第二重建条带之间重叠)。因而可以认为在重建期间将会由于并行地针对编号为1-3的三个存储设备进行读写操作而导致一定程度的冲突。
根据本公开内容的示例性实现方式,可以以量化方式衡量两个重建条带之间的耦合度。例如,可以基于两个重建条带中的区块是否位于相同的存储设备来确定耦合度。如果两个条带中的10个区块分别位于不同的存储设备,则可以将耦合度设置为0(或者其他数值)。
如果两个条带中的一对区块位于相同存储设备(例如,第一重建条带中的区块DE(1,k-2)和第二重建条带中的区块DE(1,0)均位于存储设备421),则可以将耦合度增加1(或者其他数值)。具体地,可以基于两个重建条带所涉及的重叠存储设备的个数来确定耦合度。如图6所示,第一重建条带和第二重建条带包括三个重叠的存储设备(编号为1、2、3的存储设备),则此时两个条带的耦合度可以被设置为3。此时,可以基于如下公式1来计算耦合度:
CP(RSi,RSj)
=重建条带RSi和重建条带RSj所包括重叠存储设备的数量
公式1
将会理解,在上文中仅示意性示出了在与条带410和411相关联的重建条带之间的耦合度的具体示例。本领域技术人员还可以根据上文描述的原理,确定与条带410和412(或者其他待重建条带)相关联的重建条带之间的耦合度。将会理解,在上文中仅示意性示出了用于计算耦合度的一个示例,还可以基于其他方式来确定耦合度。例如,还可以根据具体情况为每个重叠存储设备设置不同的权重。
根据本公开内容的示例性实现方式,可以基于第一重建条带中所包括的各个区块在重建期间的读写关系以及第二重建条带中所包括的各个区块在重建期间的读写关系,确定耦合度。根据本公开内容的示例性实现方式,针对存储设备的访问冲突的程度还依赖于访问的类型。例如,由于读访问的性能将会高于写访问的性能(例如,二倍关系),基于读写关系来确定耦合度可以以更加准确的方式衡量冲突程度。例如,可以采用如下文表1所示的权重来确定两个重建条带之间的耦合度。
表1用于计算耦合度的示例
No. | 操作类型 | 操作类型 | 权重 |
1 | 无 | 无 | 0 |
2 | 读 | 无 | 0 |
3 | 写 | 无 | 0 |
4 | 无 | 读 | 0 |
5 | 无 | 写 | 0 |
6 | 读 | 读 | 2 |
7 | 读 | 写 | 3 |
8 | 写 | 读 | 3 |
9 | 写 | 写 | 4 |
如表1所示,第一列示出了对第一重建条带中的区块的操作的类型,而第二列示出了对第二重建条带中的区块的操作的类型。其中第1-5行示出了第一重建条带和第二重建条带中的区块所在的存储设备之间没有重叠区块的情况,因而权重被设置为1。
第6行示出了第一重建条带和第二重建条带中的区块所在的存储设备有重叠的情况:为了重建第一条带而针对重叠的存储设备执行读操作,并且为了重建第二条带而针对重叠的存储设备执行读操作。此时可以将权重设置为2。
第7行示出了第一重建条带和第二重建条带中的区块所在的存储设备有重叠的情况:为了重建第一条带而针对重叠的存储设备执行读操作,并且为了重建第二条带而针对重叠的存储设备执行写操作。由于通常读效率是写效率的大约2倍,因而可以将权重设置为1+2×1=3。第8行示出了与第7行类似的情况,在此不再赘述。
第9行示出了第一重建条带和第二重建条带中的区块所在的存储设备有重叠的情况:为了重建第一条带和第二条带而针对重叠的存储设备均执行写操作。因而可以将权重设置为2×1+2×1=4。
根据本公开内容的示例性实现方式,上文中的第一重建条带和第二重建条带的定义中还可以加入读写类型,并且可以表示为如下所示的形式:
第一重建条带={DE(1,k-2,写),DE(2,0,读)、DE(3,0,读)、DE(4,0,读),DE(5,0,读)}
第二重建条带={DE(1,0,读)、DE(2,k-2,写)、DE(3,1,读)、DE(6,0,读),DE(7,0,读)}
在此示例中,可以基于表1所示的权重和在重建期间所涉及的读写操作的类型来确定最终的耦合度CP(第一重建条带,第二重建条带)。两个重建条带涉及3个重叠的存储设备,并且有关操作如下:编号为1的存储设备所涉及的操作类型分别为“写”和“读”,编号为2的存储设备所涉及的操作类型分别为“读”和“写”,编号为3的存储设备所涉及的操作类型分别为“读”和“读”。因而,耦合度可以计算为CP(第一重建条带,第二重建条带)=3+3+2=8。
基于上文描述的示例,本领域技术人员还可以确定其他重建条带之间的耦合度。例如,假设两个重建条带所涉及2个重叠的存储设备,并且有关操作如下:编号为1的存储设备所涉及的操作类型分别为“写”和“写”,编号为2的存储设备所涉及的操作类型分别为“读”和“读”。因而,耦合度可以计算为4+2=6。
根据本公开内容的示例性实现方式,在已经确定将第一存储设备作为第一候选的情况下,可以从一组存储设备中选择满足如下条件的第二存储设备:基于该第二存储设备形成的第二重建条带与第一重建条带之间的耦合度低于基于其他存储设备形成的其他重建条带与第一重建条带之间的耦合度。换言之,通过选择可以获得较低耦合度的存储设备来作为第二存储设备,可以尽可能地降低在重建操作期间的冲突程度。
具体地,可以从一组存储设备中选择参考存储设备,参考存储设备是用于将第二条带进行重建以形成参考重建条带的存储设备的参考候选。接着,可以确定第一重建条带和参考重建条带之间的参考耦合度。最后,如果耦合度小于参考耦合度,则分别将第一存储设备和第二存储设备标识为第一候选和第二候选。
根据本公开内容的示例性实现方式,可以逐一地针对资源池中的每个存储设备,来计算利用该存储设备形成的重建条带与第一重建条带之间的耦合度,并且选择产生最低耦合度的存储设备来作为第二候选。继续参见图6,为了重建条带410和411,在已经确定利用存储设备421来重建条带410的基础上,可以从其余的可用存储设备中寻找可以导致可以产生最小耦合度的存储设备。
具体地,可以首先选择利用存储设备422来重建条带411,并计算耦合度1;可以选择利用存储设备424来重建条带411,并计算耦合度2;可以选择利用存储设备425来计算耦合度3。在此示例中,可以比较耦合度1至耦合度3的大小,并从中选择与最小的耦合度相关联的存储设备来作为重建操作的目的地存储设备。备选地,如果计算所得的多个耦合度大小相等,则可以以随机方式或者按顺序选择一个存储设备。
在已经按照上文描述的方法确定将第一条带和第二条带重建至第一候选存储设备和第二候选存储设备之后,还可以逐一针对存储系统中的每个待重建的条带执行处理。根据本公开内容的示例性实现方式,具体地,可以从一组存储设备中选择第三存储设备,第三存储设备是用于将多个条带中的第三条带进行重建以形成第三重建条带的存储设备的第三候选。接着,可以确定第三重建条带与包括第一重建条带和第二重建条带的集合之间的集合耦合度。在此示例中,可以分别基于第三重建条带和第一重建条带之间的耦合度以及第三重建条带和第二重建条带之间的耦合度来确定集合耦合度。例如,可以将确定的两个耦合度进行求和(或者例如乘积的其他运算)以确定集合耦合度。最后,可以基于确定的集合耦合度确定第三候选。
类似于上文描述的确定第二重建条带的方法,可以在多个可用存储设备中逐一选择用于重建第三条带的存储设备,并且计算相对应的耦合度。通过选择导致最小耦合度的存储设备,即可确定将第三条带重建至何处。当存储系统中存在多个条带需要被重建时,还可以逐一针对每个条带进行处理,直到为每个带重建条带确定用于重建的存储设备。
根据本公开内容的示例性实现方式,可以设定并行指数P,用于指示在后期的重建过程中可以并行地执行重建的条带的数量。在此可以根据存储系统的各种硬件的指标来设置并行指数P的数值。一般而言,可以将并行指数P设置为4、8或者其他数值。例如,当P=4时,表示在一个轮次的重建期间可以并行地重建4个条带。可以在多个轮次中执行重建,直到存储系统中的每个待重建条带都被处理。
根据本公开内容的示例性实现方式,可以逐一地针对每个待重建的条带来确定用于重建的存储设备。在已经按照上文描述的方法确定了用于重建第一条带和第二条带的第一候选和第二候选之后,还可以基于耦合度来逐步选择用于重建其他条带的存储设备。以此方式,可以确保在重建各个条带时在资源池中的各个存储设备处的访问冲突最小化。在下文中将参见图7描述如何针对存储系统中的各个待重建条带选择用于重建的存储设备。
图7示意性示出了根据本公开的一个实现方式的用于确定各个重建条带的方法700的流程图。在此实现方式中,可以分别设置两个队列Q1和Q2,其中Q1指示包括当前可用的区块的存储设备的标识符的队列,Q2指示包括最近已经被选择的存储设备的标识符的队列。在选择存储设备时,可以从队列Q1中选择适合的存储设备,继而将选择的存储设备的标识符加入队列Q2。当Q1为空时可以交换Q1和Q2。以此方式,可以确保每次选择距离上次被选择时间较长的存储设备,从而确保各个存储设备之间的负载平衡。
在下文中将具体描述图7的流程图中所示的各个步骤。在方框710处执行初始化步骤,首先向队列Q1添加包括可用区块的存储设备的标识符,并且将队列Q2设置为空。在后续的方框712至728处,可以根据并行指数P来从资源池中逐步选择用于并行地重建P个条带的P个存储设备。
在方框712处,可以从队列Q1中选择适合于重建条带S1的存储设备。在方框714处,可以将所选择的存储设备从队列Q1移动至队列Q2。继而,在方框716处,基于上文描述的最小耦合度原则,从队列Q1中选择用于重建条带S2的存储设备。在此的最小耦合度原则是指,从队列Q1中选择使得分别与条带S1和S2相关联的重建条带之间的耦合度最小的存储设备。关于最小耦合度原则的更多细节,请参见上文的具体描述。
为方便描述起见,在此将当前正在被处理的条带称为区块Si。如方框718处所示,将所选择的存储设备从队列Q1移动至队列Q2。在方框720处,检查队列Q1是否为空,如果为空则交换队列Q1和Q2(如方框722所示),否则操作流程前进至方框724。在方框724处,可以基于上文描述的最小耦合度原则,来选择用于条带Si的存储设备。继而,在方框726处,将选择的存储设备从队列Q1移动至队列Q2。
接着,在方框728处,可以判断是否还存在尚未被处理的条带,如果存在,则操作流程返回方框720。否则,操作流程前进至方框730,以判断已经处理的条带的数量是否已经达到并行指数P的数值,如果已经达到P的数值,则在方框730处操作结束。如果尚未达到P的数值,则操作流程返回方框712处并针对下一待重建的条带进行处理。
通过如图7所示的方法,可以在多个轮次中为存储系统中的全部待重建条带选择用于重建的存储设备。在每个轮次中,可以并行地重建P个条带。在此方法中,通过设置队列Q1和Q2,可以尽量选择距离上次被选择用于重建时间较长的存储设备来重建当前的条带Si,进而确保资源池中的各个存储设备的负载平衡。
图8示意性示出了根据本公开的一个实现方式的根据图7所示的方法所确定的用于重建各个条带的存储设备800。如图8下部的资源池432所示,当资源池432中的存储设备420出现故障时,该故障存储设备420中所包括的各个区块都被损坏。由于被损坏的区块分别位于存储系统430中的多个条带,因而这些条带需要被重建。在存储系统430中,待重建条带包括以星形示出的6个条带410、411、412、413、415和417。
根据本公开内容的示例性实现方式,从一组存储设备中确定用于重建多个条带中的每个条带以形成多个重建条带的候选存储设备。按照如图7所示的方法,可以逐一地针对每个条带选择用于重建的存储设备。在执行参见图7描述的方法之后,则完成针对存储系统中的每个待重建条带选择用于重建的存储设备。
具体地,如资源池432所示,存储设备421中的区块610将用于重建条带410,存储设备422中的区块611将用于重建条带411,存储设备423中的区块612将用于重建条带412,存储设备424中的区块813将用于重建条带413,存储设备425中的区块815将用于重建条带415,以及存储设备426中的区块817将用于重建条带417。
根据本公开内容的示例性实现方式,可以确定描述多个重建条带中的任意两个重建条带之间的耦合度的耦合度关系。继而,基于耦合度关系,可以并行地重建多个条带中的至少两个条带。以此方式,基于耦合度关系来选择的条带,可以确保在后期的重建过程中的冲突程度较低。
在下文中将描述如何耦合度关系的具体含义。在已经确定了使用哪个存储设备来重建存储系统中的待重建条带之后,可以按照上文描述的方法来计算各个重建条带之间的耦合度。为方便描述,利用各个待重建条带在存储系统中的序号来表示各个待重建条带,并且将利用按照上文描述的方法选择的存储设备来执行重建后的条带称为“重建条带(Rebuilt Stripe,简称RS)”。例如,重建条带RS0表示利用图8中的区块610针对条带410(存储系统中的第0号条带)执行重建操作后的条带,重建条带RS1表示利用图8中的区块611针对条带411(存储系统中的第1号条带)执行重建操作后的条带,以此类推。
继而,根据上文描述的确定耦合度的方法,可以确定各个重建条带之间的耦合度。具体地,重建条带RS0、RS1、RS2、RS3、RS5以及RS7之间的耦合度可以如下文表2所示。
表2耦合度关系
RS0 | RS1 | RS2 | RS3 | RS5 | RS7 | |
RS0 | -1 | 8 | 6 | 10 | 7 | 8 |
RS1 | 8 | -1 | 8 | 7 | 6 | 9 |
RS2 | 6 | 8 | -1 | 10 | 9 | 7 |
RS3 | 10 | 7 | 10 | -1 | 8 | 6 |
RS5 | 7 | 6 | 9 | 8 | -1 | 10 |
RS7 | 8 | 9 | 7 | 6 | 10 | -1 |
在表2中,两个重建条带所对应的行和列的交叉点表示两个重建条带的耦合度。如表2中第2行所示,重建条带RS0与重建条带RS0、RS1、RS2、RS3、RS5以及RS7之间的耦合度分别为-1(重建条带RS0与自身之间的耦合度并无实际含义,因而可以将其设置为-1或者其他负数)、8、6、10、7和8。
接着,可以利用表2所示的耦合度关系来确定选择哪些条带来进行并行重建。应当注意,在此实现方式中,并行重现的条带的数量应当基于上文描述的并行指数P来确定。在并行指数P=2的情况下,可以并行地重建两个条带。在下文中,将继续上文示例并描述在并行指数P=4的情况下的具体操作。此时,可以选择4个条带用于在一个轮次中并行地被重建。可以基于表2中示出的耦合度,来选择之间耦合度最小的P个条带执行并行重建。
根据本公开内容的示例性实现方式,存储系统包括第一控制节点和第二控制节点。可以基于如下方式并行地重建多个条带中的至少两个条带:基于耦合度关系,从多个条带中选择至少两个条带;以及分别利用第一控制节点和第二控制节点,并行地重建至少两个条带中的第一部分和第二部分。在上文中已经描述了如何针对每个待重建条带从存储设备中选择可以降低重建期间的冲突程度的存储设备。基于已经确定的条带和存储设备之间的对应关系,还可以由存储系统的两个控制节点来并行地执行重建操作。以此方式,重建操作的并行执行程度可以得到进一步提高,进而可以以更快的速度完成重建。
图9示意性示出了根据本公开的一个实现方式的用于管理存储系统的控制节点的示例架构900的图示。如图9所示,存储系统940可以通过一个或者多个控制节点来进行管理。具体地,存储系统940可以通过控制节点910和920来管理。两个控制节点910和920之间可以设置用于通信的通道930。在存储系统940的操作期间,两个控制节点910和920可以并行地执行重建。
根据本公开内容的示例性实现方式,可以按照如下方式来选择可以并行执行重建的多个条带。具体地,可以从多个条带中选择第一并行条带,以及基于耦合度关系从多个条带中选择第二并行条带。将会理解,在此需要确保第一并行条带和第二并行条带之间的耦合度小于第一并行条带与多个条带中的其他条带的耦合度。以此方式,在已经确定可以并行执行重建的条带数量的情况下,可以按照多个条带中的任意两个条带之间的耦合度,选择并行地执行耦合度较低的条带,进而提高重建操作的效率。
在下文中,将参见图10A详细描述如何选择在第一轮次中将被并行重建的P个条带的具体操作。图10A示意性示出了根据本公开的一个实现方式的选择在第一轮次中将被重建的条带所基于的耦合度关系的图示1000A。当P=4时,在每个轮次中可以选择4个条带用于并行重建。假设首选选择RS0,继而分别确定其他三个重建条带。在确定第二个重建条带时,如图10A中阴影部分所示,可以从RS1、RS2、RS3、RS5和RS7中选择与RS0之间的耦合度最小的重建条带。此时,由于RS2与RS0之间的耦合度为6(最小值),因而可以选择RS2。
根据本公开内容的示例性实现方式,基于耦合度关系从多个条带中选择第三并行条带,使得第三条带与包括第一并行条带和第二并行条带的集合之间的集合耦合度小于多个条带中的另一条带与包括第一并行条带和第二并行条带的集合之间的集合耦合度。以此方式,可以按照耦合度从低到高的方式,逐步选择可以并行执行重建的条带。因而,在每个轮次的并行重建期间,都可以保证针对资源池中的各个存储设备的读写操作的冲突程度最低。
继续上文的示例,已经选择了重建条带RS0和RS2。接着可以从RS1、RS3、RS5和RS7中选择与{RS0,RS2}之间的耦合度最小的重建条带。
RS1与{RS0和RS2}之间的耦合度=CP(RS1,RS0)+CP(RS1,RS2)=8+8=16;
RS3与{RS0和RS2}之间的耦合度=CP(RS3,RS0)+CP(RS3,RS2)=10+10=20;
RS5与{RS0和RS2}之间的耦合度=CP(RS5,RS0)+CP(RS5,RS2)=7+9=16;
RS7与{RS0和RS2}之间的耦合度=CP(RS7,RS0)+CP(RS7,RS2)=8+7=15。
基于上文的计算可知,RS7与{RS0和RS2}之间的耦合度为15(最小值),因而可以选择RS7作为第三个重建条带。此时,已经选择了重建条带RS0、RS2和RS7。
根据本公开内容的示例性实现方式,响应于被选择的并行条带的数量小于预定数量,基于耦合度关系从多个条带中选择第四并行条带,使得第四条带与包括被选择的并行条带的集合之间的集合耦合度小于多个条带中的另一条带与包括被选择的并行条带的集合之间的集合耦合度。根据本公开内容的示例性实现方式,可以设定在每个轮次的并行重建中将被重建的条带的数量。以此方式,所选择的将被重建的条带之间的耦合度最低,进而保证可以以较快的方式完成每个轮次的重建。
接着可以从RS1、RS3、RS5中选择与{RS0,RS2,RS7}之间的耦合度最小的重建条带。可以基于如下公式来分别计算RS1、RS3、RS5与{RS0,RS2,RS7}之间的耦合度。
RS1与{RS0,RS2,RS7}之间的耦合度=CP(RS1,RS0)+CP(RS1,RS2)+CP(RS1,RS7)=8+8+9=25;
RS3与{RS0,RS2,RS7}之间的耦合度=CP(RS3,RS0)+CP(RS3,RS2)+CP(RS3,RS7)=10+10+6=26;
RS5与{RS0,RS2,RS7}之间的耦合度=CP(RS5,RS0)+CP(RS5,RS2)+CP(RS5,RS7)=7+9+10=26。
由于RS1与{RS0,RS2,RS7}之间的耦合度最小,因而可以选择RS1作为第四个重建条带。此时,在第一个轮次中将被并行的重建的条带包括RS0、RS2、RS7和RS1。进一步,由于控制节点910和920可以并行地执行重建,因而还可以分别由两个控制节点来并行地重建RS0、RS2、RS7和RS1。具体地,可以将RS0和RS7分配给控制节点910,并将RS2和RS1分配给控制节点920。备选地,还可以选择其他分配方式。
在上文中已经参见图10A描述了如何选择在第一轮次中可以并行重建的4个条带。在下文中将参见图10B描述如何选择在第二轮次中可以并行重建的条带。由于在第一轮次中已经选择了如图10B所示的阴影区域中的4个条带RS0、RS1、RS2和RS7,因而在第二轮次的操作中,仅需要从条带RS3和RS5中进行选择。在第二轮次中,由于仅存在2个待重建条带。此时待重建条带的数量2小于并行指数4,因而可以直接选择RS3和RS5。
根据本公开内容的示例性实现方式,如果在第二轮次中存在的待重建条带的数量大于4,则还可以按照上文参见图10A描述的方法,以类似于在第一轮次中选择条带的方式来选择另外4个条带。将会理解,尽管在本公开的上下文中以P=4作为具体示例来描述了本公开的具体实现,在其他实现方式中,并行指数还可以被设置为其他数值,并且可以按照上文描述的原理来在选择在各个轮次中用于并行重建的重建条带。
将会理解,尽管在上文中仅以4D+1P的RAID5存储系统为具体示例描述了本公开的具体示例,在其他实现方式中,上文描述的方法还可以被应用于其他类型的存储系统。图11A示意性示出了根据本公开的实现方式的存储系统中的条带的图示1100A。如图11A所示,存储系统430还可以采用4D+1P+1Q的RAID-6存储设备。此时,在一个条带中,区块1110、1112、1114、1116分别用于存储数据D00、D01、D02、D03,而区块1118和1130分别用于存储校验P0和Q0。在采用如图11A所示的条带的存储系统中,也可以采用上文描述的方法来针对存储系统中的每个条带确定用于重建该条带的存储设备。进一步,还可以采用上文描述的方法来选择可以在一个轮次中被并行地重建的P个条带。与重建RAID-5类型的存储系统的区别在于,此时可以基于重建RAID-6类型的存储系统的算法,来执行具体的重建步骤。
图11B示意性示出了根据本公开的实现方式的存储系统中的条带的图示1100B。如图11B所示,存储系统430还可以采用4D+1P+1Q+1R的三重校验存储设备。此时,在一个条带中,区块1110、1112、1114、1116分别用于存储数据D00、D01、D02、D03,而区块1118、1130和1130B分别用于存储校验P0、Q0和R0。在采用如图11B所示的条带的存储系统中,也可以采用上文描述的方法来针对存储系统中的每个条带确定用于重建该条带的存储设备。进一步,还可以采用上文描述的方法来选择可以在一个轮次中被并行地重建的P个条带。与重建RAID-5类型的存储系统的区别在于,此时可以基于重建三重校验类型的存储系统的算法,来执行具体的重建步骤。
根据本公开内容的示例性实现方式,提供了一种用于管理存储系统的设备,包括:一个或者多个处理器;耦合至一个或者多个处理器中的至少一个处理器的存储器;在存储器中存储的计算机程序指令,当由至少一个处理器执行计算机程序指令时,使得系统执行用于管理存储系统的方法。存储系统包括多个条带,多个条带中的一个条带包括多个区块,多个区块来自与存储系统相关联的资源池中的一组存储设备。在该方法中,响应于一组存储设备中的存储设备出现故障,可以确定存储系统中的与故障存储设备相关联的多个条带。接着,分别从一组存储设备中选择第一存储设备和第二存储设备。在此的第一存储设备和第二存储设备是分别用于将多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选。继而,获取第一重建条带和第二重建条带之间的耦合度。在此的耦合度描述第一条带和第二条带被并行地重建的冲突程度。最后,基于获取的耦合度标识第一候选和第二候选。
根据本公开内容的示例性实现方式,可以基于第一重建条带中所包括的各个区块的地址以及第二重建条带中所包括的各个区块的地址,确定耦合度。
根据本公开内容的示例性实现方式,可以基于第一重建条带中所包括的各个区块在重建期间的读写关系以及第二重建条带中所包括的各个区块在重建期间的读写关系,确定耦合度。
根据本公开内容的示例性实现方式,可以从一组存储设备中选择参考存储设备。在此实现方式中,参考存储设备是用于将第二条带进行重建以形成参考重建条带的存储设备的参考候选。接着,获取第一重建条带和参考重建条带之间的参考耦合度,并且比较耦合度与参考耦合度之间的关系。如果耦合度小于参考耦合度,分别将第一存储设备和第二存储设备标识为第一候选和第二候选。
根据本公开内容的示例性实现方式,可以从一组存储设备中选择第三存储设备。在此实现方式中,第三存储设备是用于将多个条带中的第三条带进行重建以形成第三重建条带的存储设备的第三候选。接着,获取第三重建条带与包括第一重建条带和第二重建条带的集合之间的集合耦合度,并且基于获取的集合耦合度标识第三候选。
根据本公开内容的示例性实现方式,可以从一组存储设备中确定用于重建多个条带中的每个条带以形成多个重建条带的候选存储设备。继而,可以获取描述多个重建条带中的任意两个重建条带之间的耦合度的耦合度关系。接着,基于耦合度关系,可以并行地重建多个条带中的至少两个条带。
根据本公开内容的示例性实现方式,存储系统可以包括第一控制节点和第二控制节点。
根据本公开内容的示例性实现方式,基于耦合度关系,从多个条带中选择至少两个条带。在此所选择的的至少两个条带可以被并行地重建。具体地,可以分别利用第一控制节点和第二控制节点,并行地重建至少两个条带中的第一部分和第二部分。
根据本公开内容的示例性实现方式,从多个条带中选择第一并行条带,并且基于耦合度关系从多个条带中选择第二并行条带。在此实现方式中,可以按照如下方式来选择第二并行条带:使得第一并行条带和第二并行条带之间的耦合度小于第一并行条带与多个条带中的其他条带的耦合度。
根据本公开内容的示例性实现方式,基于耦合度关系从多个条带中选择第三并行条带。在此实现方式中,可以按照如下方式来选择第三并行条带:使得第三条带与包括第一并行条带和第二并行条带的集合之间的集合耦合度小于多个条带中的另一条带与包括第一并行条带和第二并行条带的集合之间的集合耦合度。
根据本公开内容的示例性实现方式,响应于被选择的并行条带的数量小于预定数量,基于耦合度关系从多个条带中选择第四并行条带。可以按照如下方式来选择第四并行条带:使得第四条带与包括被选择的并行条带的集合之间的集合耦合度小于多个条带中的另一条带与包括被选择的并行条带的集合之间的集合耦合度。
根据本公开内容的示例性实现方式,提供了一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据本公开的方法的动作。
根据本公开内容的示例性实现方式,提供了一种计算机可读存储介质,计算机可读存储介质具有存储在其上的计算机可读程序指令,计算机可读程序指令在被机器的处理单元执行时使得机器实现根据上文描述的方法。
附图中的流程图和框图显示了根据本公开的多个实现方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实现方式。在不偏离所说明的各实现方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实现方式。
Claims (21)
1.一种用于管理存储系统的方法,所述存储系统包括多个条带,所述多个条带中的一个条带包括多个区块,所述多个区块来自与所述存储系统相关联的资源池中的一组存储设备,所述方法包括:
响应于所述一组存储设备中的存储设备出现故障,确定所述存储系统中的与故障存储设备相关联的多个条带;
分别从所述一组存储设备中选择第一存储设备和第二存储设备,所述第一存储设备和所述第二存储设备是分别用于将所述多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选;
获取所述第一重建条带和所述第二重建条带之间的耦合度,所述耦合度描述所述第一条带和所述第二条带被并行地重建的冲突程度,其中所述耦合度是基于所述第一重建条带中的区块和所述第二重建条带中的区块是否位于相同的存储设备上;以及
基于获取的所述耦合度标识所述第一候选和所述第二候选。
2.根据权利要求1所述的方法,其中获取所述第一重建条带和所述第二重建条带之间的耦合度包括:
基于所述第一重建条带中所包括的各个区块的地址以及所述第二重建条带中所包括的各个区块的地址,确定所述耦合度。
3.根据权利要求1所述的方法,其中获取所述第一重建条带和所述第二重建条带之间的耦合度进一步包括:
基于所述第一重建条带中所包括的各个区块在重建期间的读写关系以及所述第二重建条带中所包括的各个区块在重建期间的读写关系,确定所述耦合度。
4.根据权利要求1-3中的任一项所述的方法,进一步包括:
从所述一组存储设备中选择参考存储设备,所述参考存储设备是用于将所述第二条带进行重建以形成参考重建条带的存储设备的参考候选;
获取所述第一重建条带和所述参考重建条带之间的参考耦合度;以及
响应于所述耦合度小于所述参考耦合度,分别将所述第一存储设备和所述第二存储设备标识为所述第一候选和所述第二候选。
5.根据权利要求4所述的方法,进一步包括:
从所述一组存储设备中选择第三存储设备,所述第三存储设备是用于将所述多个条带中的第三条带进行重建以形成第三重建条带的存储设备的第三候选;
获取所述第三重建条带与包括所述第一重建条带和所述第二重建条带的集合之间的集合耦合度;
基于获取的所述集合耦合度标识所述第三候选。
6.根据权利要求5所述的方法,进一步包括:
从所述一组存储设备中确定用于重建所述多个条带中的每个条带以形成多个重建条带的候选存储设备;
获取描述所述多个重建条带中的任意两个重建条带之间的耦合度的耦合度关系;以及
基于所述耦合度关系,并行地重建所述多个条带中的至少两个条带。
7.根据权利要求6所述的方法,其中所述存储系统包括第一控制节点和第二控制节点,其中并行地重建所述多个条带中的至少两个条带包括:
基于所述耦合度关系,从所述多个条带中选择至少两个条带;以及
分别利用所述第一控制节点和所述第二控制节点,并行地重建所述至少两个条带中的第一部分和第二部分。
8.根据权利要求7所述的方法,其中从所述多个条带中选择至少两个条带包括:
从所述多个条带中选择第一并行条带;以及
基于所述耦合度关系从所述多个条带中选择第二并行条带,使得所述第一并行条带和所述第二并行条带之间的耦合度小于所述第一并行条带与所述多个条带中的其他条带的耦合度。
9.根据权利要求8所述的方法,其中从所述多个条带中选择至少两个条带进一步包括:
基于所述耦合度关系从所述多个条带中选择第三并行条带,使得所述第三并行条带与包括所述第一并行条带和所述第二并行条带的集合之间的集合耦合度小于所述多个条带中的另一条带与包括所述第一并行条带和所述第二并行条带的所述集合之间的集合耦合度。
10.根据权利要求9所述的方法,其中从所述多个条带中选择至少两个条带进一步包括:
响应于被选择的并行条带的数量小于预定数量,基于所述耦合度关系从所述多个条带中选择第四并行条带,使得所述第四并行条带与包括被选择的并行条带的集合之间的集合耦合度小于所述多个条带中的另一条带与包括被选择的并行条带的所述集合之间的集合耦合度。
11.一种用于管理存储系统的设备,包括:
一个或者多个处理器;
耦合至所述一个或者多个处理器中的至少一个处理器的存储器;
在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述系统执行用于管理存储系统的方法,所述存储系统包括多个条带,所述多个条带中的一个条带包括多个区块,所述多个区块来自与所述存储系统相关联的资源池中的一组存储设备,所述方法包括:
响应于所述一组存储设备中的存储设备出现故障,确定所述存储系统中的与故障存储设备相关联的多个条带;
分别从所述一组存储设备中选择第一存储设备和第二存储设备,所述第一存储设备和所述第二存储设备是分别用于将所述多个条带中的第一条带和第二条带进行重建以形成第一重建条带和第二重建条带的存储设备的第一候选和第二候选;
获取所述第一重建条带和所述第二重建条带之间的耦合度,所述耦合度描述所述第一条带和所述第二条带被并行地重建的冲突程度其中所述耦合度是基于所述第一重建条带中的区块和所述第二重建条带中的区块是否位于相同的存储设备上;以及
基于获取的所述耦合度标识所述第一候选和所述第二候选。
12.根据权利要求11所述的设备,其中获取所述第一重建条带和所述第二重建条带之间的耦合度包括:
基于所述第一重建条带中所包括的各个区块的地址以及所述第二重建条带中所包括的各个区块的地址,确定所述耦合度。
13.根据权利要求11所述的设备,其中获取所述第一重建条带和所述第二重建条带之间的耦合度进一步包括:
基于所述第一重建条带中所包括的各个区块在重建期间的读写关系以及所述第二重建条带中所包括的各个区块在重建期间的读写关系,确定所述耦合度。
14.根据权利要求11-13中的任一项所述的设备,其中所述方法进一步包括:
从所述一组存储设备中选择参考存储设备,所述参考存储设备是用于将所述第二条带进行重建以形成参考重建条带的存储设备的参考候选;
获取所述第一重建条带和所述参考重建条带之间的参考耦合度;以及
响应于所述耦合度小于所述参考耦合度,分别将所述第一存储设备和所述第二存储设备标识为所述第一候选和所述第二候选。
15.根据权利要求14所述的设备,其中所述方法进一步包括:
从所述一组存储设备中选择第三存储设备,所述第三存储设备是用于将所述多个条带中的第三条带进行重建以形成第三重建条带的存储设备的第三候选;
获取所述第三重建条带与包括所述第一重建条带和所述第二重建条带的集合之间的集合耦合度;
基于获取的所述集合耦合度标识所述第三候选。
16.根据权利要求15所述的设备,其中所述方法进一步包括:
从所述一组存储设备中确定用于重建所述多个条带中的每个条带以形成多个重建条带的候选存储设备;
获取描述所述多个重建条带中的任意两个重建条带之间的耦合度的耦合度关系;以及
基于所述耦合度关系,并行地重建所述多个条带中的至少两个条带。
17.根据权利要求16所述的设备,其中所述存储系统包括第一控制节点和第二控制节点,其中并行地重建所述多个条带中的至少两个条带包括:
基于所述耦合度关系,从所述多个条带中选择至少两个条带;以及
分别利用所述第一控制节点和所述第二控制节点,并行地重建所述至少两个条带中的第一部分和第二部分。
18.根据权利要求17所述的设备,其中从所述多个条带中选择至少两个条带包括:
从所述多个条带中选择第一并行条带;以及
基于所述耦合度关系从所述多个条带中选择第二并行条带,使得所述第一并行条带和所述第二并行条带之间的耦合度小于所述第一并行条带与所述多个条带中的其他条带的耦合度。
19.根据权利要求18所述的设备,其中从所述多个条带中选择至少两个条带进一步包括:
基于所述耦合度关系从所述多个条带中选择第三并行条带,使得所述第三并行条带与包括所述第一并行条带和所述第二并行条带的集合之间的集合耦合度小于所述多个条带中的另一条带与包括所述第一并行条带和所述第二并行条带的所述集合之间的集合耦合度。
20.根据权利要求19所述的设备,其中从所述多个条带中选择至少两个条带进一步包括:
响应于被选择的并行条带的数量小于预定数量,基于所述耦合度关系从所述多个条带中选择第四并行条带,使得所述第四并行条带与包括被选择的并行条带的集合之间的集合耦合度小于所述多个条带中的另一条带与包括被选择的并行条带的所述集合之间的集合耦合度。
21.一种非瞬态计算机可读介质,计算机程序产品被有形地存储在所述非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据权利要求1-10中的任一项所述的方法的动作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810048517.6A CN110058785B (zh) | 2018-01-18 | 2018-01-18 | 用于管理存储系统的方法和设备 |
US16/250,116 US11048600B2 (en) | 2018-01-18 | 2019-01-17 | Method and apparatus for managing storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810048517.6A CN110058785B (zh) | 2018-01-18 | 2018-01-18 | 用于管理存储系统的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110058785A CN110058785A (zh) | 2019-07-26 |
CN110058785B true CN110058785B (zh) | 2022-07-05 |
Family
ID=67213969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810048517.6A Active CN110058785B (zh) | 2018-01-18 | 2018-01-18 | 用于管理存储系统的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11048600B2 (zh) |
CN (1) | CN110058785B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764661A (zh) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN112732167B (zh) * | 2019-10-28 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备 |
CN112925471A (zh) * | 2019-12-06 | 2021-06-08 | 伊姆西Ip控股有限责任公司 | 在存储系统中选择重建目的地的方法、设备和程序产品 |
CN113552998B (zh) * | 2020-04-24 | 2023-09-15 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统中的条带的方法、设备和程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261016B1 (en) * | 2009-04-24 | 2012-09-04 | Netapp, Inc. | Method and system for balancing reconstruction load in a storage array using a scalable parity declustered layout |
CN104094236A (zh) * | 2012-04-02 | 2014-10-08 | 国际商业机器公司 | 防止数据丢失的系统和方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346831B1 (en) * | 2001-11-13 | 2008-03-18 | Network Appliance, Inc. | Parity assignment technique for parity declustering in a parity array of a storage system |
US7024586B2 (en) | 2002-06-24 | 2006-04-04 | Network Appliance, Inc. | Using file system information in raid data reconstruction and migration |
US6792391B1 (en) | 2002-11-15 | 2004-09-14 | Adeptec, Inc. | Method and system for three disk fault tolerance in a disk array |
US8775868B2 (en) * | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8799705B2 (en) | 2012-01-04 | 2014-08-05 | Emc Corporation | Data protection in a random access disk array |
CN103970481B (zh) * | 2013-01-29 | 2017-03-01 | 国际商业机器公司 | 重建存储器阵列的方法和装置 |
US9811282B2 (en) * | 2015-03-06 | 2017-11-07 | Dell Products L.P. | Efficient rebuild of storage devices in a redundant array of independent disks (RAID) |
US9990263B1 (en) * | 2015-03-20 | 2018-06-05 | Tintri Inc. | Efficient use of spare device(s) associated with a group of devices |
US9690660B1 (en) * | 2015-06-03 | 2017-06-27 | EMC IP Holding Company LLC | Spare selection in a declustered RAID system |
CN105159618B (zh) * | 2015-09-25 | 2018-08-28 | 清华大学 | 用于单盘失效修复的优化方法及优化装置 |
CN107515726B (zh) * | 2016-06-16 | 2020-05-19 | 伊姆西Ip控股有限责任公司 | 用于管理存储设备的方法和系统 |
US10642690B1 (en) * | 2016-12-20 | 2020-05-05 | Tintri By Ddn, Inc. | Policy-driven raid rebuild |
US10409682B1 (en) * | 2017-02-24 | 2019-09-10 | Seagate Technology Llc | Distributed RAID system |
US10210045B1 (en) * | 2017-04-27 | 2019-02-19 | EMC IP Holding Company LLC | Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system |
-
2018
- 2018-01-18 CN CN201810048517.6A patent/CN110058785B/zh active Active
-
2019
- 2019-01-17 US US16/250,116 patent/US11048600B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261016B1 (en) * | 2009-04-24 | 2012-09-04 | Netapp, Inc. | Method and system for balancing reconstruction load in a storage array using a scalable parity declustered layout |
CN104094236A (zh) * | 2012-04-02 | 2014-10-08 | 国际商业机器公司 | 防止数据丢失的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11048600B2 (en) | 2021-06-29 |
CN110058785A (zh) | 2019-07-26 |
US20190220378A1 (en) | 2019-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163472B2 (en) | Method and system for managing storage system | |
CN109725837B (zh) | 管理存储系统的方法、系统和计算机程序产品 | |
CN109725831B (zh) | 管理存储系统的方法、系统和计算机可读介质 | |
CN110058785B (zh) | 用于管理存储系统的方法和设备 | |
CN110413201B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN107526531B (zh) | 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备 | |
CN110413208B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN110737391B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN109213619B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US20120030425A1 (en) | Parity declustered storage device array with partition groups | |
CN107515726B (zh) | 用于管理存储设备的方法和系统 | |
CN109213428B (zh) | 用于管理存储系统的方法和设备 | |
US10013359B2 (en) | Redundant disk array storage system and method using heterogeneous disks and a lookup table | |
CN112764661A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN111104051B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US20110202723A1 (en) | Method of allocating raid group members in a mass storage system | |
JP2022525919A (ja) | コンピューティング・ストレージ環境におけるリビルド時間を減少させること | |
CN111857541A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN111124250A (zh) | 用于管理存储空间的方法、设备和计算机程序产品 | |
CN112948279A (zh) | 管理存储系统中的访问请求的方法、设备和程序产品 | |
CN112732168B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US9400620B2 (en) | Storage system | |
US11422909B2 (en) | Method, device, and storage medium for managing stripe in storage system | |
CN112925471A (zh) | 在存储系统中选择重建目的地的方法、设备和程序产品 | |
CN109213427B (zh) | 用于管理存储系统的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |