CN110058791B - 存储系统以及相应的方法和计算机可读介质 - Google Patents

存储系统以及相应的方法和计算机可读介质 Download PDF

Info

Publication number
CN110058791B
CN110058791B CN201810050580.3A CN201810050580A CN110058791B CN 110058791 B CN110058791 B CN 110058791B CN 201810050580 A CN201810050580 A CN 201810050580A CN 110058791 B CN110058791 B CN 110058791B
Authority
CN
China
Prior art keywords
request
storage device
data
storage
group
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
CN201810050580.3A
Other languages
English (en)
Other versions
CN110058791A (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 CN201810050580.3A priority Critical patent/CN110058791B/zh
Priority to US16/249,149 priority patent/US10983874B2/en
Publication of CN110058791A publication Critical patent/CN110058791A/zh
Application granted granted Critical
Publication of CN110058791B publication Critical patent/CN110058791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及存储系统以及用于存储系统的方法。该存储系统包括缓存设备和存储设备组。在此提出的方法包括:存储系统的缓存设备从主机接收针对存储系统的输入/输出(I/O)请求,并且在确定存储系统刚从硬件故障恢复以及存储系统中的存储设备组处于就绪但降级的状态时,通过向该存储设备组发送新的恢复状态I/O请求来进行安全地数据写入/读出。本公开的实施例可以被用于缩减数据丢失窗口,减少或者避免数据丢失。另外,本公开的一些实施例可以在当前的RAID技术中实现,即能够和现有的RAID技术结合使用。

Description

存储系统以及相应的方法和计算机可读介质
技术领域
本公开的实施例总体上涉及存储系统,并且更具体地,涉及用于缩短存储系统中的数据丢失窗口的存储系统、方法和计算机可读介质。
背景技术
缓存(cache)是底层存储设备(例如,硬盘、磁盘冗余阵列(RAID)等)和外界接口之间的缓冲器。缓存可以存放例如热数据,以减少外界接口和底层驱动器之间的数据交换,提高数据的传输速度,降低数据存取的时延。例如,在目前的RAID技术中,在RAID组之上存在缓存层。当主机向存储系统发送写请求时,缓存设备将数据存储于其存储器中,并且向主机通知输入/输出(I/O)完成。之后,缓存设备可以向RAID组发送数据,并且可以在RAID组完成I/O之后使缓存设备中的存储器无效。这种技术被称为“回写”(WriteBack)技术。回写技术可以显著地提高I/O的性能,并且在存储系统中被普遍使用。然而,在RAID组于硬件故障之后重新回到在线状态、并且利用回写技术恢复数据时可能遭遇数据丢失。
发明内容
本公开的实施例提出了用于存储系统的方法和装置。下面给出了对各实施例的简要概述,以提供对各种实施例的一些方面的基本理解。发明内容部分所记载的内容并非旨在标识关键元素的要点或描述各种实施例的范围。相反,在此描述的内容仅仅是为了以简化形式呈现一些概念,作为对下文具体描述的前序。
本公开的第一方面提供了一种用于存储系统的方法,该存储系统包括缓存设备和存储设备组。该方法包括:在存储系统的缓存设备处,从主机接收针对所述存储系统的I/O请求;响应于所接收的所述I/O请求,确定预定条件是否被满足;响应于确定所述预定条件均被满足,向所述存储设备组发送恢复状态I/O请求,以允许所述存储设备组返回需要恢复消息指示所述存储设备组处于需要恢复的状态。该预定条件至少包括:所述存储系统刚从硬件故障恢复,以及所述存储系统中的存储设备组处于就绪但降级的状态。
在一些实施例中,响应于确定预定条件中的至少一个预定条件未被满足,缓存设备可以向存储设备组发送正常I/O请求。
在另一些实施例中,I/O请求为写请求,并且该预定条件还可以包括所述缓存设备中存在脏数据。在一些实施例中,响应于从存储设备组接收到需要恢复消息,在延迟预定的时间段之后,再次执行述确定和发送操作。在另一实施例中,响应于从存储设备组接收到I/O完成消息,将缓存设备中的数据标记为干净数据。
在一些实施例中,接收的I/O请求为写请求,并且预定条件还可以包括缓存设备中具有足够的存储空间,并且其中向存储设备组发送恢复状态I/O请求可以包括:响应于预定条件均被满足:将所述写请求所针对的数据写入所述存储空间;将所述数据标记为脏数据;及向所述存储设备组发送恢复状态写请求。在一个实施例中,响应于确定缓存设备中不具有足够的存储空间,将接收的所述I/O请求添加到所述缓存设备的等待处理队列。
在另一些实施例中,接收的I/O请求为读请求,并且预定条件还可以包括:读请求的目标数据在所述缓存设备中不存在。在进一步的实施例中,响应于从存储设备组接收到需要恢复消息,缓存设备将接收的I/O请求添加到该缓存设备的等待处理队列。在另一实施例中,响应于从存储设备组接收到I/O完成消息,缓存设备将从存储设备组读出的数据发送到主机。
在一些实施例中,向存储设备组发送恢复状态I/O请求可以包括:确定恢复状态I/O请求是否涉及存储设备组中的多个条带;响应于确定恢复状态I/O请求涉及存储设备组中的多个条带:将恢复状态I/O请求分割成多个恢复状态I/O请求,使得多个恢复状态I/O请求中的每个恢复状态I/O请求仅涉及存储设备组中的单个条带;以及向存储设备组发送多个恢复状态I/O请求。
本公开的第二方面提供了一种用于存储系统的方法,该存储系统包括缓存设备和存储设备组。该方法在存储设备组处执行,并且包括:从缓存设备接收恢复状态I/O请求,该恢复状态I/O请求允许存储设备组返回需要恢复消息指示该存储设备组处于需要恢复的状态;响应于所接收的恢复状态I/O请求,确定预定条件是否被满足,以及响应于确定预定条件未被完全满足,向缓存设备发送消息以指示恢复状态I/O请求为无效请求,其中该预定条件至少包括:存储设备组处于降级状态。
在一些实施例中,预定条件还可以包括:恢复状态I/O请求仅涉及存储设备组中的单个条带。
在另一些实施例中,恢复状态I/O请求为恢复状态读请求,并且该方法可以进一步包括:响应于确定预定条件被完全满足,确定恢复状态读请求是否触及存储设备组中的降级存储设备;以及响应于确定恢复状态读请求不触及降级存储设备,从存储设备组中读取数据;以及向缓存设备发送所读取的数据和I/O完成消息。在另一实施例中,响应于确定恢复状态读请求触及降级存储设备,从存储设备组中的所有非降级存储设备中读取数据,基于所读取的数据来检验存储设备组中被所述读请求所涉及的条带是否是一致的;以及响应于确定所述条带是一致的:基于所读取的数据恢复所述降级存储设备的数据;以及向缓存设备发送经恢复的数据和I/O完成消息。在由于实施例中,响应于确定所述条带不一致,向缓存设备发送需要恢复消息指示存储设备组处于需要恢复的状态。
在一些实施例中,恢复状态I/O请求为恢复状态写请求,并且方法可以进一步包括:响应于确定预定条件被完全满足,从存储设备组中的所有非降级存储设备中读取数据,基于所读取的数据来检验存储设备组中的被所述写请求所涉及的条带是否是一致的;以及响应于确定所述条带是一致的:向存储设备组中的存储设备写入数据;将条带标记为需要重建;以及向缓存设备发送I/O完成消息。在另一实施例中,响应于确定条带不一致,向缓存设备发送需要恢复消息指示存储设备组处于需要恢复的状态,同时避免将条带标记为需要重建。
本公开的第三方面提供了一种存储系统。该存储系统包括缓存设备,存储设备组,和控制器。该控制器被配置为:促使缓存设备执行根据本公开的第一方面的任一方法,以及促使存储设备组执行根据本公开的第二方面的任一方法。
本公开的第四方面提供了一种计算机可读存储介质,其具有存储在其中的程序代码,并且该程序代码在由装置执行时促使装置执行根据本公开的第一方面或者第二方面所述的任一方法。
根据本公开的实施例的方法、存储系统和计算机可读介质,存储系统中的缓存设备能够在该存储系统中的存储设备组处于降级状态时使用新的I/O请求安全地从该存储设备组读取数据或者向该存储设备组写入数据,使得数据丢失窗口缩短,或者避免数据丢失。
尽管在附图中通过示例的方式示出了特定的实施例,然而,应当理解,本文的具体实施例的描述不意在将实施例限制为所公开的具体形式。
附图说明
从下文的公开内容和权利要求中,本公开的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出示例性实施例的非限制性描述,在附图中:
图1示出了可以在其中实施本公开的实施例的存储系统的示意图;
图2示出了不同时刻存储设备组的状态变化;
图3示出了不完全的写操作的示意图;
图4示出了根据本公开的实施例的在存储系统的缓存设备处用于向存储设备组发送I/O请求的方法的流程图;
图5示出了根据本公开的实施例的图4中的发送操作的示例实施方式的流程图;
图6示出了根据本公开的实施例的对输入/输出请求分割的示例;
图7示出了根据本公开的实施例的图4中的方法可以进一步包括的操作的流程图;
图8示出了根据本公开的实施例的在存储系统的缓存设备处的用于向存储设备组发送I/O请求的另一方法的流程图;
图9示出了根据本公开的实施例的在存储系统的存储设备组处处理来自缓存设备的I/O请求的方法的流程图;
图10和11分别示出了根据本公开的实施例的在存储系统的存储设备组处处理有效的恢复状态读请求和恢复状态写请求的方法的流程图;
图12示出了根据本公开的实施例的用于存储系统的示意性结构图。
具体实施方式
在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本公开的实施例。因此,本公开不旨在受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。
应当理解,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。另外还应当理解“包括”,“包含”仅被用来说明所陈述的特征、元素、功能或者部件的存在,然而并不排除存在一个或者多个其他的特征、元素、功能或者部件。
本公开的实施例涉及存储系统。图1中示出可以在其中实施本公开的实施例的存储系统100的结构示意图。在该示例中,存储系统100包括缓存设备110和存储设备组(例如RAID组)120。该缓存设备110和存储设备组120可以在控制器(未示出)的控制下执行操作。该控制器可以位于存储系统的内部或者外部。尽管以下的实施例中将以RAID作为存储设备的示例,然而应该理解,本公开的实施例不限于RAID形式的存储设备。
在存储系统100中,可以利用回写技术,其中缓存设备110接收(101)来自主机的写请求,将数据写入(102)缓存设备110的存储器130,向主机返回(103)完成消息(例如,OK),并且之后在后台将数据清理(104)到存储设备(例如RAID)120。
然而,本公开的发明人意识到,在存储系统中使用传统的回写技术的情况下,如果RAID组在硬件故障(例如,多个驱动器移除、电源故障等)之后重新回到在线状态,则即使没有新的用户输入/输出(I/O)请求到达并且故障情况全部被清除,存储系统也仍然可能遭遇数据丢失。以下描述可能导致数据丢失的原因。
导致数据丢失的原因之一是存储设备组(例如RAID组)中的多个存储设备(例如,盘)的上电时间不同。例如,RAID组可能由于驱动器的移除或者电源故障等硬件故障而发生中断。在从硬件故障恢复之后,存储器系统需要使离线的驱动器上电。由于硬件限制,RAID组的盘的上电顺序是不确定的。例如,RAID组中的盘可能分布在多个机柜中,而不同的机柜可能以不可预知的顺序在不同的时间上电。另外,为了降低电压毛刺,同一机柜可能不会在同一时间对其所有的驱动器上电,这导致即使在同一机柜中的驱动器也可能在不同时间上电。发明人已经观测到,在一些情况下,存储系统中的有些驱动器可能在同一RAID组中的其它驱动器上电后18-25秒之后才会上电。如果存在更多的机柜和磁盘的话,该延时可能会更大。
导致数据丢失的另一原因是逻辑单元号(LUN)离线抖动容忍时间(debouncetime)限制。当故障条件被清除(例如,电源恢复、驱动器重新插入等)后,RAID组将再次变为在线。如上所述,由于不同驱动器的不同的上电时间,RAID组可能需要等若干秒使所有驱动器上电。然而,存储系统中存在关于等待时间的限制。具体而言,当RAID组中断时,RAID组中的LUN也将中断。上层(缓存层)将启动定时器。该定时器被称为LUN离线抖动容忍时间定时器。在一些存储系统中,该时间典型为80秒。在该定时器到期时,主机将获知存储设备组的离线状态并向用户报告数据不可用(DU)事件。
在存在离线抖动容忍时间限制的情况下,如果不是所有的驱动器均已在线,则RAID组需要在短的时延后以降级状态返回在线。在目前的实现中,通常在5秒(m)的等待时间后RAID组被强制变为就绪(在线)。此时若RAID组中的一些驱动器仍未在线,则该RAID组处于降级状态。当所有的驱动器在线后,RAID组将启动重建。
图2示出RAID组200在不同时刻的状态示意图。该示例中RIAD组为4+1形式的的RAID 5。假定盘3(表示为D3)在其他盘在线后仍未在线,并且在T0时刻等待D3返回在线。在T5时刻,例如等待5m后,D3仍未在线,RAID组被强制变为就绪,由于D3仍离线,该RAID组处于降级状态。在T10时刻,例如10m后,D3变为在线,RAID组开始对D3的重建。
导致数据丢失的又一原因是不完全的写操作和缓存设备的避免后台检验(BVA)状态。如果在硬件故障发生时,来自用户的I/O尚未被完成,则可能在RAID组存在一些不完全的写操作。因此缓存设备将把用户数据留存到另一存储器中。在本公开中,尚未被写入RAID组的该数据被称为“脏数据”。注意,存储系统中具有电池,因此,即使发生电源丢失,缓存设备仍然具有留存这些数据的机会。
在硬件故障情况被清除后,RAID组将重新变为就绪。缓存设备需要立即向RAID组重新发送数据,原因如下。首先,写请求将通知RAID组某条带具有不一致错误,而在服务I/O时,RAID组没有机会检验该条带以及纠正该不一致。另外,缓存设备中的存储器是有限的,因此,缓存设备需要及时将数据清理到空闲存储器以用于服务来自主机的其它I/O请求。我们将这种技术称为BVA技术。利用BVA,替代检验整个RAID组,RIAD组仅需要在缓存设备发送BVA I/O请求时检验相关条带。
然而,如上所述,RAID组可以在降级状态返回在线。如果RAID组处于降级状态并且其中有些条带具有不完全的写操作,则BVA将导致数据丢失。图3示出的可能的场景的示例。
在图3的块301示出RAID组收到I/O请求前的状态。此时,盘0(表示为D0)、盘1(表示为D1)和校验盘(表示为P)均具有旧数据,具有一致性,例如满足P=D0xor D1的校验关系,其中xor为异或操作。此后,用户向D1写入(310)数据。RAID组对D1和校验盘P进行更新。正常情况下,如果更新顺利完成,则D1和P被更新为N1和NP,该RAID组将达到块302中所示的新的一致状态,例如,NP=D0xor N1。然而,如果D1被成功写入、而校验盘P还未被写入的时候发生电源故障,则出现了对跨D0、D1和校验盘P的条带的不完全的写入。即,D1包含新数据,而检验盘P包含旧数据,如图3的块303所示。
在该示例中,发生电源故障时,用户I/O尚未被完成。因此,缓存设备将数据存储到另一存储器。在电源恢复之后,D0尚未变为在线,因此RAID组以降级状态变为就绪,如图3的块304所示。由于RAID组就绪,缓存设备立即尝试将数据重新写入(320)该RAID组。
如果D1和检验盘P均具有新数据或者旧数据,则RAID组可以正确地恢复D0中的数据。但是如果D1具有新数据而校验盘P具有旧数据(即不一致),则所恢复的数据是无效的。RAID组发现D1和检验盘P具有不一致的数据,例如P!=D0xor N1,其中“!=”表示不等于;并且D0被降级。这意味着不能够恢复D0上的数据。因此,RAID组将新数据写入D1并且将D0的数据设置为数据丢失图样。几秒后,所有的故障情况被清除,并且D0返回可用状态,校验盘P用数据丢失图样重建D0。但是,该重建无法成功,即无法恢复D0上的数据,并且D0!=P xorN1。
因此,如图3的示例所示,在一些情况下,尽管用户数据未涉及D0并且所有的硬盘故障被清除,但是仍然可能出现D0中数据丢失的情况。该数据丢失由其它盘上不完全的写入导致。
为了解决上述以及其他潜在的问题,本公开的实施例引入了新的I/O操作,以用于安全的读/写,避免数据的丢失。本公开提出的新的I/O操作在后文被称为恢复状态I/O,以区别于传统的I/O。该恢复状态I/O包括恢复状态读(或者简称为恢复读)和恢复状态写(或者简称为恢复写)。
与传统读操作类似的是,缓存设备使用恢复状态读操作从RAID组读取数据;然而不同的是,该恢复状态读操作允许RAID组返回“需要恢复”消息指示RAID组处于需要恢复的状态以使I/O请求失败。
另外,与传统写操作类似,缓存设备使用该恢复状态写操作以将数据写入RAID组;然而不同的是,该恢复状态写操作允许RAID组返回“需要恢复”消息指示RAID组处于需要恢复的状态以使I/O请求失败。如果RAID组返回“需要恢复”消息,则RAID组保证不向需要恢复的盘发送媒体修改操作。
可以在缓存设备和存储设备组(例如,RAID组)之间在内部使用所提出的恢复状态I/O,然而也可以在主机和缓存设备之间执行。在本公开的实施例中,作为示例,描述在缓存设备和RAID组之间使用提出的新的I/O操作的行为。在该示例中,缓存设备和RAID组一起工作以支持这些新提出的I/O操作,其中缓存设备是恢复状态I/O请求的发起者,而RAID组是接收者。然而,应该理解本公开的原理也可以被应用于其它合适的场景中。
图4示出了根据本公开的实施例的用于存储系统的方法400的示例性流程图。该存储系统包括缓存设备和存储设备组。例如,该存储系统可以是图1所示的系统100。该方法由缓存设备(例如图1中的缓存设备110)执行。为了便于讨论,以下将参考图1所示的存储系统100来描述该方法,然而应该理解本公开的实施例不限于此。
如图4所示,在块410,缓存设备110从主机接收针对该存储系统100的I/O请求。与传统回写技术不同的是,缓存设备110不会直接向存储设备组120发送I/O请求,而是在块420确定一组预定条件是否被满足;并且在块430,响应于确定预定条件均被满足,向存储设备组120(例如RAID组)发送恢复状态I/O请求而不是传统I/O请求。该恢复状态I/O请求允许存储设备组120返回需要恢复消息指示所述存储设备组处于需要恢复的状态。
该预定条件至少包括:(1)存储系统刚从硬件故障恢复;以及(2)存储系统中的存储设备组120处于就绪但降级的状态。
在一些实施例中,在确定预定条件中的至少一个预定条件未被满足时,缓存设备110可以不向存储设备组120发送恢复状态I/O请求,而是例如向存储设备组120发送正常I/O请求(即,传统I/O请求)。然而本公开的实施例对此不加限制。
以下分别描述在块410接收的I/O请求为写请求和读请求的实施例。
在一些实施例中,在块410接收的I/O请求为写请求。并且预定条件还包括:(3)缓存设备中存在脏数据。该实施例中,在块430,响应于确定条件(1)、(2)和(3)均被满足,缓存设备110可以向存储设备组120发送恢复状态写请求。也就是说,仅在该缓存设备110中有脏数据时才发送恢复状态写请求,以向该存储设备组120中写入数据。
替代地或者附加地,在另一实施例中,在块410接收的I/O请求为写请求,并且预定条件还包括:(4)缓存设备中具有足够的存储空间。在该实施例中,在块430,响应于确定条件(1)、(2)和(4)均被满足,缓存设备110可以执行以下操作:将该写请求针对的数据写入缓存设备110中的存储器(例如图1中的存储器130);将该数据标记为脏数据;以及向该存储设备组120发送恢复状态写请求。
可选地,在另一实施例中,在块430,响应于确定条件(1)和(2)均被满足、但是条件(4)未被满足(即缓存设备110中不具有足够的存储器),缓存设备110可以将在块410中接收的该I/O请求添加到该缓存设备110的等待处理队列中。
替代地或者附加地,在一些实施例中,在将恢复状态I/O请求发送到存储设备组120之前,缓存设备110可以对该恢复状态I/O请求进行处理以使得其仅涉及存储设备组120中的单个条带。在图5中示出该实施例中可以在块430实施的多个操作530。
如图5所示,在块531,缓存设备110可以确定该恢复状态I/O请求是否涉及存储设备组120中的多个条带。在块532,响应于确定该恢复状态I/O请求涉及存储设备组中的多个条带,缓存设备110将该恢复状态I/O请求分割成多个恢复状态I/O请求,使得多个恢复状态I/O请求中的每个恢复状态I/O请求仅涉及存储设备组120中的单个条带。在块533,缓存设备110向所述存储设备组发送该多个恢复状态I/O请求。应该理解,如果在块531确定该恢复状态I/O请求仅涉及存储设备组中的单个条带,则可以在不执行532中的分割操作的情况下直接发送恢复状态I/O请求。注意,图5的示例适用于I/O请求为写请求的情况以及I/O请求为读请求的情况。
图6示出根据本公开的实施例的可以在图5的块532中使用的分割I/O的示例。在该示例中,I/O请求为写请求,并且RAID组的条带大小为2M字节,I/O请求涉及的数据的起始地址处于1M字节处,并且数据大小为2M字节。在这种情况下,如图6所示,该I/O请求将涉及两个条带610和620,即,脏数据不在单个条带的范围内。因此,缓存设备110可以将其分割成多个I/O。在该示例中,缓存设备110根据条带的边界将该I/O分割成两个I/O,601和602。第一I/O 601起始地址为1M字节,大小为1M字节;而第二I/O 602起始地址为2M字节,大小为1M字节。通过这种方式,I/O操作所涉及的数据大小被限制到RAID组中的单个条带的范围内,从而简化存储设备组中执行的检验操作。
现在再次参考图4。在块410中接收的I/O请求为写请求的实施例中,方法400可以包括进一步的操作,以使得缓存设备110可以根据从存储设备组120返回的不同消息而执行不同的处理。作为示例,图7中示出缓存设备110的进一步的操作的示例440。在该示例中,在块441,缓存设备110从存储设备组120接收反馈消息,并确定消息类型;在块442,响应于从存储设备组120返回的该消息为“需要恢复”消息,在延迟预定的时间段之后,缓存设备110再次执行块420的确定和块430的发送操作。
在图7中示出的另一示例中,在块443,响应于从存储设备组120返回的该消息为“I/O完成”消息,缓存设备110将其数据标记为干净数据。
返回图4。在一些实施例中,在块410接收的I/O请求为读请求,预定条件还包括:(5)读请求的目标数据在缓存设备110中不存在。则在块430,缓存设备110可以响应于确定条件(1)、(2)和(5)均被满足(即读请求的目标数据在缓存设备110中不存在,或者说该I/O请求为缓存-未命中(cache-miss)读请求),而向存储设备组120发送恢复状态读请求。
与图7的示例类似,在块410接收的I/O请求为读请求的一些实施例中,方法400可以包括进一步的操作,以使得缓存设备110可以根据从存储设备组120返回的不同消息而执行不同的处理。作为示例,该方法400可以进一步包括:缓存设备110响应于从存储设备组120返回“需要恢复”消息,而将在块410接收的I/O请求添加到该缓存设备110的等待处理队列。替代地或者附加地,在另一实施例中,该方法400可以进一步包括:缓存设备110响应于从存储设备组120返回“I/O完成”消息,而将从存储设备组120读出的数据发送到主机。
图8示出根据被能公开的一个实施例的用于存储系统的另一方法800。该存储系统包括缓存设备和存储设备组。例如,该存储系统可以是图1所示的系统100。该方法由缓存设备(例如图1中的缓存设备110)执行。方法800可以被看作是方法400的一种示例实施方式。为了便于讨论,以下将参考图1所示的存储系统100来描述该方法800,然而应该理解本公开的实施例不限于此。
在图8的示例中,在存储设备组(例如,RAID组)120变为就绪时,缓存设备110检查存储设备组120是否为降级状态。如果存储设备组120不是降级状态、或者缓存设备110中没有脏数据,则不在缓存层110执行特殊操作。否则,缓存设备110可以使用本公开中提出的新的I/O操作(恢复状态写)将脏数据清理到存储设备组120。并且,这时可以称缓存设备进入恢复BVA状态。在该状态下,缓存设备110可以按照图8所述的过程清理脏数据。
具体而言,在块810,缓存设备110分割恢复状态I/O数据以保证单个恢复状态I/O请求适合RAID组的条带范围。在块820,缓存设备确定其是否处于恢复BVA状态(即,存储设备组120处于降级状态、并且缓存设备110中有脏数据)。如果未处于恢复BVA状态,则该过程在块830结束;否则,缓存设备110可选地可以在块840进一步确定存储设备组120是否仍处于降级状态。如果确定存储设备组120脱离降级状态,则该过程在块830结束。之后缓存设备110可以,例如,根据传统的I/O(即正常I/O过程)执行写操作以清理数据。如果在块840确定存储设备组120仍处于降级状态,则缓存设备110在块850向存储设备组120发送恢复状态写请求。
在块860,缓存设备110确定是否从存储设备组120返回好状态,即I/O完成消息。如果确定I/O完成,意味着RIAD组120已经恢复了条带,并且脏数据已经被写入。这种情况下,缓存设备110在块870将数据标记为干净,并且在块830结束该过程。如果存储设备120没有返回好状态,而是返回例如“需要恢复”消息,则意味着在存储设备组120的条带中存在不一致,并且一些数据没有被存储设备组120恢复。这种情况下,缓存设备110可以在块880将该I/O延迟一段时间(例如,100ms到3m),之后返回块820再次进行尝试。
以上已经结合多个实施例描述了在缓存设备侧通过新提出的I/O操作(恢复状态读和恢复状态写)来安全地执行I/O,以避免数据丢失的方法。在一些实施例中,当处于恢复状态时,如果缓存设备中存在足够的存储器,则其可以将数据拷贝到该存储器并且向主机返回OK。该数据将被标记为脏,并且随后缓存设备可以使用恢复写操作将该数据清理到RAID组。如果没有足够的存储器,则可以使I/O在缓存设备的等待队列中等待。在另一些实施例中,缓存设备接收到读请求。该读请求的目标数据在缓存设备中不存在匹配,则缓存设备可以使用恢复读请求将I/O发送到RAID组。如果RAID组返回消息指示好状态(即I/O完成),则缓存设备将数据返回主机。如果RAID组返回消息指示需要恢复状态,则缓存设备可以使I/O在等待队列中等待。
应该注意,缓存设备的恢复BVA状态是临时状态。如果没有主机I/O被发送到缓存设备并且缓存设备没有将脏数据全部成功清理,则该缓存设备将被保持在该状态。而在以下条件中的任意条件被满足时,缓存设备将离开该状态:离线驱动器再次返回在线状态、缓存的等待队列非空(意味着具有在等待的主机I/O),并且LUN离线抖动容忍时间定时器(debounce timer)过期。在离开该状态时,缓存设备可以回退到,例如,传统的实现方式,以处理正在等待的I/O请求和脏数据,然而本公开的实施例不对此进行限制。
以下结合附图9来描述根据本公开的实施例的在存储系统中的存储设备组处的方法900。该存储系统包括缓存设备和存储设备组。例如,该存储系统可以是图1所示的系统100。该存储设备组可以是例如图1中的存储设备组120,并且可以是(但不限于)RAID组。为了便于讨论,以下将参考图1所示的存储系统100来描述该方法,然而应该理解本公开的实施例不限于此。
如图9所示,在块910,存储设备组120从缓存设备110接收恢复状态I/O请求。该恢复状态I/O请求可以是,例如,恢复状态读请求或者恢复状态写请求。如前结合方法400和800所述,不同于传统I/O请求,该恢复状态I/O请求允许存储设备组120返回需要恢复消息以指示其处于需要恢复的状态。
在块920,响应于所接收的恢复状态I/O请求,存储设备组120确定预定条件是否被满足,该预定条件至少包括:其自身处于降级状态。该降级状态例如是由于存储设备组120中一个或者多个盘尚未在线而导致的。在块930,响应于确定预定条件未被完全满足(例如该存储设备组120未处于降级状态),存储设备组120向缓存设备110返回消息以指示该恢复状态I/O请求为无效请求。
该方法使得仅在预定条件被满足(例如,存储设备组处于降级状态)的情况下处理新的I/O操作。
在一些实施例中,例如为了能够在存储设备组120中使用BVA技术,存储设备组120可以要求接收的I/O请求仅涉及存储设备组120中的单个条带。因此,在一些实施例中,预定条件还包括:接收的恢复状态I/O请求仅涉及存储设备组中的单个条带。例如,在块930,响应于接收的恢复状态I/O请求针对存储设备组120中的多个条带,存储设备组120可以向缓存设备110返回消息以指示该恢复状态I/O请求为无效请求。
在块920确定预定条件被完全满足时,存储设备组120可以在块925确定接收的恢复状态I/O请求为读请求还是写请求,并且根据该确定而执行不同的操作(例如图9中以A和B分支表示)。
在一些实施例中,在块925确定接收的I/O请求为恢复状态读请求。这种情况下,作为示例,存储设备组120可以执行图10中的操作940,但是,应该理解,存储设备组120不限于以图10所示的特定实施方式来处理恢复状态读请求。在图10的示例中,在块941,存储设备组120步确定接收的恢复状态读请求是否触及存储设备组120中的降级存储设备。响应于确定恢复状态读请求不触及降级存储设备,存储设备组120可以在块942直接读取数据,并且在块943向缓存设备110发送所读取的数据和I/O完成消息。
另一方面,响应于在块941中确定恢复状态读请求触及降级存储设备,存储设备组120在块944从其中的所有非降级存储设备中读取数据。在块945,基于所读取的数据来检验存储设备组120中被该读请求所针对的条带是否一致(即,是否具有不完全的写)。
如果在块945确定该条带是一致的,在块946,存储设备组120可以基于所读取的数据恢复降级存储设备的数据,并且在块947向缓存设备110发送经恢复的数据和I/O完成消息。另一方面,响应于在块945确定所述条带不一致,存储设备组120可以在块948向缓存设备110返回需要恢复消息。
在一些实施例中,在块925确定接收的I/O请求为恢复状态写请求。这种情况下,作为示例,存储设备组120可以执行图11中的操作950,但是,应该理解,存储设备组120不限于以图11所示的特定实施方式来处理恢复状态写请求。在图11的示例中,在块951,存储设备组120从其中的所有非降级存储设备中读取数据。在块952,基于所读取的数据来检验存储设备组120中的被该写请求所针对的条带是否一致(即,是否具有不完全的写)。在块953,响应于确定所述条带是一致的,存储设备组120向其中的存储设备写入数据。在块954,存储设备组120将该条带标记为“需要重建”,并且在块955,向缓存设备110返回I/O完成消息。
另一方面,响应于在块952中确定所述条带不一致(即,具有不完全的写,导致有些盘具有新数据而有些盘具有旧数据),存储设备组120可以在块956向缓存设备110返回“需要恢复”消息,同时避免将该条带标记为“需要重建”。避免将该条带标记为“需要重建”的一个原因是,将条带标记为“需要重建”将导致向盘发送写操作码,而导致如图3所示的数据丢失。在本公开的实施例中,在新提出的恢复状态写操作中,保证在返回“需要恢复”状态时,不发生媒体修改操作,从而避免数据丢失。
以下参考附图12来描述根据本公开的实施例的示例存储系统1200的结构。该存储系统1200包括缓存设备1210、存储设备组1220和控制器1230。该控制器1230可以被配置为促使缓存设备1210执行根据本公开的实施例的方法,例如方法400或者800。并且该控制器1230可以被配置为促使存储设备组1220执行根据本公开的实施例的方法,例如方法900。尽管图12中仅示出单个缓存设备、存储设备组和控制器,应该理解,存储系统1200可以包括任何数目的上述设备。例如,存储系统1220中可以包括多个控制器1230,分别控制缓存设备1210和存储设备组1220的操作,以执行方法400/800/900的一部分或者全部操作。在一些实施例中,控制器1230可以耦合到缓存设备1210和/或者存储设备组1220。在另一些实施例中,控制器1230可以作为缓存设备1210或者存储设备组1230的一部分。
控制器1230可以通过加载/运行计算机程序指令1240来执行各种适当的动作和处理。例如,该计算机程序指令1240可以包括用于支持本公开的实施例提出的新的I/O请求和响应的操作码,促使缓存设备1210执行方法400或者800,以及/或者,促使存储设备组1220执行方法900。控制器1230可以包括但不限于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。
本公开的实施例可以被用于缩减数据丢失窗口,减少或者避免数据丢失。在一些实施例中,提出新的I/O操作,用以在RAID组变为就绪而其中有些盘临时离线时进行安全的读/写。此外,本公开的一些实施例可以在当前的RAID技术中实现,即能够和现有的RAID技术结合使用。
应该理解,尽管一些实施例中的操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或相继顺序完成,或者必须执行所有图示的操作以获取期望结果。例如,图8中的多个确定操作(例如块820和840的操作)的顺序可以互换。此外,在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为是针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。
另外,本领域技术人员将容易地认识到,上述各种方法中的块或者操作可以通过编程的计算机来执行。在本公开中,一些实施例还意在涵盖程序存储系统,例如,数字数据存储介质,这是机器或计算机可读的并且编码机器可执行或计算机可执行的指令程序,其中,所述指令执行上述方法的一些或所有步骤。程序存储系统可以是,例如,数字存储器、诸如磁盘和磁带的磁存储介质、硬盘驱动器或光学可读数字数据存储介质。该实施例还意在涵盖编程为执行所述上述方法的步骤的计算机。
例如,在一些实施例中,提供计算机可读存储介质。该计算机可读存储介质具有存储在其中的程序代码,并且该程序代码在由装置(例如图1中的缓存设备110,或者图12中的缓存设备1210、或者图12中的缓存设备1210和控制器1230的组合)执行时促使该装置执行根据本公开的实施例的方法,例如方法400或者800。例如,用于支持本公开新提出的I/O操作的程序可以作为新的I/O操作码被存储于计算机可读介质中,并且缓存设备1210可以调用该操作码以执行方法400或者800。类似地,存储设备组1220可以单独该操作码以执行方法900。
在另一些实施例中,提供另一计算机可读存储介质。该计算机可读存储介质具有存储在其中的程序代码,并且该程序代码在由装置(例如图1中的存储设备组110,或者图12中的存储设备组1220、或者图10中的存储设备组1220和控制器1230的组合)执行时促使该装置执行根据本公开的实施例的方法,例如方法900。
另外,本领域技术人员应当理解,说明书和附图仅仅说明本公开的实施例的原理。因此,应当理解,本领域的技术人员将能够设计出各种布置,虽然这里没有明确地描述或示出,但是该布置体现本公开的实施例的原理并且被包括在本公开的实施例的精神和范围内。此外,这里阐述的所有示例主要旨在明确仅用于教导目的,以帮助读者理解本公开的实施例的原理和发明人贡献的用于促进本领域的概念,并且应被解释为不限于这些具体阐释的示例和条件。而且,这里阐述本公开的实施例的原理、方面和实施例的所有阐述及其具体示例也意在包含其等同物。

Claims (21)

1.一种用于存储系统的方法,包括:
在所述存储系统的缓存设备处,
从主机接收针对所述存储系统的输入/输出(I/O)请求;
响应于所接收的所述I/O请求,
确定预定条件是否被满足,所述预定条件至少包括:
所述存储系统刚从硬件故障恢复,以及
所述存储系统中的存储设备组处于就绪但降级的状态;以及
响应于确定所述预定条件均被满足,向所述存储设备组发送恢复状态I/O请求,以允许所述存储设备组返回需要恢复消息,指示所述存储设备组处于需要恢复的状态。
2.根据权利要求1所述的方法,进一步包括:
响应于确定所述预定条件中的至少一个预定条件未被满足,向所述存储设备组发送正常I/O请求。
3.根据权利要求1所述的方法,其中所述I/O请求为写请求,并且所述预定条件还包括所述缓存设备中存在脏数据。
4.根据权利要求3所述的方法,进一步包括:
响应于从所述存储设备组接收到所述需要恢复消息,在延迟预定的时间段之后,再次执行所述确定和所述发送。
5.根据权利要求3所述的方法,进一步包括:
响应于从所述存储设备组接收到I/O完成消息,将所述缓存设备中的数据标记为干净数据。
6.根据权利要求1所述的方法,其中所述I/O请求为写请求,并且所述预定条件还包括所述缓存设备中具有足够的存储空间,并且其中向所述存储设备组发送恢复状态I/O请求包括:
响应于所述预定条件均被满足,
将所述写请求所针对的数据写入所述存储空间;
将所述数据标记为脏数据;以及
向所述存储设备组发送恢复状态写请求。
7.根据权利要求6所述的方法,进一步包括:
响应于确定所述缓存设备中不具有足够的存储空间,将接收的所述I/O请求添加到所述缓存设备的等待处理队列。
8.根据权利要求1所述的方法,其中所述I/O请求为读请求,并且所述预定条件还包括:所述读请求的目标数据在所述缓存设备中不存在。
9.根据权利要求8所述的方法,进一步包括:
响应于从所述存储设备组接收到所述需要恢复消息,将接收的所述I/O请求添加到所述缓存设备的等待处理队列。
10.根据权利要求8所述的方法,进一步包括:
响应于从所述存储设备组接收到I/O完成消息,将从所述存储设备组读出的数据发送到所述主机。
11.根据权利要求1-10中任一项所述的方法,其中向所述存储设备组发送恢复状态I/O请求包括:
确定所述恢复状态I/O请求是否涉及所述存储设备组中的多个条带;
响应于确定所述恢复状态I/O请求涉及所述存储设备组中的多个条带,
将所述恢复状态I/O请求分割成多个恢复状态I/O请求,使得所述多个恢复状态I/O请求中的每个恢复状态I/O请求仅涉及所述存储设备组中的单个条带;以及
向所述存储设备组发送所述多个恢复状态I/O请求。
12.一种用于存储系统的方法,包括:
在所述存储系统的存储设备组处,
从所述存储系统的缓存设备接收恢复状态输入/输出(I/O)请求,所述恢复状态I/O请求允许所述存储设备组返回需要恢复消息以指示所述存储设备组处于需要恢复的状态;
响应于所接收的所述恢复状态I/O请求,确定预定条件是否被满足,所述预定条件至少包括:所述存储设备组处于降级状态;以及
响应于确定所述预定条件未被完全满足,向所述缓存设备发送消息以指示所述恢复状态I/O请求为无效请求。
13.根据权利要求12所述的方法,其中所述预定条件还包括:所述恢复状态I/O请求仅涉及所述存储设备组中的单个条带。
14.根据权利要求12或者13所述的方法,其中所述恢复状态I/O请求为恢复状态读请求,并且所述方法进一步包括:
响应于确定所述预定条件被完全满足,
确定所述恢复状态读请求是否触及所述存储设备组中的降级存储设备;以及
响应于确定所述恢复状态读请求不触及所述降级存储设备,
从所述存储设备组中读取数据;以及
向所述缓存设备发送所读取的数据和I/O完成消息。
15.根据权利要求14所述的方法,进一步包括:
响应于确定所述恢复状态读请求触及所述降级存储设备,
从所述存储设备组中的所有非降级存储设备中读取数据,
基于所读取的数据来检验所述存储设备组中被所述读请求所涉及的条带是否是一致的;以及
响应于确定所述条带是一致的,
基于所读取的数据恢复所述降级存储设备的数据;以及
向所述缓存设备发送经恢复的数据和I/O完成消息。
16.根据权利要求15所述的方法,进一步包括:
响应于确定所述条带不一致,向所述缓存设备发送需要恢复消息指示所述存储设备组处于需要恢复的状态。
17.根据权利要求12或者13所述的方法,其中所述恢复状态I/O请求为恢复状态写请求,并且所述方法进一步包括:
响应于确定所述预定条件被完全满足,
从所述存储设备组中的所有非降级存储设备中读取数据,
基于所读取的数据来检验所述存储设备组中的被所述写请求所涉及的条带是否是一致的;以及
响应于确定所述条带是一致的,
向所述存储设备组中的存储设备写入数据;
将所述条带标记为需要重建;以及
向所述缓存设备发送I/O完成消息。
18.根据权利要求17所述的方法,进一步包括:
响应于确定所述条带不一致,向所述缓存设备发送需要恢复消息指示所述存储设备组处于需要恢复的状态,同时避免将所述条带标记为需要重建。
19.一种存储系统,包括:
缓存设备,
存储设备组,和
控制器,所述控制器被配置为:
促使所述缓存设备执行根据权利要求1到11中任一项所述的方法,以及
促使所述存储设备组执行根据权利要求12到18中任一项所述的方法。
20.一种计算机可读存储介质,具有存储在其中的程序代码,所述程序代码在由装置执行时促使所述装置执行根据权利要求1-11中任一权利要求所述的方法。
21.一种计算机可读存储介质,具有存储在其中的程序代码,所述程序代码在由装置执行时促使所述装置执行根据权利要求12-18中任一权利要求所述的方法。
CN201810050580.3A 2018-01-18 2018-01-18 存储系统以及相应的方法和计算机可读介质 Active CN110058791B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810050580.3A CN110058791B (zh) 2018-01-18 2018-01-18 存储系统以及相应的方法和计算机可读介质
US16/249,149 US10983874B2 (en) 2018-01-18 2019-01-16 Processing a recover state input/output request

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810050580.3A CN110058791B (zh) 2018-01-18 2018-01-18 存储系统以及相应的方法和计算机可读介质

Publications (2)

Publication Number Publication Date
CN110058791A CN110058791A (zh) 2019-07-26
CN110058791B true CN110058791B (zh) 2022-05-10

Family

ID=67213968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810050580.3A Active CN110058791B (zh) 2018-01-18 2018-01-18 存储系统以及相应的方法和计算机可读介质

Country Status (2)

Country Link
US (1) US10983874B2 (zh)
CN (1) CN110058791B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413218B (zh) * 2018-04-28 2023-06-23 伊姆西Ip控股有限责任公司 用于存储系统中的故障恢复的方法、装置和计算机程序产品
CN111858130A (zh) 2019-04-29 2020-10-30 伊姆西Ip控股有限责任公司 用于拆分盘集的方法、设备和计算机程序产品
CN111240903A (zh) * 2019-11-04 2020-06-05 华为技术有限公司 数据恢复方法及相关设备
CN113031850A (zh) 2019-12-24 2021-06-25 伊姆西Ip控股有限责任公司 用于数据处理的方法、电子设备和计算机程序产品
US11163657B2 (en) * 2020-02-13 2021-11-02 EMC IP Holding Company LLC Method and apparatus for avoiding redundant data recovery
CN113590016A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于管理存储盘的方法、电子设备和计算机程序产品
CN113821377B (zh) * 2021-08-27 2023-12-22 济南浪潮数据技术有限公司 一种分布式存储集群的数据恢复方法、系统及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
DE69621214T2 (de) * 1996-01-31 2002-12-05 Toshiba Kawasaki Kk Ein-Ausgabekontrollverfahren mit Wiederherstellungsfunktion
US6167485A (en) 1997-12-31 2000-12-26 Emc Corporation On-line data verification and repair in redundant storage systems
US6195761B1 (en) 1997-12-31 2001-02-27 Emc Corporation Method and apparatus for identifying and repairing mismatched data
US6233696B1 (en) 1997-12-31 2001-05-15 Emc Corporation Data verification and repair in redundant storage systems
US6546500B1 (en) * 1999-03-19 2003-04-08 Fujitsu Limited Computer, computer network system, and recording medium
JP2001344076A (ja) * 2000-06-05 2001-12-14 Fujitsu Ltd ディスクアレイ装置
JP2002108573A (ja) * 2000-09-28 2002-04-12 Nec Corp ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
US7664991B1 (en) * 2002-12-17 2010-02-16 Symantec Operating Corporation System and method for distributed file system I/O recovery
US7275179B1 (en) * 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
TWI316188B (en) * 2006-05-17 2009-10-21 Ind Tech Res Inst Mechanism and method to snapshot data
US7647526B1 (en) * 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7831750B2 (en) * 2007-01-31 2010-11-09 Hewlett-Packard Development Company, L.P. Method, apparatus and software for processing input or output requests for a mirrored storage volume
US9442748B2 (en) * 2010-03-17 2016-09-13 Zerto, Ltd. Multi-RPO data protection
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8930619B2 (en) * 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9021296B1 (en) * 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US9298555B1 (en) 2013-12-27 2016-03-29 Emc Corporation Managing recovery of file systems
US10528429B1 (en) 2014-03-31 2020-01-07 EMC IP Holding Company LLC Managing recovery of file systems
US9367395B1 (en) 2014-03-31 2016-06-14 Emc Corporation Managing data inconsistencies in storage systems
US9558068B1 (en) 2014-03-31 2017-01-31 EMC IP Holding Company LLC Recovering from metadata inconsistencies in storage systems
US10684927B2 (en) * 2014-07-29 2020-06-16 Hewlett Packard Enterprise Development Lp Methods and systems for storing information that facilitates the reconstruction of at least some of the contents of a storage unit on a storage system
US9842117B1 (en) 2014-12-29 2017-12-12 EMC IP Holding Company LLC Managing replication of file systems
US9952974B2 (en) * 2016-06-07 2018-04-24 International Business Machines Corporation Preservation of modified cache data in local non-volatile storage following a failover
US20180067854A1 (en) * 2016-09-07 2018-03-08 Intel Corporation Aggressive write-back cache cleaning policy optimized for non-volatile memory
US10152381B1 (en) 2017-04-27 2018-12-11 EMC IP Holding Company LLC Using storage defragmentation function to facilitate system checkpoint
US10235066B1 (en) 2017-04-27 2019-03-19 EMC IP Holding Company LLC Journal destage relay for online system checkpoint creation
US10761937B2 (en) * 2017-09-21 2020-09-01 Western Digital Technologies, Inc. In-field adaptive drive recovery
US10592165B1 (en) * 2018-02-02 2020-03-17 EMC IP Holding Company LLC Method, apparatus and computer program product for queueing I/O requests on mapped RAID
CN110413218B (zh) * 2018-04-28 2023-06-23 伊姆西Ip控股有限责任公司 用于存储系统中的故障恢复的方法、装置和计算机程序产品
CN111124262B (zh) * 2018-10-31 2023-08-22 伊姆西Ip控股有限责任公司 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质

Also Published As

Publication number Publication date
US20190220372A1 (en) 2019-07-18
CN110058791A (zh) 2019-07-26
US10983874B2 (en) 2021-04-20

Similar Documents

Publication Publication Date Title
CN110058791B (zh) 存储系统以及相应的方法和计算机可读介质
US9990256B1 (en) Storage management system and method
US9678686B2 (en) Managing sequentiality of tracks for asynchronous PPRC tracks on secondary
US7966463B2 (en) Asynchronous remote copy system and control method for the same
CN108351819B (zh) 动态调整存储设备的错误校正作用等级
DK3179359T3 (en) PROCEDURE FOR SENDING DATA, PROCEDURE FOR RECEIVING DATA AND STORAGE UNIT
US9946655B2 (en) Storage system and storage control method
US9135119B1 (en) System and method for data management
CN110413205B (zh) 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质
US7587630B1 (en) Method and system for rapidly recovering data from a “dead” disk in a RAID disk group
CN110413218B (zh) 用于存储系统中的故障恢复的方法、装置和计算机程序产品
WO2015058542A1 (zh) 独立冗余磁盘阵列的重构方法及装置
US10664189B2 (en) Performance in synchronous data replication environments
US7653831B2 (en) Storage system and data guarantee method
CN111831476A (zh) 控制raid系统的操作的方法
JP6540334B2 (ja) システム、情報処理装置、および情報処理方法
KR20220008237A (ko) 임시 스토리지에 대한 데이터 복원을 위한 시스템 및 장치
CN106776142B (zh) 一种数据存储方法以及数据存储装置
US20150019822A1 (en) System for Maintaining Dirty Cache Coherency Across Reboot of a Node
US10146452B2 (en) Maintaining intelligent write ordering with asynchronous data replication
CN110389713B (zh) 数据同步方法、设备和计算机可读介质
CN114385412A (zh) 存储管理方法、设备和计算机程序产品
US9830094B2 (en) Dynamic transitioning of protection information in array systems
WO2016006108A1 (ja) ストレージおよびその制御方法
JP4831093B2 (ja) ディスクアレイシステム、ディスクアレイ制御方法およびディスクアレイ制御プログラム

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