一种恢复数据的方法及装置的制作方法

文档序号:6458902阅读:180来源:国知局
专利名称:一种恢复数据的方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种恢复数据的方法及装置。
背景技术
通常在UNIX和Linux等环境中,为了避免进程异常退出而导致重要数据丟 失,通常会把重要的数据保存到数据库中,通过应用程序编程接口 (Application Programming Interface, API )或结构化查询语言(Structured Query Language, SQL) 语句直接访问和修改数据库中的数据,这样在进程重新启动等情况下时就可以 方便的从数据库中进行数据恢复。
但是,由于数据库访问通常包含API调用、SQL解析、网络传输等步骤, 如果把所有的数据都通过数据库技术进行恢复,则系统会变得非常复杂,并且 数据库的运行性能可能也会降低。

发明内容
本发明所要解决的技术问题在于,提供一种恢复数据的方法及装置。可简 单高效的进行数据恢复。
为了解决上述技术问题, 一方面,本发明的实施例提供了一种恢复数据的 方法,包括获取内存转储文件;检查所述内存转储文件中是否有数据恢复标 记;若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息 获取内存转储文件中保存的相应的数据块;对所述数据块进行正确性校验;若 所述正确性才L睑结果为正确,则恢复所述lt据块。
另一方面,本发明的实施例提供了一种恢复数据的装置,包括第一获取 单元,用于获取内存转储文件;检查单元,用于检查所述内存转储文件中是否 有数据恢复标记;第二获取单元,若所述检查单元检查到所述数据恢复标记, 则所述第二获取单元用于根据所述数据恢复标记和数据块长度信息获取内存转 储文件中保存的相应的数据块;校验单元,用于对所述数据块进行正确性校验;恢复单元,若所述校验单元的正确性校验结果为正确,则所述恢复单元用于恢 复所述数据块。
同时,本发明的实施例还提供了包括上述恢复数据的装置的数据库和计算机。
在本发明实施例中,利用内存转储文件作为数据恢复源,而不需要在进行 运行时同步数据到数据库,降低了维护数据库的复杂度。同时,由于没有运行 时持久化的消息交互和磁盘访问,提高了产品运行时的性能,降低了产品运营 和维护成本。


