CN109165113B - 一种数据文件修复的方法 - Google Patents

一种数据文件修复的方法 Download PDF

Info

Publication number
CN109165113B
CN109165113B CN201811022478.9A CN201811022478A CN109165113B CN 109165113 B CN109165113 B CN 109165113B CN 201811022478 A CN201811022478 A CN 201811022478A CN 109165113 B CN109165113 B CN 109165113B
Authority
CN
China
Prior art keywords
sum
row
data
rows
error
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
CN201811022478.9A
Other languages
English (en)
Other versions
CN109165113A (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.)
Suzhou Hexinzhiyuan Energy Saving Technology Co ltd
Original Assignee
Suzhou Hexinzhiyuan Energy Saving 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 Suzhou Hexinzhiyuan Energy Saving Technology Co ltd filed Critical Suzhou Hexinzhiyuan Energy Saving Technology Co ltd
Priority to CN201811022478.9A priority Critical patent/CN109165113B/zh
Publication of CN109165113A publication Critical patent/CN109165113A/zh
Application granted granted Critical
Publication of CN109165113B publication Critical patent/CN109165113B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/0793Remedial or corrective actions

Abstract

本发明公开了一种数据文件修复的方法,步骤1将数据元素排成M行*N列的矩阵,要求M与N大体相等;步骤2选择一种可逆运算F,其逆运算f;步骤3初始化,对1~M行逐行进行连续F运算,保存到1~M数组,对1~N列进行连续F运算,保存到1~N数组;步骤4检查,对每行巡回进行累加和,是否等于初始化时的累加和,得出错误的行数a,以及错误行号集合X,如果为0,说明没有错误;如果大于0,则对每列巡回进行累加和,是否等于初始化时的累加和,得出错误的列数b,以及错误行号集合Y;步骤5判断并修复。本发明在略微增加存储器开销的前提下,极大提升了数据的安全性,在工控领域极大提高控制器、网关等关键设备的可靠性。

Description

