CN110413439B - 用于检测数据的不完整写入的方法、设备和计算机可读介质 - Google Patents

用于检测数据的不完整写入的方法、设备和计算机可读介质 Download PDF

Info

Publication number
CN110413439B
CN110413439B CN201810399068.XA CN201810399068A CN110413439B CN 110413439 B CN110413439 B CN 110413439B CN 201810399068 A CN201810399068 A CN 201810399068A CN 110413439 B CN110413439 B CN 110413439B
Authority
CN
China
Prior art keywords
raid
write
data
flag
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
CN201810399068.XA
Other languages
English (en)
Other versions
CN110413439A (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 CN201810399068.XA priority Critical patent/CN110413439B/zh
Priority to US16/223,843 priority patent/US11093331B2/en
Publication of CN110413439A publication Critical patent/CN110413439A/zh
Application granted granted Critical
Publication of CN110413439B publication Critical patent/CN110413439B/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/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the 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/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/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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/061Improving I/O performance
    • 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/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/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本公开的实施例涉及一种用于检测数据的不完整写入的方法、设备和计算机程序产品。该方法包括获得与独立盘冗余阵列(RAID)中的校验盘中的扇区相关联的元数据,其中元数据至少包括顺序标记和部分写入标志,顺序标记随着对扇区所属的条带的写操作而变化,并且部分写入标志指示条带是否被部分写入。该方法还包括基于元数据来确定RAID中是否存在数据的不完整写入,并且方法还包括响应于确定RAID中存在数据的不完整写入而在RAID中重建至少一个盘。本公开的实施例通过在RAID的扇区的元数据中增加顺序标记和部分写入标志,能够更准确地检测数据的不完整写入,由此提高RAID的可靠性。

Description

用于检测数据的不完整写入的方法、设备和计算机可读介质
技术领域
本公开的实施例总体上涉及数据存储领域,并且更具体地涉及用于检测数据的不完整写入的方法、设备以及计算机程序产品。
背景技术
独立盘冗余阵列(RAID)是一种数据备份技术,其能够把多块独立的物理盘按不同的方式组合起来形成一个盘的阵列(即,逻辑盘),从而提供比单个盘更高的存储性能和更高的可靠性能。为了在RAID中的某个盘发生故障时对数据进行恢复,RAID中通常设置一个奇偶校验信息块(例如RAID 5)或多个奇偶校验信息块(例如RAID6)。
在RAID技术中,在写入条带时,可以同时访问多个盘。由于硬件故障或软件错误,可能只有部分数据被写入盘,这将导致条带数据不一致,称之为“不完整写入”(incompletewrite)。一旦发生不完整写入,RAID将可能丢失冗余数据。如果故障发生在不一致的条带上,则RAID组可能无法恢复数据。如果RAID组无法及时检测到不完整写入的条带,将导致数据损坏。
发明内容
本公开的实施例提供了一种用于检测数据的不完整写入的方法、设备和计算机程序产品。
在本公开的一个方面,提供了一种用于检测数据的不完整写入的方法。该方法包括:获得与RAID中的校验盘中的扇区相关联的元数据,其中元数据至少包括顺序标记和部分写入标志,顺序标记随着对所述扇区所属的条带的写操作而变化,部分写入标志指示条带是否被部分写入;基于元数据,确定RAID中是否存在数据的不完整写入;以及响应于确定RAID中存在数据的不完整写入,在RAID中重建至少一个盘。
在本公开的另一方面,提供了一种用于检测数据的不完整写入的设备。该设备包括处理单元以及存储器,其中存储器被耦合至处理单元并且存储有指令。所述指令在由处理单元执行时执行以下动作:获得与RAID中的校验盘中的扇区相关联的元数据,其中元数据至少包括顺序标记和部分写入标志,顺序标记随着对所述扇区所属的条带的写操作而变化,部分写入标志指示条带是否被部分写入;基于元数据,确定RAID中是否存在数据的不完整写入;以及响应于确定RAID中存在数据的不完整写入,在RAID中重建至少一个盘。
在本公开的又一方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,所述计算机可执行指令在被执行时使得计算机执行根据本公开的实施例的方法或过程。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。本发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的各个实施例的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的附图标记通常代表相同的元素。
图1示出了RAID中的盘中的传统扇区的传统结构的示意图;
图2示出了根据本公开的实施例的RAID中的盘中的扇区的结构的示意图;
图3示出了根据本公开的实施例的用于检测数据的不完整写入的方法的流程图;
图4A示出了根据本公开的实施例的扇区的元数据的示意图;
图4B示出了根据本公开的实施例的在全条带写入时元数据的更新的示意图;
图4C示出了根据本公开的实施例的在条带的部分写入时元数据的更新的示意图;
图4D示出了根据本公开的实施例的在条带的部分写入时元数据的更新的另一示意图;
图5示出了根据本公开的实施例的在写入数据时更新元数据的过程的示意图;
图6示出了根据本公开的实施例的用于检测数据的不完整写入的过程的示意图;以及
图7示出了可以用来实施本公开的实施例的设备的示意性块图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的一些具体实施例,然而应该理解,可以以各种形式实现本公开,而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象,除非明确指示不同。
传统地,在扇区中设置元数据来检测和恢复数据的不完整写入。例如,图1示出了RAID中的盘中的传统扇区100的传统结构的示意图。扇区100例如可以为520字节,其中512字节存储用户数据110,而8字节存储元数据120。如图1所示,元数据120被划分成四个部分:2字节的校验和121、2字节的逻辑块地址(LBA)标记、2字节的写入标记123、以及2字节的时间戳124。
校验和121是512字节用户数据的异或运算的值,其可以用于检查数据本身是否正确。LBA标记122是扇区的LBA的异或运算的值,其可以用于检查RAID组是否读取正确的扇区。写入标记123指示扇区中的数据写入,每个用户盘具有对应的写入标记比特,如盘0可以具有标记比特0,盘1可以具有标记比特1。当全条带写入时,所有盘上的写入标记将被设置为0;而当部分写入时,被写入的盘上的对应的写入标记比特将被反转,而校验盘的写入标记是所有用户盘的写入标记的或运算的值。全条带写入表示用户数据涉及所有的用户盘,而部分写入表示用户数据仅涉及一部分的用户盘。时间戳124用于表示时间的标记,当全条带写入时,所有盘上的时间戳将被设置为一个随机值;而当部分写入时,数据被写入的用户盘上的时间戳将被设置为一个固定值,例如0X7FFF。
图1中的元数据120的传统设计虽然能够检测到一部分的不完整写入,但是仍然存在着一些问题。例如,由于写入标记在部分写入时被反转,在两次写入而反转两次之后,其将变回原始值,因而写入标记保持不变,不能检测到某些硬件问题。此外,对于两个以上的校验盘的RAID,传统方法不能检测哪个校验盘具有更新的数据,进而可能导致一些数据损坏。另外,传统的元数据的数据结构中时间戳为随机取值,因而其不能检测出盘上是新数据还是老数据。因此,传统的不完整写入检测方法的准确性和可靠性较差。
为了提高不完整写入检测的准确性和可靠性,本公开的实施例提出了一种用于检测数据的不完整写入的新方案。本公开的实施例通过在RAID的扇区的元数据中增加顺序标记和部分写入标志,能够更准确地检测到数据的不完整写入,由此提高整个RAID的可靠性。
以下参考图2至图7来说明本公开的基本原理和若干示例实现方式。应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制本公开的范围。
图2示出了根据本公开的实施例的RAID中的盘中的扇区200的示例结构的示意图。如图2所示,扇区200例如也可以为520字节,其包括512字节的用户数据210以及8字节的元数据220。在一些实施例中,元数据220可以被划分成5个部分:2字节的校验和221、1字节的LBA标记222、15比特的写入标记223、1比特的部分写入标志224、以及3字节的顺序标记,其中顺序标记包括第一部分顺序标记225-1以及第二部分顺序标记225-2,统称为顺序标记225。应当理解,以上仅示出了元数据220中的各个部分的示例划分,元数据220可以具有更多或更少的部分,并且每个部分可以具有更多或更少的字节或比特。
校验和221是512字节的用户数据的异或运算的值,其可以用于检查数据本身是否正确。通过校验和可以检测1比特的校验和错误或者多比特的校验和错误,如果某个盘涉及多比特校验和错误,则该盘需要被离线检查。LBA标记222可以使用例如8位的循环冗余校验算法而被生成。
写入标记223指示扇区中的数据写入,每个用户盘具有对应的写入标记比特,如盘0具有标记比特0,盘1具有标记比特1。当全条带写入时,所有盘上的写入标记将被设置为0;而当部分写入时,被写入的盘上的对应的写入标记比特将被反转,而校验盘的写入标记是所有用户盘的或运算的值。15比特的写入标记223能够最多支持16个盘,诸如15个用户盘和1个校验盘。
部分写入标志224指示扇区所属的条带是否被部分写入。当全条带写入时,所有盘上的部分写入标志将被设置为0;而当部分写入时,数据被写入的用户盘中的扇区中的部分写入标志被设置为1,而未被写入的用户盘中的扇区的部分写入标志保持不变。校验盘中的部分写入标志为用户盘的部分写入标志的或运算的值。
顺序标记225随着对所述扇区所属的条带的写操作而变化,其初始取值例如可以被设置为0x7FFF,扇区每次被写入时,校验盘中的顺序标记将相应递增。当全条带写入时,整个条带中是顺序标记增加到相同的值,当部分写入时,被写入的用户盘的顺序标记增加到与校验盘的顺序标记相同的值。当顺序标记的值达到预定阈值时(例如0x7FFFFF),将执行全条带验证并且将所有盘的顺序标记重置为0x8000。
不同于扇区中的传统元数据结构,本公开的实施例提出了一种针对扇区的新的元数据结构。通过在RAID的扇区的元数据中增加顺序标记和部分写入标志,能够更准确地检测数据的不完整写入,由此提高RAID的可靠性。
图3示出了根据本公开的实施例的用于检测数据的不完整写入的方法300的流程图。在302,获得与RAID中的校验盘中的扇区相关联的元数据,其中元数据至少包括顺序标记和部分写入标志,顺序标记随着对所述扇区所属的条带的写操作而变化,部分写入标志指示条带是否被部分写入。RAID可以包括多个用户盘和一个或多个校验盘。在一些实施例中,元数据可以被包括在扇区中,例如520字节的扇区可以设置8字节的元数据。例如,可以获得图2中所示出的元数据220,然而,应当理解所获得的元数据中也可以不包括图2中所示出的校验和以及LBA标记。
在304,基于元数据确定是否存在数据的不完整写入。例如,通过检查元数据之间是否满足一定的条件来检测RAID中是否存在不完整的写入。以下参考图6描述了如何基于元数据确定是否存在数据的不完整写入的示例实现。
在306,响应于确定存在数据的不完整写入,在RAID中重建至少一个盘。例如,当检测到RAID中存在数据的不完整写入时,基于不完整写入的故障类型,确定是重建校验盘还是用户盘,并且确定是否需要重新写入数据。以下参考图6描述了在RAID中重建哪个盘的示例实现。因此,本公开的实施例基于包括顺序标记和部分写入标志的元数据,能够更准确地检测数据的不完整写入。
图4A示出了根据本公开的实施例的扇区的元数据的示意图400。图4A中所示出的RAID 5包括四个用户盘410、411、412、413以及一个校验盘414。RAID中的各个盘的校验和以及LBA标记分别根据扇区的数据和LBA而被确定。写入标记根据写入情况而被更新,每个用户盘的写入标记具有对应于其位置的两种取值,即用户盘410的写入标记的取值为0x0000或0x0001,用户盘411的写入标记的取值为0x0000或0x0002,用户盘412的写入标记的取值为0x0000或0x0004,用户盘413的写入标记的取值为0x0000或0x0008,校验盘414的取值为四个用户盘的写入标记的或运算值。
图4B示出了根据本公开的实施例的在全条带写入时元数据的更新的示意图430。如图4B所示,当全条带写入时,所有盘的写入标记的被设置为0x0000,所有盘的顺序标记递增为0x8000,并且所有盘的部分写入标志被设置为0。此外,由于扇区中的数据发生了变化,其校验和也相应地被更新。
图4C示出了根据本公开的实施例的在条带的部分写入时元数据的更新的示意图460。由于部分写入470和471只涉及条带中的用户盘410和411中的扇区,因而用户盘410和411中的扇区的写入标记的相应位置的值被反转,使得用户盘410和411中的写入标记发生变化,校验盘414中的写入标记相应地也发生变化。用户盘410和411以及校验盘414的顺序标记递增为0x8001。用户盘410和411以及校验盘414的部分写入标志被更新为1。此外,由于部分盘中的扇区中的数据发生了变化,其校验和也相应地更新。
图4D示出了根据本公开的实施例的在条带的部分写入时元数据的更新的另一示意图490。由于部分写入491、492以及493只涉及条带中的用户盘411、412和413中的扇区,因而用户盘411、412和413中的写入标记的相应位置的值被反转,使得用户盘411、412和413中的写入标记发生变化,校验盘414中的写入标记相应地发生变化。用户盘411、412和413以及校验盘414的顺序标记递增为0x8002。用户盘411、412和413以及校验盘414的部分写入标志被更新或者保持为1。此外,由于部分盘中的扇区中的数据发生了变化,其校验和也相应地更新。
图5示出了根据本公开的实施例的在写入数据时更新元数据的过程500的示意图。应当理解,过程500可以以上参考图3所描述的方法300中的动作302之前执行。
在502,获得校验盘的顺序标记。在504,判断顺序标记是否达到预定阈值,例如0x7FFFFF。如果顺序标记达到预定阈值,则在506,获得所有盘的元数据,并且在508将所有盘的顺序标志重置为0x8000。接下来,在510将所有盘的写入标记设置为0x0000并且在512将所有盘的部分写入标志设置为0,然后在514将数据和元数据保存到盘中。
如果顺序标记没有达到预定阈值,则在516,递增顺序标记,例如递增1。在518,判断写操作是否针对全条带。如果是全条带写入,则在510将所有盘的写入标记设置为0x0000并且在512将所有盘的部分写入标志设置为0,然后在514将数据和元数据保存到盘中。如果不是全条带写入,而是部分写入,则在520,反转每个用户盘对应的写入标识值,并且相应地更新校验盘的写入标记,并且在522,将数据被写入的用户盘和校验盘的部分写入标志设置为1,然后在514将数据和元数据保存到盘中。
通过使用根据本公开的实施例生成的元数据,可以检测RAID中是否存在数据的不完整写入。此外,在检测RAID中的不完整写入的过程中,如果元数据不能满足以下8个规定,则说明存在数据的不完整写入。
规定1:如果元数据中的部分写入标志为0,则其写入标记也应为0。
规定2:用户盘的写入标记应当为0x0000或仅设置对应位置比特为1。例如,位置3的用户盘,其写入标记只能为0或0x0008。
规定3:校验盘的写入标记不应超过用户盘的数目。例如,如果存在4个用户磁盘,则校验盘的写入标记不应大于0xF(4比特)。
规定4:校验盘总是具有最大的顺序标记。
规定5:应该有至少一个用户盘具有与校验盘相同的顺序标记。
规定6:部分写入标志为0的盘应该具有最低的顺序标记。
规定7:部分写入标志为0的盘应该具有相同的顺序标记。
规定8:校验盘的写入标记应该是所有用户盘的写入标记的或运算的值。
其中规定1-3可以在每个盘上单独地进行检测,如果元数据不满足规定1-3,可能存在一些软件或硬件故障,盘中的数据应当被无效并且由其他盘进行恢复。规定4-8需要跨多个盘中的元数据的比较而被检测。
图6示出了根据本公开的实施例的用于将检测数据的不完整写入的过程600的示意图。应当理解,过程600可以以上参考图3所描述的方法300中的动作304和306的示例实现。
在602,获得RAID中某个条带的所有盘中的元数据,并且初始化用于定位存在不完整写入的盘的变量Wdiff,其具有与RAID中的盘对应个数的比特,每个位置的比特指示对应的盘的不完整写入。例如,如果盘0具有不完整写入,则Wdiff中的比特0的值将被设置为“1”。在604,判断校验盘是否具有最大的顺序标记。如果校验盘不具有最大的顺序标记,则说明目校验盘上存在不完整写入,因此在606重建校验盘,恢复校验盘中的数据并且重新执行写操作。
如果校验盘具有最大的顺序标记,则在608,判断是否某个用户盘也具有最大的顺序标记。如果没有任何用户盘具有最大的顺序标记,则说明数据仅被写入到校验盘,而没有被写入到用户盘,因此也需要在606重建校验盘,恢复校验盘中的数据并且重新执行写操作。如果存在某个或某些用户盘具有最大的顺序标记,则在610,对所有用户盘的写入标记进行或运算,并且在612将或运算的结果与校验盘的写入标记进行异或运算,然后将异或运算的结果存储到Wdiff。
接下来,在614,判断校验盘的部分写入标志是否为第二值(例如“0”)。如果校验盘的部分写入标志为第一值(例如“1”),则说明上一次是条带的部分写入而不是全条带写入,则在616确定Wdiff中的“1”的数目。如果校验盘的部分写入标志为第二值(例如“0”),则说明上一次是全条带写入,此时,所有盘的顺序标记应当相同,并且所有盘的部分写入标志应当为“0”。在618,在Wdiff中将具有不同的顺序标记的用户盘对应的位置设置为“1”,并且在620,在Wdiff中将部分写入标志为1的用户盘对应的位置也设置为1,然后在616,确定Wdiff中的“1”的数目。
在622,判断Wdiff中“1”的数目是否大于RAID中校验盘的数目。如果Wdiff中“1”的数目大于RAID中校验盘的数目,则无法直接恢复数据,需要在606重建校验盘,然后重新写入数据。如果Wdiff中“1”的数目小于等于RAID中校验盘的数目(在Wdiff中存在“1”的情况下),则可以重建Wdiff中的“1”所对应的用户盘,而不需要重新写入数据。应当理解,仅当Wdiff中存在“1”,才需要在RAID中重建盘,而如果Wdiff中不存在“1”,则说明RAID中不存在任何不完整写入,因而不需要重建任何盘。
图7示出了可以用来实施本公开的实施例的设备700的示意性块图。如图所示,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个方法或过程可由处理单元701执行。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法或过程中的一个或多个步骤或动作。
在一些实施例中,以上所描述的方法和过程可以被实现为计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,以及常规的过程式编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或块图中的一个或多个方块中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或块图中的一个或多个方块中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或块图中的一个或多个方块中规定的功能/动作。
附图中的流程图和块图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或块图中的每个方块可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方块中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方块实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,块图和/或流程图中的每个方块、以及块图和/或流程图中的方块的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (20)

1.一种用于检测数据的不完整写入的方法,包括:
获得与独立盘冗余阵列RAID中的校验盘中的扇区相关联的元数据,所述元数据至少包括顺序标记和部分写入标志,所述顺序标记随着对所述扇区所属的条带的写操作而变化,所述部分写入标志指示所述条带是否被部分写入;
基于所述元数据,确定所述RAID中是否存在数据的不完整写入;以及
响应于确定所述RAID中存在所述数据的所述不完整写入,在所述RAID中重建至少一个盘;
其中所述元数据还包括指示扇区中的数据写入的写入标记;
其中确定所述RAID中是否存在数据的不完整写入还包括:
响应于所述写入标记与所述RAID中的其他盘的其他写入标记之间的关系不满足预定条件,确定所述RAID中存在所述不完整写入的盘;并且
其中确定所述RAID中存在所述不完整写入的盘包括:
响应于所述部分写入标志为第一值,基于所述写入标记来确定所述RAID中存在所述不完整写入的第一盘;以及
响应于所述部分写入标志为第二值,基于所述写入标记、所述顺序标记以及所述部分写入标志来确定所述RAID中存在所述不完整写入的第二盘。
2.根据权利要求1所述的方法,其中确定所述RAID中是否存在数据的不完整写入还包括:
基于所述校验盘的所述顺序标记与所述RAID中的所述其他盘的顺序标记的比较,确定所述RAID中是否存在所述数据的所述不完整写入。
3.根据权利要求1所述的方法,所述元数据还包括所述扇区中的数据的校验和以及与所述扇区的逻辑块地址LBA相关联的LBA标记。
4.根据权利要求3所述的方法,其中确定所述RAID中是否存在数据的不完整写入还包括:
基于所述校验盘的所述写入标记与所述RAID中的所述其他盘的其他写入标记之间的所述关系,确定所述RAID中是否存在数据的不完整写入。
5.根据权利要求1所述的方法,其中在所述RAID中重建至少一个盘包括:
响应于存在所述不完整写入的盘的数目大于所述RAID中校验盘的数目,重建所述校验盘;以及
响应于存在所述不完整写入的盘的数目小于所述RAID中校验盘的数目,重建存在所述不完整写入的所述盘。
6.根据权利要求1所述的方法,还包括:
响应于数据被写入所述扇区,获得所述顺序标记;
响应于所述顺序标记达到预定阈值,重置所述顺序标记;以及
响应于所述顺序标记未达到所述预定阈值,递增所述顺序标记。
7.根据权利要求6所述的方法,还包括:
响应于所述数据被写入所述扇区,确定所述数据的写入是否涉及所述条带中的所有扇区;
响应于确定所述数据的写入未涉及所述条带中的所有扇区,将所述部分写入标志设置为所述第一值;以及
响应于确定所述数据的写入涉及所述条带中的所有扇区,将所述部分写入标志设置为所述第二值。
8.根据权利要求1所述的方法,其中在所述RAID中重建所述至少一个盘包括:
重建所述RAID的用户盘,所述用户盘与所述RAID的所述校验盘不同。
9.一种用于检测数据的不完整写入的设备,包括:
处理单元;以及
存储器,耦合至所述处理单元并且存储有指令,所述指令在由所述处理单元执行时执行以下动作:
获得与独立盘冗余阵列RAID中的校验盘中的扇区相关联的元数据,所述元数据至少包括顺序标记和部分写入标志,所述顺序标记随着对所述扇区所属的条带的写操作而变化,所述部分写入标志指示所述条带是否被部分写入;
基于所述元数据,确定所述RAID中是否存在数据的不完整写入;以及
响应于确定所述RAID中存在所述数据的所述不完整写入,在所述RAID中重建至少一个盘;
其中所述元数据还包括指示扇区中的数据写入的写入标记;
其中确定所述RAID中是否存在数据的不完整写入还包括:
响应于所述写入标记与所述RAID中的其他盘的其他写入标记之间的关系不满足预定条件,确定所述RAID中存在所述不完整写入的盘;并且
其中确定所述RAID中存在所述不完整写入的盘包括:
响应于所述部分写入标志为第一值,基于所述写入标记来确定所述RAID中存在所述不完整写入的第一盘;以及
响应于所述部分写入标志为第二值,基于所述写入标记、所述顺序标记以及所述部分写入标志来确定所述RAID中存在所述不完整写入的第二盘。
10.根据权利要求9所述的设备,其中确定所述RAID中是否存在数据的不完整写入还包括:
基于所述校验盘的所述顺序标记与所述RAID中的所述其他盘的顺序标记的比较,确定所述RAID中是否存在所述数据的所述不完整写入。
11.根据权利要求9所述的设备,所述元数据还包括所述扇区中的数据的校验和以及与所述扇区的逻辑块地址LBA相关联的LBA标记。
12.根据权利要求11所述的设备,其中确定所述RAID中是否存在数据的不完整写入还包括:
基于所述校验盘的所述写入标记与所述RAID中的所述其他盘的其他写入标记之间的所述关系,确定所述RAID中是否存在数据的不完整写入。
13.根据权利要求9所述的设备,其中在所述RAID中重建至少一个盘包括:
响应于存在所述不完整写入的盘的数目大于所述RAID中校验盘的数目,重建所述校验盘;以及
响应于存在所述不完整写入的盘的数目小于所述RAID中校验盘的数目,重建存在所述不完整写入的所述盘。
14.根据权利要求9所述的设备,还包括:
响应于数据被写入所述扇区,获得所述顺序标记;
响应于所述顺序标记达到预定阈值,重置所述顺序标记;以及
响应于所述顺序标记未达到所述预定阈值,递增所述顺序标记。
15.根据权利要求14所述的设备,还包括:
响应于所述数据被写入所述扇区,确定所述数据的写入是否涉及所述条带中的所有扇区;
响应于确定所述数据的写入未涉及所述条带中的所有扇区,将所述部分写入标志设置为所述第一值;以及
响应于确定所述数据的写入涉及所述条带中的所有扇区,将所述部分写入标志设置为所述第二值。
16.根据权利要求9所述的设备,其中在所述RAID中重建所述至少一个盘包括:
重建所述RAID的用户盘,所述用户盘与所述RAID的所述校验盘不同。
17.一种非瞬态计算机可读介质,所述非瞬态计算机可读介质存储用于检测数据的不完整写入的指令集,所述指令集在被计算机化电路执行时使计算机化电路执行方法,所述方法包括:
获得与独立盘冗余阵列RAID中的校验盘中的扇区相关联的元数据,所述元数据至少包括顺序标记和部分写入标志,所述顺序标记随着对所述扇区所属的条带的写操作而变化,所述部分写入标志指示所述条带是否被部分写入;
基于所述元数据,确定所述RAID中是否存在数据的不完整写入;以及
响应于确定所述RAID中存在所述数据的所述不完整写入,在所述RAID中重建至少一个盘;
其中所述元数据还包括指示扇区中的数据写入的写入标记;
其中确定所述RAID中是否存在数据的不完整写入还包括:
响应于所述写入标记与所述RAID中的其他盘的其他写入标记之间的关系不满足预定条件,确定所述RAID中存在所述不完整写入的盘;并且
其中确定所述RAID中存在所述不完整写入的盘包括:
响应于所述部分写入标志为第一值,基于所述写入标记来确定所述RAID中存在所述不完整写入的第一盘;以及
响应于所述部分写入标志为第二值,基于所述写入标记、所述顺序标记以及所述部分写入标志来确定所述RAID中存在所述不完整写入的第二盘。
18.根据权利要求17所述的非瞬态计算机可读介质,其中在所述RAID中重建所述至少一个盘包括:
重建所述RAID的用户盘,所述用户盘与所述RAID的所述校验盘不同。
19.根据权利要求17所述的非瞬态计算机可读介质,其中所述元数据还包括所述扇区中的数据的校验和以及与所述扇区的逻辑块地址LBA相关联的LBA标记。
20.根据权利要求19所述的非瞬态计算机可读介质,其中确定所述RAID中是否存在数据的不完整写入还包括:
基于所述校验盘的所述写入标记与所述RAID中的所述其他盘的其他写入标记之间的所述关系,确定所述RAID中是否存在数据的不完整写入。
CN201810399068.XA 2018-04-28 2018-04-28 用于检测数据的不完整写入的方法、设备和计算机可读介质 Active CN110413439B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810399068.XA CN110413439B (zh) 2018-04-28 2018-04-28 用于检测数据的不完整写入的方法、设备和计算机可读介质
US16/223,843 US11093331B2 (en) 2018-04-28 2018-12-18 Method, device and computer program product for detecting incomplete write of data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810399068.XA CN110413439B (zh) 2018-04-28 2018-04-28 用于检测数据的不完整写入的方法、设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN110413439A CN110413439A (zh) 2019-11-05
CN110413439B true CN110413439B (zh) 2023-10-20

Family

ID=68292590

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810399068.XA Active CN110413439B (zh) 2018-04-28 2018-04-28 用于检测数据的不完整写入的方法、设备和计算机可读介质

Country Status (2)

Country Link
US (1) US11093331B2 (zh)
CN (1) CN110413439B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795273B (zh) * 2019-10-18 2021-06-15 苏州浪潮智能科技有限公司 一种raid的写洞保护方法、***及存储介质
WO2021179211A1 (zh) * 2020-03-11 2021-09-16 深圳市欢太科技有限公司 确定数据完整性的方法、装置、电子设备及存储介质
US11429498B2 (en) * 2020-05-08 2022-08-30 Vmware, Inc. System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout
US11403189B2 (en) * 2020-05-08 2022-08-02 Vmware, Inc. System and method of resyncing data in erasure-coded objects on distributed storage systems without requiring checksum in the underlying storage
US11379318B2 (en) * 2020-05-08 2022-07-05 Vmware, Inc. System and method of resyncing n-way mirrored metadata on distributed storage systems without requiring checksum in the underlying storage
CN112071335A (zh) * 2020-08-20 2020-12-11 深圳云宣科技有限公司 一种对光盘刻录文件进行校验的方法及装置
US11494090B2 (en) 2020-09-25 2022-11-08 Vmware, Inc. Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage
US11853163B2 (en) * 2021-11-17 2023-12-26 Western Digital Technologies, Inc. Selective rebuild of interrupted devices in data storage device arrays
JP2023142223A (ja) 2022-03-24 2023-10-05 株式会社東芝 磁気ディスク装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889934A (en) * 1997-02-24 1999-03-30 Data General Corporation Data validation system for a group of data storage disks
US6553511B1 (en) * 2000-05-17 2003-04-22 Lsi Logic Corporation Mass storage data integrity-assuring technique utilizing sequence and revision number metadata
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195100A (en) 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US6928578B2 (en) * 2001-05-10 2005-08-09 International Business Machines Corporation System, method, and computer program for selectable or programmable data consistency checking methodology
US7454668B1 (en) 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
US10013354B2 (en) * 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US9910791B1 (en) 2015-06-30 2018-03-06 EMC IP Holding Company LLC Managing system-wide encryption keys for data storage systems
US9990261B2 (en) * 2016-04-29 2018-06-05 Netapp, Inc. System and method for recovering a storage array

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889934A (en) * 1997-02-24 1999-03-30 Data General Corporation Data validation system for a group of data storage disks
US6553511B1 (en) * 2000-05-17 2003-04-22 Lsi Logic Corporation Mass storage data integrity-assuring technique utilizing sequence and revision number metadata
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Undetected disk errors in RAID arrays;J.L.Hafner et al;《IBM Journal of Research and Development》;20080630;第52卷(第4.5期);第417、421页 *

Also Published As

Publication number Publication date
US11093331B2 (en) 2021-08-17
CN110413439A (zh) 2019-11-05
US20190332480A1 (en) 2019-10-31

Similar Documents

Publication Publication Date Title
CN110413439B (zh) 用于检测数据的不完整写入的方法、设备和计算机可读介质
CN108733314B (zh) 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质
US11003556B2 (en) Method, device and computer program product for managing storage system
CN109725822B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN111124738B (zh) 用于独立冗余磁盘阵列的数据管理方法、设备和计算机程序产品
CN104598162A (zh) 用于跨存储设备写入数据的方法和***
CN103778030B (zh) 日志子***写入方法、错误追踪方法及处理器
CN103631721A (zh) 一种隔离内存中坏块的方法及***
CN111104051B (zh) 用于管理存储***的方法、设备和计算机程序产品
JP6788554B2 (ja) データスクラビングを実行する電子装置、方法、及びデータスクラビング装置
CN103312504A (zh) 用于在进行预校正的前提下重构比特串的装置和方法
US10901646B2 (en) Update of RAID array parity
CN113377569B (zh) 用于恢复数据的方法、设备和计算机程序产品
CN110442298B (zh) 存储设备异常检测方法及装置、分布式存储***
US20170068475A1 (en) Intra-rack and inter-rack erasure code distribution
CN105302665A (zh) 一种改进的写时拷贝快照方法及***
CN114860745B (zh) 基于人工智能的数据库扩展方法及相关设备
US10552243B2 (en) Corrupt logical block addressing recovery scheme
US11436200B2 (en) Fault tolerant parallel journaling for file systems
CN111104047B (zh) 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
CN109144766B (zh) 一种数据存储、重构方法和装置、及电子设备
CN111857560A (zh) 用于管理数据的方法、设备和计算机程序产品
CN108572882B (zh) 一种数据存储的方法及存储设备
US11429537B2 (en) Method, device, and computer program product for managing storage system
CN110874285B (zh) 一种实现ext文件***的可还原写操作的方法

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