ubifs没有fsck程序,那么如何在使用ubifs时检查文件系统的完整性呢?
我的目标系统是ARM,Linux 3.2.58。
发布于 2017-09-05 08:42:04
从我到目前为止在UBIFS' web page上找到的东西
完整性校验- UBIFS (以及UBI)校验它写入闪存介质的所有内容以保证数据完整性,UBIFS不会忽略数据或元数据损坏(JFFS2也是这样做的);默认情况下,从介质读取数据时,UBIFS只检查元数据CRC,而不检查数据CRC;但是,您可以使用UBIFS挂载选项之一强制对数据进行CRC检查-请参阅here。
如果需要检查文件系统是否损坏
如果您的UBIFS文件系统是使用chk_data_crc选项挂载的,那么简单的cat $FILES > /dev/null就足够了。否则,您只能检测和恢复元数据损坏。文件体的损坏将不会被注意到。
我用了像find / -type f -print -exec cat {} + > /dev/null这样的东西
如果您需要恢复损坏的文件
同样来自overview部分:
更清楚地说,假设您已经清除了FAT文件系统上的FAT表;对于FAT FS,这将是致命的;但是如果您以类似的方式清除
索引,您仍然可以重新构建它,尽管需要一个特殊的用户空间工具来执行此操作(尽管该实用程序目前尚未实现)
虽然理论上是可能的,但你要靠自己。
备份flash内容,用UBIFS数据结构(可能是源)和十六进制编辑器武装自己,祝你好运。
Linux编辑:据我所知,Linux驱动程序已经对设备应用了纠错码。
我相信,如果每个/sys/class/mtd/mtd*/ecc_step_size闪存块有超过/sys/class/mtd/mtd*/ecc_strength错误,则数据丢失的标准。mtd_read() (它是比UBIFS低一级的MTD )在本例中是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来控制收到的警告数量。
发布于 2016-07-06 00:45:53
您可以只读取所有文件,这实质上会导致ubifs检查它们。Cfr。the advise given on the mailing list。如果可能的话,ubifs实现将会恢复。然而,不能保证这将捕获所有的损坏。
从理论上讲,ubifs永远不应该被损坏,但在实践中,ubifs或NAND驱动程序中的bug仍然可能导致损坏。
https://stackoverflow.com/questions/32960034
复制相似问题