一种数据文件修复的方法
技术领域
本发明属于工控系统领域,涉及一种数据存储技术,具体而言涉及一种数据文件的修复方法。
背景技术
工控系统稳定性、可靠性及其重要,其运行依赖一系列数据文件,这些数据文件是一个连续存放的字节流,存放在存储器中。但由于种种原因,某些字节有可能发生变化,导致文件错乱、系统瘫痪,后果不堪设想。现有技术中,解决此问题的通常方法是整个文件备份,但是此方法增大了1倍的存储开销,成本偏高。
发明内容
为了解决现有技术存在的问题,本发明旨在提供一种数据文件修复的方法,该方法以很小的存储开销弥补某些数据错乱带来的危害。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种数据文件修复的方法,其包括以下步骤:
步骤1)将数据元素排成M行*N列的矩阵,要求M与N 大体相等,若原始数据长度不足,可适当补齐,所述数据元素包括字节、字和双字等;
步骤2)选择一种可逆运算F, 其逆运算f, 满足:
z=F(x,y)……………………………………(1)
x=f(z,y),y=f(z,x)………………………………(2)
上式(1)、(2)中,x,y,z都属于所述数据元素的数据类型,
举例:如果数据元素为8位字节,则可选择无进位字节加法作为运算F,其逆运算f就是无进位字节减法;
步骤3)初始化
对1~M行逐行进行连续F运算,保存到1~M数组,对1~N列进行连续F运算,保存到1~N数组,若数据元素为字节,F运算为无进位字节加法,则连续F运算称之为累加和;
步骤4)检查
在系统运行过程中,上述M行N列矩阵数据、行累加和数组以及列累加和数组都有可能发生错误,需要进行巡回检查;
对每行巡回进行累加和,是否等于初始化时的行累加和,得出错误的行数a,以及错误行号集合X, 如果为0,说明矩阵数据与行累加和数组能相互验证,没有错误;
对每列巡回进行累加和,是否等于初始化时的列累加和,得出错误的列数b,以及错误列号集合Y,如果为0,说明矩阵数据与列累加和数组能相互验证,没有错误;
步骤5)判断并修复
①如果a=0,b>0,说明初始化的列累加和数组出现错误,重新计算错误的列累加和,并保存;
②如果a>0,b=0,说明初始化的行累加和数组出现错误,重新计算错误的行累加和,并保存;
③如果a=1,b=1,说明只有一个字节出现错误,根据集合X,Y可直接得出错误元素所在的位置坐标,利用列或行累加和进行逆运算,可以算出正确的数据;
④如果a=1,b>1,则错误字节出现在一行多列,根据集合X,Y可得出错误元素所在的位置坐标,利用列累加和进行逆运算,可以逐一算出正确的数据;
⑤如果a>1,b=1,则错误字节出现在一列多行,根据集合X,Y可得出错误元素所在的位置坐标,利用行累加和进行逆运算,可以逐一算出正确的数据;
⑥如果a=2,且b>=2,且Y集合的列号连续(从N与1之间也属于连续,N在前,1在后),可假定每列只有一个错误元素,可以利用列累加和数组逐一还原数据,最后重新校验行累加和,如果符合,还原成功,否则还原失败;
⑦如果a>=2,且b=2,且X集合中的行号连续(从M与1之间也属于连续,M在前,1在后),可假定每行只有一个错误元素,可以利用行累加和数组逐一还原数据,最后重新校验列累加和,如果符合,还原成功,否则还原失败;
⑧如果a>2且b>2无法还原。
本发明的有益效果如下:
与现有技术相比,本发明的方法的价值在不增加存储器开销的前提下,极大提升了数据的安全性,在工控领域极大提高控制器、网关等关键设备的可靠性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中;
图1表示本发明的方法将数据元素排成M行*N列的初始化矩阵示意图。
图2表示本发明的方法当a=0,b>0时的矩阵示意图。
图3表示本发明的方法a=1,b=1时的矩阵示意图。
图4表示本发明的方法a=1,b>1时的矩阵示意图。
图5表示本发明的方法a>2且b>2时的矩阵示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
一种数据文件修复的方法,其包括以下步骤:
步骤1)将数据元素排成M行*N列的矩阵,要求M与N 大体相等,若原始数据长度不足,可适当补齐,所述数据元素包括字节、字和双字等;
步骤2)选择一种可逆运算F, 其逆运算f, 满足:
z=F(x,y)……………………………………(1)
x=f(z,y),y=f(z,x)………………………………(2)
上式(1)、(2)中,x,y,z都属于所述数据元素的数据类型,
举例:如果数据元素为8位字节,则可选择无进位字节加法作为运算F,其逆运算f就是无进位字节减法;
步骤3)初始化
如图1所示,对1~M行逐行进行连续F运算,保存到1~M数组,对1~N列进行连续F运算,保存到1~N数组,若数据元素为字节,F运算为无进位字节加法,则连续F运算称之为累加和;
步骤4)检查
在系统运行过程中,上述M行N列矩阵数据、行累加和数组以及列累加和数组都有可能发生错误,需要进行巡回检查;
对每行巡回进行累加和,是否等于初始化时的行累加和,得出错误的行数a,以及错误行号集合X, 如果为0,说明矩阵数据与行累加和数组能相互验证,没有错误;
对每列巡回进行累加和,是否等于初始化时的列累加和,得出错误的列数b,以及错误列号集合Y,如果为0,说明矩阵数据与列累加和数组能相互验证,没有错误;
步骤5)判断并修复
①如果a=0,b>0,说明初始化的列累加和数组出现错误,重新计算错误的列累加和,并保存,如图2所示;
②如果a>0,b=0,说明初始化的行累加和数组出现错误,重新计算错误的行累加和,并保存;
③如果a=1,b=1,说明只有一个字节出现错误,根据集合X,Y可直接得出错误元素所在的位置坐标,利用列或行累加和进行逆运算,可以算出正确的数据,如图3所示;
④如果a=1,b>1,则错误字节出现在一行多列,根据集合X,Y可得出错误元素所在的位置坐标,利用列累加和进行逆运算,可以逐一算出正确的数据,如图4所示;
⑤如果a>1,b=1,则错误字节出现在一列多行,根据集合X,Y可得出错误元素所在的位置坐标,利用行累加和进行逆运算,可以逐一算出正确的数据;
⑥如果a=2,且b>=2,且Y集合的列号连续(从N与1之间也属于连续,N在前,1在后),可假定每列只有一个错误元素,可以利用列累加和数组逐一还原数据,最后重新校验行累加和,如果符合,还原成功,否则还原失败;
⑦如果a>=2,且b=2,且X集合中的行号连续(从M与1之间也属于连续,M在前,1在后),可假定每行只有一个错误元素,可以利用行累加和数组逐一还原数据,最后重新校验列累加和,如果符合,还原成功,否则还原失败;
⑧如果a>2且b>2无法还原,如图5所示。
例如:
现有16进制数据文件{0x35,0x79,0x9d,0x48,0x15,0xf3,0x4d,0x30,0x81},F运算采用无进位16进制加法。
首先,排列成3*3的阵列,并计算出行累加和数组{4b,50,fe}和列累加和数组{ca,be,11};
Figure DEST_PATH_IMAGE001
然后,检查过程:巡回检查上述阵列数据的行累加和与列累加和,与前面保存的数组相比较,可能有如下各种情况:
A:完全符合,说明原始数据阵列,行累加和数组,列累加和数组都没有错误。
B:行累加和数组符合,列累加和数组存在不符合,说明列累加和数组出现错误,需要重新计算并保存。依次类推,列累加和数组符合,行累加和数组存在不符合,说明行累加和数组出现错误,需要重新计算并保存。
C:如果出现有1行1列不符合,比如,2行2列为0x33时,必然导致行数组和列数组各有一个不符合,由此得出错误数据的坐标(2,2),并且其数值=0x50-0x48-0xf3=0x15 。
Figure DEST_PATH_IMAGE002
D:如果出现有1行多列不符合,比如下表。可以推断坐标为(1,2)和(3,2)数据错误,因为1列与3列只是各有1个错误,因此用列累加和还原
(1,2)=0xca-0x35-0x4d=0x48
(3,2)=0x11-0x9d-0xfe=0xf3
Figure DEST_PATH_IMAGE003
依次类推,1列多行不符合的情况,可用行累加和进行还原。
E:如果出现2行多列不符合,比如下表有2行2列不符合,可以先假定:1)错误的数据是连续存放的相关的,2)每列只错了1行,因此用列累加和还原
(2,3)=0x11-0x9d-0x81=0xf3
(3,1)=0xca-0x35-0x48=0x4d
再用行累加和进行校验,如果正确则说明还原成功。
Figure DEST_PATH_IMAGE004
依次类推,2列多行不符合的情况,也可以用类似的原则假定,还原之后用列累加和作最后的校验。
F:如果出现多于2行多于2列的不符合,无法还原。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种数据文件修复的方法,其特征在于,包括以下步骤:
步骤1)将数据元素排成M行*N列的矩阵,要求M与N 大体相等,若原始数据长度不足,可适当补齐,所述数据元素包括字节、字和双字;
步骤2)选择一种可逆运算F, 其逆运算f, 满足:
z=F(x,y)……………………………………(1)
x=f(z,y),y=f(z,x)………………………………(2)
上式(1)、(2)中,x,y,z都属于所述数据元素的数据类型,
步骤3)初始化
对1~M行逐行进行连续F运算,保存到1~M数组,对1~N列进行连续F运算,保存到1~N数组;若数据元素为字节,则F运算为无进位字节加法;若数据元素为字,F运算为无进位字型加法;若数据元素为双字,则F运算为无进位双字型加法;所述连续F运算称之为累加和;
步骤4)检查
在系统运行过程中,上述M行N列矩阵数据、行累加和数组以及列累加和数组都有可能发生错误,需要进行巡回检查;
对每行巡回进行累加和,是否等于初始化时的行累加和,得出错误的行数a,以及错误行号集合X, 如果为0,说明矩阵数据与行累加和数组能相互验证,没有错误;
对每列巡回进行累加和,是否等于初始化时的列累加和,得出错误的列数b,以及错误列号集合Y,如果为0,说明矩阵数据与列累加和数组能相互验证,没有错误;
步骤5)判断并修复;
所述步骤5中,如果a=0,b>0,说明初始化的列累加和数组出现错误,重新计算错误的列累加和,并保存;如果a>0,b=0,说明初始化的行累加和数组出现错误,重新计算错误的行累加和,并保存;如果a=1,b=1,说明只有一个字节出现错误,根据集合X,Y可直接得出错误元素所在的位置坐标,利用列或行累加和进行逆运算,可以算出正确的数据;如果a=1,b>1,则错误字节出现在一行多列,根据集合X,Y可得出错误元素所在的位置坐标,利用列累加和进行逆运算,可以逐一算出正确的数据;如果a>1,b=1,则错误字节出现在一列多行,根据集合X,Y可得出错误元素所在的位置坐标,利用行累加和进行逆运算,可以逐一算出正确的数据。
CN201811022478.9A 2018-09-04 2018-09-04 一种数据文件修复的方法 Active CN109165113B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811022478.9A CN109165113B (zh) 2018-09-04 2018-09-04 一种数据文件修复的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811022478.9A CN109165113B (zh) 2018-09-04 2018-09-04 一种数据文件修复的方法

