CN115237330A - 用于raid重建的方法、电子设备和程序产品 - Google Patents
用于raid重建的方法、电子设备和程序产品 Download PDFInfo
- Publication number
- CN115237330A CN115237330A CN202110436956.6A CN202110436956A CN115237330A CN 115237330 A CN115237330 A CN 115237330A CN 202110436956 A CN202110436956 A CN 202110436956A CN 115237330 A CN115237330 A CN 115237330A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- request
- stripes
- stripe
- 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.)
- Pending
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
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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
- 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
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了用于RAID重建的方法、电子设备和程序产品。该方法包括:从任务列表中确定当前任务窗口内待处理的任务所涉及的RAID中的多个条带,任务列表包括外部I/O请求任务和内部重建I/O请求任务,每个条带包括第一数目个数据盘上的数据和第二数目个校验盘上的数据;将多个条带中的数据读取到读取缓冲区中;以及如果多个条带中的一个条带中的第一数目个数据盘的数据已经被读取到读取缓冲区中,对条带执行内部重建I/O请求任务。由此,可以在外部I/O热点区域附近分多个进程并行地处理RAID中需要重建的条带的重建,有助于提高数据存储系统在应对外部I/O请求的同时对RAID条带的重建恢复的处理能力和效率。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于RAID重建的方法、电子设备以及计算机程序产品。
背景技术
随着数据存储技术的发展,人们对数据存储设备的性能和可靠性要求越来越高。独立磁盘冗余阵列(英文:Redundant Array of Independent Disks,缩写:RAID)是将多个独立的物理磁盘按照不同的数据组织方式组合起来形成一个磁盘组(即,逻辑盘),其作为具有冗余能力的阵列,提供比单个磁盘更高的存储性能及可靠性。RAID中每一个物理磁盘亦可称为该RAID的成员盘,其中成员盘可以包括数据盘和校验盘。为了在RAID中的某个盘发生故障时对数据进行恢复,RAID中通常设置一个奇偶校验信息块(例如RAID 1、RAID 3或RAID5等)或多个奇偶校验信息块(例如RAID 6)。
在上述RAID重建过程中,若有对磁盘阵列RAID进行读数据或写数据操作(例如,外部I/O请求),一般会给予读数据或写数据操作更高的优先级,因此会先处理读数据或写数据操作,待系统资源空闲时再进行RAID重建,因而导致RAID重建的速度非常慢。在传统的重建方法中,如果内部重建I/O请求被外部I/O请求打断,磁头将移动到对应的位置来处理外部I/O请求,在响应完外部I/O请求之后,磁头移动到上一次重建结束的位置继续重建。因此,如果此类外部I/O请求发生的频率很高,磁头将不得不来回移动,从而大大降低重建的速度,进而导致数据存储系统的可靠性降低。
发明内容
本公开的实施例提供了一种数据存储系统中的RAID重建的改进方案。
在本公开的第一方面,提供了一种用于RAID重建的方法。该方法包括:从任务列表中确定当前任务窗口内待处理的任务所涉及的RAID中的多个条带,任务列表包括外部I/O请求任务和内部重建I/O请求任务,每个条带包括第一数目个数据盘上的数据和第二数目个校验盘上的数据;将多个条带中的数据读取到读取缓冲区中;以及如果多个条带中的一个条带中的第一数目个数据盘的数据已经被读取到读取缓冲区中,对条带执行内部重建I/O请求任务。
在本公开的第二方面,提供了一种电子设备。该电子设备包括处理器以及与处理器耦合的存储器,存储器保存需要执行的指令,指令在被处理器执行时使设备执行动作,动作包括:从任务列表中确定当前任务窗口内待处理的任务所涉及的RAID中的多个条带,任务列表包括外部I/O请求任务和内部重建I/O请求任务,每个条带包括第一数目个数据盘上的数据和第二数目个校验盘上的数据;将多个条带中的数据读取到读取缓冲区中;以及如果多个条带中的一个条带中的第一数目个数据盘的数据已经被读取到读取缓冲区中,对条带执行内部重建I/O请求任务。
在第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可执行指令,计算机可执行指令在被执行时使设备执行第一方面的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了传统RAID5的重建过程的示意图;
图2示出了根据本公开的实施例的以任务列表的形式来布置I/O请求的数据结构的一般性示意图;
图3示出了根据本公开的实施例的用于填充TCL任务列表的方法的流程图;
图4示出了根据本公开的实施例的通过计算RAID数据块的热值来检测热点区域和在热点区域附近选择需要重建的数据块的方法的示意图;
图5示出了根据本公开的实施例的分布式多进程重建(DMPR)的过程的示意图;
图6示出了根据本公开的实施例的分布式多进程重建的方法600的流程图;
图7示出了根据本公开的实施例的用于RAID重建的设备800的示例性结构图;
图8示出了可以用来实施本公开的实施例的示例设备700的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在本公开的实施例中,术语“盘(disk)”表示持久保存数据的非易失性存储器。盘的示例包括但不限于硬盘驱动器(HDD)、光盘驱动器以及固态盘(SSD),等等。
从功能上区别,RAID可分为RAID级别1到RAID级别10等,例如:RAID 0,RAID 1,RAID 2,RAID 3,RAID 4,RAID 5。其中,每一个RAID级别都有自己的强项和弱项。以RAID 5为例,在传统的RAID中,RAID 5例如可以包括5个盘。RAID 5由具有分布式校验信息的块级别条带构成,校验信息可以被分布在多个盘中,每个条带可以包括5个条块,即4个数据条块(也称为数据盘)和1个奇偶校验信息条块(也称为校验盘)(即“4D+1P”),当RAID中的一个盘发生故障时,后续的读取能够通过分布式校验信息来计算,使得数据能够被恢复并且不会被丢失。同时,热空闲盘或称热备盘将被选择以替代故障盘,并且故障盘上的所有数据将被重建并被写入到热备盘上。
如前所述,在RAID重建过程中,若有对磁盘阵列RAID进行读数据或写数据操作(例如,外部I/O请求),一般会给予读数据或写数据操作更高的优先级,因此会先处理数据或写数据操作,等系统资源空闲时再进行RAID重建,因而导致RAID重建的速度非常慢。在传统的重建方法中,如果内部重建I/O请求被外部I/O请求打断,磁头将移动到对应的位置来处理外部I/O请求,在响应完外部I/O请求之后,磁头移动到上一次重建结束的位置继续重建。因此,如果此类外部I/O请求发生的频率很高,磁头将不得不来回移动,从而大大降低重建的速度,进而导致数据存储系统的可靠性降低。为了使数据存储系统更可靠和更稳定,期望能在尽可能小地影响数据存储系统的性能的情况下,提高磁盘阵列重建的效率。
下面参考图1来描述传统的RAID重建方法。图1示出了传统RAID5的重建过程的示意图。在图1中,假设系统当前正在处理条带B的重建,如果在条带X处有新的外部I/O请求,系统不得不将磁头移动到条带X来处理该外部I/O请求。当该外部I/O请求被处理完毕后,磁头将需要移动回条带B附近,例如条带C来继续重建。由此可见,若此类外部I/O请求发生的频率很高,磁头将不得不来回移动,从而大大降低重建的速度。应当理解,虽然图1是以RAID5为例来说明重建过程的,但是其他类型的RAID结构的重建过程也是类似的。
本公开的实施例提出了一种新的减少磁头移动的应对机制,用于在处理外部I/O请求和时执行针对连续地址空间的内部重建I/O请求。基于以下认识,本文提出了所谓的分布式多进程重建方法:重建过程可以按照非连续的方式来实现,并且可以使用多个线程来并行处理。通常,逻辑上连续的地址空间映射到的物理地址也是连续的。在本文的技术方案中,引入了环形任务列表(TCL)和I/O请求列表(IRL)来帮助实现分布式多进程重建方法。
根据本公开的实施例,由于外部I/O请求的出现频率很高,从而形成了与当前的外部I/O请求对应的落盘区域。本公开的技术方案通过计算出热点区域,并且在热点区域附近的条带执行重建,来减少磁头在条带之间的来回长距离移动,达到提高重建的整体性能。通过减少对磁头的移动距离的方式,可以使得磁头不必移动回到上一次重建结束或暂停的位置,而是在外部I/O对应的热点区域附近继续重建。与此同时,本公开的技术方案使得重建的时间相比于传统的RAID重建大大减少,因此RAID的可靠性也得到了提升。此外,由于外部应用读或写数据集中在热点区域附近,而对RAID的重建也集中在热点区域附近,这也将提高外部I/O的性能。
以下将参考附图来详细描述本公开的示例实施例。
图2示出了根据本公开的实施例的以任务列表的形式来布置I/O请求的数据结构的一般性示意图。应理解,本公开的实施例的针对I/O请求的数据结构也可以被应用到其他需要重建的数据存储系统中。此外,本公开的实施例的布置I/O请求的数据结构也可以用其他的数据结构来代替,例如非环形的数据结构。
在图2中,来自外部应用的I/O请求和内部的重建I/O请求被布置成环形任务列表TCL,一个TCL被分成多个任务窗口,并且被顺序地执行。根据本公开的实施例,TCL是存储器中的环形数据结构,假设其被预设L个单元,即L个任务窗口。在图2中,通常每个任务单元或任务窗口中填充有一个I/O请求列表,IRL。一个IRL通常意味着一系列连续的I/O数据块,该一系列连续的I/O数据块是将由重建管理器顺序执行的数据结构。在本公开的实施例中,特定的任务窗口被填充重建I/O请求还是外部I/O请求取决于是否检测到热点或热点区域。
假设IRL列表的最大长度为M,通常情况下,由于没有足够的热数据块或外部I/O数据块,因此候选的数据块不会填充完IRL列表的最大长度。然而,如果某个外部I/O数据块超过了IRL列表的最大长度,则剩余的数据块将被存储在后面的任务窗口中。下文中将参考图4更详细地描述生成IRL列表的方法。
根据本公开的实施例,当RAID重建被触发时,TCL任务列表就被自动创建,数据存储系统将存储器空间分配给TCL中的每个单元,即任务窗口。由于在RAID重建被触发时,主要处理的是重建I/O请求,因此TCL列表的任务窗口主要填充有重建I/O请求。换言之,TCL列表的初始化涉及将TCL列表的前K个任务窗口分配给重建I/O请求,而剩余的L-K个任务窗口被预留给外部I/O请求。此后,当新的外部I/O请求发生时,任务调度器将用缓存的外部I/O请求来填充任务窗口,并将包含外部I/O请求的任务窗口插入到包含重建I/O请求的任务窗口之前以优先处理外部I/O请求。下文中将参考图3的方法300对填充TCL任务窗口的过程进行更详细的描述。
应当理解,在本公开的技术方案中,TCL任务列表和IRL列表的引入是为了将外部I/O请求和重建I/O请求布置成待处理的任务的列表形式,以便于数据存储系统按照特定的方式来自动处理I/O请求任务,对于I/O请求的其他形式的布置也应当被包括在本公开的技术方案中,而不仅限于此处提出的TCL任务列表和IRL列表。
图3示出了根据本公开的实施例的用于填充TCL任务列表的方法的流程图。应当理解,填充TCL任务列表的过程是在下文中将要描述的分布式多进程重建DMPR过程之前完成的。
在框302,在重建I/O请求被触发后,TCL任务列表就被自动创建,数据存储系统将存储器空间分配给TCL中的每个单元,TCL列表完成初始化。在框304,此时数据存储系统中的设备需要处理缓存的外部I/O请求,其被预填充在TCL任务列表的前N个任务窗口中,剩余的任务窗口则填充有重建I/O请求。在框306,如果新的外部I/O请求发生,则过程行进到框308,否则行进到框310。在框380,新的外部I/O请求被组织成IRL,并被插入到重建I/O请求任务窗口之前的任务窗口中。应当理解,一个IRL列表中可以仅包括外部I/O请求,可以仅包括重建I/O请求,也可以既包括外部I/O请求又包括重建I/O请求,取决于I/O请求所对应的数据块。在框310,当前任务窗口中的I/O请求任务被处理,然后进行到下一个任务窗口。在框312和框314,分别判断任务窗口是否全部被处理完毕,以及判断所有重建I/O请求是否已经完成。当框312的判定为“是”时,即当前循环中的TCL任务列表都已经处理完毕,就开始新的填充TCL的循环。当框314的判定为“是”时,所有需要重建的数据块或条带已经完成了重建,则过程行进到框316。在框316,TCL任务列表被销毁,释放数据存储系统中的存储器空间。应当理解,通过上述填充TCL任务列表的方式,在每个循环中,既能够确保新的外部I/O请求被最快地响应,又能够保证内部重建I/O请求被集中处理,从而在处理外部I/O请求和内部重建I/O请求之间,磁头不必来回多次地移动。
下面将结合图4描述生成IRL列表的方法。图4示出了根据本公开的实施例的通过计算RAID数据块的热值来检测热点区域和在热点区域附近选择需要重建的数据块的方法的示意图。根据本公开的实施例,在发生大量外部I/O请求的情况下,本公开的技术方案提出了一种通过计算RAID数据块的热值来检测热点区域和在热点区域附近选择需要重建的数据块的方法,更进一步地,将热点区域附近的数据块中的I/O请求组织成IRL列表的形式。
为了检测热点,首先需要计算所有RAID数据块的热值,并将这些热值存储在如图4中所示的热图中,其中热图根据RAID的条带的形式来组织,换言之,热图中的每个热值对应于不同条带的条块。例如,根据实施例,每个条块或数据块的热值可以通过等式1来计算:
其中HDi表示数据块Di的热值,其初始值为0。R表示在采样周期中数据块Di的读取命中值,W表示在采样周期中数据块Di的写入命中值。α表示数据块Di的读取命中的权重值,β表示数据块Di的写入命中的权重值。根据上式,HDi等于采样周期Th中的读取命中和写入命中的和。当在一个采样周期Th中没有读取命中和写入命中(即,没有读数据和写数据的请求)时,HDi减小1。如果在长时间内没有读取命中/或和写入命中,HDi可以减小到0甚至负数。
在计算出RAID数据块的热图后,以降序来对热图中的每个热值进行排序,从而得到图4中所示的热度列表(hot list)。基于该热度列表,可以选择热点区域,因为热值越高,表示读数据和写数据的请求月多,即I/O请求越多。应当理解,图4中所示的热图和热度列表仅是示例性的,并不是反映了RAID中的数据块的真实热值。还应当理解,图4中所示的热图和热度列表中的每个热值是动态更新的。假设逻辑地址可以被扩展成一条线,如图4中的下半部分所示。图4中示意性地列出了所检测到的三个热点,即H1,H2,和H3。通常,在尝试选择候选数据块之前,根据经验定义一个可变的步长(step length,简写为sl)。在图4所示的示例中,假设该可变步长sl=3,这意味着从当前检测到的热点出发,其前面的最多3个数据块以及其后面的最多3个数据块可以被选择,这些被选择的数据块与当前检测到的热点一起形成了连续数据块。对于每个热点,如果所选择的连续数据块中包括了已重建的数据块,则忽略掉该已重建的数据块,在图4中这对应于H1和H3的情形。应当理解,已重建的数据块在重建位图中被标记为0,未重建的数据块在重建位图中被标记为1。如果通过上述方式找不到未重建的数据块,这意味着所选择的连续数据块中没有需要重建的数据块,则忽略掉该热点。在通过上述方式选择连续数据块以后,该连续数据块将被组织成IRL列表的形式,然后被插入到合适的任务窗口中。应当理解,通过上述方式或者其他合适的选择连续数据块的方式,能够确保在热点区域附近选择需要重建的数据块,换言之,本公开的技术方案保证了磁头不需要移动到上一次重建的位置,而是根据当前外部I/O落盘的区域计算出来的热点区域。本公开的技术方案可以尽量减少磁头的长距离移动,从而达到提高重建的整体性能的目的。
图5示出了根据本公开的实施例的分布式多进程重建(DMPR)的过程的示意图。应当理解,在本文的技术方案中,分布式多进程重建的方法主要用来执行TCL任务列表中的一个窗口单元,即一个IRL列表中的任务。
当外部I/O请求与内部重建I/O请求同时进行的时候,每个盘中的I/O争用可能是不同的,具体表现为例如各个盘的响应时间可能不一致。在这种情况下,在传统的基于条带的重建方法中,响应最慢的盘代表了当前重建的性能。本公开提出了一种新的分布式多进程重建的方法,该方法相比于传统的基于条带的重建方法能够提供更优的性能。
如图5所示,重建过程主要涉及:(1)将需要重建的条带中的数据读取到读取缓冲区中,(2)确定校验盘数据(故障盘数据)并且存储到写入缓冲区中,以及(3)将写入缓冲区中的数据刷到热备盘中并且在重建位图中更新条带的位值。根据RAID的原理,假设条带中数据盘的个数是Nd,校验盘的个数是Np(在这种情况下,RAID的级别为Nd+Np),那么一个条带只需要从Nd个盘中读入数据,我们就可以计算出剩下Np个其他盘上的数据。以RAID5为例,Nd=4,Np=1,根据从TCL任务列表的当前任务窗口中的IRL提供的数据块,异步读入4个在线盘(数据盘)中的数据,当计算进程发现4个盘中的数据已经被读取到读取缓冲区中,计算进程就通过异或计算出第五个盘的数据,然后该数据被存储在写入缓冲区中。
再次参考图5,其中示意性地列出了三个条带Sa、Sc和Se,假设在当前的IRL列表中,包含了这三个条带的数据,那么在发生了缓存未命中的时候,各个读进程异步地从各个在线盘读入对应条带的数据到读取缓冲区,这些数据根据地址以条带的形式组织。如上所述,由于各个盘的响应时间不一致,因此在读取缓冲区中完成条带的读取就有先后顺序。假设条带Sc最先完成图中4个在线盘的读取,就先处理条带Sc的重建计算,同理,根据对在线盘的读取来计算故障盘的数据并写入热备盘的操作也将针对条带Sc最先完成,即最先完成针对条带Sc的重建。应当理解,考虑到触发条带的重建的最少读入数据即是Nd个数据盘的数据,只要检测到某个条带的数据已经读取了Nd个数据,针对该条带的重建过程就被执行,以重建该条带对应的故障盘数据。应当理解,一个IRL列表中可以包括一个条带(对应一个数据块),也可以包括多个条带(对应多个数据块)。还应当理解,上述的分布式多进程重建过程是为了加速处理TCL任务列表中的每个IRL列表,相比于顺序处理IRL,该DMPR过程能够保证整个IRL列表中需要重建的数据块可以被并行执行,从而大大加速IRL中的条带的重建效率。
图6示出了根据本公开的实施例的分布式多进程重建的方法600的流程图。如前所述,在本文的技术方案中,分布式多进程重建的方法主要用来执行TCL任务列表中的一个窗口单元,即一个IRL列表中的任务。
在框610,根据已经建立好的TCL任务列表,确定其当前的任务窗口(一个IRL列表)内待处理的任务所涉及的RAID中的多个条带。在框620,多个条带中的数据被读取到读取缓冲区中。然后,在框630,判断多个条带中的一个条带是否已经有第一数目个数据盘的数据被读取到读取缓冲区中。应当理解,在特定的RAID级别中,该第一数目对应于该RAID级别中的数据盘的数目Nd,例如在RAID5中,Nd=4。如果该判定结果表明第一数目个数据盘的数据已经被读取到读取缓冲区中,则该过程行进到框640。在框640,该条带的重建I/O请求任务被执行。通过使用图6所示的方法的流程图,可以迅速地找到TCL任务列表中的当前任务窗口中需要重建的数据块。此外,框620中的读取多个条带中的数据也可以被异步地读取到读取缓冲区中,通过这样做,能够确保多线程并行处理该读数据操作,以有效应对各个盘的响应时间不一致的问题。
应当理解,图5和图6所描述的分布式多进程重建的方法结合图3所描述的填充TCL任务列表的过程构成了本公开的技术方案的基本框架。总体而言,通过对RAID中的条带或数据块的热值的计算找出外部I/O请求最集中的热点区域,并且在热点区域附近选择需要重建的数据块,然后将I/O请求布置成TCL任务列表的形式,并且使用分布式多进程重建的方法来加速处理TCL任务列表的每个单元(IRL列表),本公开的技术方案能够实现在尽可能小地影响数据存储系统的性能的情况下,提高磁盘阵列重建的效率,保证了数据存储系统的可靠性和稳定性。
图7示出了根据本公开的实施例的用于RAID重建的设备700的示例性结构图。设备700可操作用于执行参照图3所描述的方法300和结合图6所描述的方法600以及任何其他的处理和方法。
为此,设备700包括热点检测单元702,其被配置为周期性地收集数据块的外部读/写I/O请求,计算热点区域,以及生成热度列表。设备700还包括任务调度单元704,其被配置为基于外部I/O业务水平来动态地生成TCL任务列表,该TCL任务列表中的每个单元包括用于处理内部重建I/O请求的任务和用于处理外部I/O请求的任务。该任务调度单元704还用于收集针对每个重建任务窗口的IRL列表。设备700还包括重建计算单元706,其被配置为基于被读取到读取缓冲区中的数据块来计算条带中对应故障盘的数据,并且将该数据存储在写入缓冲区中。设备700还包括重建管理单元708,其被配置为集中地管理外部I/O热点区域检测和控制分布式多进程重建过程。此外,该重建管理单元708还被配置为管理读取缓冲区和写入缓冲区中的数据块,将其按照RAID条带的布局来布置,并且提供应用编程接口连接到重建位图,以便更新已重建的RAID条带的位值。应当理解,该重建管理单元708可以作为插件或外接模块被插入到现有的RAID重建架构中。
图8示出了可以用来实施本公开的实施例的示例设备800的框图。设备800可以被实现为或者包括图7中的设备700。
如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理,例如方法300和600。例如,在一些实施例中,方法300和600可被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,诸如非瞬态计算机可读介质,诸如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法300和600的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法300和600。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (13)
1.一种用于独立磁盘冗余阵列RAID重建的方法,包括:
从任务列表中确定当前任务窗口内待处理的任务所涉及的RAID中的多个条带,所述任务列表包括外部I/O请求任务和内部重建I/O请求任务,每个条带包括第一数目个数据盘上的数据和第二数目个校验盘上的数据;
将所述多个条带中的数据读取到读取缓冲区中;以及
如果所述多个条带中的一个条带中的所述第一数目个数据盘的数据已经被读取到所述读取缓冲区中,对所述条带执行所述内部重建I/O请求任务。
2.根据权利要求1所述的方法,其中所述多个条带中的数据是被异步地读取到所述读取缓冲区中的,并且对所述条带执行所述内部重建I/O请求任务包括:
将所述条带中的与故障盘有关的数据写入到写入缓冲区中;以及
将所述写入缓冲区中的与所述故障盘有关的数据异步地冲刷到热备盘。
3.根据权利要求2所述的方法,还包括:
在所述条带中的与所述故障盘有关的数据全部被冲刷到所述热备盘后,
更新所述条带在重建位图中的相关位,以及
从所述读取缓冲区和所述写入缓冲区中释放所述条带的所有数据。
4.根据权利要求1所述的方法,其中在所述任务列表被初始化后,所述任务列表中的任务窗口内待处理的任务被顺序地执行,并且所述方法还包括:
如果所述任务列表中的所有任务窗口内待处理的任务都被执行,并且针对所述多个条带的所述内部重建I/O请求任务都被执行,销毁所述任务列表。
5.根据权利要求4所述的方法,还包括:
如果所述任务列表中的任务窗口内待处理的任务未被全部执行,响应于接收到新的外部I/O请求任务,将所述新的外部I/O请求任务插入到所述内部重建I/O请求任务之前。
6.根据权利要求1所述的方法,其中所述当前任务窗口内待处理的任务是通过计算所述RAID中的所述多个条带的热值而确定的。
7.一种电子设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备执行动作,所述动作包括:
从任务列表中确定当前任务窗口内待处理的任务所涉及的RAID中的多个条带,所述任务列表包括外部I/O请求任务和内部重建I/O请求任务,每个条带包括第一数目个数据盘上的数据和第二数目个校验盘上的数据;
将所述多个条带中的数据读取到读取缓冲区中;以及
如果所述多个条带中的一个条带中的所述第一数目个数据盘的数据已经被读取到所述读取缓冲区中,对所述条带执行所述内部重建I/O请求任务。
8.根据权利要求7所述的电子设备,其中所述多个条带中的数据是被异步地读取到所述读取缓冲区中的,并且对所述条带执行所述内部重建I/O请求任务包括:
将所述条带中的与故障盘有关的数据写入到写入缓冲区中;以及
将所述写入缓冲区中的与所述故障盘有关的数据异步地冲刷到热备盘。
9.根据权利要求8所述的电子设备,所述动作还包括:
在所述条带中的与所述故障盘有关的数据全部被冲刷到所述热备盘后,
更新所述条带在重建位图中的相关位,以及
从所述读取缓冲区和所述写入缓冲区中释放所述条带的所有数据。
10.根据权利要求7所述的电子设备,其中在所述任务列表被初始化后,所述任务列表中的任务窗口内待处理的任务被顺序地执行,并且所述动作还包括:
如果所述任务列表中的所有任务窗口内待处理的任务都被执行,并且针对所述多个条带的所述内部重建I/O请求任务都被执行,销毁所述任务列表。
11.根据权利要求10所述的电子设备,所述动作还包括:
如果所述任务列表中的任务窗口内待处理的任务未被全部执行,响应于接收到新的外部I/O请求任务,将所述新的外部I/O请求任务插入到所述内部重建I/O请求任务之前。
12.根据权利要求7所述的电子设备,其中所述当前任务窗口内待处理的任务是通过计算所述RAID中的所述多个条带的热值而确定的。
13.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1-6中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110436956.6A CN115237330A (zh) | 2021-04-22 | 2021-04-22 | 用于raid重建的方法、电子设备和程序产品 |
US17/528,551 US11853618B2 (en) | 2021-04-22 | 2021-11-17 | Method, electronic device, and computer product for RAID reconstruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110436956.6A CN115237330A (zh) | 2021-04-22 | 2021-04-22 | 用于raid重建的方法、电子设备和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237330A true CN115237330A (zh) | 2022-10-25 |
Family
ID=83666317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110436956.6A Pending CN115237330A (zh) | 2021-04-22 | 2021-04-22 | 用于raid重建的方法、电子设备和程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11853618B2 (zh) |
CN (1) | CN115237330A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024113726A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 一种磁盘阵列重构任务加速方法、系统、存储介质及设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6647514B1 (en) * | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
US7386758B2 (en) * | 2005-01-13 | 2008-06-10 | Hitachi, Ltd. | Method and apparatus for reconstructing data in object-based storage arrays |
US8006128B2 (en) | 2008-07-31 | 2011-08-23 | Datadirect Networks, Inc. | Prioritized rebuilding of a storage device |
US20140215147A1 (en) | 2013-01-25 | 2014-07-31 | Hewlett-Packard Development Company, L.P. | Raid storage rebuild processing |
CN109725826B (zh) * | 2017-10-27 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、设备和计算机可读介质 |
US10983862B2 (en) | 2019-04-30 | 2021-04-20 | EMC IP Holding Company LLC | Prioritized rebuilding of extents in multiple tiers |
US11036602B1 (en) | 2019-11-25 | 2021-06-15 | EMC IP Holding Company LLC | Storage system with prioritized RAID rebuild |
-
2021
- 2021-04-22 CN CN202110436956.6A patent/CN115237330A/zh active Pending
- 2021-11-17 US US17/528,551 patent/US11853618B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024113726A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 一种磁盘阵列重构任务加速方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
US11853618B2 (en) | 2023-12-26 |
US20220342611A1 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070168754A1 (en) | Method and apparatus for ensuring writing integrity in mass storage systems | |
US7861035B2 (en) | Method of improving input and output performance of raid system using matrix stripe cache | |
US6341331B1 (en) | Method and system for managing a raid storage system with cache | |
CN111007991B (zh) | 基于nvdimm分离读写请求的方法及其计算机 | |
US20090265578A1 (en) | Full Stripe Processing for a Redundant Array of Disk Drives | |
US10942849B2 (en) | Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device | |
US10503424B2 (en) | Storage system | |
US10564865B2 (en) | Lockless parity management in a distributed data storage system | |
WO2019000950A1 (zh) | 分片管理方法和分片管理装置 | |
CN111400083B (zh) | 数据存储方法及系统、存储介质 | |
JP2002323959A (ja) | 磁気ディスク制御装置のログ主体不揮発性書き込みキャッシュ・システム及び方法 | |
US6378038B1 (en) | Method and system for caching data using raid level selection | |
KR20140111588A (ko) | 시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체 | |
CN103399823B (zh) | 业务数据的存储方法、设备和系统 | |
CN105630423A (zh) | 一种基于数据缓存的纠删码集群存储扩容方法 | |
CN108319430B (zh) | 处理io请求的方法及装置 | |
WO2019001521A1 (zh) | 数据存储方法、存储设备、客户端及系统 | |
CN110347613B (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
JP2005293205A (ja) | 記憶制御装置、制御方法、および制御プログラム。 | |
CN105630413B (zh) | 一种磁盘数据的同步回写方法 | |
CN109375868B (zh) | 一种数据存储方法、调度装置、系统、设备及存储介质 | |
CN115237330A (zh) | 用于raid重建的方法、电子设备和程序产品 | |
US10282116B2 (en) | Method and system for hardware accelerated cache flush | |
CN112764662B (zh) | 用于存储管理的方法、设备和计算机程序产品 | |
CN112748865B (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 |