CN114610525A - 一种用于磁盘阵列的数据更新方法、系统及存储介质 - Google Patents

一种用于磁盘阵列的数据更新方法、系统及存储介质 Download PDF

Info

Publication number
CN114610525A
CN114610525A CN202210268045.1A CN202210268045A CN114610525A CN 114610525 A CN114610525 A CN 114610525A CN 202210268045 A CN202210268045 A CN 202210268045A CN 114610525 A CN114610525 A CN 114610525A
Authority
CN
China
Prior art keywords
data
updated
old
check code
reading
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.)
Pending
Application number
CN202210268045.1A
Other languages
English (en)
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202210268045.1A priority Critical patent/CN114610525A/zh
Publication of CN114610525A publication Critical patent/CN114610525A/zh
Pending legal-status Critical Current

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/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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种用于磁盘阵列的数据更新方法、系统及存储介质,方法包括:获取待更新数据落盘的位置,将该位置中旧的数据读出,并将待更新数据写入该位置以覆盖旧的数据;对旧的数据和待更新数据进行异或运算,得到异或运算数据;将旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与异或运算数据进行异或运算,得到对应于待更新数据的新的校验码;将新的校验码写入到校验位置以覆盖旧的校验码。通过本发明的方案,保证了数据更新的安全性。

Description

