CN114020499A - 一种数据修复方法、装置及计算机可读存储介质 - Google Patents

一种数据修复方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN114020499A
CN114020499A CN202111111035.9A CN202111111035A CN114020499A CN 114020499 A CN114020499 A CN 114020499A CN 202111111035 A CN202111111035 A CN 202111111035A CN 114020499 A CN114020499 A CN 114020499A
Authority
CN
China
Prior art keywords
data
copies
target bit
bit
same
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
CN202111111035.9A
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.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202111111035.9A priority Critical patent/CN114020499A/zh
Publication of CN114020499A publication Critical patent/CN114020499A/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/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/0709Error 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 distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server 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/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/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请公开了一种数据修复方法、装置及计算机可读存储介质,应用于分布式存储领域。该方法在检测到属于同一数据对象的副本间数据不一致时,首先获取全部副本的数据,然后若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况,其中,目标比特位为数据不一致的比特位,最后根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。由此可见,该方法在检测到不同副本间数据不一致时,根据不同副本在同一目标比特位上不同数据出现的次数确定不同副本的同一目标比特位上的数据,自动完成数据的修复,大大提升了用户的业务进度以及用户体验感。

Description

一种数据修复方法、装置及计算机可读存储介质
技术领域
本申请涉及分布式存储领域,特别是涉及一种数据修复方法、装置及计算机可读存储介质。
背景技术
分布式存储系统是目前一种广为使用的企业级存储系统。分布式存储系统具有数据高度可用的优点,目前分布式存储系统数据可靠性的保护方式主要分为纠删码和副本两种,其中副本又是技术最为成熟且应用最为广泛的数据冗余保护方法。副本冗余保护方法是将数据对象在不同的存储介质中存放两份或更多份完全一致的数据副本,这样当其中某个存储设备或者说副本出现丢失时,存储集群仍然可以通过读写其他存在的副本继续访问数据。但是在实际应用中,可能出现另外一种影响数据可靠性的现象,就是单一或多个副本出现数据损坏。
当今技术水平下,任何存储介质都是不完美的,都无法保证存储介质中的数据能够永远保持一致,即都有可能发生静默数据损坏。所谓静默数据损坏就是指存储介质本身没有任何异常,但是其中存储的数据由于某种原因发生了变化,导致读取到的数据与实际写入的数据不一致。由于错误发生时没有任何表象,所以这种静默数据损坏非常隐蔽且难以纠正。正是由于存储介质有可能存在静默数据损坏,所以给副本冗余方法下的分布式存储带来了一个致命的风险。比如某个数据保存了两个副本,但是其中一个副本所在的存储介质发生了静默数据损坏,导致其中的数据发生了变化,那么这两个副本就会出现数据不一致的现象,此时如果从发生静默数据损坏的副本读取数据就会读到错误的数据。
分布式存储有一系列的机制能够扫描出这种副本间数据不一致的现象并进行告警,但却无法进行修复,因为无法判断不一致的副本当中,哪个副本保存的是错误数据,哪个副本保存的是正确数据。通常扫描出数据不一致后,为避免用户读到错误数据,都会阻塞用户的读请求,直至人工修复不一致错误后,才能继续访问,最终大大影响了用户的业务进度,从而降低用户体验感。
由此可见,如何提升用户的业务进度以及提高用户体验感,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种数据修复方法、装置及计算机可读存储介质,用于提升用户的业务进度以及提高用户体验感。
为解决上述技术问题,本申请提供一种数据修复方法,包括:
在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据;
获取全部所述副本在各比特位上数据的一致性情况;
若全部所述副本存在同一比特位上数据不一致,则统计全部所述副本在同一目标比特位上数据的出现次数情况;其中,所述目标比特位为数据不一致的比特位;
根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
优选地,所述获取全部所述副本在各比特位上数据的一致性情况包括:
获取所述副本的比特位的个数S;
获取全部所述副本的第i个比特位上的数据,其中i从1开始;
判断当前比特位上的全部数据是否一致;
如果一致,判断i是否等于S,如果不等于,则令i加1,并返回所述获取全部所述副本的第i个比特位的全部数据的步骤;如果等于,则结束;
如果不一致,则进入所述统计全部所述副本在同一目标比特位上数据的出现次数情况的步骤。
优选地,所述根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复包括:
在全部所述副本的同一目标比特位上不同数据出现的次数不同的情况下,根据全部所述副本在同一目标比特位上出现次数占多数的数据确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
优选地,所述根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复包括:
在全部所述副本的同一目标比特位上不同数据出现的次数相同的情况下,确定全部所述副本在同一目标比特位上的数据为1以完成对所述目标比特位上数据的修复。
优选地,检测属于同一数据对象的副本间数据不一致的情况为:以预设周期检测属于同一数据对象的副本间数据不一致的情况。
优选地,在检测到同一比特位上数据不一致的次数超过阈值的情况下,标记所述副本的存储位置。
优选地,在完成对所述目标比特位上数据的修复之后,还包括:
输出完成对所述目标比特位上数据的修复的提示信息。
为解决上述技术问题,本申请还提供了一种数据修复的装置,包括:
第一获取模块,用于在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据;
第二获取模块,用于获取全部所述副本在各比特位上数据的一致性情况;
统计模块,用于若全部所述副本存在同一比特位上数据不一致,则统计全部所述副本在同一目标比特位上数据的出现次数情况;其中,所述目标比特位为数据不一致的比特位;
确定模块,用于根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
为解决上述技术问题,本申请还提供了一种数据修复的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的数据修复方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的数据修复方法的步骤。
本申请所提供的数据修复方法,该方法首先在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据,然后若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况,其中,目标比特位为数据不一致的比特位,最后根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。该数据修复的方法在检测到不同副本间数据不一致的情况下,根据不同副本的同一比特位上不同数据出现的次数确定不同副本的同一比特位上的数据,自动完成数据修复工作。由此可见,本申请所提供的数据修复方法在检测到副本间数据不一致后对数据进行自动修复,大大提升了用户的业务进度以及提高了用户的体验感。
此外,本申请所提供的数据修复的装置以及计算机可读存储介质包括上述提到的数据修复方法,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种数据修复方法的流程图;
图2为本申请提供的另一种数据修复方法的流程图;
图3为本申请的一实施例提供的数据修复装置的结构图;
图4为本申请另一实施例提供的数据修复装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种数据修复方法、装置及计算机可读存储介质,用于提升用户的业务进度以及提高用户体验感。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。图1为本申请提供的一种数据修复方法的流程图,该方法包括:
S10:在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据。
分布式存储系统是目前一种广为使用的企业级存储系统,具有数据高度可用的优点。其中,对同一数据对象设置不同的副本是目前分布式存储系统数据可靠性的保护方式之一。副本冗余保护方法是将数据对象在不同的存储设备中存放两份或更多份完全一致的数据副本,这样当其中某个存储设备或者说副本出现丢失时,存储集群仍然可以通过读写其他存在的副本继续访问数据。副本数是影响数据可靠性的关键因素,增加副本的个数可以使得可靠性得到数量级上的提升,但是成本和写入性能上会给系统带来一定的负担,因此产品可以从数据的重要性,系统本身的工作量等方面在各方面权衡选择系统的副本数。不同的分布式存储系统设置的副本数不同。在实施中,对于同一数据对象设置的副本的个数以及对不同副本的存储位置不作限定。
任何存储介质都无法保证存储介质中的数据能够永远保持一致,即都有可能发生静默数据损坏,也就是存储介质本身没有任何异常,但是其中存储的数据由于某种原因发生了变化,导致读取到的数据与实际写入的数据不一致。如写入的数据是11110000,实际读取到的却是11110001。由于错误发生时没有任何表象,所以这种静默数据损坏非常隐蔽且难以纠正。正是由于存储设备有可能存在静默数据损坏,所以给副本冗余方法下的分布式存储带来了一个致命的风险。比如某个数据保存了两个副本,但是其中一个副本所在的存储介质发生了静默数据损坏,导致其中的数据发生了变化,那么这两个副本就会出现数据不一致的现象,此时如果从发生静默数据损坏的副本读取数据就会读到错误的数据。因此需要检测属于同一数据对象副本间数据的一致性情况。
在检测属于同一数据对象副本间数据的一致性的情况时,可以通过命令获取到属于同一数据对象副本间数据的一致性的情况。此处以Ceph分布式存储系统为例,执行cephhealth detail命令,如果存在pg inconsistent字段,则说明存在属于同一数据对象副本间数据不一致的情况。该命令可以实时或者以一定的周期对属于同一数据对象副本间数据的一致性的情况进行检测。另外,在检测到属于同一数据对象副本间数据不一致的情况下,会输出提示信息。
在检测同一数据对象副本间数据不一致的情况时,对全部副本的数据一致性情况进行检测,若只检测部分副本,在读取数据时很有可能从错误的副本中读取数据,如一个存储系统中有10个副本,若只确保前4个不同副本数据一致,而在后6个副本中存在错误的副本,当读取的时候很有可能读到后6个副本中错误的副本,因此为了提高读取数据的准确率,作为优选地实施方式,选择对全部副本进行数据的一致性情况检测,因此获取属于同一数据对象的全部副本的数据。数据在副本中都是以二进制的形式存储的,即副本数据的各比特位上的数据为0或1。
S11:获取全部副本在各比特位上数据的一致性情况。
在上述步骤中,在检测到同一数据对象副本间数据不一致的情况下获取了属于同一数据对象的全部副本的数据。为了准确地对全部副本进行修复,则需要确定全部副本中数据不一致的比特位。此时就需要先获取全部副本在各比特位上的数据的一致性情况。在实施中,对获取全部副本在各比特位上的数据的一致性情况的顺序不作限定,可以由高位到低位逐比特位进行对比,可以从低位到高位逐比特位对比,也可以随机对同一比特位上的数据进行对比,只要能将所有的比特位上的数据的一致性情况获取即可。
S12:若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况;其中,目标比特位为数据不一致的比特位。
在上述步骤中获取了全部副本在各比特位上数据的一致性情况,若全部副本存在同一比特位上数据不一致时,为了减少数据的计算量以及数据修复的速度,只统计全部副本在数据不一致的比特位上数据的出现次数情况。将数据不一致的比特位称为目标比特位。需要说明的是,此处的全部副本存在同一比特位上数据不一致的情况可以为全部副本中有1个或多个同一比特位上数据不一致的情况。另外,统计全部副本在同一目标比特位上数据的出现次数,可以既统计同一目标比特位上0出现的次数也统计1出现的次数,也可以在获取副本的比特位的个数的情况下,只统计同一目标比特位上0出现的次数或1出现的次数即可。
S13:根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。
上述步骤中统计全部副本在同一目标比特位上数据的出现次数情况,为了完成对目标比特位上数据的修复,可以根据全部副本在同一目标比特位上数据出现次数的情况确定全部副本在同一目标比特位上的数据。需要说明的是,此处根据全部副本在同一目标比特位上数据出现次数的情况确定全部副本在同一目标比特位上的数据不作限定,可以根据数据出现次数占多数的数据确定全部副本在同一目标比特位上的数据为该数据,也可以根据数据出现次数占少数的数据确定全部副本在同一目标比特位上的数据为该数据。但是,由于属于同一数据对象副本的同一个比特位同时发生静默数据损坏的概率低,所以为了数据修复的准确性,作为优选地实施方式,选择根据数据出现次数占多数的数据确定全部副本在同一目标比特位上的数据为该数据,从而完成对目标比特位上数据的修复。此外,对于同一目标比特位上不同数据出现的次数相同的情况下,由于发生静默数据的损坏,通常是由1跳变为0,因此确定全部副本在同一目标比特位上的数据为1。
本实施例所提供的数据修复方法,该方法首先在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据,然后若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况,其中,目标比特位为数据不一致的比特位,最后根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。该数据修复的方法在检测到不同副本间数据不一致的情况下,根据不同副本的同一比特位上不同数据出现的次数确定不同副本的同一目标比特位上的数据,自动完成数据的修复。由此可见,本实施例所提供的数据修复方法在检测到副本间数据不一致后对数据进行自动修复,大大提升了用户的业务进度以及提高了用户的体验感。
在上述实施例的基础上,由于全部副本中数据不一致的比特位不一定只有一个,也可能为多个,因此为了准确地对全部副本进行修复,则需要确定全部副本中数据不一致的比特位,在实施中,逐比特位获取全部副本在各比特位上的数据的一致性情况,以便于完成对所有数据的修复。作为优选地实施方式,步骤S11的获取全部副本在各比特位上数据的一致性情况包括:
S14:获取副本的比特位的个数S。
不考虑属于同一数据对象的不同副本中存在数据丢失,只考虑在静默数据损坏的时,属于同一数据对象的不同副本在一个或多个比特位上的数据不一致,也就是说属于同一数据对象的副本中比特位的个数相同,因此,获取其中一个副本的比特位的个数即可。如副本数据为11110000,则认为该副本的比特位的个数为8个。
S15:获取全部副本的第i个比特位上的数据,其中i从1开始。
从高位到低位逐个获取全部副本的不同比特位上的数据,i表示全部副本的比特位,i从1开始,判断下一个比特位时,将i+1代替,直到i等于副本的比特位的个数S,代表获取全部副本的所有比特位上的数据。如共有三个副本,其中,副本1的数据为11110000,副本2的数据为11110000,副本3的数据为11110001,先获取全部副本的第1个比特位上的数据,结果为1,1,1,然后再获取第2个比特位上的数据,结果为1,1,1,以此类推,直到获取全部副本的第8个比特位上的数据,结果为0,0,1,从而完成了获取全部副本的所有比特位上的数据。
S16:判断当前比特位上的全部数据是否一致;如果一致,则进入步骤S17,如果不一致,则进入步骤S12统计全部副本在同一目标比特位上数据的出现次数情况的步骤。
在步骤S15中获取了全部副本的所有比特位上的数据,在实施中,为了减少数据的统计量,只需要对数据不一致的比特位上的数据进行统计,因此首先要判断当前比特位上的全部数据是否一致,从而将数据不一致的比特位与数据一致的比特位区分出来,并只对数据不一致的比特位进行后续的步骤。如上述副本1的数据为11110000,副本2的数据为11110000,副本3的数据为11110001,则认为第8个比特位上的数据不一致。
S17:判断i是否等于S,如果不等于,则进入步骤S18并返回步骤S15,如果等于,则结束。
判断i是否等于S,若等于则代表完成了获取全部副本的所有比特位上的数据,若不等于则代表没有完成获取全部副本的所有比特位上的数据。
S18:令i加1,并返回S15的获取全部副本的第i个比特位的全部数据的步骤。
在i不等于S的情况下,将i+1,然后返回步骤S15,也就是继续获取下一个比特位上的全部数据,直到i=S从而完成获取全部副本的所有比特位上的数据。上述步骤的流程图如图2所示。图2为本申请提供的另一种数据修复方法的流程图。
本实施例所提供的获取全部副本在各比特位上数据的一致性情况,通过逐比特位获取全部副本同一比特位上数据的一致性情况,将全部副本的所有比特位上的数据的一致性情况进行获取,避免了当全部副本中存在多个目标比特位的情况时,只对部分目标比特位上的数据进行了修复,导致不能对所有数据进行修复,从而降低了数据修复的准确性。由此可见,本实施例所提供的获取全部副本在各比特位上数据的一致性情况能够提高数据修复的准确性,以及提高用户的业务进度。
在上述实施例的基础上,根据全部副本在同一目标比特位上数据的出现次数情况来对目标比特位上的数据进行数据的修复。由于不同副本的同一个比特位同时发生静默数据损坏的概率极低,因此可以认为出现次数占多数的是正确的数据。在实施中,为了提高数据修复的准确性,作为优选地实施方式,根据全部副本在同一目标比特位上数据的出现次数情况根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复包括:
在全部副本的同一目标比特位上不同数据出现的次数不同的情况下,根据全部副本在同一目标比特位上出现次数占多数的数据确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。
目标比特位上数据不一致,因此极有可能出现0和1出现次数不同的情况,根据全部副本在同一目标比特位上出现次数占多数的数据确定全部副本在同一目标比特位上的数据。需要说明的是,根据全部副本在同一目标比特位上出现次数占多数的数据确定全部副本在同一目标比特位上的数据,可以分别将目标比特位上0出现的次数与1出现的次数进行统计,如果0出现的次数大于1出现的次数,则确认0为该目标比特位上的数据,反之,确认1为该目标比特位上的数据。同样地以上述副本数据为例,副本1的数据为11110000,副本2的数据为11110000,副本3的数据为11110001,获取到第8个比特位上数据存在不一致的情况,然后统计1出现的次数为1次,统计0出现的次数为2,因此该全部副本的第8个比特位上的数据是0认为是正确的数据,并将副本3修复为11110000,即完成数据的修复。除了需要获取0出现的次数以及1出现的次数,通过比较判断出出现次数占多数的数据,在实施中,还可以通过获取全部副本的个数以及统计0或1任意一个数据出现的次数,将0或1任意一个数据出现的次数与副本个数的一半进行比较,若0或1任意一个数据出现的次数大于副本个数的一半,则认为该数据是正确的数据。如上述副本的副本数为3,统计第8个比特位上0出现的次数为2,通过比较2大于3/2,即认为0是正确数据,然后将副本3修复为11110000,即完成数据的修复。在实施中,获取全部副本的个数同样地可以通过命令获取到。以Ceph分布式存储系统为例,查询存储池的副本数,执行ceph osd poolls detail的命令便可以得到存储池列表以及对应的参数,其中参数replicated size的值就是副本的个数。
本实施例所提供的在全部副本的同一目标比特位上不同数据出现的次数不同的情况下,根据全部副本在同一目标比特位上出现次数占多数的数据确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。由于不同副本的同一个比特位同时发生静默数据损坏的概率极低,因此可以认为出现次数占多数的是正确的数据,从而提高数据修复的准确性。
在上述实施例的基础上,除了根据出现次数占多数确定为正确数据,还有可能出现0和1出现次数相同的情况,针对这种情况,由于通过大量研究发现,发生静默数据损坏时,大多数都是由1跳变为0,因此,对于根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复包括:
在全部副本的同一目标比特位上不同数据出现的次数相同的情况下,确定全部副本在同一目标比特位上的数据为1以完成对目标比特位上数据的修复。
对于不同数据出现次数相同的判断,可以同上述实施例一样,分别统计0出现的次数与1出现的次数,然后判断两个数据出现的次数相同,或者获取副本个数,以及只统计0或1任意一个数据出现的次数,比较0或1任意一个数据出现的次数与副本个数的一半的关系,若0或1任意一个数据出现的次数与副本个数的一半相同,则认为1是正确数据。需要说明的是,不同数据出现次数相同的情况极有可能在副本个数是偶数的情况下。
本实施例所提供的在全部副本的同一目标比特位上不同数据出现的次数相同的情况下,确定全部副本在同一目标比特位上的数据为1以完成对目标比特位上数据的修复。由于在大量研究下发现,发生静默数据损坏,通常是由1变为0,因此该实施例为全部副本的同一目标比特位上不同数据出现的次数相同时如何选择正确的数据作为全部副本在同一目标比特位上的数据提供了方法。
由于副本数据发生变化是随机的,因此需要对属于同一数据对象的副本间数据的一致性情况进行检测,来保证读取到的副本的数据是准确的。在检测时,可以实时对数据的一致性进行检测,也可以以一定的周期对数据的一致性进行检测。由于大量研究和统计表明,静默数据损坏在存储介质中发生的概率极低,因此,为了提高用户的业务进度,作为优选地方式,检测属于同一数据对象的副本间数据不一致的情况为:以预设周期检测属于同一数据对象的副本间数据不一致的情况。
需要说明的是,预设周期不作限定,可以是在一天对属于同一数据对象的副本间数据不一致的情况进行检测。
本实施例所提供的以预设周期检测属于同一数据对象的副本间数据不一致的情况,一方面,由于静默数据损坏在存储介质中发生的概率极低,因此只需要在预设周期内对属于同一数据对象的副本间数据不一致的情况进行检测,另一方面,在对用户的业务进行处理时,不需要实时检测属于同一数据对象的副本间数据不一致的情况,从而提高用户的业务进度。
在实施中,由于副本存储在存储介质中,若存储介质出现异常可能会导致检测到同一比特位上数据不一致情况,若检测到同一比特位上数据不一致的次数超过阈值,此时,可以标记该副本的存储位置,避免读取的时候选用该副本。因此,作为优选地实施方式,可以选择在检测到同一比特位上数据不一致的次数超过阈值的情况下,标记副本的存储位置。
本实施例所提供的在检测到同一比特位上数据不一致的次数超过阈值的情况下,标记副本的存储位置,通过对出现异常的副本的存储位置进行标记,避免以后继续将该副本或者其他副本继续存储在该位置,从而影响副本间数据的一致性,进而影响用户的业务进度,影响用户体验。
在实施中,当出现副本间数据不一致的现象,系统会发出告警,经过上述实施例的数据修复方法,自动完成了数据的修复。为了使用户能够清楚、及时地了解数据修复是否完成,作为优选地实施方式,可以在完成对目标比特位上数据的修复之后,输出完成对目标比特位上数据的修复的提示信息。
需要说明的是,输出完成对目标比特位上数据的修复的提示信息不作限定,可以是在程序中显示修复完成,如“repair completed”或者发出提示信息,如发出“嘀”的声音等。
本实施例所提供的在完成对目标比特位上数据的修复之后,输出完成对目标比特位上数据的修复的提示信息,能够使用户及时了解到数据修复是否完成,避免在完成数据修复后进行长时间的等待。
在上述实施例中,对于数据修复方法进行了详细描述,本申请还提供数据修复装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图3为本申请的一实施例提供的数据修复装置的结构图。本实施例基于功能模块的角度,包括:
第一获取模块10,用于在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据;
第二获取模块11,用于获取全部副本在各比特位上数据的一致性情况;
统计模块12,用于若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况;其中,目标比特位为数据不一致的比特位;
确定模块13,用于根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的数据修复装置,首先通过第一获取模块,在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据,然后通过第二获取模块,获取全部副本在各比特位上数据的一致性情况,再通过统计模块,若全部副本存在同一比特位上数据不一致,则统计全部副本在同一目标比特位上数据的出现次数情况,最后通过确定模块,根据全部副本在同一目标比特位上数据的出现次数情况确定全部副本在同一目标比特位上的数据以完成对目标比特位上数据的修复。该数据修复装置在检测到不同副本间数据不一致的情况下,根据不同副本的同一比特位上不同数据出现的次数确定不同副本的同一比特位上的数据,自动完成数据修复工作。由此可见,本实施例所提供的数据修复装置在检测到副本间数据不一致后对数据进行自动修复,大大提升了用户的业务进度以及提高了用户的体验感。
图4为本申请另一实施例提供的数据修复装置的结构图。本实施例基于硬件角度,如图4所示,数据修复装置包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的XXX的方法的步骤。
本实施例提供的数据修复装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的数据修复方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于上述数据修复方法所涉及到的数据等。
在一些实施例中,数据修复装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图4中示出的结构并不构成对数据修复装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的数据修复装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:数据修复的方法,效果同上。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的计算机可读存储介质包括上述提到的数据修复方法,效果同上。
以上对本申请所提供的数据修复方法、装置及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种数据修复方法,其特征在于,包括:
在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据;
获取全部所述副本在各比特位上数据的一致性情况;
若全部所述副本存在同一比特位上数据不一致,则统计全部所述副本在同一目标比特位上数据的出现次数情况;其中,所述目标比特位为数据不一致的比特位;
根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
2.根据权利要求1所述的数据修复方法,其特征在于,所述获取全部所述副本在各比特位上数据的一致性情况包括:
获取所述副本的比特位的个数S;
获取全部所述副本的第i个比特位上的数据,其中i从1开始;
判断当前比特位上的全部数据是否一致;
如果一致,判断i是否等于S,如果不等于,则令i加1,并返回所述获取全部所述副本的第i个比特位的全部数据的步骤;如果等于,则结束;
如果不一致,则进入所述统计全部所述副本在同一目标比特位上数据的出现次数情况的步骤。
3.根据权利要求1或2所述的数据修复方法,其特征在于,所述根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复包括:
在全部所述副本的同一目标比特位上不同数据出现的次数不同的情况下,根据全部所述副本在同一目标比特位上出现次数占多数的数据确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
4.根据权利要求1或2所述的数据修复方法,其特征在于,所述根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复包括:
在全部所述副本的同一目标比特位上不同数据出现的次数相同的情况下,确定全部所述副本在同一目标比特位上的数据为1以完成对所述目标比特位上数据的修复。
5.根据权利要求1所述的数据修复方法,其特征在于,检测属于同一数据对象的副本间数据不一致的情况为:以预设周期检测属于同一数据对象的副本间数据不一致的情况。
6.根据权利要求1所述的数据修复方法,其特征在于,还包括:
在检测到同一比特位上数据不一致的次数超过阈值的情况下,标记所述副本的存储位置。
7.根据权利要求1所述的数据修复方法,其特征在于,在完成对所述目标比特位上数据的修复之后,还包括:
输出完成对所述目标比特位上数据的修复的提示信息。
8.一种数据修复的装置,其特征在于,包括:
第一获取模块,用于在检测到属于同一数据对象的副本间数据不一致的情况下,获取属于同一数据对象的全部副本的数据;
第二获取模块,用于获取全部所述副本在各比特位上数据的一致性情况;
统计模块,用于若全部所述副本存在同一比特位上数据不一致,则统计全部所述副本在同一目标比特位上数据的出现次数情况;其中,所述目标比特位为数据不一致的比特位;
确定模块,用于根据全部所述副本在同一目标比特位上数据的出现次数情况确定全部所述副本在同一目标比特位上的数据以完成对所述目标比特位上数据的修复。
9.一种数据修复的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的数据修复方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据修复方法的步骤。
CN202111111035.9A 2021-09-18 2021-09-18 一种数据修复方法、装置及计算机可读存储介质 Pending CN114020499A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111111035.9A CN114020499A (zh) 2021-09-18 2021-09-18 一种数据修复方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111111035.9A CN114020499A (zh) 2021-09-18 2021-09-18 一种数据修复方法、装置及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114020499A true CN114020499A (zh) 2022-02-08

