CN108228396A - 用于处理驱动器的错误的方法和设备 - Google Patents

用于处理驱动器的错误的方法和设备 Download PDF

Info

Publication number
CN108228396A
CN108228396A CN201611194046.7A CN201611194046A CN108228396A CN 108228396 A CN108228396 A CN 108228396A CN 201611194046 A CN201611194046 A CN 201611194046A CN 108228396 A CN108228396 A CN 108228396A
Authority
CN
China
Prior art keywords
mistake
driver
ratio
driver portion
response
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.)
Granted
Application number
CN201611194046.7A
Other languages
English (en)
Other versions
CN108228396B (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.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201611194046.7A priority Critical patent/CN108228396B/zh
Priority to US15/848,580 priority patent/US10733042B2/en
Publication of CN108228396A publication Critical patent/CN108228396A/zh
Application granted granted Critical
Publication of CN108228396B publication Critical patent/CN108228396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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 processing functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本公开的实施例涉及用于处理驱动器的错误的方法和设备。驱动器的逻辑空间被划分为多个部分。该方法包括响应于在针对驱动器的I/O操作中检测到的错误,确定错误的类型。该方法还包括响应于确定错误的类型是软介质错误或数据错误,确定驱动器的多个部分中造成错误的驱动器部分。软介质错误是能够通过故障部分的重映射来修复的错误,并且数据错误是由于驱动器上的数据被毁坏而引起的错误。此外,还可以仅针对发生错误的驱动器部分来处理错误。

Description

用于处理驱动器的错误的方法和设备
技术领域
本公开的实施例总体涉及驱动器错误的处理,具体涉及用于基于驱动器的部分对驱动器错误进行处理的方法和设备。
背景技术
在针对驱动器的I/O操作中检测到错误时,通常会针对整个驱动器来处理错误。例如,在检测到驱动器错误的情况下,整个驱动器可能被标记为寿命结束(End of Life,简称为EOL)或者被标记为不可用。在这种情况下,上层逻辑单元需要重构存储在整个故障驱动器上的所有数据。因此,针对整个驱动器的错误处理是耗时的,并且会大大降低驱动器的寿命和系统稳定性。
发明内容
为了至少部分地解决上述以及其他潜在的问题,本公开的实施例提供了用于处理驱动器的错误的方法和设备。
在本公开的第一方面,提供了一种用于处理驱动器的错误的方法。驱动器的逻辑空间被划分为多个部分。该方法包括响应于在针对驱动器的I/O操作中检测到的错误,确定错误的类型。该方法还包括响应于确定错误的类型是软介质错误或数据错误,确定驱动器的多个部分中造成错误的驱动器部分。软介质错误是能够通过故障部分的重映射来修复的错误,并且数据错误是由于驱动器上的数据被毁坏而引起的错误。此外,该方法还包括仅针对发生错误的驱动器部分来处理错误。
在本公开的第二方面,提供了一种电子设备。该电子设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时,使得电子设备:响应于在针对驱动器的I/O操作中检测到的错误,确定错误的类型,其中驱动器的逻辑空间被划分为多个部分;响应于确定错误的类型是软介质错误或数据错误,确定驱动器的多个部分中造成错误的驱动器部分,软介质错误是能够通过故障部分的重映射来修复的错误,数据错误是由于驱动器上的数据被毁坏而引起的错误;以及仅针对发生错误的驱动器部分来处理错误。
在本公开的第三方面,提供了计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第一方面所描述的方法的任意步骤。
通过下文描述将会理解,本公开的实施例的优势在于,通过仅针对发生错误的驱动器部分来处理错误,可以减少需要复制或重构的数据量,从而减少处理错误所需的资源和时间。通过首先将发生错误的驱动器部分标记为不可用,可以避免由该故障驱动器部分暴露的更多错误,从而消耗较少的驱动器上的备用区。这样,可以延长驱动器寿命。此外,本公开的实施例可以实现按部分地来处理驱动器的错误,这可以减低系统负荷的密集性,避免整个驱动器的频繁换出,因此可以提高系统稳定性。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了驱动器上的故障部分的LBA(逻辑区块寻址)的分布;
图2示出了本公开的实施例可实现于其中的用于处理驱动器的错误的映射的独立磁盘冗余阵列(RAID)架构的框图;
图3示出了根据本公开的实施例的用于处理驱动器的错误的方法的流程图;
图4示出了根据本公开的实施例的用于计算错误的比率的方法的示意图;
图5示出了根据本公开的实施例的仅针对驱动器部分来处理错误的方法的流程图;
图6示出了根据本公开的实施例的用于处理驱动器的错误的装置的框图;以及
图7示出了可以用来实施本公开的实施例的示例设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在常规存储系统中,总是在整个驱动器的基础上处理驱动器错误。针对因硬件问题(例如主轴电机损坏、磁头故障、驱动器板故障等)而造成的驱动器故障,这是合理的。但是,存在错误只影响驱动器的一部分的一些错误类型。
图1示出了驱动器上的故障部分的LBA(逻辑区块寻址)的分布。图1图示了驱动器的故障部分的分布,其根据来自市场上销售的成千上万个驱动器阵列以及那些阵列中的数百万个驱动器的数据。图1示出了驱动器错误的空间局部性。图1中的X轴表示驱动器的逻辑地址,Y轴表示错误的数目。如图1所示,故障驱动器部分的分布具有明显的空间局部性。从图1可见,大多数驱动器错误从驱动器的一些小区域暴露。
在这种情况下,应该处理错误以使其影响更小的驱动器区域,而不是影响整个驱动器。如果不是在驱动器部分的水平下处理某些类型的错误,那么从小的故障驱动器区域暴露的大量错误将会造成驱动器被标记为寿命结束或不可用,这导致整个驱动器中的所有数据都受到影响并且需要复制或重构。
本公开的实施例可以以驱动器部分粒度来管理驱动器错误,并且在驱动器错误的数目达到特定阈值时,对产生错误的驱动器部分执行动作,同时保持来自同一驱动器的其它驱动器部分正常工作。通过在故障驱动器部分暴露更多的错误之前将那些小的故障部分禁用,本公开的实施例可以节省驱动器保留的大量备用区,从而可以延长驱动器寿命。
图2示出了本公开的实施例可实现于其中的用于处理驱动器的错误的映射的独立磁盘冗余阵列(RAID)架构200的框图。应当理解,仅出于示例性的目的描述映射的RAID架构200的结构和功能而不是暗示对于本公开的范围的任何限制。本公开的实施例可以被体现在不同的结构和/或功能中。而且,尽管本公开的某些实施例将以磁盘为例加以描述,但是这无意以任何方式限制本公开的范围。任何目前已知或者将来开发的存储设备均可适用在此描述的思想。
如图2所示,映射的RAID架构200可以包括:驱动器池210、由R1型映射的RAID 220-1和R5型映射的RAID 220-5等组成的映射的RAID组、以及逻辑单元230。
映射的RAID是在驱动器级的虚拟化技术。但是,在图2所示的映射的RAID架构200中,RAID算法操作的对象是驱动器部分而不是整个驱动器。具体而言,驱动器211将被添加到驱动器池210中。例如,驱动器211可以是磁盘。同一驱动器池210中的驱动器将用相同的驱动器池ID来标记。在系统设置之后,驱动器池210将管理属于它的驱动器。在驱动器池210中,每个驱动器用相应的驱动器ID来标记,例如驱动器D0、D1、D2、D(N-2)、D(N-1)和D(N)等。每个驱动器的逻辑空间被划分为多个小区域。驱动器池210使用内部跟踪对象——驱动器部分215——管理那些小区域。多个驱动器部分可以具有相同的大小。例如,每个驱动器部分215被限定为256MB。
驱动器池210逻辑上由驻留在多个驱动器211上的驱动器部分215构成。驱动器池210管理和维护:驱动器映射表,表示驱动器部分215和驱动器211之间的映射,用以记录哪些驱动器部分属于哪个驱动器;以及驱动器部分状态,用以描述驱动器部分的状态(如果可用的话,消耗、可用、寿命结束(end of life,简称为EOL)或不可用等)。通过示例的方式,下面的表1给出了几种驱动器部分的状态。
表1
此外,驱动器池210还管理和维护:驱动器状态,包括:驱动器是否被临时移除,驱动器是否被永久移除,驱动器是否被标记为EOL、不可用等。
驱动器池210对由映射RAID发起的针对驱动器部分的分配/释放请求做出响应。驱动器池210跟踪每个驱动器211上的驱动器部分状态,以便于驱动器部分的分配操作,并且对例如寿命结束、可用、或不可用等驱动器部分状态改变事件做出快速响应。例如,驱动器池210标识某个驱动器部分是否被消耗。如果该驱动器部分被消耗,则记录哪个RAID部分使用它。驱动器池210标识驱动器部分215是否被标记为EOL或不可用。假设驱动器被标记为不可用,驱动器池210将接收关于该驱动器的状态改变事件。然后,驱动器池210将更新属于该故障驱动器的驱动器部分的状态。如果由映射RAID组消耗的驱动器部分被标记为不可用,则驱动器池210将选择新的驱动器部分以替换故障的驱动器部分。
如上所述,驱动器池210对来自映射的RAID组的驱动器部分分配请求做出响应。驱动器部分分配策略应该遵循如下基本规则:映射到同一RAID部分中的驱动器部分215应该驻留在不同驱动器上,并且分配策略应该平衡同一映射的RAID组(例如包括R1型映射的RAID 220-1和R5型映射的RAID 220-5等)中的跨所有驱动器的驱动器部分消耗。此外,备用区策略检查被嵌入到驱动器池210的驱动器部分分配中。
此外,驱动器池210响应将新驱动器添加到驱动器池中的请求——驱动器池扩展。驱动器池210响应驱动器状态改变事件,包括:驱动器不可用设置、驱动器EOL设置、驱动器超时设置等。例如,当驱动器发生故障、因而被标记为EOL或不可用时,驱动器池210将通知对应的/受影响的映射的RAID组,以触发映射的RAID组处理错误。
RAID算法与驱动器级的算法相同,但是由RAID算法操作的对象从整个驱动器改变为驱动器的部分。在创建RAID组时,映射RAID组将利用驱动器池210来分配驱动器部分。映射的RAID组中的R1型映射的RAID 220-1表示1+1式的映射RAID,并且映射的RAID组中的R5型映射的RAID 220-5表示4+1式的映射RAID。具体而言,R1型映射的RAID 220-1中的每个RAID部分221(表示为“行”)影射到分别来自两个不同驱动器的两个驱动器部分,两个驱动器部分中的一个存储另一个驱动器部分的数据的副本,以用于在另一个驱动器部分故障时重构该另一个驱动器部分的数据。例如,R1型映射的RAID 220-1中的RAID部分221可以映射到驱动器D0和D1上的驱动器部分,其中驱动器D1上的驱动器部分存储驱动器D0上的驱动器部分的数据的副本。
R5型映射的RAID 220-5中的每个RAID部分221(表示为“行”)影射到分别来自五个不同驱动器的五个驱动器部分,五个驱动器部分中的一个存储另四个驱动器部分的数据的异或值,以用于在另四个驱动器部分之一故障时重构该故障驱动器部分的数据。例如,R5型映射的RAID 220-5中的RAID部分221可以映射到驱动器D0、D1、D2、D(N-2)和D(N-1)上的驱动器部分,其中驱动器D(N-1)上的驱动器部分存储驱动器D0、D1、D2、D(N-2)上的驱动器部分的数据的异或值。每个映射的RAID将维护其自身的映射表225。映射表225的每一行描述映射RAID部分221如何映射到驱动器部分。映射表225便于映射RAID组的逻辑块地址到驱动器的物理块地址的转换(映射)。
可以在RAID部分级跟踪常规RAID组状态,例如RAID部分状态(即最佳、降级、损坏)、故障的驱动器部分、每个RAID部分上的重构和复制进度。
映射RAID将负责从故障驱动器部分恢复数据。恢复数据主要依靠下面两种机制:重构和复制。如果驱动器部分仍然可以发挥作用,但该驱动器部分上的备用区接近用尽,驱动器部分将被设置为EOL,则映射RAID将执行复制——从被标记为EOL的驱动器部分读取数据,并将数据复制到其他可用的驱动器部分以进行数据恢复。如果驱动器部分永久性损坏并且不能发挥作用,则映射RAID将从与故障驱动器部分所处的相同RAID部分中的剩余驱动器部分读取数据,然后通过XOR(异或运算)重构数据,并且将重构的数据写入另一个可用的驱动器部分,以便从故障驱动器部分恢复数据。如上所述的重构和复制机制,同样适用于针对驱动器整体的数据恢复。
此处详细讨论映射RAID的重构。使用如图2所示的映射的RAID架构/设计,当某个驱动器发生故障时,可以在例如5分钟的等待时间之后,将故障驱动器上的所有消耗的驱动器部分标记为不可用。然后映射的RAID在驱动器池210中的其它驱动器上随机选择针对这些消耗的驱动器部分的替换。选择驱动器部分的唯一限制是,应始终保证一个RAID部分中的驱动器部分必须从不同驱动器分配。因此,以这种方式,驱动器池210中的所有驱动器将参与重构过程。在监控条件上下文(一个后台服务线程上下文)中,将在RAID部分级上执行重构。每个RAID部分221在映射表225中维护它自己的重构检查点,以指示其上的重构进度。当一个RAID部分上的重构完成时,映射RAID将会将重构检查点设置为结束标记,并将映射表项保存到驱动器。
此处详细讨论映射RAID的复制。当驱动器部分被标记为EOL时,主动复制将被触发。可以触发针对特定源驱动器部分的复制操作,但无需由映射RAID指出的指定目的地驱动器部分。当启动从驱动器部分的复制时,映射RAID将选择针对源驱动器部分的备用驱动器部分。然而,映射RAID组将开始在后台的复制。如果是用户复制,当针对源驱动器部分的复制完成时,源驱动器部分将不被使用、被标记为可用并被返回到驱动器池210。如果是主动复制,驱动器部分和/或驱动器将被标记为EOL(并且被从映射的RAID移除)。复制进度在RAID部分级进行跟踪。
在由R1型映射的RAID 220-1和R5型映射的RAID 220-5等组成的映射的RAID组的上层,是逻辑单元230。逻辑单元230借助于映射的RAID组来实现针对应用的各种功能。
在图2所示的映射的RAID架构200中,驱动器211的逻辑空间被划分成多个驱动器部分215,因此在本公开的实施例中,可以以驱动器部分粒度来管理驱动器。
以下将参考图3至图7来进一步详细描述本公开的若干示例实施例。图3示出了根据本公开的实施例的用于处理驱动器的错误的方法300的流程图。例如,方法300可以由如图2所示的逻辑单元230来执行。应当理解的是,方法300还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
在310,逻辑单元230响应于在针对驱动器211的I/O操作中检测到的错误,确定错误的类型。当接收针对驱动器的I/O操作时,逻辑单元230检查I/O状态。如果返回错误,则逻辑单元230根据返回状态来确定错误的类型。
例如,在存储系统中,可能报告针对驱动器的许多种类的错误。本发明人认识到,可以将所有可能的驱动器错误分成几个类型。例如,驱动器错误可以是难以修复的硬介质错误或者较容易修复的软介质错误。错误类型之间的主要区别是修复错误的难度。这意味着严重的硬介质错误难以修复并且可以使得驱动器很快被标记为不可用(并且从驱动器池210中被移除)。相对于硬介质错误而言,软介质错误不太严重。根据本公开的错误处理机制按照错误的类型分别处理驱动器错误。
在本公开的实施例中,可以将驱动器错误大致划分成三种类型:硬介质错误、软介质错误和数据错误。作为示例,错误的类型可以根据SCSI(小型计算机系统接口)代码来划分。下面的表2示出了这三种错误类型的注释。
表2
在严重性方面,错误类型彼此不同。例如,不太严重的软介质错误可以由驱动器介质中保留的备用区来修复,因而软介质错误将仅仅被累积。并且只有当软介质错误计数或比率达到某个阈值时,才会由上层的逻辑单元230采取某一动作。相比之下,较严重的硬介质错误可以造成驱动器很快被标记为EOL或不可用(其计数或比率具有小的对应阈值)。
在本公开的实施例中,在确定驱动器错误的类型是硬介质错误的情况下,逻辑单元230将在整个驱动器级来处理错误。在确定驱动器错误的类型是软介质错误或数据错误的情况下,逻辑单元230将在驱动器部分级来处理错误。
在320,逻辑单元230确定错误的类型是否是软介质错误或数据错误。
在330,逻辑单元230响应于确定错误的类型是软介质错误或数据错误,确定驱动器211的多个部分中造成错误的驱动器部分215。
在340,逻辑单元230仅针对发生错误的驱动器部分215来处理错误。例如,在一些实施例中,在340,可以对错误的数目和I/O操作的数目分别进行计数。而后,可以计算错误的数目相对于I/O操作的数目的比率,并且基于这个比率来处理错误。
在这样的实施例中,逻辑单元230定义错误类型并且记录针对每种错误的错误标签,以便于对错误的计数。针对每种错误,逻辑单元230定义了不同的错误阈值。当累积的错误计数超过相应阈值时,逻辑单元230将采取相关动作。驱动器池210可以维护针对每个驱动器部分215的错误计数器。当错误计数器的计数超过特定阈值时,将驱动器部分215而不是整个驱动器211标记为EOL或不可用。下面的表3示出了在计算错误的比率中使用的字段的示例。
表3
字段 说明
Io_counter 记录针对驱动器的I/O操作的数目
Soft_media_error_tag 记录软介质错误的数目
Hard_media_error_tag 记录硬介质错误的数目
Data_error_tag 标识数据错误
error_tag 广义而言的错误的数目
error_ratio 表示错误的比率
interval 被定义用于使错误的比率变小、甚至变为零
图4示出了根据本公开的实施例的用于计算错误的比率的方法400的示意图。图4中的三个横轴410指示随时间变化的I/O操作的数目。横轴410上的最右位置420指示当前的I/O操作的总数目,即为Io_counter 420的值,其被设置为具有高的初始值,例如一百万。横轴410上的中间位置430指示发生错误的I/O操作的数目,即为错误数目error_tag 430的值,例如为软介质错误的数目Soft_media_error_tag的值。图4中的竖轴450表示时间向下增加。从图4可见,随着竖轴450所表示的时间的演进,横轴410上的I/O操作的总数目Io_counter 420和错误数目error_tag 430均向右移动(即增加)。图4还示出了interval 440。例如,interval的值可以为1万。如图4所示,error_tag的初始值=Io_counter-interval。每发生一次错误,error_tag+=1。
例如,错误的比率可以计算为:
error_ratio=(1-(Io_counter-error_tag)/interval)*100(1)
在一些实施例中,在对错误的数目的计数中考虑错误的权重,其中不同类型的错误的权重具有不同值。为了获得针对每种错误类型的当前错误数目error_tag,可以定义针对每种错误类型的权重weight。权重weight可以描述错误的严重性。Weight的值越大,表示错误越严重,则驱动器或驱动器部分会越快地尝试重置或被标记为EOL/不可用。例如,针对硬介质错误,权重可以具有最大值。例如,权重weight的值可以为100、200或1000。在考虑权重weight的情况下,error_tag+=1*weight。
在一些实施例中,如果错误突发或者错误不影响针对驱动器的正常I/O操作,则可以降低权重。在非常短的时间内的错误突发的情况下,可以降低权重,这可以避免因系统的瞬态不稳定而过早地对错误采取动作,从而改善系统的稳定性。逻辑单元230可以设置错误之间的多少时间被认为是突发。此外,针对不影响针对驱动器的正常I/O操作的一些错误,可以降低权重,这可以避免针对不严重的错误过早地采取动作。
当发现第一错误时,Io_counter 420被初始化为初始值,例如一百万。error_tag430被初始化为Io_counter-interval,其中interval例如等于1万。如果存在突发错误,则可以降低权重,并且使用权重来计算错误的数目error_tag。然后,用error_tag得到error_ratio。
从上面的方程式(1)可知,如果发生一次错误之后再未发生错误,则error_tag不变,而Io_counter持续增大,因此error_ratio将会变小,甚至趋近于0。在相反的情况下,如果错误的数目逐渐增加,error_ratio将达到阈值。然后,逻辑单元230将执行预定义的动作。
在一些实施例中,逻辑单元230将软介质错误的比率与阈值进行比较。逻辑单元230可以定义用于判断采取何种动作的各种阈值,例如关闭阈值、寿命阈值和重置阈值。响应于软介质错误的比率大于关闭阈值,逻辑单元230将驱动器部分215标记为不可用,以及响应于软介质错误的比率小于关闭阈值但大于寿命阈值,逻辑单元230将驱动器部分215标记为寿命结束(EOL)。响应于软介质错误的比率小于寿命阈值但大于重置阈值,逻辑单元230重置驱动器部分215所属于的整个驱动器211。
在一些实施例中,响应于驱动器部分215被标记为寿命结束,逻辑单元230将数据从驱动器部分215复制到另一驱动器部分,并且用另一驱动器部分替换驱动器部分;或者响应于驱动器部分215被标记为不可用,逻辑单元230将在另一驱动器部分上重构与驱动器部分215上的数据相同的数据,并且用另一驱动器部分替换驱动器部分。被标记为EOL或不可用的故障驱动器部分215将被从映射的RAID组和/或驱动器池210移除,并且该另一驱动器部分将被添加到映射的RAID组中。
在本公开的实施例中,不是所有的错误类型都用于在整个驱动器级下进行跟踪。针对硬介质错误(包括链路错误),通常是整个驱动器问题,仍然在整个驱动器下记录错误并计算错误比率。但是针对软介质错误和数据错误,错误处理将被限制在驱动器部分的范围内。
图5示出了根据本公开的实施例的仅针对驱动器部分来处理错误的方法500的流程图。例如,方法500是上文描述的方法300中的框340的示例实现,其可以由如图2所示的逻辑单元230来执行。也就是说,此时,逻辑单元230已经确定错误的类型是软介质错误,并且已经确定造成错误的驱动器部分215。应当理解的是,方法500还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
在502,逻辑单元230对错误的数目和I/O操作的数目分别进行计数。具体而言,针对每个驱动器部分,响应于检测到软介质错误,逻辑单元230更新I/O操作的总数目Io_counter的值,并且根据错误类型更新错误的数目error_tag的值。在504中,逻辑单元230确定是否出现错误突发。如果出现错误突发,则方法500进行到506,逻辑单元230降低针对该错误类型的权重。如果未出现错误突发,则方法500进行到508,逻辑单元230保持针对该错误类型的权重不变。在510中,逻辑单元230基于考虑权重的错误数目error_tag来计算错误的比率。
根据错误的严重性级别,逻辑单元230可以定义几种错误阈值。其中三个阈值是:重置阈值、寿命阈值、以及关闭阈值,其中寿命阈值大于重置阈值且小于关闭阈值。注意,重置、寿命和关闭阈值的具体值未在本文中讨论,并且这些具体值将根据驱动器技术、类型、模块而变化,甚至应该针对来自不同驱动器供应商的驱动器,定义不同值。
在512中,逻辑单元230将计算的比率与预定义的重置阈值进行比较。如果计算的比率大于重置阈值,则方法500进行到514,逻辑单元230对发生错误的驱动器部分215所属于的驱动器211整体进行重置。重置不适用于驱动器部分,这是因为目前的驱动器技术尚不支持重置驱动器的逻辑空间的一部分。如果重置驱动器可以帮助修复错误,则系统将继续工作。如果计算的比率未大于重置阈值,则方法500返回到502,重新对错误的数目和I/O操作的数目分别进行计数,从而对错误的数目进行累积。随后在510处重新计算错误的比率。
如果514处的重置不起作用,错误的比率继续增加,则在516中,逻辑单元230将计算的比率与预定义的寿命阈值进行比较。如果计算的比率大于寿命阈值,则方法500进行到518,逻辑单元230将发生错误的驱动器部分215标记为寿命结束,这将触发对驱动器部分的主动复制。逻辑单元230将数据从所述驱动器部分复制到另一驱动器部分,并且用所述另一驱动器部分替换所述驱动器部分。发生错误的所述驱动器部分将被从映射的RAID中交换出去。如果计算的比率未大于寿命阈值,则方法500返回到502,重新对错误的数目和I/O操作的数目分别进行计数,从而对错误的数目进行累积。随后在510处重新计算错误的比率。
在520中,逻辑单元230将计算的比率与预定义的关闭阈值进行比较。如果计算的比率大于关闭阈值,则方法500进行到522,逻辑单元230将发生错误的驱动器部分215标记为不可用,在另一驱动器部分上重构与所述驱动器部分上的数据相同的数据,并且用所述另一驱动器部分替换所述驱动器部分。
如果发生错误的驱动器部分由映射的RAID组消耗,则当驱动器部分被标记为不可用时,映射的RAID组将接收来自驱动器池210的驱动器部分状态改变事件。映射的RAID将会将故障驱动器部分所对应的RAID部分221标记为需要重构。驱动器池210将选择新的空闲驱动器部分并且将其分配至映射的RAID部分221。在相关的RAID部分映射信息得到更新后,驱动器池210将向映射RAID组发送新的驱动器部分就绪事件。映射RAID组将会将该新的驱动器部分标记为需要重构。映射的RAID可以通过永久性地换入新的良好驱动器部分来替换发生错误的所述驱动器部分,以重构数据。映射的RAID触发针对发生错误的所述驱动器部分上的数据的重构。
如果发生错误的所述驱动器部分未由任何映射RAID组消耗,则驱动器池210将会将所述驱动器部分标记为不可用。将来不会将所述驱动器部分分配给任何映射RAID部分。
如果计算的比率未大于关闭阈值,则方法500返回到502,重新对错误的数目和I/O操作的数目分别进行计数,从而对错误的数目进行累积。随后在510处重新计算错误的比率。
在一些实施例中,响应于确定错误的类型是硬介质错误,逻辑单元230针对驱动器整体来处理错误,硬介质错误是驱动器的硬件故障引起的错误。
在一些实施例中,逻辑单元230针对驱动器整体来处理错误包括:对错误的数目和I/O操作的数目分别进行计数;计算错误的数目相对于I/O操作的数目的比率;以及基于比率来处理错误。对硬介质错误的计数和比率计算与上述的软介质错误的计数和比率计算相似,在此不再赘述。
在一些实施例中,逻辑单元230将硬介质错误的比率与阈值进行比较。响应于硬介质错误的比率大于关闭阈值,逻辑单元230将驱动器211整体标记为不可用;响应于硬介质错误的比率小于关闭阈值但大于寿命阈值,逻辑单元230将驱动器211整体标记为寿命结束;以及响应于硬介质错误的比率小于寿命阈值但大于重置阈值,逻辑单元230对驱动器211整体进行重置。
在一些实施例中,响应于驱动器211整体被标记为寿命结束,逻辑单元230将针对驱动器211整体执行与针对驱动器部分相同的复制动作。在一些实施例中,响应于驱动器211整体被标记为不可用,逻辑单元230将针对驱动器211整体执行与针对驱动器部分相同的重构动作。
需要注意的是,上面提到的各种阈值,对于不同类型的错误被设置为不同值。针对比率的各种阈值是在0%与100%之间的百分数。
在一些实施例中,响应于确定错误的类型是数据错误,逻辑单元230将发生错误的驱动器部分215直接标记为不可用,而不会对数据错误进行计数和累积。被标记为不可用的驱动器部分215将会从映射的RAID组被移除,并且用另一备用驱动器部分来替换。
图6示出了根据本公开的实施例的用于处理驱动器的错误的装置600的框图。例如,逻辑单元230可以由装置600实现。如图6所示,装置600可以包括第一确定模块610,被配置为响应于在针对驱动器的I/O操作中检测到的错误,确定错误的类型,其中驱动器的逻辑空间被划分为多个部分。装置600还可以包括第二确定模块620,被配置为响应于确定错误的类型是软介质错误或数据错误,确定驱动器的多个部分中造成错误的驱动器部分,软介质错误是能够通过故障部分的重映射来修复的错误,数据错误是由于驱动器上的数据被毁坏而引起的错误。此外,装置600还可以包括第一处理模块630,被配置为仅针对发生错误的驱动器部分来处理错误。
在一些实施例中,第一处理模块630包括:第一计数子模块,其被配置为对软介质错误的数目和I/O操作的数目分别进行计数;第一计算子模块,其被配置为计算软介质错误的数目相对于I/O操作的数目的比率;以及第一处理子模块,其被配置为基于所述比率来处理软介质错误。
在一些实施例中,第一处理子模块包括:第一比较单元,其被配置为将所述比率与阈值进行比较;以及第一处理单元,其被配置为:响应于比率大于关闭阈值,将驱动器部分标记为不可用;以及响应于比率小于关闭阈值但大于寿命阈值,将驱动器部分标记为寿命结束。第一处理单元还可以被配置为响应于所述比率小于寿命阈值但大于重置阈值,对驱动器整体进行重置。
在一些实施例中,第一处理子模块还包括:复制单元,其被配置为响应于驱动器部分被标记为寿命结束,将数据从驱动器部分复制到另一驱动器部分,并且用另一驱动器部分替换驱动器部分;以及重构单元,其被配置为响应于驱动器部分被标记为不可用,在另一驱动器部分上重构与驱动器部分上的数据相同的数据,并且用另一驱动器部分替换驱动器部分。
在一些实施例中,装置600还可以包括第二处理模块,被配置为响应于确定错误的类型是硬介质错误,针对驱动器整体来处理错误,硬介质错误是驱动器的硬件故障引起的错误。
在一些实施例中,第二处理模块可以包括:第二计数子模块,其被配置为对硬介质错误的数目和I/O操作的数目分别进行计数;第二计算子模块,其被配置为计算硬介质错误的数目相对于I/O操作的数目的比率;以及第二处理子模块,其被配置为基于所述比率来处理硬介质错误。
在一些实施例中,第二处理子模块可以包括:第二比较单元,其被配置为将所述比率与阈值进行比较;以及第二处理单元,其被配置为:响应于比率大于关闭阈值,将驱动器整体标记为不可用;响应于比率小于关闭阈值但大于寿命阈值,将驱动器整体标记为寿命结束;以及响应于比率小于寿命阈值但大于重置阈值,对驱动器整体进行重置。
在一些实施例中,在对错误的数目的计数中考虑错误的权重。装置600还可以包括权重降低模块,被配置为响应于错误突发或者错误不影响针对驱动器的正常I/O操作,降低权重。
在一些实施例中,第一处理模块630还可以包括第三处理子模块,其被配置为响应于确定错误的类型是数据错误,将发生错误的驱动器部分标记为不可用,而不进行错误的累积。
出于清楚的目的,在图6中没有示出装置600的某些可选模块。然而,应当理解,上文参考图2-图5所描述的各个特征同样适用于装置600。而且,装置600的各个模块可以是硬件模块,也可以是软件模块。例如,在某些实施例中,装置600可以部分或者全部利用软件和/或固件来实现,例如被实现为包含在计算机可读介质上的计算机程序产品。备选地或附加地,装置600可以部分或者全部基于硬件来实现,例如被实现为集成电路(IC)、专用集成电路(ASIC)、片上系统(SOC)、现场可编程门阵列(FPGA)等。本公开的范围在此方面不受限制。
图7示出了可以用来实施本公开的实施例的示例设备700的示意性框图。如图所示,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元701执行。例如,在一些实施例中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法300的一个或多个动作。备选地,CPU 701也可以通过任何其他适当的方式(例如,借助于固件)而被配置为执行上文描述的方法300。
本公开提出了用于处理累积的驱动器的错误的方法。当在针对驱动器的I/O操作中检测到错误时,本公开的实施例按错误类型来对错误进行计数,以便对不同的错误类型使用不同的方法来处理。
在本公开的映射RAID架构中,驱动器的逻辑空间被划分成多个部分。本公开提出用两种不同的方法分别进行硬介质错误和软介质错误处理。针对硬介质错误,将针对整个驱动器来进行错误处理。针对软介质错误,将仅针对发生错误的驱动器部分来进行错误处理。以这种方式,基于驱动器部分的错误处理可以帮助避免更多的驱动器错误被暴露,并且仅针对发生错误的驱动器部分而非整个驱动器开始数据复制或重构。发生错误的驱动器部分可以非常快速地复制或重构,并且减少所需的备用区的数量。
还可以延长驱动器寿命,这是因为经处理的驱动器部分不会暴露更多的错误,而更多的错误将会消耗由驱动器供应商在驱动器处保留的更多备用区。
此外,对于数据错误,也是仅针对驱动器部分来处理。然而,数据错误发生一次,就会对发生错误的驱动器部分执行动作,而不会对数据错误进行计数和累积。
本公开的实施例定义了错误比率以及相关联的重置/寿命/关闭阈值。一旦错误比率超过相应阈值,则采取相应动作来修复错误。在另一方面,如果驱动器在一个错误后工作良好,则本公开的方法将使错误比率减少。随着I/O操作增加并且被成功服务,错误比率会低于阈值,并且最终将趋近于零。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作动作,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (19)

1.一种用于处理驱动器的错误的方法,所述驱动器的逻辑空间被划分为多个部分,所述方法包括:
响应于在针对所述驱动器的I/O操作中检测到的错误,确定所述错误的类型;
响应于确定所述错误的类型是软介质错误或数据错误,确定所述驱动器的所述多个部分中造成所述错误的驱动器部分,所述软介质错误是能够通过故障部分的重映射来修复的错误,所述数据错误是由于所述驱动器上的数据被毁坏而引起的错误;以及
仅针对发生所述错误的所述驱动器部分来处理所述错误。
2.根据权利要求1所述的方法,其中响应于确定所述错误的类型是软介质错误,仅针对发生所述错误的所述驱动器部分来处理所述错误包括:
对所述错误的数目和所述I/O操作的数目分别进行计数;
计算所述错误的数目相对于所述I/O操作的数目的比率;以及
基于所述比率来处理所述错误。
3.根据权利要求2所述的方法,其中基于所述比率来处理所述错误包括:
将所述比率与阈值进行比较,
响应于所述比率大于关闭阈值,将所述驱动器部分标记为不可用;以及
响应于所述比率小于所述关闭阈值但大于寿命阈值,将所述驱动器部分标记为寿命结束。
4.根据权利要求3所述的方法,其中基于所述比率来处理所述错误还包括:
响应于所述驱动器部分被标记为寿命结束,将数据从所述驱动器部分复制到另一驱动器部分,并且用所述另一驱动器部分替换所述驱动器部分;或者
响应于所述驱动器部分被标记为不可用,在另一驱动器部分上重构与所述驱动器部分上的数据相同的数据,并且用所述另一驱动器部分替换所述驱动器部分。
5.根据权利要求1所述的方法,还包括:
响应于确定所述错误的类型是硬介质错误,针对所述驱动器整体来处理所述错误,所述硬介质错误是所述驱动器的硬件故障引起的错误。
6.根据权利要求5所述的方法,其中针对所述驱动器整体来处理所述错误包括:
对所述错误的数目和所述I/O操作的数目分别进行计数;
计算所述错误的数目相对于所述I/O操作的数目的比率;以及
基于所述比率来处理所述错误。
7.根据权利要求6所述的方法,其中基于所述比率来处理所述错误包括:
将所述比率与阈值进行比较,
响应于所述比率大于关闭阈值,将所述驱动器整体标记为不可用;
响应于所述比率小于所述关闭阈值但大于寿命阈值,将所述驱动器整体标记为寿命结束;以及
响应于所述比率小于所述寿命阈值但大于重置阈值,对所述驱动器整体进行重置。
8.根据权利要求2或6所述的方法,其中在对所述错误的数目的计数中考虑所述错误的权重,所述方法还包括:
响应于所述错误突发或者所述错误不影响针对所述驱动器的正常I/O操作,降低所述权重。
9.根据权利要求1所述的方法,其中响应于确定所述错误的类型是数据错误,仅针对发生所述错误的所述驱动器部分来处理所述错误包括:
将发生所述错误的所述驱动器部分标记为不可用。
10.一种电子设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备:
响应于在针对驱动器的I/O操作中检测到的错误,确定所述错误的类型,其中所述驱动器的逻辑空间被划分为多个部分;
响应于确定所述错误的类型是软介质错误或数据错误,确定所述驱动器的所述多个部分中造成所述错误的驱动器部分,所述软介质错误是能够通过故障部分的重映射来修复的错误,所述数据错误是由于所述驱动器上的数据被毁坏而引起的错误;以及
仅针对发生所述错误的所述驱动器部分来处理所述错误。
11.根据权利要求10所述的电子设备,其中响应于确定所述错误的类型是软介质错误,仅针对发生所述错误的所述驱动器部分来处理所述错误包括:
对所述错误的数目和所述I/O操作的数目分别进行计数;
计算所述错误的数目相对于所述I/O操作的数目的比率;以及
基于所述比率来处理所述错误。
12.根据权利要求11所述的电子设备,其中基于所述比率来处理所述错误包括:
将所述比率与阈值进行比较,
响应于所述比率大于关闭阈值,将所述驱动器部分标记为不可用;以及
响应于所述比率小于所述关闭阈值但大于寿命阈值,将所述驱动器部分标记为寿命结束。
13.根据权利要求12所述的电子设备,其中基于所述比率来处理所述错误还包括:
响应于所述驱动器部分被标记为寿命结束,将数据从所述驱动器部分复制到另一驱动器部分,并且用所述另一驱动器部分替换所述驱动器部分;或者
响应于所述驱动器部分被标记为不可用,在另一驱动器部分上重构与所述驱动器部分上的数据相同的数据,并且用所述另一驱动器部分替换所述驱动器部分。
14.根据权利要求10所述的电子设备,所述指令当由所述至少一个处理单元执行时,还使得所述电子设备:
响应于确定所述错误的类型是硬介质错误,针对所述驱动器整体来处理所述错误,所述硬介质错误是所述驱动器的硬件故障引起的错误。
15.根据权利要求14所述的电子设备,其中针对所述驱动器整体来处理所述错误包括:
对所述错误的数目和所述I/O操作的数目分别进行计数;
计算所述错误的数目相对于所述I/O操作的数目的比率;以及
基于所述比率来处理所述错误。
16.根据权利要求15所述的电子设备,其中基于所述比率来处理所述错误包括:
将所述比率与阈值进行比较,
响应于所述比率大于关闭阈值,将所述驱动器整体标记为不可用;
响应于所述比率小于所述关闭阈值但大于寿命阈值,将所述驱动器整体标记为寿命结束;以及
响应于所述比率小于所述寿命阈值但大于重置阈值,对所述驱动器整体进行重置。
17.根据权利要求11或15所述的电子设备,其中在对所述错误的数目的计数中考虑所述错误的权重,所述指令当由所述至少一个处理单元执行时,还使得所述电子设备:
响应于所述错误突发或者所述错误不影响针对所述驱动器的正常I/O操作,降低所述权重。
18.根据权利要求10所述的电子设备,其中响应于确定所述错误的类型是数据错误,仅针对发生所述错误的所述驱动器部分来处理所述错误包括:
将发生所述错误的所述驱动器部分标记为不可用。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至9中任一项所述的方法的步骤。
CN201611194046.7A 2016-12-21 2016-12-21 用于处理驱动器的错误的方法和设备 Active CN108228396B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611194046.7A CN108228396B (zh) 2016-12-21 2016-12-21 用于处理驱动器的错误的方法和设备
US15/848,580 US10733042B2 (en) 2016-12-21 2017-12-20 Techniques for handling drive errors based on extents causing the drive errors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611194046.7A CN108228396B (zh) 2016-12-21 2016-12-21 用于处理驱动器的错误的方法和设备

Publications (2)

Publication Number Publication Date
CN108228396A true CN108228396A (zh) 2018-06-29
CN108228396B CN108228396B (zh) 2021-03-23

Family

ID=62655990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611194046.7A Active CN108228396B (zh) 2016-12-21 2016-12-21 用于处理驱动器的错误的方法和设备

Country Status (2)

Country Link
US (1) US10733042B2 (zh)
CN (1) CN108228396B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084061A (zh) * 2019-06-15 2020-12-15 国际商业机器公司 减少相同raid级别的raid阵列中的数据丢失事件
CN113920717A (zh) * 2020-07-08 2022-01-11 腾讯科技(深圳)有限公司 一种信息处理方法、装置、电子设备以及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949850A (zh) * 2017-12-21 2019-06-28 光宝电子(广州)有限公司 储存系统与储存方法
CN110737393B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 数据读取方法、设备和计算机程序产品
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
CN111104046B (zh) 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
CN111858130B (zh) 2019-04-29 2024-09-13 伊姆西Ip控股有限责任公司 用于拆分盘集的方法、设备和计算机程序产品
CN115206406A (zh) 2021-04-12 2022-10-18 伊姆西Ip控股有限责任公司 管理独立磁盘冗余阵列的方法和装置
US11977433B2 (en) * 2022-09-27 2024-05-07 Hitachi, Ltd. Failure area identification system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648868A (zh) * 2004-01-14 2005-08-03 美国博通公司 通过综合的错误校正和检测对存储设备的数据进行恢复的方法和系统
US7653840B1 (en) * 2007-04-27 2010-01-26 Net App, Inc. Evaluating and repairing errors during servicing of storage devices
CN101652752A (zh) * 2006-07-24 2010-02-17 马维尔国际贸易有限公司 用于独立磁盘冗余阵列(raid)系统的文件服务器
US20130346794A1 (en) * 2012-06-22 2013-12-26 International Business Machines Corporation Restoring redundancy in a storage group when a storage device in the storage group fails
CN104346241A (zh) * 2013-08-07 2015-02-11 希捷科技有限公司 断写缓解

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871263B2 (en) * 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
US8639964B2 (en) * 2010-03-17 2014-01-28 Dell Products L.P. Systems and methods for improving reliability and availability of an information handling system
US8904226B2 (en) * 2010-08-26 2014-12-02 Cleversafe, Inc. Migrating stored copies of a file to stored encoded data slices
US9448735B1 (en) 2013-12-31 2016-09-20 Emc Corporation Managing storage device rebuild in data storage systems
US10013323B1 (en) 2015-09-29 2018-07-03 EMC IP Holding Company LLC Providing resiliency to a raid group of storage devices
US10013325B1 (en) 2015-09-29 2018-07-03 EMC IP Holding Company LLC Providing resiliency to a raid group of storage devices
US10284232B2 (en) * 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
CN107203450B (zh) 2016-03-16 2020-06-02 伊姆西Ip控股有限责任公司 故障的分类方法和设备
US10095585B1 (en) 2016-06-28 2018-10-09 EMC IP Holding Company LLC Rebuilding data on flash memory in response to a storage device failure regardless of the type of storage device that fails
US10146624B1 (en) * 2017-04-24 2018-12-04 EMC IP Holding Company LLC Disk extent rebalancing in mapped RAID storage arrays
US10346247B1 (en) * 2017-04-27 2019-07-09 EMC IP Holding Company LLC Adjustable error sensitivity for taking disks offline in a mapped RAID storage array
US10229022B1 (en) * 2017-04-27 2019-03-12 EMC IP Holding Company LLC Providing Raid-10 with a configurable Raid width using a mapped raid group
US10152254B1 (en) 2017-04-28 2018-12-11 EMC IP Holding Company LLC Distributing mapped raid disk extents when proactively copying from an EOL disk
US10140041B1 (en) * 2017-07-28 2018-11-27 EMC IP Holding Company LLC Mapped RAID (redundant array of independent disks) in a data storage system with RAID extent sub-groups that are used to perform drive extent allocation and data striping for sequential data accesses to a storage object
US10126988B1 (en) * 2017-07-28 2018-11-13 EMC IP Holding Company LLC Assigning RAID extents and changing drive extent allocations within RAID extents when splitting a group of storage drives into partnership groups in a data storage system
US10146447B1 (en) * 2017-07-28 2018-12-04 EMC IP Holding Company LLC Mapped RAID (redundant array of independent disks) in a data storage system with drive extents allocated to individual RAID extents from individual sub-groups of storage made up of ranges of logical block addresses defined across a group of hard disk drives
US10235082B1 (en) * 2017-10-18 2019-03-19 EMC IP Holding Company LLC System and method for improving extent pool I/O performance by introducing disk level credits on mapped RAID
CN109726033B (zh) * 2017-10-31 2022-05-06 伊姆西Ip控股有限责任公司 提供raid数据保护的方法、数据存储系统和计算机可读介质
CN110096217B (zh) * 2018-01-31 2022-05-27 伊姆西Ip控股有限责任公司 用于重新定位数据的方法、数据存储系统和介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1648868A (zh) * 2004-01-14 2005-08-03 美国博通公司 通过综合的错误校正和检测对存储设备的数据进行恢复的方法和系统
CN101652752A (zh) * 2006-07-24 2010-02-17 马维尔国际贸易有限公司 用于独立磁盘冗余阵列(raid)系统的文件服务器
US7653840B1 (en) * 2007-04-27 2010-01-26 Net App, Inc. Evaluating and repairing errors during servicing of storage devices
US20130346794A1 (en) * 2012-06-22 2013-12-26 International Business Machines Corporation Restoring redundancy in a storage group when a storage device in the storage group fails
CN104346241A (zh) * 2013-08-07 2015-02-11 希捷科技有限公司 断写缓解

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084061A (zh) * 2019-06-15 2020-12-15 国际商业机器公司 减少相同raid级别的raid阵列中的数据丢失事件
CN113920717A (zh) * 2020-07-08 2022-01-11 腾讯科技(深圳)有限公司 一种信息处理方法、装置、电子设备以及存储介质
CN113920717B (zh) * 2020-07-08 2023-08-22 腾讯科技(深圳)有限公司 一种信息处理方法、装置、电子设备以及存储介质

Also Published As

Publication number Publication date
CN108228396B (zh) 2021-03-23
US20180210782A1 (en) 2018-07-26
US10733042B2 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
CN108228396A (zh) 用于处理驱动器的错误的方法和设备
CN109725822B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US10725853B2 (en) Systems and methods for memory failure prevention, management, and mitigation
US7133966B2 (en) Disk array device having spare disk drive and data sparing method
CN105637591B (zh) 用于nand闪速存储器的缺陷管理策略
US8417989B2 (en) Method and system for extra redundancy in a raid system
CN101479708B (zh) 半导体存储装置管理系统、半导体存储装置、主机装置、程序、半导体存储装置的管理方法
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
US8601310B2 (en) Partial memory mirroring and error containment
US20110029728A1 (en) Methods and apparatus for reducing input/output operations in a raid storage system
CN103718162A (zh) 用于ssd中灵活的raid的方法和设备
CN103631721A (zh) 一种隔离内存中坏块的方法及系统
CN103970481A (zh) 重建存储器阵列的方法和装置
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
CN111104051B (zh) 用于管理存储系统的方法、设备和计算机程序产品
US11164650B2 (en) Scrub management in storage class memory
CN110389858A (zh) 存储设备的故障恢复方法和设备
US9646721B1 (en) Solid state drive bad block management
CN106104460A (zh) 分布式存储系统中的可靠性增强
TWI550404B (zh) 識別含有重新映射記憶體位置之記憶體區域的技術
US20210216470A1 (en) Logical to virtual and virtual to physical translation in storage class memory
CN111522684A (zh) 一种同时纠正相变存储器软硬错误的方法及装置
US20080005627A1 (en) Self-defining counters
TW201329701A (zh) 具有自動重映射功能的磁碟陣列及其自動重映射方法
US20140181430A1 (en) Equalizing wear on storage devices through file system controls

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