CN103309775B - 一种高可靠磁盘阵列的容错方法 - Google Patents

一种高可靠磁盘阵列的容错方法 Download PDF

Info

Publication number
CN103309775B
CN103309775B CN201310276402.XA CN201310276402A CN103309775B CN 103309775 B CN103309775 B CN 103309775B CN 201310276402 A CN201310276402 A CN 201310276402A CN 103309775 B CN103309775 B CN 103309775B
Authority
CN
China
Prior art keywords
bad block
storage space
data
write
disk
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
Application number
CN201310276402.XA
Other languages
English (en)
Other versions
CN103309775A (zh
Inventor
周麒
马建朋
林莉芬
陈卫东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Keda Technology Co Ltd
Original Assignee
Suzhou Keda Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Keda Technology Co Ltd filed Critical Suzhou Keda Technology Co Ltd
Priority to CN201310276402.XA priority Critical patent/CN103309775B/zh
Publication of CN103309775A publication Critical patent/CN103309775A/zh
Application granted granted Critical
Publication of CN103309775B publication Critical patent/CN103309775B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种高可靠磁盘阵列的容错方法,包括如下步骤:当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将该存储空间进行坏块标记;当发生数据读取错误时,判断磁盘阵列是否完整,如果完整则通过校验计算出当前位置数据,然后将该数据写回所在磁盘的相应位置,否则,将发生数据读取错误的存储空间进行坏块标记;当进行下一次写入操作时,对进行坏块标记的存储空间同样进行写入操作,如果该存储空间写入成功,且后续读取也成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。解决了现有技术中的磁盘阵列系统只记录读写错误的坏块信息而不修复坏块且受限于自身的容错范围的技术问题。特别适用于对数据准确性要求不高的场合。

Description

一种高可靠磁盘阵列的容错方法
技术领域
本发明涉及存储领域,具体地说是磁盘阵列系统中的容错方法。
背景技术
RAID(Redundant Arrays of Inexpensive Disks),指价格便宜且具有冗余能力的磁盘阵列,是由很多价格便宜、容量较小、稳定性较高的磁盘组合成的一个容量巨大的磁盘组。RAID具有一定的容错能力,其中任何一个磁盘出现故障时,仍可以读出数据,在数据重构时,将数据经过计算后重新置入新磁盘中。RAID技术主要包含RAID 0~RAID 7等数个规范,它们的侧重点各不相同。RAID5及RAID6本身都有一定的错误处理策略,它可以通过条带校验来计算出发生错误位置的数据。当磁盘发生读错误时,RAID会通过校验进行数据写回修复,可以降低再次出错的可能性。当磁盘发生写错误时,RAID自身没有任何容错机制,会直接剔除磁盘,然后需要手工换上新盘,再进行RAID重建,这个过程既损失了时间,也损失了硬件成本。在某些数据敏感度不高的运用中,比如视频录像、大型非结构化数据、音频等,它们普遍对数据精确度的要求不高,磁盘单位数据的损失可能对整体数据的影响很小,比如一个512字节数据的损失,对于一个1GB的视频录像所造成的影响可能微乎其微,观看者甚至无法分辨是否有数据损失了,对于音频或者大型非结构化数据也是如此。因此,为了这极其微小的一部分数据损失而放弃整块磁盘无疑是一种浪费。
现有专利文献CN101887351A中公开了一种磁盘阵列容错方法及其系统,应用于视频监控系统,该方法中当发生数据读写错误时,并不立即剔除发生读写错误的磁盘,而是当磁盘中发生过数据读写错误的数据块的数量达到设定阈值时,才将该磁盘剔除出该磁盘所在的磁盘阵列。该方法可在一定程度上保证视频监控录像数据的完整性的前提下,降低磁盘阵列中的磁盘更新频率,延长磁盘的使用寿命。该方案的不足在于当磁盘出现读写错误时,只记录出现读写错误的数据块的数量,即使读写错误并不是由磁盘内部扇区的损坏造成的,也依然记录该读写错误,而不会修复,当数量超过磁盘阵列的容错极限时,将无法继续写入数据,并且,当磁盘阵列的一个条带上被标记读写错误的数据块超过磁盘阵列容错范围时,如RAID5的容错范围是1个,RAID6的容错范围是2个,磁盘阵列也是无法继续读写的。因此,该方案无法降低磁盘阵列的损坏程度,对于非磁盘本身损坏造成的读写错误无法识别,同时磁盘阵列也很难达到高可靠性的程度。
发明内容
为此,本发明所要解决的技术问题在于现有技术中的磁盘阵列系统只记录读写错误的坏块信息而不修复坏块且受限于磁盘阵列自身的容错范围,从而提出一种跨越RAID5与RAID6容错限制,对于非磁盘本身损坏而造成读写错误的坏块可以进行修复的高可靠磁盘阵列容错方法。
为解决上述技术问题,本发明的提供一种高可靠磁盘阵列容错方法,包括如下步骤:
(1)当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将发生写入错误的存储空间进行坏块标记,并在下一次读取操作时,不再读取所述进行了坏块标记的存储空间;
(2)当发生数据读取错误时,判断所述磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记;
(3)当进行下一次写入操作时,先判断所述磁盘阵列的条带是否正常,如果正常则对所述磁盘进行正常写入操作;否则判断所述条带是否满足写入算法要求,如果满足要求则记录被写的坏块标记,并同样进行所述写入操作,反之则进行错误处理;当完成写入操作后,如果所述进行了坏块标记的存储空间写入成功,判断该存储空间是否记录了坏块标记,如果是则进行后续读取操作,如果所述进行坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记,反之则保留坏块标记;
所述存储空间为磁盘内的扇区;
所述高可靠磁盘阵列容错方法基于Linux kernel 3.6版本;
在所述步骤(1)或(2)中,所述进行坏块标记的存储空间为8个扇区;
所述坏块标记为Badblock。
本发明的上述技术方案相比现有技术具有以下优点:
(1)本发明所述的高可靠磁盘阵列容错方法为当发生数据写入错误时,将发生写入错误的存储空间进行坏块标记;当发生数据读取错误时,判断磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记;当进行下一次写入操作时,如果进行坏块标记的存储空间满足写入算法要求,则该存储空间同样进行写入操作,当完成写入操作后,如果对于进行了坏块标记的存储空间写入成功,则进行后续读取操作,如果对所述进行坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记。这样就可以准确地判断出发生读写错误的存储空间是否真的物理损坏了,而且当读写错误并不是因为磁盘本身的损坏造成时,还会通过后续正常的写入和读取操作进行修复,不需要增加专门的修复步骤,上层应用几乎不感知这个操作过程从而解决了现有技术中的磁盘阵列系统只记录坏块信息而不修复坏块的问题,有效降低了数据的损失和磁盘的剔除频率,磁盘的使用寿命得到真正的延长,提高了磁盘阵列系统的可靠性。
(2)本发明所述的高可靠磁盘阵列容错方法,所述存储空间为磁盘内的扇区,对于Linux kernel 3.6版本,RAID5与RAID6的处理过程中,每次以一个页面来进行处理,一个页是4K,而扇区为磁盘数据存放的最小单位,大小是512字节,所以一次处理8个扇区,因此每次标记8个扇区,便于操作。此处针对其他操作系统采用此方法进行存储空间的标记时,可以根据具体的需要选择对应的存储空间。
附图说明
为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1 是实施例1磁盘阵列发生写入错误时的处理流程图;
图2 是实施例1磁盘阵列发生读取错误时的处理流程图;
图3 是实施例2磁盘阵列发生写入错误时的处理流程图;
图4 是实施例2磁盘阵列发生读取错误时的处理流程图;
图5 是实施例2的write_failed_stripe机制的流程图。
具体实施方式
实施例1:
本实施例提供一种高可靠磁盘阵列容错方法,包括如下步骤:
(1)当磁盘阵列发生写入错误时,其相应的处理流程可如图1所示,确定发生写入错误的数据所在磁盘的存储空间,将发生写入错误的存储空间进行坏块标记,此处的坏块标记表示该存储空间的数据已经损坏,并在下一次读取操作时,不再读取所述进行了坏块标记的存储空间;
(2)当磁盘阵列发生数据读取错误时,其相应的处理流程可如图2所示,首先判断该磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置的数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记,此处的坏块标记同样表示该存储空间的数据已经损坏;
(3)当进行下一次写入操作时,先判断该磁盘阵列的条带是否正常,如果正常则对所述磁盘进行正常写入操作,否则判断所述条带是否满足写入算法要求,如果满足要求则记录被写的坏块标记,并同样进行所述写入操作,反之则进行错误处理;当完成写入操作后,如果所述进行了坏块标记的存储空间写入成功,判断该存储空间是否存在坏片标记,对于存在坏块标记的存储空间,进行后续读取操作,如果该进行了坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。
实施例2:
本实施例在Linux kernel 3.6版本的Badblock机制的基础上,对本发明的高可靠磁盘阵列容错方法进行详细描述,对于Linux kernel 3.6版本,RAID5与RAID6的处理过程中,每次以一个页面来进行处理,一个页是4K,而扇区为磁盘数据存放的最小单位,大小是512字节,所以一次处理8个扇区,因此每次标记8个扇区,便于操作。本实施例所述的高可靠磁盘阵列的容错方法包括如下步骤:
(1)当磁盘阵列发生写入错误时,其相应的处理流程可如图3所示,确定发生写入错误的数据所在磁盘的扇区,此处的扇区为同时进行写入操作的8个扇区,将发生写入错误的8个扇区都设置为Badblock,此处的Badblock表示该扇区的数据已经损坏,并在下一次读取操作时,不再读取此处设置为Badblock的扇区;
(2)当磁盘阵列发生数据读取错误时,其相应的处理流程可如图4所示,首先判断该磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置的数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将磁盘中发生数据读取错误的扇区设置为Badblock,此处的扇区为同时进行读取操作的8个扇区,此处的Badblock同样表示该扇区的数据已经损坏;
(3)当进行下一次写入操作时,利用如图5所示的write_failed_stripe机制对标记为Badblock的扇区进行修复,先判断该磁盘阵列的条带是否正常,如果正常则对所述磁盘进行正常写入操作,否则判断所述条带是否满足写入算法要求,如果满足要求则记录被写的Badblock,并同样进行写入操作,反之则进行错误处理;当完成写入操作后,如果所述标记为Badblock的扇区写入成功,先判断该写入的存储空间中是否存在badblock标记,对于存在badblock标记的存储空间,进行后续读取操作,如果该标记为Badblock的扇区也读取成功,则清除对该扇区的Badblock标记,反之则保留Badblock标记。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (5)

1.一种高可靠磁盘阵列容错方法,其特征在于,包括如下步骤:
(1)当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将发生写入错误的存储空间进行坏块标记,并在下一次读取操作时,不再读取所述进行了坏块标记的存储空间;
(2)当发生数据读取错误时,判断所述磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记;
(3)当进行下一次写入操作时,先判断所述磁盘阵列的条带是否正常,如果正常则对所述磁盘进行正常写入操作;否则判断所述条带是否满足写入算法要求,如果满足要求则记录被写的坏块标记,并同样进行所述写入操作,反之则进行错误处理;当完成写入操作后,如果所述进行了坏块标记的存储空间写入成功,判断该存储空间是否记录了坏块标记,如果是则进行后续读取操作,如果所述进行坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。
2.根据权利要求1所述的高可靠磁盘阵列容错方法,其特征在于:所述存储空间为磁盘内的扇区。
3.根据权利要求1或2所述的高可靠磁盘阵列容错方法,其特征在于:所述高可靠磁盘阵列容错方法基于Linux kernel 3.6版本。
4.根据权利要求3所述的高可靠磁盘阵列容错方法,其特征在于:在所述步骤(1)或(2)中,所述进行坏块标记的存储空间为8个扇区。
5.根据权利要求4所述的高可靠磁盘阵列容错方法,其特征在于:所述坏块标记为Badblock。
CN201310276402.XA 2013-07-03 2013-07-03 一种高可靠磁盘阵列的容错方法 Active CN103309775B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310276402.XA CN103309775B (zh) 2013-07-03 2013-07-03 一种高可靠磁盘阵列的容错方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310276402.XA CN103309775B (zh) 2013-07-03 2013-07-03 一种高可靠磁盘阵列的容错方法

Publications (2)

Publication Number Publication Date
CN103309775A CN103309775A (zh) 2013-09-18
CN103309775B true CN103309775B (zh) 2015-08-12

Family

ID=49135027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310276402.XA Active CN103309775B (zh) 2013-07-03 2013-07-03 一种高可靠磁盘阵列的容错方法

Country Status (1)

Country Link
CN (1) CN103309775B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530069A (zh) * 2013-11-05 2014-01-22 浪潮(北京)电子信息产业有限公司 一种raid5磁盘阵列坏扇区处理方法
CN104268028B (zh) * 2014-09-22 2017-12-15 浙江宇视科技有限公司 一种基于磁盘读错误类别读取磁盘数据的方法和装置
CN104657088B (zh) * 2015-02-06 2018-01-23 深圳市锐明技术股份有限公司 一种硬盘坏块信息的获取方法及装置
CN105183590A (zh) * 2015-08-31 2015-12-23 安徽欧迈特数字技术有限责任公司 一种磁盘阵列的容错处理方法
CN105808385A (zh) * 2016-03-30 2016-07-27 苏州美天网络科技有限公司 硬盘数据的防丢失方法
CN105808387A (zh) * 2016-03-30 2016-07-27 苏州美天网络科技有限公司 用于防止硬盘数据丢失的方法
CN109545265B (zh) * 2018-11-13 2020-07-07 深圳忆联信息系统有限公司 一种固态硬盘设备实时发现弱块的方法及其系统
CN111221681A (zh) * 2019-11-07 2020-06-02 华为技术有限公司 一种存储器的修复方法及装置
CN111158589B (zh) * 2019-12-16 2023-10-20 绿晶半导体科技(北京)有限公司 存储阵列的动态管理方法和装置
CN113495671B (zh) 2020-04-01 2023-10-17 长鑫存储技术有限公司 读写方法及存储器装置
CN113495674B (zh) 2020-04-01 2023-10-10 长鑫存储技术有限公司 读写方法及存储器装置
EP3985494B1 (en) 2020-04-01 2024-01-17 Changxin Memory Technologies, Inc. Read-write method and memory device
EP3936996A4 (en) 2020-04-01 2022-07-06 Changxin Memory Technologies, Inc. READ-WRITE METHOD AND STORAGE DEVICE
CN113495675B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
EP3964940A4 (en) 2020-04-01 2022-08-17 Changxin Memory Technologies, Inc. READ/WRITE METHOD AND STORAGE DEVICE
EP3964941B1 (en) 2020-04-01 2024-02-28 Changxin Memory Technologies, Inc. Read-write method and memory device
CN113495672B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
CN114003172B (zh) * 2021-09-27 2023-08-29 苏州浪潮智能科技有限公司 存储容量校正方法、装置、计算机设备以及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102207895A (zh) * 2011-05-27 2011-10-05 杭州华三通信技术有限公司 一种独立磁盘冗余阵列数据重建方法和装置
CN102226892A (zh) * 2011-05-20 2011-10-26 杭州华三通信技术有限公司 一种磁盘容错处理方法及设备
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
CN102968361A (zh) * 2012-11-19 2013-03-13 浪潮电子信息产业股份有限公司 一种raid数据自修复的方法
CN102981927A (zh) * 2011-09-06 2013-03-20 阿里巴巴集团控股有限公司 分布式独立冗余磁盘阵列存储方法及分布式集群存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102226892A (zh) * 2011-05-20 2011-10-26 杭州华三通信技术有限公司 一种磁盘容错处理方法及设备
CN102207895A (zh) * 2011-05-27 2011-10-05 杭州华三通信技术有限公司 一种独立磁盘冗余阵列数据重建方法和装置
CN102981927A (zh) * 2011-09-06 2013-03-20 阿里巴巴集团控股有限公司 分布式独立冗余磁盘阵列存储方法及分布式集群存储系统
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
CN102968361A (zh) * 2012-11-19 2013-03-13 浪潮电子信息产业股份有限公司 一种raid数据自修复的方法

Also Published As

Publication number Publication date
CN103309775A (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
CN103309775B (zh) 一种高可靠磁盘阵列的容错方法
CN102708019B (zh) 一种硬盘数据恢复方法、装置及系统
US9189311B2 (en) Rebuilding a storage array
US8700951B1 (en) System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
CN104484251B (zh) 一种硬盘故障的处理方法及装置
US9009526B2 (en) Rebuilding drive data
JP5078235B2 (ja) 磁気ディスク記憶装置におけるトラック・データ完全性の維持方法
CN102012847B (zh) 一种磁盘阵列重建方法
CN101840360A (zh) Raid系统的快速重建方法及装置
CN104035830A (zh) 一种数据恢复方法和装置
EP2573689A1 (en) Method and device for implementing redundant array of independent disk protection in file system
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
CN103699457A (zh) 基于条带化的磁盘阵列修复方法及装置
CN101118508A (zh) 一种数据的安全存储方法
CN105468479A (zh) 一种磁盘阵列raid坏块处理方法及装置
CN111124758A (zh) 一种故障硬盘的数据恢复方法
CN104407821B (zh) 一种实现raid重构的方法及装置
US5467361A (en) Method and system for separate data and media maintenance within direct access storage devices
US20070036055A1 (en) Device, method and program for recovering from media error in disk array device
US20060215456A1 (en) Disk array data protective system and method
CN105183590A (zh) 一种磁盘阵列的容错处理方法
TW201329701A (zh) 具有自動重映射功能的磁碟陣列及其自動重映射方法
CN117437967A (zh) 一种条带检测方法、装置、设备及可读存储介质
CN104318960A (zh) 一种硬盘坏道的修复方法及装置
CN113190179B (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