Family

ID=80054567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111111035.9A Pending CN114020499A (zh) 2021-09-18 2021-09-18 一种数据修复方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114020499A (zh)

Similar Documents

Publication Publication Date Title
TWI582616B (zh) 藉由實例格式化資料
CN111880736B (zh) 一种固态硬盘访问方法、装置、设备及介质
US8572436B2 (en) Computing device and method for managing motherboard test
CN115657965A (zh) 一种元数据的配置方法、装置及介质
CN106648969B (zh) 一种磁盘中损坏数据巡检方法及系统
CN114020499A (zh) 一种数据修复方法、装置及计算机可读存储介质
CN111008119A (zh) 一种硬盘预测模型的更新方法、装置、设备及介质
CN114756523A (zh) 一种分布式存储方法、装置以及介质
CN114816852A (zh) 一种恢复用户配置数据的方法、装置及介质
CN113821369A (zh) 一种内存巡检的方法、装置及介质
CN114579147A (zh) 烧录校验方法、装置、终端设备及存储介质
CN110704241A (zh) 一种文件元数据的恢复方法、装置、设备及介质
CN114003172A (zh) 存储容量校正方法、装置、计算机设备以及存储介质
KR101676932B1 (ko) 멀티-레벨 셀을 사용하여 버전화되는 메모리들
CN109254867B (zh) 数据冗余方法及装置
CN111782141A (zh) 一种数据巡检方法及装置
CN112306771B (zh) 一种系统文件损坏规则的检测方法及相关设备
CN111176572B (zh) 一种存储数据的保护方法、装置、设备及介质
TW202105922A (zh) 快閃記憶體控制器、儲存裝置及其讀取方法
CN108959006A (zh) 一种硬件检测方法及其工具
US8780471B2 (en) Linking errors to particular tapes or particular tape drives
CN116679991B (zh) 存储器的启动管理方法、系统、设备及存储介质
TWI778634B (zh) 故障分類方法、電子設備及儲存介質
CN110968446B (zh) 一种元数据修复方法、装置、系统及计算机可读存储介质
CN115454711A (zh) 一种分布式存储系统中纠删数据恢复的方法、装置及介质

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