一种用于磁盘阵列的数据更新方法、系统及存储介质
技术领域
本发明涉及存储技术领域,尤其涉及一种用于磁盘阵列的数据更新方法、系统及存储介质。
背景技术
伴随着通讯技术和网络科技的迅速发展,数字化信息呈指数爆炸式增长,数据存储技术也因此迎来了巨大的挑战。存储系统中数据的可靠性问题以及存储系统的能耗问题越来越被人们所关注。现如今面对如此庞大的数据规模,存储系统中数据的可靠性和存储系统中包含的组件数量成反比关系,即存储系统组件数越多,那么存储系统中数据的可靠性就越低。根据相关调查显示,在一个由600个磁盘构成的互联网数据中心中,每月大约会有30个磁盘出现损坏的情况,在大规模存储系统中,磁盘故障造成的数据可靠性下降是相当严重的问题,对此人们展开了相关容错技术的研究。
在1988年,加州大学伯克利分校的D.A.Patterson等教授提出的RAID结构成为了提升存储空间的一个关键技术,RAID(Redundant Arrays of Independent Disks)即具有冗余能力的磁盘阵列,磁盘阵列是通过将多个独立磁盘组合一起,从而得到一个容量巨大的磁盘组。采用RAID存储技术,可以大大提高存储容量,提高系统输入输出的请求处理能力并且通过数据的分布式存储技术,并行访问手段和信息冗余技术提高数据的可靠性。
RAID的设计思想被提出之后,很快就被业界所接纳,RAID技术作为高性能、高可靠的存储技术,目前已经在人们的生产和生活中得到了极其广泛的应用。RAID主要利用数据条带、数据校验和镜像技术来获得较强的性能、更高的可靠性、较好的容错能力和较强的扩展性。根据不同的数据应用需求,可以运用或者组合运用这三种技术的策略和架构,所以按照不同的策略和架构,RAID可以被分为不同的等级:RAID 0,1,5,6,10。
其中,RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。RAID 0最简单的实现方式就是把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。在使用中电脑数据依次写入到各块硬盘中,它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块80GB的硬盘组建成RAID 0模式,那么磁盘容量就会是240GB。其速度方面,和单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。RAID 5(分布式奇偶校验的独立磁盘结构),它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID 5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。RAID 6是带两种分布存储的奇偶校验码独立磁盘结构。它是对RAID 5的扩展,主要是用于要求数据绝对不能出错的场合。由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,进一步提升了磁盘阵列的数据可靠性。需要更多的空间来存储校验值,同时在写操作中具有更高的性能损失。RAID技术在当今分布式存储服务器中得到了广泛的应用,RAID 5和6可以分别恢复一个或两个的错误块,但是每次数据恢复,依然受限于各个盘大量数据读取时的速度限制。
RAID5因其运算简单,且具有任意一个数据错误的恢复能力,而具有最广泛的应用。一个RAID5完成RAID组建后,用户的数据会随着使用发生变化,在RAID组中如果发生了部分数据的变化,是不会重新组建RAID组的,因为重新组建RAID组需要大量的时间,此时会针对发生变化的数据进行更新,并针对更新的数据更新RAID组的校验数据。但是在更新数据及对应的校验数据时,如果其他不涉及更新的数据盘发生了错误,此时旧的校验数据因为有数据更新而无法使用,新的校验数据因为新的数据还未写入无法使用,导致发生掉盘或错误需要恢复时,RAID5的功能会被破坏而无法恢复。
发明内容
有鉴于此,本发明提出了一种用于磁盘阵列的数据更新方法、系统及存储介质,通过在待更新数据和新的校验码写入到各自的位置之前,先将待更新数据要写入位置对应的旧的数据和对应于旧的数据的校验码读出,再将待更新数据和新的校验码写入到各自的位置,保留下了待更新数据更新之前对应的旧的数据和旧的校验码,保证了数据更新时的安全性。
基于上述目的,本发明实施例的一方面提供了一种用于磁盘阵列的数据更新方法,具体包括如下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
在一些实施方式中,将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
将所述旧的数据对应的旧的校验码从对应的校验位置读出,对所述旧的数据与所述旧的校验码进行异或运算,得到对应的数据锁并保存所述数据锁;
对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码。
在一些实施方式中,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列发生断电,则将所述待更新数据重新写入所述位置;
读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
在一些实施方式中,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,还包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列除所述位置以外的任一位置的数据发生错误,则读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
在一些实施方式中,方法进一步包括:
将所述待更新数据对应的数据锁与发生错误的数据所在条带的其他位置的数据进行异或运算以恢复错误数据。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为1个,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为多个,则基于串行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为多个,则基于并行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
本发明实施例的另一方面,还提供了一种用于磁盘阵列的数据更新系统,包括:
数据更新模块,所述数据更新模块配置为获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
第一异或运算模块,所述第一异或运算模块配置为对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
第二异或运算模块,所述第二异或运算模块配置为将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
校验码更新模块,所述校验码更新模块配置为将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明至少具有以下有益技术效果:通过在待更新数据和新的校验码写入到各自的位置之前,先将待更新数据要写入位置对应的旧的数据和对应于旧的数据的校验码读出,再将待更新数据和新的校验码写入到各自的位置,保留下了待更新数据更新之前对应的旧的数据和旧的校验码,保证了数据更新时的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的用于磁盘阵列的数据更新方法的一实施例的框图;
图2为本发明提供的对RAID5进行数据更新的一实施例的结构示意图;
图3为本发明提供的用于磁盘阵列的数据更新系统的一实施例的示意图;
图4为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
传统的RAID5工作原理为:
d1+d2+d3+...+dm+p=0
其中,d1~dm为RAID5任一条带内的所有数据,p为d1~dm所在条带对应的校验数据(即校验码),RAID的编码算法是对上述关系式的以p为未知数的方程求解。相应的,其解码是对已经组好的RAID5中,任意一个错误的情况下,以相同的方式进行解码。编码和解码运算在存储中使用均为伽罗华域运算,因此可知在传统的RAID5中编码(encode)得到p和任意错误(例如,d1发生错误)下发生错误的解码(decode)的关系式分别是:
encode:
Figure BDA0003553171430000071
decode:
Figure BDA0003553171430000072
传统的RAID5发生数据更新时,RAID5的工作流程如下:
RAID5检测到主机接收到新的数据,获取新数据要写入的位置,将新数据写覆盖到对应的位置以覆盖当前位置上的旧数据,同时计算新数据对应的校验数据,将新的校验数据写入校验位置以覆盖旧的校验数据。
此时若新数据在写入RAID5时,若发生其他数据和其他校验数据的任意数据的错误或掉盘,则会由于旧的数据已被覆盖或部分覆盖,发生错误的数据无法恢复且新的校验数据无法生成,导致RAID5的功能被破坏。
为解决上述问题,本发明的方案提出一种用于磁盘阵列的数据更新方法,能够在RAID5发生数据错误或掉盘时,恢复发生错误的数据,保证RAID5的功能不被破坏,且占用的存储空间少,数据更新速度快。
基于上述目的,本发明实施例的第一个方面,提出了一种用于磁盘阵列的数据更新方法的实施例。如图1所示,其包括如下步骤:
步骤S101、获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
步骤S103、对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
步骤S105、将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
步骤S107、将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
具体的,本实施例的用于磁盘阵列的数据更新方法应用于RAID 5。
获取待更新数据落盘的位置,将该位置中的数据读出并保存,并将待更新数据写入该位置以覆盖该位置被旧的数据;对旧的数据和待更新数据进行异或运算,得到异或运算数据;将旧的数据对应的旧的校验码从对应的校验位置读出并保存,即将旧的数据所在条带的校验码从该条带的校验位置读出,将旧的校验码与异或运算数据进行异或运算,得到对应于待更新数据的新的校验码;将新的校验码写入到校验位置以覆盖该位置原先对应于旧的数据的校验码。
读出的旧的数据和旧的校验码用于在待更新数据在写入RAID 5时,RAID 5断电或RAID 5上其他任意数据发生错误,对RAID 5进行恢复。例如:通过旧的数据和旧的校验码和盘中未发生错误的数据进行异或运算以恢复出发生错误的数据,并将恢复的数据写入到RAID 5盘中对应的位置。
本实施例通过在待更新数据和新的校验码写入到各自的位置之前,先将待更新数据要写入位置对应的旧的数据和对应于旧的数据的校验码读出,再将待更新数据和新的校验码写入到各自的位置,保留下了待更新数据更新之前对应的旧的数据和旧的校验码,保证了数据更新时的安全性。
在一些实施方式中,将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
将所述旧的数据对应的旧的校验码从对应的校验位置读出,对所述旧的数据与所述旧的校验码进行异或运算,得到对应的数据锁并保存所述数据锁;
对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码。
本实施例通过对旧的数据与旧的校验码进行异或运算,得到待更新数据更新之前的数据锁,通过数据锁保证了数据更新时的安全性。一旦待更新数据在写入RAID 5时,RAID5断电或RAID 5上其他任意数据发生错误,即可通过数据锁对任意一个发生错误的数据进行恢复,提高了数据恢复速度。
在一些实施方式中,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列发生断电,则将所述待更新数据重新写入所述位置;
读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
在一些实施方式中,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,还包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列除所述位置以外的任一位置的数据发生错误,则读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
在一些实施方式中,方法进一步包括:
将所述待更新数据对应的数据锁与发生错误的数据所在条带的其他位置的数据进行异或运算以恢复错误数据。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为1个,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为多个,则基于串行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
如有多个数据发生更新,即可以采用串行方式,即对待更新的数据依次执行以下步骤:
获取待更新数据落盘的位置,将该位置中旧的数据读出,并将待更新数据写入该位置以覆盖旧的数据;
对旧的数据和待更新数据进行异或运算,得到异或运算数据;
将旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与异或运算数据进行异或运算,得到对应于待更新数据的新的校验码;
将新的校验码写入到校验位置以覆盖旧的校验码。
在一些实施方式中,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,具体包括:
响应于所述待更新数据的数量为多个,则基于并行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
如有多个数据发生更新,即可以采用并行方式,即对待更新的数据同时执行以下步骤:
将各个待更新数据落盘位置中的旧的数据全部读出,并将各个待更新数据写入位置以覆盖旧的数据;
对各个旧的数据和待更新数据进行异或运算,得到各个异或运算数据;
同时读出所有的待更新数据对应的旧的校验码,使其与各个异或运算数据进行异或运算,得到所有的新的校验码。
下面通过具体实施例对本发明的具体实施方式进行说明。
如图2所示,为本发明提供的对RAID5进行数据更新的示意图。
图2中,第一行表示了任意一个条带下组好的RAID5的情况,其中P的位置,即每个条带的校验数据(亦可称之为校验码)p对应的位置,基于负载均衡的需求在不同的条带位置会有所变化。除了P的位置以外,其他为顺序排布的数据信息,这里分别用d1-d4表示,D1~D4表示d1~d4对应的位置。多个条带共同组成了一块磁盘的总存储空间,本实施中,其他条带组省略表示。
步骤1、响应于主机(Host)接收到新数据d1’,针对d1’对应的位置D1发生数据更新请求。
步骤2、将D1位置中原本的数据d1读出。当新数据d1’到达D1位置时,首先通过对d1’和d1作异或运算得到异或运算数据Δd1。同时,将d1’落入D1的位置。
此时异或运算关系为:
Figure BDA0003553171430000121
步骤3、分为两部分,分别为31和32两个步骤,两个步骤同时进行,互不干扰,在实现时是并行的。
31部分:首先从新的数据落盘位置所在的条带中取出当前条带的校验数据p,将p与Δd1进行异或得到p’,p’即新的数据d1’所对应的新的校验码,具体运算如下:
Figure BDA0003553171430000122
Figure BDA0003553171430000123
Figure BDA0003553171430000124
32部分:对步骤2中读取的数据d1与校验数据p进行异或,得到安全数据锁,为方便描述,称之为pl,其运算关系为:
Figure BDA0003553171430000125
数据锁无需落盘(即写入到RAID5),通过数据锁可以保证数据更新的正确性。
若在数据更新时,发生以下情况:
a)d1’落盘时忽然断电,导致d1’无法正常落盘,p’无法得到更新。此时只需重写d1’,同时取用数据锁pl,使其与d1’进行异或,即可得到p’的运算,而无需重新进行步骤2,减少了数据运算,提高了更新速度。
b)d1’落盘时,d2-d4以及p任一数据因为任意问题发生错误导致无法读取,此时p’无法更新,错误数据无法恢复。此时只需读取数据锁pl,首先使其与d1’进行异或,得到p’正常进行落盘;同时利用pl,与d2-d4以及p中剩余的数据(指的是未发生错误的数据)进行异或运算,即可恢复任一错误数据。
本实施通过数据锁,解决了数据更新时可能发生的RAID5断电或发生数据错误等问题,保证了数据更新的安全性和可靠性。
步骤4、将步骤3通过不同场景下算出的p’落盘至P的位置,完成校验码的更新。
通过上述实施例,实现了数据更新时发生的RAID5断电时的校验码更新以及RAID5发生数据错误时的数据恢复,减少了数据运算和存储访问的次数及需求,提高了数据更新速度,保证了数据更新的安全性和可靠性。
基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种用于磁盘阵列的数据更新系统,包括:
数据更新模块110,所述数据更新模块110配置为获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
第一异或运算模块120,所述第一异或运算模块120配置为对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
第二异或运算模块130,所述第二异或运算模块130配置为将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
校验码更新模块140,所述校验码更新模块140配置为将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述用于磁盘阵列的数据更新方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述方法实施例的用于磁盘阵列的数据更新方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种用于磁盘阵列的数据更新方法,其特征在于,包括:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
2.根据权利要求1所述的方法,其特征在于,将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
将所述旧的数据对应的旧的校验码从对应的校验位置读出,对所述旧的数据与所述旧的校验码进行异或运算,得到对应的数据锁并保存所述数据锁;
对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码。
3.根据权利要求2所述的方法,其特征在于,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列发生断电,则将所述待更新数据重新写入所述位置;
读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
4.根据权利要求2所述的方法,其特征在于,对所述旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码,还包括:
若是在所述待更新数据写入所述位置时所述磁盘阵列除所述位置以外的任一位置的数据发生错误,则读取所述待更新数据对应的数据锁,对所述待更新数据对应的数据锁与所述待更新数据进行异或运算,得到对应于所述待更新数据的新的校验码。
5.根据权利要求4所述的方法,其特征在于,进一步包括:
将所述待更新数据对应的数据锁与发生错误的数据所在条带的其他位置的数据进行异或运算以恢复错误数据。
6.根据权利要求1所述的方法,其特征在于,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,包括:
响应于所述待更新数据的数量为1个,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
7.根据权利要求1所述的方法,其特征在于,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,包括:
响应于所述待更新数据的数量为多个,则基于串行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
8.根据权利要求1所述的方法,其特征在于,获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据,包括:
响应于所述待更新数据的数量为多个,则基于并行处理策略执行以下步骤:
获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据。
9.一种用于磁盘阵列的数据更新系统,其特征在于,包括:
数据更新模块,所述数据更新模块配置为获取待更新数据落盘的位置,将所述位置中旧的数据读出,并将所述待更新数据写入所述位置以覆盖所述旧的数据;
第一异或运算模块,所述第一异或运算模块配置为对所述旧的数据和所述待更新数据进行异或运算,得到异或运算数据;
第二异或运算模块,所述第二异或运算模块配置为将所述旧的数据对应的旧的校验码从对应的校验位置读出,对旧的校验码与所述异或运算数据进行异或运算,得到对应于所述待更新数据的新的校验码;
校验码更新模块,所述校验码更新模块配置为将所述新的校验码写入到所述校验位置以覆盖所述旧的校验码。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1至8任意一项所述的方法的步骤。
CN202210268045.1A 2022-03-18 2022-03-18 一种用于磁盘阵列的数据更新方法、系统及存储介质 Pending CN114610525A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210268045.1A CN114610525A (zh) 2022-03-18 2022-03-18 一种用于磁盘阵列的数据更新方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210268045.1A CN114610525A (zh) 2022-03-18 2022-03-18 一种用于磁盘阵列的数据更新方法、系统及存储介质

