ext4能否检测到损坏的文件内容?

时间:2015-07-10 15:49:08

标签: unix ext4

ext4文件系统能否检测到文件内容的数据损坏?如果是,默认情况下是否启用,如何检查损坏的数据?

我已经读过ext4维护文件元数据及其日志的校验和,但是我无法找到有关实际文件内容的校验和的任何信息。

为清楚起见:我想知道自上次写入操作以来文件是否已更改。

2 个答案:

答案 0 :(得分:12)

不,ext4无法检测到文件内容损坏。

众所周知的文件系统实现静默数据损坏检测,因此能够在有足够冗余时纠正它ZFSbtrfs

他们通过为每个写入的数据块计算和存储CRC并检查CRC或每个读取的数据块来实现。如果CRC与数据不匹配,则后者不会提供给调用者,RAID允许使用替代块,或者报告I/O错误。

读取过程永远不会收到损坏的数据,无论是正确还是读取失败。

答案 1 :(得分:4)

“ext4文件系统能否检测到文件内容的数据损坏?” 不是你期待的意义。它执行日志记录,创建一个布尔{before vs after}副本以确保完成。

CRC /校验和是对来自已知状态的修改的测试,虽然CRC或校验和可能与原始状态不比较,但这并不意味着该文件然后“损坏”(也称为无效) - 它只是说它已被改变。严格来说,一种形式的“腐败”就是改变文件开头的“幻数”,比如将%PDF更改为%xYz - 这会使内容无法用于任何程序。

“...了解自上次写入操作后文件是否已更改”。 跟踪mtime()的系统将统一执行,因此每次写入都会修改mtime(),使您的请求无法进行。

mtime()不会反映最后一次写入的唯一方法就是媒体降级。