文件系统CRC校验

文件系统CRC校验

我知道在运行内核之前,u-boot(引导加载程序)会检查内核映像CRC。只有正确了才会走得更远,否则就会出错"Bad CRC"

我也想对文件系统做同样的事情。

  1. 有什么办法可以做到这一点吗?

  2. 内核在加载文件系统之前是否检查文件系统是否正确?如果是的话,这个检查是在哪里进行的?

更新:

我正在使用 jffs2 文件系统。是否可以检查此类文件系统的 CRC?或者任何其他方法来确保 jffs2 文件系统没有损坏?

答案1

一般来说,所有现代文件系统驱动程序都包含某种检查,以确保正在安装的文件系统处于一致状态 - 通常是在语法意义上,而不是语义意义上,因此您可能仍然会遇到垃圾(但它将是一个结构良好的文件系统)垃圾)。

至于JFFS2检查部分3.13.5文档- 一些检查已经完成。

答案2

(下面的链接是支持文档,不一定与您的问题直接相关。)

正如“用户”(Michael Kjörling)和 DavAlPi 在对该问题的评论中指出的那样,某些文件系统(例如外部4) 可以选择 CRC 文件系统元数据。和兹夫斯BTFS文件内容和文件系统元数据的校验和。

对于 ext2,每次挂载时都会修改文件系统,将其设置为“肮脏的”。 (这在 ext3 中被 Needs_recovery 取代。)当它被卸载时,它被取消设置。如果系统初始化发现未挂载的文件系统被标记为脏,它将假设它未干净地卸载,并将运行文件系统检查以确保完整性。在 RHEL 上,这通常是在启动期间出现“重新安装 root”消息时完成的。不管怎样,这将是该发行版首先要做的事情之一。

使用 ext3,您可以获得日志,因此如果文件系统由于意外故障而损坏,它将“重播”日志事务或忽略它们,以最有可能不会引起问题的方式为准。不过,您无法获得 CRC,因此,如果数据完全消失(例如 HDD 盘片出现故障),那么情况就是这样。但如果您需要这些功能,ext3 可以升级到 ext4,并且不会产生任何用户空间问题。

因此,无论怎样,都会检查文件系统的完整性,但使用最新的文件系统可以为您提供一些额外的保护。

相关内容