CN1253791C - 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 - Google Patents
5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 Download PDFInfo
- Publication number
- CN1253791C CN1253791C CN 02149096 CN02149096A CN1253791C CN 1253791 C CN1253791 C CN 1253791C CN 02149096 CN02149096 CN 02149096 CN 02149096 A CN02149096 A CN 02149096A CN 1253791 C CN1253791 C CN 1253791C
- Authority
- CN
- China
- Prior art keywords
- itemize
- read
- failure
- reconstruct
- write
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法,包括:执行读写访问请求,判断是否执行成功,如果是,则返回执行结果,否则,判断读写是否已处在降级模式,如果不是,设置为降级模式,启动重构,按降级模式重新执行读写访问,并返回再次判断是否执行成功。如果处于降级模式,则判断此次失败所在分条是否已完成重构,如果不是,返回失败信息,如果是,则将对该分条单元的读写定向到上次失败重构所用热备盘,再按降级模式重新执行读写访问,判断读写访问是否执行成功,如果是,返回执行结果,否则,返回失败信息。本发明通过对RAID5降级模式下多盘失败的不同情况加以进一步区分处理,从而尽可能的恢复失败磁盘的数据。
Description
技术领域
本发明涉及独立冗余磁盘阵列(RAID)系统领域,特别是涉及一种5级独立冗余磁盘阵列(RAID5)中多盘失败情况下的读写操作方法。
背景技术
随着计算机数据处理能力的不断增强,硬盘的读写速度已无法满足大量数据读写的需要,因而独立冗余磁盘阵列技术以其成本低、功耗小、传输速率高、实现简单、具有容错功能等优点,很快在网络服务器等设备中得到了广泛应用。
在RAID的诸多分级方案中,RAID5由于其对大小数据量的读写都有很好的性能而被广泛应用。RAID5是无独立校验盘的奇偶校验磁盘阵列,采用奇偶校验来检查错误,RAID5的校验信息分布在各个磁盘上,并且每一个分条均包含一个校验单元,用来在出现失败时恢复数据。在读写过程中出现失败时,将包含失败分条单元的磁盘标志为不可用,并根据用户设置启动重构进程,进行在线磁盘重构。重构的原理如图1所示,从数据磁盘101和校验磁盘102中读取数据,进行异或(XOR)操作,写入置换磁盘103,从而将坏磁盘中的数据恢复到置换磁盘103。
目前磁盘重构的主流算法是采用基于磁盘的重构算法,该方法认为:在重构过程中,若另一个磁盘也出现错误,即使同一个分条上的其它分条单元正常,也认为访问失败。处理流程如图2所示。该流程图描述的是卡内基·梅隆大学RAIDFrame中的RAID5重构算法。当一个访问请求未成功,若所访问的磁盘处于正常状态,则将该磁盘设置为降级模式,同时启动重构,进行降级模式的读写操作;否则,若该磁盘已处于降级模式,则认为本次请求无法完成,返回失败信息。
然而目前这种现有技术的缺陷在于:对于失败的访问,如果RAID5正处于降级模式,就不加区分地认为访问无法进行,也就是说在某段时间内只能允许一个磁盘失败。在降级模式下,若出现两个磁盘失败,则读写操作无法进行,对多盘失败的诸多情况未加以详细的区分,从而失去了更大的容错可能性。
发明内容
有鉴于此,本发明的目的是提供一种RAID5中多盘失败情况下的读写操作方法,对RAID5降级模式下多盘失败的不同情况加以区分处理,尽可能的恢复失败磁盘的数据。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法,包括以下步骤:
a)执行读写访问请求;
b)判断是否执行成功,如果是,则返回执行结果,否则,进入步骤c;
c)判断此次读写操作是否已处在RAID5的降级模式,如果是,则进入步骤d,否则,设置Raid5为降级模式,启动重构,并按降级模式重新执行读写访问请求,返回步骤b;
d)判断此次失败所在分条中属于上次失败磁盘的分条单元是否已完成重构,如果不是,进入下一步,如果是,则将对该分条单元的读写定向到上次失败重构所用的热备盘,再按降级模式重新执行读写访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回执行失败的信息;
e)返回执行失败的信息。
该方法所述步骤e前进一步包括:判断此次失败所在分条内是否还有其它的失败分条单元,如果是,进入步骤e,否则,按降级模式重新执行访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回执行失败的信息。
该方法所述步骤d中判断分条单元是否已完成重构是判断该分条单元所在分条的分条号是否小于当前正在重构的最小分条号。
该方法所述步骤d中判断分条单元是否已完成重构是判断分条的数组中该分条的对应项是否为无效号,其中所述分条的数组其数组元素是分条的分条号,数组中尚未重构的分条其数组元素的对应项为空,正在进行重构的分条其数组元素的对应项为有效号,已完成重构的分条其数组元素的对应项为无效号。
该方法所述的空为0。
该方法所述有效号为1。
该方法所述无效号为-1。
该方法所述判断失败所在分条内是否还有其它的失败分条单元是判断分条链表中有无该分条的项,其中所述分条链表为记录失败分条单元所在分条的分条号的链表,如果失败分条单元的重构完成,则在分条链表中将该分条单元所在分条号清除。
该方法步骤c所述启动重构是自动启动的。
该方法步骤c所述启动重构也可是用户启动的。
由上述方案可以看出,本发明所提供的独立冗余磁盘阵列中多盘失败情况下的读写操作方法,对RAID5降级模式下读写失败的不同情况进行了区分,并分别对其采取不同的读写操作方案,扩大了RAID5系统的容错能力,从而实现了对RAID5中多盘失败情况下的读写。
附图说明
图1为RAID5系统中进行在线磁盘重构的原理示意图;
图2为现有技术磁盘读写操作的流程图;
图3为多盘失败的情况示意图;
图4为本发明实施例的磁盘读写操作流程图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
参见图2所示,一个由5个磁盘组成的RAID5系统,假设2号磁盘的分条单元(1)首先失败:
则有两种可能情况的假设:
假设a)磁盘出现了坏扇区,整个磁盘都认为不可信,比如2号磁盘完全不可用,则:
如果此时分条单元(1)已完成重构,那么根据RAID5的重构原理分条单元(4)的数据可以利用恢复的分条单元(1)得以还原;
假设b)虽然分条单元(1)失败,但不影响2号磁盘的其余部分,则:
如果3号磁盘的分条单元(2)或者4号磁盘的分条单元(3)随后也发生失败,由于它们与分条单元(1)空间上的分离,不在同一分条上,则它们上面的数据,即使在磁盘2上的分条单元(5)或(6)未完成重构之前,依然可以通过异或方式读取。
下面就针对上述两种情况并结合具体实施例对本发明方案进行详细描述。
通常对主机的读写访问请求,执行分为两种情况:1、正常模式读写;2、降级模式读写。
1)正常模式读写
正常模式下读写返回后,如果主机的访问请求执行成功,则向主机返回执行结果。即如果执行的是读操作,则返回所读数据,如果是写操作,则返回“成功”的信息。
任何一次对磁盘的读写如果返回失败,则对主机的访问请求将需重新按降级模式执行。此时设置Raid5为降级模式,同时根据用户设置启动重构,然后重新按降级模式执行主机访问请求。根据用户设置启动重构是指,如果用户设置磁盘失败后自动启动重构,则此时启动重构,如果用户设置磁盘失败后由用户启动重构,则此时不启动重构。
2)降级模式读写
降级模式读写返回后,如果主机的访问请求执行成功,则向主机返回执行结果。如果执行的是读操作,则返回所读数据,如果是写操作,则返回执行成功的信息。
任何一次降级模式Raid5分解产生的读写如果返回失败,则意味着发生了双盘或者双盘以上的失败,此时有两种情况:
情况a)第一次磁盘失败引发的重构中该分条已重构完成,此时按包含重定向操作的降级模式重新执行主机访问请求。即将对该分条中属于上次失败磁盘的分条单元的读写定向到上次失败重构所用的热备盘,再按降级模式重新执行主机访问。
情况b)第一次磁盘失败后尚未启动重构,或第一次磁盘失败引发的重构中该分条尚未重构完成。此时如果是上面所述假设b的情况,则应区分该次失败所在分条是否为第一次磁盘失败所在的分条,如果不是,则按普通降级模式重新执行主机读写请求。
如果在同一分条,此时在一个分条中同时有两个分条单元失败,则无法完成主机的访问请求,因此向主机返回访问失败的信息。
本发明具体的实现流程参见图3所示。
步骤1:执行主机的读写访问请求。
步骤2:判断是否执行成功,如果是,则向主机返回执行结果,即如果执行的是读操作,则返回所读数据,如果是写操作,则返回“成功”信息,否则,进入下一步。
步骤3:判断此次读写操作是否已经是降级模式读写,如果是降级模式读写,则进入步骤4,否则,设置Raid5为降级模式,根据用户设置启动重构,然后重新按降级模式重新执行主机读写访问请求,并返回步骤2。
步骤4:判断此次失败所在分条中属于上次失败磁盘的分条单元是否已完成重构,如果不是,进入下一步,如果是,则将对该分条单元的读写定向到上次失败重构所用的热备盘,再按降级模式重新执行读写访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回“失败”信息。
其中,判断此次失败所在分条中属于上次失败磁盘的分条单元是否已完成重构的方法有很多种,本实施例中采用建立分条的数组的方法。事先针对所有分条建立数组,各分条的分条号作为数组内的数组元素,尚未重构的分条其数组元素的对应项为空,即可取为0;正在进行重构的分条其数组元素的对应项设为任意的有效号,例如可设为1;已完成重构的分条其数组元素的对应项为无效号,例如可设为-1。这样,则可通过查找分条单元在数组中的对应项值,就可以判断出分条的状态。另外,通常磁盘重构是按分条号从低到高的顺序进行,并且重构完成的次序也是如此。因此判断该分条单元所在分条的分条号是否小于当前正在重构的最小分条号,也可以得出该分条单元重构是否完成的结论。
另外,对于上面所述的情况b),即此次失败所在分条在第一次磁盘失败后未完成重构的情况下,由于通常如果某个分条块的数据损坏,可能也会引起同一磁盘的其它分条块的数据破损,也就是上述假设b中所述的一分条单元失败儿不影响其它分条单元的情况很难准确把握,因此对于数据的准确度要求较高的场合,读写访问即可到此为止。但在对数据访问的准确性要求较低的场合,还可以增加一次判断:
步骤5:判断此次失败所在分条内是否还有其它的失败分条单元,如果是,则向主机返回“失败”信息,否则,按普通降级模式重新执行访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回“失败”信息。
这里,判断此次失败所在分条内是否还有其它的失败分条单元也可通过建立分条链表的形式来实现。具体是将失败分条单元的所在分条号记入链表,待该分条单元重构完成后,再将其分条号从链表中删除。于是通过查找链表就可判断分条中是否有失败的分条单元。
这样尽可能读取磁盘上的数据,并即使发生了多盘同时失败的情况,只要失败的位置不在同一分条,也可以通过此方案设法读取其中的数据。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1、一种5级独立冗余磁盘阵列RAID5中多盘失败情况下的读写操作方法,其特征在于包括以下步骤:
a)执行读写访问请求;
b)判断是否执行成功,如果是,则返回执行结果,否则,进入步骤c;
c)判断此次读写操作是否已处在RAID5的降级模式,如果是,则进入步骤d,否则,设置Raid5为降级模式,启动重构,并按降级模式重新执行读写访问请求,返回步骤b;
d)判断此次失败所在分条中属于上次失败磁盘的分条单元是否已完成重构,如果不是,进入步骤e,如果是,则将对该分条单元的读写定向到上次失败重构所用的热备盘,再按降级模式重新执行读写访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回执行失败的信息;
e)返回执行失败的信息。
2、根据权利要求1所述的方法,其特征在于,所述步骤e前进一步包括:判断此次失败所在分条内是否还有其它的失败分条单元,如果是,进入步骤e,否则,按降级模式重新执行访问请求,并判断读写访问是否执行成功,如果是,则返回执行结果,否则,返回执行失败的信息。
3、根据权利要求1所述的方法,其特征在于,步骤d中判断分条单元是否已完成重构是判断该分条单元所在分条的分条号是否小于当前正在重构的最小分条号。
4、根据权利要求1所述的方法,其特征在于,步骤d中判断分条单元是否已完成重构是判断分条的数组中该分条的对应项是否为无效号,其中所述分条的数组其数组元素是分条的分条号,数组中尚未重构的分条其数组元素的对应项为空,正在进行重构的分条其数组元素的对应项为有效号,已完成重构的分条其数组元素的对应项为无效号。
5、根据权利要求4所述的方法,其特征在于所述的空为0。
6、根据权利要求4所述的方法,其特征在于所述有效号为1。
7、根据权利要求4所述的方法,其特征在于所述无效号为-1。
8、根据权利要求2所述的方法,其特征在于,所述判断失败所在分条内是否还有其它的失败分条单元是判断分条链表中有无该分条的项,其中所述分条链表为记录失败分条单元所在分条的分条号的链表,如果失败分条单元的重构完成,则在分条链表中将该分条单元所在分条号清除。
9、根据权利要求1所述的方法,其特征在于,步骤c所述启动重构是自动启动的。
10、根据权利要求1所述的方法,其特征在于,步骤c所述启动重构是用户启动的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02149096 CN1253791C (zh) | 2002-11-22 | 2002-11-22 | 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02149096 CN1253791C (zh) | 2002-11-22 | 2002-11-22 | 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1503224A CN1503224A (zh) | 2004-06-09 |
CN1253791C true CN1253791C (zh) | 2006-04-26 |
Family
ID=34233494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02149096 Expired - Lifetime CN1253791C (zh) | 2002-11-22 | 2002-11-22 | 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1253791C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4754852B2 (ja) * | 2005-03-15 | 2011-08-24 | 富士通株式会社 | ストレージ制御装置および方法 |
US7779294B2 (en) * | 2005-04-15 | 2010-08-17 | Intel Corporation | Power-safe disk storage apparatus, systems, and methods |
CN100397352C (zh) * | 2005-09-15 | 2008-06-25 | 威盛电子股份有限公司 | 磁碟阵列的检测回复电路及其方法 |
CN100336007C (zh) * | 2005-09-29 | 2007-09-05 | 威盛电子股份有限公司 | 磁盘阵列数据写入方法 |
CN101202078B (zh) * | 2006-12-12 | 2010-12-22 | 英业达股份有限公司 | 数据保护方法 |
CN101202077B (zh) * | 2006-12-12 | 2010-12-01 | 英业达股份有限公司 | 数据保护方法 |
CN101236482B (zh) * | 2008-02-26 | 2010-04-07 | 杭州华三通信技术有限公司 | 降级状态下处理数据的方法及独立冗余磁盘阵列系统 |
CN101980137B (zh) * | 2010-10-19 | 2012-05-30 | 成都市华为赛门铁克科技有限公司 | 廉价磁盘冗余阵列重构方法、装置及系统 |
CN102981921A (zh) * | 2012-12-17 | 2013-03-20 | 浙江宇视科技有限公司 | 一种Raid5阵列读IO失败的修复方法和装置 |
CN106527983B (zh) * | 2016-11-02 | 2020-06-19 | 浙江宇视科技有限公司 | 一种数据存储方法以及磁盘阵列 |
CN111381997B (zh) * | 2018-12-28 | 2024-03-01 | 杭州宏杉科技股份有限公司 | 一种raid重建方法及装置 |
-
2002
- 2002-11-22 CN CN 02149096 patent/CN1253791C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1503224A (zh) | 2004-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795590B2 (en) | Method and apparatus for flexible RAID in SSD | |
CN100337209C (zh) | 容忍磁盘阵列中多个相关或任意双盘故障的方法和装置 | |
US7640452B2 (en) | Method for reconstructing data in case of two disk drives of RAID failure and system therefor | |
US6901479B2 (en) | Disk array apparatus for and method of expanding storage capacity dynamically | |
US8065558B2 (en) | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance | |
US6223252B1 (en) | Hot spare light weight mirror for raid system | |
US6151685A (en) | System and method for recovering a segment directory for a log structured array | |
US7694171B2 (en) | Raid5 error recovery logic | |
CN1702627A (zh) | 执行拷贝操作的方法和系统 | |
CN1253791C (zh) | 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法 | |
CN1512353A (zh) | 性能改善的数据存储和方法 | |
CN1950801A (zh) | 利用附加和自发保护在存储设备阵列中存储数据的方法和系统 | |
US20050091452A1 (en) | System and method for reducing data loss in disk arrays by establishing data redundancy on demand | |
CN110187830A (zh) | 一种加速磁盘阵列重建的方法及系统 | |
CN107885620B (zh) | 一种提高固态盘阵列性能和可靠性的方法及系统 | |
CN111240887A (zh) | 基于三维闪存存储结构的错误页识别方法 | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
CN112612639A (zh) | 操作存储器系统的方法、操作主机的方法和计算系统 | |
US7130973B1 (en) | Method and apparatus to restore data redundancy and utilize spare storage spaces | |
CN1959647A (zh) | 建立稳定存储机制的方法 | |
US20190227712A1 (en) | Event-based dynamic memory allocation in a data storage device | |
CN113553631A (zh) | 用于在存储器系统中保护数据的设备和方法 | |
CN1898650A (zh) | 数据存储阵列 | |
CN1201191A (zh) | 文件系统和文件管理方法 | |
CN1093964C (zh) | 输入/输出装置的检查点恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20060426 |
|
CX01 | Expiry of patent term |