Publications (2)

Publication Number Publication Date
CN109165113A CN109165113A (zh) 2019-01-08
CN109165113B true CN109165113B (zh) 2021-10-22

Family

ID=64893973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811022478.9A Active CN109165113B (zh) 2018-09-04 2018-09-04 一种数据文件修复的方法

Country Status (1)

Country Link
CN (1) CN109165113B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110363027B (zh) * 2019-06-21 2021-04-09 捷德(中国)科技有限公司 一种电子合同的生成及电子签名方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881232A (en) * 1987-02-10 1989-11-14 Sony Corporation Method and apparatus for error correction
US6434719B1 (en) * 1999-05-07 2002-08-13 Cirrus Logic Inc. Error correction using reliability values for data matrix
CN102034515A (zh) * 2010-12-03 2011-04-27 蒋骏宁 一种提高光存储介质的纠错能力的方法
CN108279995A (zh) * 2018-01-30 2018-07-13 北京交通大学 一种基于安全再生码的分布式存储系统的存储方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05144287A (ja) * 1991-11-15 1993-06-11 Yokogawa Electric Corp メモリ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4881232A (en) * 1987-02-10 1989-11-14 Sony Corporation Method and apparatus for error correction
US6434719B1 (en) * 1999-05-07 2002-08-13 Cirrus Logic Inc. Error correction using reliability values for data matrix
CN102034515A (zh) * 2010-12-03 2011-04-27 蒋骏宁 一种提高光存储介质的纠错能力的方法
CN108279995A (zh) * 2018-01-30 2018-07-13 北京交通大学 一种基于安全再生码的分布式存储系统的存储方法

