如何检查ubifs文件系统?

时间:2015-10-06 00:46:30

标签: linux fsck ubifs

ubifs没有fsck程序,那么在使用ubifs时如何检查文件系统的完整性?

我的目标系统是ARM,Linux 3.2.58。

2 个答案:

答案 0 :(得分:1)

从我迄今为止在UBIFS' web page上发现的内容:

  

完整性 - UBIFS(以及UBI)校验和写入的所有内容   闪存介质保证数据完整性,UBIFS不会留下数据   或者没有注意到元数据损坏(JFFS2正在做同样的事情);通过   默认情况下,UBIFS在从媒体读取时仅检查元数据CRC,   但不是数据CRC;但是,您可以强制CRC检查数据   使用其中一个UBIFS挂载选项 - 请参阅here

如果您需要检查文件系统是否损坏

如果您的UBIFS文件系统使用chk_data_crc选项挂载,则简单cat $FILES > /dev/null就足够了。如果没有,您只能检测并恢复元数据损坏。文件正文的损坏将被忽视。

我使用find / -type f -print -exec cat {} + > /dev/null

之类的东西

如果您需要恢复损坏的文件

再次来自overview部分:

  

使其更清晰,成像你已经消灭了FAT表   你的FAT文件系统;对于FAT FS来说,这将是致命的;但如果你   同样消灭UBIFS索引,你仍然可以重新构建它,   虽然需要一个特殊的用户空间工具来做这个(这个   但是,实用程序目前尚未实现)

虽然理论上可行,但你是独立的。

备份Flash内容,用UBIFS数据结构(可能是源代码)和十六进制编辑器武装自己,祝你好运。

编辑:正如我所知,Linux的MTD驱动程序已经将ECC(纠错码)应用于MTD设备。

我相信,如果每个/sys/class/mtd/mtd*/ecc_strength闪存块有超过/sys/class/mtd/mtd*/ecc_step_size个错误,则会导致数据丢失的标准。在这种情况下,mtd_read()(在UBIFS下面是一个级别的MTD API)will return EUCLEAN。不知道是否存在使用它来检查错误的工具。

The "bit flipped" warnings we get do not mean that there was a data loss yet。您可以写信至/sys/class/mtd/mtd*/bitflip_threshold来控制您收到的警告数量。

答案 1 :(得分:0)

您可以只读取所有文件,这实际上会导致ubif检查它们。 (CFR)。 the advise given on the mailing list。如果可能的话,ubifs实现将恢复。但是,无法保证这将捕获所有损坏。

理论上,ubif应该永远不会被破坏,但实际上ubif或NAND驱动程序中的错误仍然会导致损坏。