Publications (1)

Publication Number Publication Date
CN114610525A true CN114610525A (zh) 2022-06-10

Family

ID=81864022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210268045.1A Pending CN114610525A (zh) 2022-03-18 2022-03-18 一种用于磁盘阵列的数据更新方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN114610525A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115469818A (zh) * 2022-11-11 2022-12-13 苏州浪潮智能科技有限公司 一种磁盘阵列写处理方法、装置、设备及介质
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN116501553A (zh) * 2023-06-25 2023-07-28 苏州浪潮智能科技有限公司 数据恢复方法、装置、系统、电子设备及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115469818A (zh) * 2022-11-11 2022-12-13 苏州浪潮智能科技有限公司 一种磁盘阵列写处理方法、装置、设备及介质
WO2024098885A1 (zh) * 2022-11-11 2024-05-16 苏州元脑智能科技有限公司 一种磁盘阵列写处理方法、装置、设备及介质
CN115793985A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN115793985B (zh) * 2023-01-09 2023-04-21 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质
CN116501553A (zh) * 2023-06-25 2023-07-28 苏州浪潮智能科技有限公司 数据恢复方法、装置、系统、电子设备及存储介质
CN116501553B (zh) * 2023-06-25 2023-09-19 苏州浪潮智能科技有限公司 数据恢复方法、装置、系统、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US11216196B2 (en) Erasure coding magnetic tapes for minimum latency and adaptive parity protection feedback
CN114610525A (zh) 一种用于磁盘阵列的数据更新方法、系统及存储介质
US9417963B2 (en) Enabling efficient recovery from multiple failures together with one latent error in a storage array
US9063910B1 (en) Data recovery after triple disk failure
CN102301340B (zh) 固态盘中改进的错误校正
Greenan et al. Flat XOR-based erasure codes in storage systems: Constructions, efficient recovery, and tradeoffs
CA2532766C (en) Data storage array
US8321762B2 (en) Method for creating an error correction coding scheme
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
US20140310571A1 (en) Local Erasure Codes for Data Storage
CN115080303B (zh) Raid6磁盘阵列的编码方法、解码方法、装置及介质
CN106874140B (zh) 数据存储方法及装置
US20120198195A1 (en) Data storage system and method
CN116501553B (zh) 数据恢复方法、装置、系统、电子设备及存储介质
CN114610244A (zh) 一种独立冗余磁盘阵列降级方法、系统及设备
CN114546272A (zh) 快速通用的raid降级为raid5的方法、系统、设备和存储介质
CN114756402A (zh) Raid组更新数据时保障数据安全的方法、系统、设备及介质
CN109358980A (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
CN111400084A (zh) 进行关于容错式磁盘阵列的动态复原管理的方法与装置
CN114115729A (zh) 一种raid下的高效数据迁移方法
CN100465908C (zh) 数据存储阵列
US6792391B1 (en) Method and system for three disk fault tolerance in a disk array
CN114756175A (zh) 一种用于磁盘阵列的解码方法、系统、设备及介质
Lee et al. Efficient parity placement schemes for tolerating up to two disk failures in disk arrays
JP3676793B2 (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