Also Published As

Publication number Publication date
CN109165113A (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
US7797609B2 (en) Apparatus and method for merging data blocks with error correction code protection
EP3298548B1 (en) Fault tolerant syndrome extraction and decoding in bacon-shor quantum error correction
KR101572038B1 (ko) 메모리 어레이의 에러 수정 방법
CN111078460B (zh) 一种快速纠删码计算方法
US9787329B2 (en) Efficient coding with single-error correction and double-error detection capabilities
CN108874576B (zh) 一种基于纠错编码的数据存储系统
CN101183565A (zh) 存储介质中数据校验方法
US10503593B2 (en) Two layer quad bit error correction
CN105808170B (zh) 一种能够修复单磁盘错误的raid6编码方法
CN106484559A (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
CN101546291A (zh) 提高内存数据健壮性的存取方法和装置
CN109165113B (zh) 一种数据文件修复的方法
US20180151197A1 (en) Error correction code encoder, encoding method, and memory controller including the encoder
US7747925B2 (en) Apparatus and method for error correction code striping
US20050086575A1 (en) Generalized parity stripe data storage array
CN116974813B (zh) 寄存器数据管理方法、装置、寄存器模块、计算机设备
CN105027084A (zh) 在移动通信系统中控制存储器的装置和方法
KR20150084560A (ko) 인코딩 장치, 디코딩 장치 및 그 동작 방법
CN110431531B (zh) 存储控制器、数据处理芯片及数据处理方法
CN111352754B (zh) 一种数据存储检错纠错方法及数据存储装置
KR101810029B1 (ko) 스토리지 장치용 기록 방법 및 기록 장치
CN104615380B (zh) 一种基于分组编码的磁盘阵列构建方法
CN108400787B (zh) 一种基于bch编码的并行fir滤波器容错方法
US8499224B2 (en) Redundant code generation method and device, data restoration method and device, and raid storage device
CN104866386A (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
GR01 Patent grant
GR01 Patent grant