CN114416665B - 一种数据一致性检测和修复的方法、装置及介质 - Google Patents
一种数据一致性检测和修复的方法、装置及介质 Download PDFInfo
- Publication number
- CN114416665B CN114416665B CN202210298447.6A CN202210298447A CN114416665B CN 114416665 B CN114416665 B CN 114416665B CN 202210298447 A CN202210298447 A CN 202210298447A CN 114416665 B CN114416665 B CN 114416665B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- repaired
- data object
- acquiring
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 230000008439 repair process Effects 0.000 claims abstract description 61
- 238000001514 detection method Methods 0.000 claims abstract description 44
- 238000004590 computer program Methods 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000000151 deposition Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 26
- 238000012795 verification Methods 0.000 abstract description 14
- 238000012545 processing Methods 0.000 description 8
- 238000013524 data verification Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Abstract
本申请公开了一种数据一致性检测和修复的方法、装置及介质,涉及存储技术领域。该方法对文件进行一致性检测,在检测到文件不一致时,对文件进行修复。在修复过程中获取待修复文件的数据对象并确定待修复的数据对象;然后根据数据对象对应的副本数据将待修复的数据对象进行修复。由此可见,该方法在实现数据一致性的过程中不需要在整个IO路径上附上校验信息,因此较容易实现数据一致;其次,先判断文件是否一致,然后只将待修复的文件分为多个数据对象,不需要对数据一致的文件分为多个数据对象,因此减少了确定待修复的数据对象的时间,使得数据一致性检测和修复的过程相对简单,提高了数据一致性检测和修复的效率。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种数据一致性检测和修复的方法、装置及介质。
背景技术
随着云计算、数字化转型,产生的数据量呈指数级增长,因此,对海量数据存储有新的技术要求。为了满足海量数据的存储需求,当前技术背景下出现了分布式存储技术。但是分布式存储系统的架构复杂,当集群节点越多,不同的集群节点出现故障的概率就越高,造成数据损坏的因素,主要有硬件错误,如内存、中央处理器(Central Processing Unit,CPU)、网卡等;数据传输过程中的信噪干扰,如SATA硬盘(Serial Advanced TechnologyAttachment hard disk)、光纤通道(Fiber Channel,FC)等协议;固件问题,如磁盘阵列(Redundant Arrays of Independent Disks,RAID)控制器、磁盘控制器等;软件问题,如操作系统的内核问题、本地文件系统问题,网络系统问题、通用块层问题、IO调度层问题等;运维因素,当出现极端情况,对分布式系统进行维护操作错误。
以上因素均会造成数据的损坏,导致分布式集群系统数据不一致,业务IO出错,出现数据不可用现象,进而使得数据的可靠性降低。目前,一般采用端到端的数据校验实现数据的一致性,但是需要在整个IO路径上附上校验信息,由于在整个IO路径上附上校验信息存在一定的难度,因此实现数据一致性的过程较为复杂。
由此可见,如何对数据进行一致性检测和修复,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种数据一致性检测和修复的方法、装置及介质,用于对数据进行一致性检测和修复。
为解决上述技术问题,本申请提供一种数据一致性检测和修复的方法,包括:
获取当前文件以及当前所述文件对应的原始文件;
将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致;
若否,则确定当前所述文件为待修复文件;
获取待修复文件的数据对象;
将所述待修复文件的数据对象与所述原始文件的数据对象进行比对并确定待修复的数据对象;
根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复,并返回所述获取当前文件以及当前所述文件对应的原始文件的步骤;
若是,则结束。
优选地,所述将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致包括:
获取所述原始文件的第一MD5值以及获取当前所述文件的第二MD5值;
在所述第一MD5值与所述第二MD5值不相同的情况下,进入所述确定当前所述文件为待修复文件的步骤。
优选地,所述获取待修复文件的数据对象包括:
获取所述待修复文件的大小以及设置各所述数据对象的大小为预设值;
根据所述待修复文件的大小以及所述预设值将所述待修复的文件分为多个数据对象;
获取所述待修复文件的各所述数据对象。
优选地,所述原始文件在存储池中存放包括:
将所述原始文件分为多个数据对象并获取所述原始文件的数据对象;
在所述存储池中设置PG归置组;
将所述原始文件的数据对象存储至所述PG归置组;
通过crushmap算法将所述PG归置组映射至所述存储池的OSD磁盘,其中,所述存储池的OSD磁盘中包含各所述PG归置组映射的多个副本数据。
优选地,在检测到是xattr扩展属性丢失导致数据不一致的情况下,所述根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复包括:
根据各所述PG归置组在所述存储池的OSD磁盘中的映射信息查询所述待修复的数据对象的副本编号;
获取所述待修复的数据对象对应的PG归置组映射的副本数据;其中,所述PG归置组映射的副本数据为所述原始文件的数据对象的副本数据;
将所述PG归置组映射的副本数据复制到所述待修复的数据对象对应的节点;
将xattr文件的头部部分修改为所述待修复的数据对象的副本编号;
重新储存所述待修复的数据对象以完成数据的修复。
优选地,在所述根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复之后,还包括:
设置自动化修复工具;
将所述自动化修复工具添加至后台任务中。
优选地,在所述根据所述待修复的数据对象对应的副本数据将所述待修复的数据对象进行修复之后,还包括:
输出用于提示完成修复的信息。
为了解决上述技术问题,本申请还提供一种数据一致性检测和修复的装置,包括:
第一获取模块,用于获取当前文件以及当前所述文件对应的原始文件;
第一比对模块,用于将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致;若否,则触发确定模块;若是,则结束;
所述确定模块,用于确定当前所述文件为待修复文件;
第二获取模块,用于获取待修复文件的数据对象;
第二比对模块,用于将所述待修复文件的数据对象与所述原始文件的数据对象进行比对并确定待修复的数据对象;
修复模块,用于根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复,并返回所述获取当前文件以及当前所述文件对应的原始文件的步骤。
为了解决上述技术问题,本申请还提供一种数据一致性检测和修复的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的数据一致性检测和修复的方法的步骤。
为了解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据一致性检测和修复的方法的步骤。
本申请所提供的数据一致性检测和修复的方法,该方法包括:获取当前文件以及当前文件对应的原始文件;将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致;若否,则确定当前文件为待修复文件;获取待修复文件的数据对象;将待修复文件的数据对象与原始文件的数据对象进行比对并确定待修复的数据对象;根据原始文件的数据对象的副本数据将待修复的数据对象进行修复,并返回获取当前文件以及当前文件对应的原始文件的步骤;若是,则结束。由此可见,相比于目前的通过端到端数据校验实现数据一致性的方法,本申请的方法在实现数据一致性的过程中不需要在整个IO路径上附上校验信息,因此较容易实现数据一致;其次,相比于直接将文件分为多个数据对象的方法,该方法先判断文件是否一致,然后只将待修复的文件分为多个数据对象,不需要对数据一致的文件分为多个数据对象,因此减少了确定待修复的数据对象的时间,使得数据一致性检测和修复的过程相对简单,提高了数据一致性检测和修复的效率。
此外,本申请还提供一种数据一致性检测和修复的装置、计算机可读存储介质,与上述的数据一致性检测和修复的方法相对应,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于分布式存储系统的数据存储流程图;
图2为本申请实施例提供的一种数据一致性检测和修复的方法的流程图;
图3为本申请的一实施例提供的一种数据一致性检测和修复的装置的结构图;
图4为本申请另一实施例提供的一种数据一致性检测和修复的装置的结构图;
图5为本申请实施例提供的一种数据一致性检测和修复的应用场景示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种数据一致性检测和修复的方法、装置及介质,用于对数据进行一致性检测和修复。
随着云计算、数字化转型,产生的数据量呈指数级增长,因此,对海量数据存储有新的技术要求。传统存储虽然技术成熟、性能良好、可用性高等优点,但面对海量数据,其缺点也越来越明显,如扩展性差、成本高、存在单点故障和性能瓶颈等。为了克服上述缺点,满足海量数据的存储需求,当前技术背景下出现了分布式存储技术。分布式存储系统,通常包括存储服务器,以及多个客户端组成,其本质是将大量的文件,均匀分布到多个存储服务器上。分布式存储系统已经普遍应用于生成环境中,具有高扩展性,高可用性,高可靠性的特点,与此同时,分布式对象存储系统能够应用于多种场景,在商业化模式的推动下,对分布式存储系统的数据可靠性要求越来越高。
图1为本申请实施例提供的一种基于分布式存储系统的数据存储流程图。如图1所示,分布式存储系统主要包括:文件数据1、数据对象2、PG归置组3、磁盘4,其中数据对象2、PG归置组3、磁盘4存放在存储池中。分布式存储系统的客户端将所要存储的文件数据,均以对象实例存储在底层磁盘4中。磁盘4是分布式存储系统的存储数据的守护进程,磁盘4守护进程的作用是处理存储设备上的IO操作。文件数据1被分片为数据对象2后,分布式存储系统设计了PG归置组3对海量数据对象2进行有效管理,并将PG归置组3映射到磁盘4中。由于随着数据量的增加,在集群扩容,动态均衡过程中,会导致磁盘4管理数据对象2过多而崩溃的问题,因此,设置PG归置组3用来避免客户端与底层磁盘4之间的紧耦合。磁盘4通常为存储对象的设备(Object Storage Device,OSD ),用于响应客户端请求返回具体数据的进程。
具体的,分布式存储系统客户端将文件存入存储系统中的方法流程如下:
a) 分布式存储客户端首先指定存入分布式存储系统存储池pool,对象名;
b) crushmap算法将对象名进行hash计算得出具体的PG id,PG num的设置根据OSD磁盘的数量决定;
c) 切片后的数据对象存储入PG归置组中后,在OSD磁盘中进程以目录的形式进行存储实例化;
d) 数据对象存储在PG归置组的目录中,数据对象由三要素组成data,xattr,omap,其中data保存数据对象的数据,xattr保存数据对象的扩展属性,每个对象文件都可以设置文件的属性,这个属性是一个key/value值,但是受到文件系统的限制,key/value对的个数和每个value的大小都进行了限制,如果要设置的对象的key/value不能存储在文件的扩展属性中,还存在另外一种方式保存omap,omap保存到了key/vaule值对的数据库levelDB中;
e) 最后,根据分布式存储系统冗余策略,在PG归置组中的数据对象会映射到多个OSD磁盘当中,例如三副本,一个PG归置组包含三个OSD磁盘,每个OSD磁盘承载的数据对象信息完全一致,以上流程作为本申请数据一致性检测和修复的原理依据。
其中,OSD磁盘在分布式存储系统中使用统一的命名空间,将客户端的文件数据,进行切片,规定每个数据对象大小为预设值,依据该切片大小进行数据对象检测和修复处理。数据对象由全局唯一的inode号(规定十六进制),相对文件的偏移量,对象类型(快照snap或非快照),对象Hash值,所属存储池的id和第几个osd组成。具体的,存储在OSD磁盘中的数据对象示例如下:
10000226acd.00000002__head_84325100__5;
10000226acd:文件的inode号,全局唯一;
00000002:相对于文件的偏移;
head:对象在head目录下,非快照,如果是快照则为snap;
84325100:对象的哈希值,文件夹的目录分层id;
5:数据池编号 pool id。
本申请基于分布式存储系统对数据的一致性进行检测以及在检测到数据不一致的情况下,根据分布式存储系统副本冗余机制对数据进行修复。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。图2为本申请实施例提供的一种数据一致性检测和修复的方法的流程图,如图2所示,该方法包括:
S10:获取当前文件以及当前文件对应的原始文件。
对数据的一致性检测是针对当前文件与当前文件对应的原始文件相比,数据是否一致。因此先分别获取当前文件以及当前文件对应的原始文件。在获取两个文件时,可以分别获取两个文件的具体内容、文件的属性、文件的类型等,此处对于获取的两个文件的具体的内容不作限定,但是获取的用来比较的对象要一致,如对两个文件均获取文件的属性。由于获取当前文件以及当前文件对应的原始文件是用来判断两个文件的数据是否一致,因此,也可以通过校验工具分别获取两个文件的校验值,从而根据校验值来判断两个文件的数据是否一致。当前常用的校验工具主要由哈希算法、MD5信息摘要算法(MD5 Message-Digest Algorithm,MD5)等,本申请中对于使用的具体的校验工具不作限定。如当根据MD5值判断两个文件的数据是否一致时,需要分别获取当前文件的MD5值以及当前文件对应的原始文件的MD5值。
S11:将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致;若否,则进入步骤S12;若是,则结束。
在上述步骤中获取了当前文件以及当前文件对应的原始文件,进而可以根据当前文件以及当前文件对应的原始文件来判断数据是否一致。此处对于用来判断两个文件数据是否一致的比较对象不作限定。如上述步骤中,可以根据两个文件的具体内容进行判断,当两个文件的具体内容完全相同时,确认两个文件的数据一致;也可以同时根据两个文件的具体内容、文件的属性进行判断,当两个文件的具体内容完全相同、文件的属性完全相同,确认两个文件的数据一致;当两个文件的MD5值相同时,确认两个文件的数据一致。当两个文件的数据一致时,说明数据未发生的损坏,因此不需要对数据进行修复;当两个文件的数据不一致时,说明数据发生了损坏。当数据发生损坏后,若不对数据进行修复,则可能会导致业务IO出错,出现数据不可用的现象,因此对于数据不一致的情况,需要对数据进行修复。
S12:确定当前文件为待修复文件。
在判断出当前文件与当前文件对应的原始文件不一致时,确认当前文件是待修复的文件。
S13:获取待修复文件的数据对象。
上述步骤中确定了待修复文件。在实施中,为了确定数据损坏的具体位置,以及针对损坏的数据进行准确地修复,本实施例将待修复文件分为多个数据对象,逐个数据对象判断数据是否发生了变化。首先确认客户端访问损坏的文件路径,通过文件路径,查出文件的inode信息,并转换为十六进制,计算该文件的大小,已知每个数据对象大小为预设值进行切分,计算出文件拥有多少个数据对象。具体地,在文件路径下,使用ll –i命令获取到该文件的inode号及文件大小,通过inode号计算底层数据对象名前缀,根据文件大小获取底层数据对象名后缀最大值。假设文件的inode为2199080746415,执行printf "%x\n"2199080746415得出底层数据对象名前缀为200036d3daf,使用文件大小除以4M,得到5129.233,则得到数据对象个数为5130个,数据对象名后缀从0开始,则后缀范围为00000000到00001409,其中1409是5129的十六进制。
S14:将待修复文件的数据对象与原始文件的数据对象进行比对并确定待修复的数据对象。
在存储池中,扫描遍历每个数据对象,当以“No such file or directory”为标志,当出现该标志时,则表示该数据对象已存坏。如:损坏的对象示例,inodeID(十六进制):
error stat-ing存储池名称/inodeID.对象ID:No such file or directory。
如分布式集群容量将近写满的状态下,曾多次写满了几个OSD磁盘,容量到100%,会导致该OSD磁盘进程down掉,无法启动;为了使该OSD磁盘启动,并且在不删除原有数据的情况下,依据文件存入存储系统中的流程,数据对象存储过程,将PG归置组目录下的文件进行迁移,但是移动会导致该PG归置组目录下数据对象文件扩展属性丢失,则读取该PG归置组目录下数据对象会出错,报该数据对象不存在。
S15:根据原始文件的数据对象的副本数据将待修复的数据对象进行修复,并返回步骤S10。
为了使业务IO尽可能地不出错以及数据可读,对上述步骤中确定的待修复的数据对象进行修复。分布式存储系统记录了每个PG归置组在不同副本数据的Map信息,经过查询可以获取丢失数据对象的OSD磁盘的副本OSD id,根据副本的OSD磁盘可以恢复丢失数据对象的信息。具体的,首先获取副本数据的信息并进行保存,然后将保存的数据对象信息复制到对应的节点上。
本实施例所提供的数据一致性检测和修复的方法,包括:获取当前文件以及当前文件对应的原始文件;将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致;若否,则确定当前文件为待修复文件;获取待修复文件的数据对象;将待修复文件的数据对象与原始文件的数据对象进行比对并确定待修复的数据对象;根据原始文件的数据对象的副本数据将待修复的数据对象进行修复,并返回获取当前文件以及当前文件对应的原始文件的步骤;若是,则结束。由此可见,相比于目前的通过端到端数据校验实现数据一致性的方法,本实施例的方法在实现数据一致性的过程中不需要在整个IO路径上附上校验信息,因此较容易实现数据一致;其次,相比于直接将文件分为多个数据对象的方法,该方法先判断文件是否一致,然后只将待修复的文件分为多个数据对象,不需要对数据一致的文件分为多个数据对象,因此减少了确定待修复的数据对象的时间,使得数据一致性检测和修复的过程相对简单,提高了数据一致性检测和修复的效率。
在实施中,为了能够快速地判断出当前文件与当前文件对应的原始文件的数据是否一致,采用校验工具来进行判断。优选地实施方式是,将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致包括:
获取原始文件的第一MD5值以及获取当前文件的第二MD5值;
在第一MD5值与第二MD5值不相同的情况下,进入确定当前文件为待修复文件的步骤。
上述实施例中列举出可以根据文件的具体内容、文件的属性、文件的类型等或采用校验工具来判断两个文件的数据是否一致。在采用校验工具时,直接在命令行键入文件校验和完整性验证程序信息即可获得校验值,因此相比于直接根据文件的具体内容、文件的属性、文件的类型来判断数据一致性较全面以及较方便快速。本实施例对于使用的具体的校验工具不作限定。优选地,采用MD5值进行数据一致性的校验。在计算文件的MD5值时,在命令行键入如下命令:FCIV-md5-sha1 path\filename.ext便可以获取到文件的MD5值。先获取当前文件对应的原始文件的MD5值,将该MD5值定义为第一MD5值,然后获取当前文件的MD5值,将该MD5值定义为第二MD5值,当比较两个MD5值,当两个MD5值相同时,说明两个文件的数据一致;当两个MD值不相同时,则说明两个文件的数据不一致,确定当前文件为待修复的文件。
本实施例所提供的根据MD5值进行数据一致性的校验,能够较为准确、全面、快速地得到数据一致性的结果。
为了准确地定位数据损坏的位置,在实施中,将待修复文件分为多个数据对象,通过遍历每个数据对象来确定损坏的数据对象。优选地实施方式,获取待修复文件的数据对象包括:
获取待修复文件的大小以及设置各数据对象的大小为预设值;
根据待修复文件的大小以及预设值将待修复的文件分为多个数据对象;
获取待修复文件的各数据对象。
首先确认客户端访问损坏的文件路径,通过该文件的路径,查出该文件的inode信息,并转换为十六进制,计算该文件的大小,设置各数据对象的大小为预设值,根据该预设值对该文件进行切分,计算出该文件拥有多少个数据对象。需要说明的是,本申请对于预设值的设定不作限定。对于Ceph分布式存储,预设值可以为4MB;对于GFS分布式存储,预设值可以为64MB;对于HDFS分布式存储,预设值可以为128MB。本实施例中选取预设值为4M。
本实施例所提供的将文件分为多个数据对象,通过遍历每个数据对象来确定损坏的数据对象,进而准确地定位到数据损坏的位置。
本申请基于分布式存储系统对数据的一致性检测和修复,优选地实施方式,原始文件在存储池中存放包括:
将原始文件分为多个数据对象并获取原始文件的数据对象;
在存储池中设置PG归置组;
将原始文件的数据对象存储至PG归置组;
通过crushmap算法将PG归置组映射至存储池的OSD磁盘,其中,存储池的OSD磁盘中包含各PG归置组映射的多个副本数据。
原始文件在存储池中存放的过程如图1所示。上文中已对分布式存储系统作了详细描述,此处不再赘述。
本实施例所提供的分布式存储方式,一方面,在存储池中设置PG归置组,能够避免客户端与底层OSD磁盘之间的紧耦合;另一方面,通过crushmap算法能够尽可能地保证数据对象均匀分布在各OSD磁盘中。
在实施中,常见的数据不一致的情况有存储数据data损坏、xattr扩展属性丢失等。当因xattr扩展属性丢失而导致数据不一致时,具体的修复过程如下。在检测到是xattr扩展属性丢失导致数据不一致的情况下,根据原始文件的数据对象的副本数据将待修复的数据对象进行修复包括:
根据各PG归置组在存储池的OSD磁盘中的映射信息查询待修复的数据对象的副本编号;
获取待修复的数据对象对应的PG归置组映射的副本数据;其中,PG归置组映射的副本数据为原始文件的数据对象的副本数据;
将PG归置组映射的副本数据复制到待修复的数据对象对应的节点;
将xattr文件的头部部分修改为待修复的数据对象的副本编号;
重新储存待修复的数据对象以完成数据的修复。
在确定待修复的数据对象即丢失的数据对象之后,在分布式存储系统中定位数据对象的分布情况。分布式存储系统中记录了每个PG归置组在不同副本数据的Map信息,经过查询可以获取丢失的数据对象的OSD磁盘的副本编号即OSD id,根据副本的OSD磁盘可以恢复丢失的数据对象的信息,首先获取副本数据的信息并进行保存,然后将保存的对象信息复制到对应的节点,最后修改attr文件的头部部分设置为当前丢失的数据对象的OSD磁盘编号,重新存储数据对象信息,完成数据的修复。具体的,修复过程如下:
a) 丢失对象的OSD,列举同组PG下的副本OSD属性信息;
attr -l PG对象目录
/3.3d3_head/200036d3db5.00000f7d__head_CEAF8FD3__3
b) 导出同组PG下的副本OSD属性信息;
getfattr–d PG对象目录
/3.3d3_head/200036d3db5.00000f7d__head_CEAF8FD3__3 > 保存文件.txt
c) 修改“保存文件.txt”设置为当前丢失对象信息的OSD编号;
d) 复制到丢失对象的OSD所属节点:
e) 通过“setfattr–restore 保存文件.txt ”命令进行扩展属性恢复。
本实施例所提供的数据修复的方法,解决了因xattr扩展属性丢失而导致数据不一致的问题,使得业务IO尽可能地正确以及确保数据的可用性。
在上述实施例的基础上,为了实现对数据一致性的定时检测,优选地实施方式是,在根据原始文件的数据对象的副本数据将待修复的数据对象进行修复之后,还包括:
设置自动化修复工具;
将自动化修复工具添加至后台任务中。
在实施中,可以通过伪代码设计检查工具,并添加到Linux后台crontab任务中,可实现定时检测。通过伪代码实现检测的过程如下:先输入要修复的文件路径,找到要分析的文件的路径;在存储池中比对数据对象的信息。
本实施例所提供的通过设置自动化修复工具,在检测到数据不一致的情况下,通过自动化修复工具能够及时地对数据不一致的情况进行处理,从而使得业务IO尽可能地正确以及确保数据的可用性。
上述实施例中对数据的一致性进行了检测以及修复。在实施中,为了能够使用户直观了解到数据的修复情况,作为优选地方式,在根据待修复的数据对象对应的副本数据将待修复的数据对象进行修复之后,还包括:
输出用于提示完成修复的信息。
在对数据修复完成之后,输出提示信息用来提示用户完成数据的修复。本实施例中对于用于提示完成修复的信息的具体内容、方式、时间等不作限定,只要能提示完成数据的修复即可。
本实施例所提供的在完成数据修复之后,输出提示信息,使得用户能够直观了解到数据的修复情况。
在上述实施例中,对于数据一致性检测和修复的方法进行了详细描述,本申请还提供一种数据一致性检测和修复的装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图3为本申请的一实施例提供的一种数据一致性检测和修复的装置的结构图。本实施例基于功能模块的角度,包括:
第一获取模块10,用于获取当前文件以及当前文件对应的原始文件;
第一比对模块11,用于将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致;若否,则触发确定模块12;若是,则结束;
确定模块12,用于确定当前文件为待修复文件;
第二获取模块13,用于获取待修复文件的数据对象;
第二比对模块14,用于将待修复文件的数据对象与原始文件的数据对象进行比对并确定待修复的数据对象;
修复模块15,用于根据原始文件的数据对象的副本数据将待修复的数据对象进行修复,并返回获取当前文件以及当前文件对应的原始文件的步骤。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的数据一致性检测和修复的装置,通过第一获取模块获取当前文件以及当前文件对应的原始文件;通过第一比对模块将当前文件与原始文件进行比对以便确定当前文件与原始文件是否一致;若否,则触发确定模块来确定当前文件为待修复文件;通过第二获取模块获取待修复文件的数据对象;通过第二比对模块将待修复文件的数据对象与原始文件的数据对象进行比对并确定待修复的数据对象;通过修复模块来根据原始文件的数据对象的副本数据将待修复的数据对象进行修复。由此可见,相比于目前的通过端到端数据校验实现数据一致性的方法,该装置在实现数据一致性的过程中不需要在整个IO路径上附上校验信息,因此较容易实现数据一致;其次,相比于直接将文件分为多个数据对象,该装置中先判断文件是否一致,然后只将待修复的文件分为多个数据对象,不需要对数据一致的文件分为多个数据对象,因此减少了确定待修复的数据对象的时间,使得数据一致性检测和修复的过程相对简单,提高了数据一致性检测和修复的效率。
图4为本申请另一实施例提供的一种数据一致性检测和修复的装置的结构图。本实施例基于硬件角度,如图4所示,数据一致性检测和修复的装置包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的数据一致性检测和修复的方法的步骤。
本实施例提供的数据一致性检测和修复的装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器 (Digital Signal Processor,DSP)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA)、可编程逻辑阵列 (Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器 (CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器 (Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能 (Artificial Intelligence,AI)处理器,该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)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的计算机可读存储介质包括上述提到的数据一致性检测和修复的方法,效果同上。
为了使本领域的技术人员更好的理解本申请的技术方案,下面结合附图5对上述本申请作进一步的详细说明,图5为本申请实施例提供的一种数据一致性检测和修复的应用场景示意图。如图5所示,该过程包括:
S16:文件一致性校验;
S17:判断文件MD5值是否变化;若是,则进入步骤S18,若否,则进入步骤S25;
S18:确认数据损坏;
S19:计算文件大小和inode并转换;
S20:遍历存储池;
S21:找到丢失对象;
S22:PG归置组副本对象;
S23:修复数据;
S24:重新存储损坏的数据;
S25:数据正常。
由此可见,相比于目前的通过端到端数据校验实现数据一致性的方法,本实施例所提供的数据一致性检测和修复的方法在实现数据一致性的过程中不需要在整个IO路径上附上校验信息,因此较容易实现数据一致;其次,相比于直接将文件分为多个数据对象,该方法中先判断文件是否一致,然后只将待修复的文件分为多个数据对象,不需要对数据一致的文件分为多个数据对象,因此减少了确定待修复的数据对象的时间,使得数据一致性检测和修复的过程相对简单,提高了数据一致性检测和修复的效率。
以上对本申请所提供的一种数据一致性检测和修复的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种数据一致性检测和修复的方法,其特征在于,包括:
获取当前文件以及当前所述文件对应的原始文件;
将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致;
若否,则确定当前所述文件为待修复文件;
获取待修复文件的数据对象;
将所述待修复文件的数据对象与所述原始文件的数据对象进行比对并确定待修复的数据对象;
根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复,并返回所述获取当前文件以及当前所述文件对应的原始文件的步骤;
若是,则结束;
其中,所述获取待修复文件的数据对象包括:
获取所述待修复文件的大小以及设置各所述数据对象的大小为预设值;
根据所述待修复文件的大小以及所述预设值将所述待修复的文件分为多个数据对象;
获取所述待修复文件的各所述数据对象。
2.根据权利要求1所述的数据一致性检测和修复的方法,其特征在于,所述将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致包括:
获取所述原始文件的第一MD5值以及获取当前所述文件的第二MD5值;
在所述第一MD5值与所述第二MD5值不相同的情况下,进入所述确定当前所述文件为待修复文件的步骤。
3.根据权利要求1所述的数据一致性检测和修复的方法,其特征在于,所述原始文件在存储池中存放包括:
将所述原始文件分为多个数据对象并获取所述原始文件的数据对象;
在所述存储池中设置PG归置组;
将所述原始文件的数据对象存储至所述PG归置组;
通过crushmap算法将所述PG归置组映射至所述存储池的OSD磁盘,其中,所述存储池的OSD磁盘中包含各所述PG归置组映射的多个副本数据。
4.根据权利要求3所述的数据一致性检测和修复的方法,其特征在于,在检测到是xattr扩展属性丢失导致数据不一致的情况下,所述根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复包括:
根据各所述PG归置组在所述存储池的OSD磁盘中的映射信息查询所述待修复的数据对象的副本编号;
获取所述待修复的数据对象对应的PG归置组映射的副本数据;其中,所述PG归置组映射的副本数据为所述原始文件的数据对象的副本数据;
将所述PG归置组映射的副本数据复制到所述待修复的数据对象对应的节点;
将xattr文件的头部部分修改为所述待修复的数据对象的副本编号;
重新储存所述待修复的数据对象以完成数据的修复。
5.根据权利要求4所述的数据一致性检测和修复的方法,其特征在于,在所述根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复之后,还包括:
设置自动化修复工具;
将所述自动化修复工具添加至后台任务中。
6.根据权利要求1至5任意一项所述的数据一致性检测和修复的方法,其特征在于,在所述根据所述待修复的数据对象对应的副本数据将所述待修复的数据对象进行修复之后,还包括:
输出用于提示完成修复的信息。
7.一种数据一致性检测和修复的装置,其特征在于,包括:
第一获取模块,用于获取当前文件以及当前所述文件对应的原始文件;
第一比对模块,用于将当前所述文件与所述原始文件进行比对以便确定当前所述文件与所述原始文件是否一致;若否,则触发确定模块;若是,则结束;
所述确定模块,用于确定当前所述文件为待修复文件;
第二获取模块,用于获取待修复文件的数据对象;
第二比对模块,用于将所述待修复文件的数据对象与所述原始文件的数据对象进行比对并确定待修复的数据对象;
修复模块,用于根据所述原始文件的数据对象的副本数据将所述待修复的数据对象进行修复,并返回所述获取当前文件以及当前所述文件对应的原始文件的步骤;
其中,所述获取待修复文件的数据对象包括:
获取所述待修复文件的大小以及设置各所述数据对象的大小为预设值;
根据所述待修复文件的大小以及所述预设值将所述待修复的文件分为多个数据对象;
获取所述待修复文件的各所述数据对象。
8.一种数据一致性检测和修复的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的数据一致性检测和修复的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的数据一致性检测和修复的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210298447.6A CN114416665B (zh) | 2022-03-25 | 2022-03-25 | 一种数据一致性检测和修复的方法、装置及介质 |
PCT/CN2022/135108 WO2023179077A1 (zh) | 2022-03-25 | 2022-11-29 | 一种数据一致性检测和修复的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210298447.6A CN114416665B (zh) | 2022-03-25 | 2022-03-25 | 一种数据一致性检测和修复的方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416665A CN114416665A (zh) | 2022-04-29 |
CN114416665B true CN114416665B (zh) | 2022-06-10 |
Family
ID=81264493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210298447.6A Active CN114416665B (zh) | 2022-03-25 | 2022-03-25 | 一种数据一致性检测和修复的方法、装置及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114416665B (zh) |
WO (1) | WO2023179077A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416665B (zh) * | 2022-03-25 | 2022-06-10 | 苏州浪潮智能科技有限公司 | 一种数据一致性检测和修复的方法、装置及介质 |
CN115729477A (zh) * | 2023-01-09 | 2023-03-03 | 苏州浪潮智能科技有限公司 | 分布式存储io路径数据写入、读取方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105160253A (zh) * | 2015-09-29 | 2015-12-16 | 网易(杭州)网络有限公司 | 修复客户端程序的方法、装置、系统及服务器 |
CN112463444A (zh) * | 2020-11-18 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据不一致修复方法及相关装置 |
CN113806119A (zh) * | 2020-06-17 | 2021-12-17 | 浙江宇视科技有限公司 | 存储卡处理方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111937A (zh) * | 2013-04-18 | 2014-10-22 | 中兴通讯股份有限公司 | 主、备数据库及其数据一致性检测、修复方法和装置 |
US10417193B2 (en) * | 2016-05-24 | 2019-09-17 | Vmware, Inc. | Distributed file system consistency check |
US10599634B2 (en) * | 2016-06-19 | 2020-03-24 | Qualcomm Incorporated | Signaling which version information to use on byte-range file repair |
CN107948334B (zh) * | 2018-01-09 | 2019-06-07 | 无锡华云数据技术服务有限公司 | 基于分布式存储系统的数据处理方法 |
CN114416665B (zh) * | 2022-03-25 | 2022-06-10 | 苏州浪潮智能科技有限公司 | 一种数据一致性检测和修复的方法、装置及介质 |
-
2022
- 2022-03-25 CN CN202210298447.6A patent/CN114416665B/zh active Active
- 2022-11-29 WO PCT/CN2022/135108 patent/WO2023179077A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105160253A (zh) * | 2015-09-29 | 2015-12-16 | 网易(杭州)网络有限公司 | 修复客户端程序的方法、装置、系统及服务器 |
CN113806119A (zh) * | 2020-06-17 | 2021-12-17 | 浙江宇视科技有限公司 | 存储卡处理方法、装置、设备及存储介质 |
CN112463444A (zh) * | 2020-11-18 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据不一致修复方法及相关装置 |
Non-Patent Citations (1)
Title |
---|
分布式存储系统中的数据冗余与维护技术研究;王禹;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》;20120615(第6期);第I137-3页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2023179077A1 (zh) | 2023-09-28 |
CN114416665A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727273B1 (en) | Scalable clusterwide de-duplication | |
US10642694B2 (en) | Monitoring containers in a distributed computing system | |
US8015441B2 (en) | Verification of computer backup data | |
US8082231B1 (en) | Techniques using identifiers and signatures with data operations | |
US8886607B2 (en) | Cluster configuration backup and recovery | |
US7818302B2 (en) | System and method for performing file system checks on an active file system | |
US7657796B1 (en) | System and method for distributed storage verification | |
CN114416665B (zh) | 一种数据一致性检测和修复的方法、装置及介质 | |
US7725704B1 (en) | Techniques for performing a prioritized data restoration operation | |
US20110218967A1 (en) | Partial Block Based Backups | |
CN109284073B (zh) | 数据存储方法、装置、系统、服务器、控制节点及介质 | |
WO2018098972A1 (zh) | 一种日志恢复方法、存储装置和存储节点 | |
KR100749922B1 (ko) | 객체 기반 스토리지를 사용하는 분산 파일 서버에서 장애복구 시스템 및 방법 | |
JP2005301497A (ja) | ストレージ管理装置、リストア方法及びそのプログラム | |
US7730090B2 (en) | Architecture for performing file system checking on an active file system | |
US11093387B1 (en) | Garbage collection based on transmission object models | |
US11221785B2 (en) | Managing replication state for deleted objects | |
US11409711B2 (en) | Barriers for dependent operations among sharded data stores | |
CN109726036B (zh) | 一种存储系统中的数据重构方法和装置 | |
CN113885809B (zh) | 数据管理系统及方法 | |
US20230133533A1 (en) | Snapshot copy operation between endpoints | |
US10896152B2 (en) | Method, apparatus and computer program product for managing data storage | |
CN107402841B (zh) | 大规模分布式文件系统数据修复方法及设备 | |
US7831564B1 (en) | Method and system of generating a point-in-time image of at least a portion of a database | |
US7996708B1 (en) | Techniques for file system resource restoration |
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 |