图1是本发明实施例中恢复数据的方法的流程示意图; 图2是本发明实施例中恢复数据的装置的组成示意图; 图3是本发明实施例中恢复数据结构的示意图; 图4是本发明实施例中内存转储文件的示意图; 图5是本发明实施例中检查数据恢复标记的示意图。
具体实施例方式
通常在UNIX、 Linux等环境中,进程异常(例如无效地址访问)会导致 进程退出,并把内存的信息全部转存到core (磁芯存储)文件中。该core文件 通常称为内存转储文件(或coredump文件、core文件,在有些操作系统上可以 设置这个文件的后缀,比如"core.xxxxxx,,等,"xxxxxx"通常是进程名加上日期产 生的一串数字)。因此,coredump文件正好保存了进程异常退出时的内存信息, 所以理论上是可以从coredump文件中恢复进程所需的数据的。
如图1所示,为本发明实施例中恢复数据的方法的流程示意图。该方法主 要包括如下步骤
101、获取内存转储文件。所述内存转储文件可为coredump文件、core文件等。
当进程异常退出并产生内存转储文件后,若需要进行数据恢复,则需要首 先查找到相应的内存转储文件。进行数据恢复的原因可能是需要恢复原来异常 的进程,则此时,为重新启动的应用进程在启动时查找对应的内存转储文件;若进行数据恢复的原因仅仅是为了读取原异常进程中的部分内存数据,则只需 进程标记获取相应的内存转储文件即可。
102、 检查所述内存转储文件中是否有数据恢复标记。
在获取了内存转储文件后,打开该文件,并查找文件中是否有数据恢复标 记。可以二进制文件方式打开该文件,采用顺序读并斥企查读取内容的方式,寻 找数据恢复标记。
需要说明的是在同 一个内存转储文件中可能存在多个数据恢复标记,每个 数据恢复标记用于标记一段数据块。该数据恢复标记可以是一个特殊的数值, 也可以是类似的能够唯一标示一个数据的标识,比如全局唯一标识符(Globally Unique Identifier, GUID )。
103、 若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度 信息获取内存转储文件中保存的相应的数据块。
104、 对所述数据块进行正确性校验。校验的方法具体可为先生成相应的 数据块的正确性校验码;再验证所述正确性校验码与所述数据块的预存的正确 性校验码是否相同,若相同则表明所述正确性校验的结果为正确。
其中,正确性校验码可为循环冗余码校验码,也可为信息摘要算法5 MD5 中的信息摘要。
105、 若所述正确性校验结果为正确,则恢复所述数据块。 若进行数据恢复的原因是重新启动进程的话,则本步包括根据相应的数
据标记确定该数据块应对应应用进程的哪一部分数据,以确定数据块需要恢复 到的内存位置;将所述数据块中的数据存储到所述应用进程对应的内存位置上。
若仅仅是希望获取原进程中的数据的话,则只要根据数据标记获取校验正 确的数据块的相应内容即可。
同时,在同一内存转储文件可能存在多段数据块及其相应数据恢复标记, 则本方法中在获得内存转储文件后,在102步骤中可釆用循序检查的方法检查 数据恢复标记,在检查到一个数据恢复标记时即执行103 105步骤,并在105 执行完后接着上一次检查结束的位置检查是否还有下一个数据恢复标记。即以 顺序检查内存转储文件的方式循环的执行102~105步骤,直至检查完整个内存 转储文件。
或者也可以在步骤102中, 一次检查出同一内存转储文件中所有的数据恢复标记,并根据各个标记执行步骤103~105,以恢复相应的数据块。
此外,在本方法中所需要使用的信息数据恢复标记、数据块长度信息、
正确性校验码以及数据标记等信息,可以定义为一个恢复数据结构,并在进程
运行时对该结构中的相应内容进行赋值,具体见后述实施例中的描述。
相应的,如图2所示,为本发明中一种恢复数据的装置的具体实施例的组
成示意图。该装置包括
第一获取单元l,用于获取内存转储内存转储文件。所述内存转储文件可为
coredump文件、core文件等。
检查单元2,用于检查所述内存转储文件中是否有数据恢复标记。 第二获取单元3,若所述检查单元2检查到所述数据恢复标记,则所述第二
获取单元3用于根据所述数据恢复标记和数据块长度信息获取内存转储文件中
保存的相应的数据块。
校验单元4,用于对所述数据块进行正确性校验。校验单元4可进一步包括
生成子单元,用于生成相应的数据块的正确性校验码;验证字单元,用于验证
明所述正确性4文验的结果为正确。
恢复单元5,若所述4交验单元4的正确性^^验结果为正确,则所述恢复单元 5用于恢复所述数据块。恢复单元4可进一步包括确定子单元,用于根据相应 的数据标记确定该数据块应对应应用进程的哪一部分数据,以确定其应存储的 内存位置;存储子单元,用于将所述数据块中的数据存储到所述应用进程对应 的内存位置上。
本装置还可同时包括下述两个单元
生成单元6,用于生成数据恢复文件,所述数据恢复文件中包括对恢复数据 结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息 字段、正确性校验码字段以及数据标记字段;
存入单元7,用于在进程运行时,向所述内存转储文件中存入所述恢复凄t据 结构中定义的字段的值。
其中,上述描述中出现的数据恢复标记、数据块长度、正确性校验码以及 数据标记等与上述方法描述中的 一致。
同时,在实现本发明的具体实施例时,可以在数据库中设置相应的恢复数据的装置,也可以在计算机中或具有处理数据功能的设备中设置所述的恢复数 据的装置。
其中,所述恢复数据的装置与数据库或计算机中相应的存储装置相连(如 存储所述内存转储文件的存储装置、存储恢复数据的存储装置等),以便所述恢 复数据的装置可以对相关的内存转储文件进行相应的操作,如读取或存入等, 以及对恢复的数据进行存储等操作。
同时,所述恢复数据的装置还可以和数据库或计算机中其他相应的可控制 数据恢复的装置相连,以便对所述恢复数据的装置进行数据恢复的控制。
由上述描述可知,在上述具体实施例中,恢复数据的装置利用内存转储文 件作为数据恢复源,而不需要在进行运行时同步数据到数据库,降低了一般数 据库持久化带来的产品复杂度。同时,由于没有过多的消息交互和磁盘访问, 提高了具有该恢复数据的装置的产品(如数据库或计算机)运行时的性能,降 低了产品运营和维护成本。
下面,结合一个更详细的例子,对上述方法进行描述。
对于一个需要具有本发明实施例中所描述的数据恢复功能的应用程序,首
先需要在应用程序数据的数据结构中增加一个辅助的数据结构memhead—t作为
恢复数据结构,如图3所示。对应的C语言的声明如下 struct memhead—t
{ 一
long memflag'-long pairam'. long len,-long CRC,'
其中各个字段的含义解释如下
memflag:即上述的勒:据恢复标记的一种具体形式,用于标记一个可从内存 转储文件恢复数据块的内存起始位置,可以使用一个特殊的数值,比如 0x43215678 (后述部分都采用这个数值进行说明),也可以使用类似的能够唯一 标示一个4丈据的凝:据结构,比如GUID。其中,所述内存转储文件可为coredump 文件、core文件等。
param:即上述的数据标记的一个具体示例。此处称为应用程序数据块自定 义参数,由应用程序定义其用途。例如,当应用程序存在多个数据块的情况下, 可以在应用程序初始化时,将每个数据块的pamm值设置为数据块ID,在恢复阶段通过检查pamm,而区分出多个数据块。
len:用于确定memhead—t结构后面的应用程序数据块的大小。
CRC:用于校验从内存转储文件恢复的应用程序数据块的有效性。当应用 程序数据块的内容发生变化时,需要根据数据块的内容用循环冗余码校验算法 重新计算该字段的值(也可以使用类似的能够保证数据完整性的算法,比如 MD5算法;或者能够记录应用进程数据块的状态的算法和数据结构)。若数据块 为正常的数据块,则重新计算的该字段的值与原来计算的值一致,只有当数据 块异常(如,当前进程正在修改数据块值时,突然异常退出,即该数据块值可 能只修改了部分)时,CRC值会改变。
当定义了上述数据结构的应用程序运行时,会创建相应的应用进程数据块 (动态创建,或者静态分配都可以)。并初始化应用进程数据块的memhead—t信 息,包括设置memflag为0x43215678,由应用进程填写param字段,根据应 用进程数据块的长度填写len,最后根据应用进程数据块,用循环冗余码校验算 法计算出循环冗余码校验码,并填入CRC字段。
进程运行过程中当应用程序的数据发生变化时,需要在修改完成后,需要 重新计算对应的memhead的CRC。
则当进程异常退出时,所存储的内存转储文件的情况可如图4所示。
当需要恢复上述应用进程时,恢复的应用进程启动后首先查找对应的内存 转储文件,并以二进制文件方式打开该内存转储文件,顺序读取该文件(图5 中所示为,人底部往顶部方向顺序读取,当然,也可以采用其他方向的顺序读取 方式),同时,检查读取的内容是否为memflag,如图5所示。
当找到标记时,对相应的数据块使用循环冗余码校验算法计算出循环冗余 码校验码,并和memhead一t的CRC进行比较,看是否一致。
如果校-睑CRC —致,则说明数据块在coredump时是完整的,可以进行恢 复,并检查param参数,确定是哪一个应用进程数据块,最后把coredump中保 存的数据恢复到进程对应内存位置上。
重复搜索-校验-恢复过程,直至完全搜索完整个内存转储文件为止。
由上述描述可知,在本发明实施例中,利用内存转储文件作为数据恢复源, 而不需要在进行运行时同步数据到数据库,降低了一般数据库持久化带来的产 品复杂度。同时,由于减少了消息交互和磁盘访问,提高了了具有该恢复数据的装置的产品(如数据库或计算机)运行时的性能,降低了产品运营和维护成 本。
以上所描述的装置实施例仅仅是示意性的,其中所迷作为分离部件说明的 单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也 可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目 的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施 方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过^/f牛。 基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以 以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介
质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例 的某些部分所述的方法。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上 述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该 技术方案的保护范围之内。
以上所揭露的仅为本发明的实施例而已,当然不能以此来限定本发明之权 利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1、一种恢复数据的方法,其特征在于,所述方法包括获取内存转储文件;检查所述内存转储文件中是否有数据恢复标记;若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取所述内存转储文件中保存的相应的数据块;对所述数据块进行正确性校验;若所述正确性校验结果为正确,则恢复所述数据块。
2、如权利要求l所述的方法,其特征在于,在所述获取内存转储文件之前 还包括生成数据恢复文件,所述数据恢复文件中包括对恢复lt据结构的描述,所 述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段以及正确性 校验码字段。
3、如权利要求2所述的方法,其特征在于,所述恢复数据结构中还定义了 数据标记字段。
4、如权利要求2或3所述的方法,其特征在于,所述内存转储文件中保存 了所述恢复数据结构中定义的字段的值。
5、如权利要求1至3中任一项所述的方法,其特征在于,所述对所述数据 块进行正确性校验包括生成相应的数据块的正确性校验码;相同则表明所述正确性校验的结果为正确。
6、如权利要求5所述的方法,其特征在于,所述正确性校验码为循环冗余 码校验码,或者为,信息摘要算法中的信息摘要。
7、如权利要求1至3中任一项所述的方法,其特征在于,所述恢复所述数 据块包括根据相应的数据标记确定数据块恢复时对应的所述应用进程的数据位置, 以确定所述数据块应存储的内存位置;将所述数据块中的数据存储到所述应用进程对应的内存位置上。
8、 一种恢复数据的装置,其特征在于,所述装置包括第一获取单元,用于获取内存转储文件;检查单元,用于检查所述内存转储文件中是否有数据恢复标记;第二获取单元,若所述检查单元检查到所述数据恢复标记,则所述第二获取单元用于根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存 的相应的数据块;校验单元,用于对所述数据块进行正确性校^r;恢复单元,若所述校验单元的正确性校验结果为正确,则所述恢复单元用 于恢复所述数据块。
9、如权利要求8所述的装置,其特征在于,所述装置还包括生成单元,用于生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段、正确性校验码字段以及数据标记字段;存入单元,用于在进程运行时,向所述内存转储文件中存入所述恢复数据结构中定义的字段的值。
10、如权利要求8或9所述的装置,其特征在于,所述校验单元包括: 生成子单元,用于生成相应的数据块的正确性校验码; 验证字单元,用于验证所述正确性校验码与所述数据块的预存的正确 -睑码是否相同,若相同则表明所述正确性冲t睑的结果为正确。
11、如权利要求IO所述的装置,其特征在于,所述恢复单元包括:确定子单元,用于根据相应的数据标记确定数据块恢复时对应的所述应用进程的数据位置,以确定所述数据块应存储的内存位置;存储子单元,用于将所述数据块中的数据存储到所述应用进程对应的内存 位置上。
12、 一种数据库,其特征在于,所述数据库具有如权利要求8至11中任一 项所述的恢复lt据的装置。
13、 一种计算机,其特征在于,所述计算机具有如权利要求8至11中任一 项所述的恢复数据的装置。
全文摘要
本发明公开了一种恢复数据的方法及装置,该方法包括获取内存转储文件;检查所述内存转储文件中是否有数据恢复标记;若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块;对所述数据块进行正确性校验;若所述正确性校验结果为正确,则恢复所述数据块。采用本发明,可以简单高效的进行数据恢复。
文档编号G06F11/14GK101308471SQ200810028419
公开日2008年11月19日 申请日期2008年5月30日 优先权日2008年5月30日
发明者耿 张 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1