《一种文件系统的断电保护方法.pdf》由会员分享,可在线阅读,更多相关《一种文件系统的断电保护方法.pdf(7页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103092719 A (43)申请公布日 2013.05.08 CN 103092719 A *CN103092719A* (21)申请号 201110336102.7 (22)申请日 2011.10.28 G06F 11/14(2006.01) G06F 17/30(2006.01) (71)申请人 浙江大华技术股份有限公司 地址 310053 浙江省杭州市滨江区滨安路 1187 号 (72)发明人 姚国勤 陈小军 吴立 潘海江 杨斌 张兴明 傅利泉 朱江明 吴军 吴坚 (74)专利代理机构 北京邦信阳专利商标代理有 限公司 11012 代理人 王昭林 (54) 。
2、发明名称 一种文件系统的断电保护方法 (57) 摘要 本发明涉及一种文件系统的断电保护方法, 包括 : 1. 一种文件系统的断电保护方法, 其特征 在于, 该方法包括以下步骤 : 将文件系统在运行 过程中可能会修改的关键数据都保存两份, 对应 为关键数据区一和关键数据区二 ; 写日志, 包括 : 把关键数据中需要修改的数据的地址以及数据的 长度记录到日志中 ; 同步计数更新一次 ; 以及计 算校验码 ; 把日志保存到日志区一, 对应为日志 一 ; 在关键数据区一修改数据 ; 把日志保存到日 志区二, 对应为日志二 ; 在关键数据区二修改数 据 ; 以及, 在断电重启后数据的恢复步骤包括 : 读。
3、 取日志一和日志二, 校验日志一和日志二的完整 性, 根据日志一和日志二的完整性以及日志一和 日志二的日志记录的信息来恢复关键数据。 (51)Int.Cl. 权利要求书 1 页 说明书 3 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书3页 附图2页 (10)申请公布号 CN 103092719 A CN 103092719 A *CN103092719A* 1/1 页 2 1. 一种文件系统的断电保护方法, 其特征在于, 该方法包括以下步骤 : 将文件系统在运行过程中可能会修改的关键数据都保存两份, 对应为关键数据区一和 关键数据区二 ;。
4、 写日志, 所述日志记录的信息包括关键数据中需要修改的数据的地址以及数据的长 度 ; 同步计数, 关键数据每修改一次, 同步计数更新一次 ; 以及校验码, 该校验码用于确认 该条日志是否完整 ; 所述写日志的步骤包括 : 把关键数据中需要修改的数据的地址以及数据的长度记录到 日志中 ; 同步计数更新一次 ; 以及计算校验码 ; 把日志保存到日志区一, 对应为日志一 ; 在关键数据区一修改数据 ; 把日志保存到日志区二, 对应为日志二 ; 在关键数据区二修改数据 ; 以及, 在断电重启后数据的恢复步骤包括 : 读取日志一和日志二, 校验日志一和日志二的完整性, 根据日志一和日志二的完整性 以及日。
5、志一和日志二的日志记录的信息来恢复关键数据。 2. 根据权利要求 1 所述的文件系统的断电保护方法, 其特征在于, 如果校验结果为日 志一不完整, 日志二完整, 则将日志二拷贝给日志一。 3. 根据权利要求 1 所述的文件系统的断电保护方法, 其特征在于, 如果校验结果为日 志一完整, 日志二不完整, 则根据日志一中记录的地址以及数据长度, 从关键数据区一中读 取这些数据, 写到关键数据区二, 然后把日志一写入到日志区二。 4. 根据权利要求 1 所述的文件系统的断电保护方法, 其特征在于, 如果校验结果为日 志一和日志二都完整, 以及日志一的同步计数相对于日志二同步计数多更新了一次, 则根 。
6、据日志一中记录的地址以及数据长度, 从关键数据区二中读取这些数据, 写到关键数据区 一, 然后把日志二写入到日志区一 ; 如果比较结果为两块日志都完整, 以及日志一同步计数 与日志二同步计数相同, 则根据日志一或二中记录的地址以及数据长度, 从关键数据区一 中读取这些数据, 写到关键数据区二。 权 利 要 求 书 CN 103092719 A 2 1/3 页 3 一种文件系统的断电保护方法 技术领域 0001 本发明涉及信息处理技术领域, 尤其涉及文件系统的断电保护方法。 背景技术 0002 在数字化音视频监控领域, 随着嵌入式技术的发展, 嵌入式数字硬盘录像机 (EDVR, Embedded。
7、 Digital Video Recorder) 在性能、 功能、 适用性、 可维护性、 稳定性各方 面有了根本性的改善, 因此其应用领域也越来越广, 从最初的金融领域发展到交通、 公安、 电力、 移动车载、 采矿等各种应用场所。 随着应用环境的多样化、 复杂化, 对嵌入式数字硬盘 录像机的可靠性和故障恢复能力提出了更高的要求。 0003 常见的嵌入式硬盘录像机无法正常录像或丢失录像文件主要是由于系统异常掉 电等原因引起的文件系统关键信息丢失或不完整等原因导致的错误。 0004 传统的文件系统, 如 fat32、 ext3 等在异常断电这块做的并不是很好, 经常在多次 异常断电后出现大量文件丢。
8、失, 或者文件系统遭到破坏无法再恢复。其主要原因是文件系 统在更新关键数据时发生断电, 此时就可能造成文件丢失, 或者文件系统关键数据不完整 造成文件系统不可用的情况。针对这一问题, 目前已有一种解决办法就是在格式化时把文 件系统关键数据一次性写完, 以后就不再修改, 这种方法会使文件系统不具有通用性, 不能 适用很多应用场景。 发明内容 0005 为克服上述不足, 本发明提供了一种文件系统的断电保护方法, 该方法包括以下 步骤 : 0006 将文件系统在运行过程中可能会修改的关键数据都保存两份, 对应为关键数据区 一和关键数据区二 ; 0007 写日志, 所述日志记录的信息包括关键数据中需要。
9、修改的数据的地址以及数据的 长度 ; 同步计数, 关键数据每修改一次, 同步计数更新一次 ; 以及校验码, 该校验码用于确 认该条日志是否完整 ; 0008 所述写日志的步骤包括 : 把关键数据中需要修改的数据的地址以及数据的长度记 录到日志中 ; 同步计数更新一次 ; 以及计算校验码 ; 0009 把日志保存到日志区一, 对应为日志一 ; 0010 在关键数据区一修改数据 ; 0011 把日志保存到日志区二, 对应为日志二 ; 0012 在关键数据区二修改数据 ; 0013 以及, 在断电重启后数据的恢复步骤包括 : 0014 读取日志一和日志二, 校验日志一和日志二的完整性, 根据日志一和。
10、日志二的完 整性以及日志一和日志二的日志记录的信息来恢复关键数据。 0015 通过本发明, 保证了异常断电时, 文件目录完整, 减少文件的丢失, 防止文件系统 说 明 书 CN 103092719 A 3 2/3 页 4 因为异常断电造成崩溃。 附图说明 0016 图 1 是根据本发明一个实施方案的修改关键数据的流程图 ; 0017 图 2 是根据本发明一个实施方案的断电恢复的流程图。 具体实施方式 0018 下面结合附图和实例, 对本发明的监控存储设备文件系统的断电保护方法做进一 步阐述。 0019 本发明所采用的技术方案包括硬盘分区格式化、 关键数据的修改、 断电重启后关 键数据的恢复三个。
11、方面。 0020 在进行介绍之前, 先说明下本发明中的日志中需要记录的信息 : 1、 关键数据中需 要修改的地址以及数据的长度, 用于记录关键数据中修改了哪些地方, 这样在断电恢复的 时候只需要把其中一份关键数据中的部分数据写入到另一份就行了, 不需要整份关键数据 都拷贝过去, 可以节省断电恢复的时间 ; 2、 同步计数, 关键数据每修改一次 ( 这里的一次为 一个修改过程, 即为两块关键数据区都修改 ), 同步计数更新一次, 同步计数多更新一次的 日志对应的关键数据更新 ( 例如, 同步计数加 1, 在此情况下, 同步计数大的日志对应的那 块关键数据更新 ), 同时也用于恢复关键数据时判断哪。
12、份数据是完整的 ; 3、 校验码, 用于确 认该条日志是否完整, 因为断电也可能发生在写日志的过程中, 此时日志可能只写了部分 数据, 那么这份日志就不是一份完整的日志。 0021 硬盘分区格式化包括 : 0022 1.1)、 文件系统的关键数据都保存两份, 分别记为关键数据区一, 二。 0023 1.2)、 分配出两块区域用于记录日志, 分别记为日志区一、 二, 每块区域记录一份 日志。 0024 关键数据的修改过程如下, 对应流程图见图 1 : 0025 2.1) 在做修改之前, 先在内存中写好日志。把关键数据中需要修改的地址以及数 据的长度记录到日志中, 同步计数加 1, 计算校验码。(。
13、 此处使用 CRC 校验的方式计算校验 码)。 但可以理解, 任何可以用于实现本发明中所提及的校验码的用意的校验码计算方法都 可以使用。如上文所述, 本发明中校验码用于确认一条日志是否完整。 0026 2.2) 把日志保存到日志区一。 0027 2.3) 在关键数据区一修改数据。 0028 2.4) 把日志保存到日志区二。 0029 2.5) 在关键数据区二修改数据。 0030 断电重启后关键数据的恢复过程如下, 对应流程图见图 2 : 0031 3.1) 分别从日志区一、 二中读取两份日志, 记为日志一、 二。 0032 3.2) 首先校验这两份日志的完整性, 日志的完整性有三种情况 : 1。
14、、 在写日志区一 的时候发生断电, 日志只写入了部分没有完全写入, 这种情况日志一是不完整的 ( 对应于 校验失败 ) ; 2、 在写日志区二的时候发生断电, 日志只写入了部分没有完全写入, 这种情况 日志二是不完整的 ( 对应于校验失败 ) ; 3、 断电没有发生在写日志区的过程中, 这种情况下 说 明 书 CN 103092719 A 4 3/3 页 5 两份日志都是完整 ( 对应于校验成功 ) 的。 0033 3.3)若日志一不完整, 即发生了3.2)中的第一种情况。 这种情况说明还没开始写 关键数据区, 关键数据是完整的, 只是最后那份修改的数据丢了。 只需要把日志二写到日志 区一中就。
15、行了。 0034 3.4)若日志二不完整, 即发生了3.2)中的第二种情况。 这种情况说明关键数据已 经成功写入到关键数据区一, 还没开始写关键数据区二, 需要更新关键数据区二的数据。 根 据日志一中记录的地址以及数据长度, 从关键数据区一中读取这些数据, 写到关键数据区 二。然后把日志一写入到日志区二。 0035 3.5) 若两块日志都是完整的 ( 即, 两块日志的信息都正确 ), 即发生了 3.2) 中的 第三种情况。那么断电可能发生在写关键数据区的时候, 光从日志的完整性已经无法分析 出关键数据的写入情况了, 需要比较两份日志中的的同步计数。两份日志中的同步计数有 三种情况 : 1、 在。
16、写关键数据区一的时候发生断电, 此时日志成功写入到日志区一, 还没有写 日志区二, 这种情况日志一中的同步计数比日志二中的同步计数大 1 ; 2、 断电发生在写关 键数据区二, 此时日志成功写入到日志区一、 二, 这种情况两份日志的同步计数相同 ; 3、 断 电没有发生在写关键数据区和日志的时候, 此时既没写日志也没写关键数据, 这种情况两 份日志的同步计数也都相同。 0036 3.6)若日志一中的同步计数比日志二中的同步计数大1, 即发生了3.5)中的第一 种情况。这种情况无法断定关键数据是否已经成功写入到关键数据区一, 需要恢复关键数 据区一中的修改。根据日志一中记录的地址以及数据长度, 。
17、从关键数据区二中读取这些数 据, 写到关键数据区一。然后把日志二写入到日志区一。 0037 3.7) 若同步计数相同, 无法分辩是发生了 3.5) 中的第二种还是第三种情况, 统一 当第二种情况处理, 因为如果是第三种情况无非就是多了一次无用的数据拷贝, 不影响数 据的正确性。这种情况无法断定关键数据是否已经成功写入到关键数据区二, 需要更新关 键数据区二的数据, 此时两份日志的数据是完全相同的。 0038 根据日志 ( 日志一或日志二 ) 中记录的地址以及数据长度, 从关键数据区一中读 取这些数据, 写到关键数据区二。 说 明 书 CN 103092719 A 5 1/2 页 6 图 1 说 明 书 附 图 CN 103092719 A 6 2/2 页 7 图 2 说 明 书 附 图 CN 103092719 A 7 。