我想知道dd命令是否有可能将数据写入nand flash芯片的坏块。
我们的文件系统是ubifs,它基于MTD层。dd将读写/dev/mtdblock2设备文件。据我所知,ubifs会处理坏块/扇区,而MTD不会。所以我的看法是,在带有ubifs的nand flash芯片上,dd可能会将数据写入坏块/扇区,对吗?
谢谢!
答案1
据我所知,ubifs 可以处理坏块/扇区,而 MTD 则不能。
不对,MTD 也能识别坏块,并维护坏块表。
请参阅MTD 坏块表支持和驱动程序/mtd/nand/bbt.c。
所以我的看法是,在带有 ubifs 的 nand flash 芯片上执行 dd 可能会将数据写入坏块/扇区,对吗?
你关于 MTD 的前提是错误的,但结论是正确的。
此外,UBIFS 的存在也是无关紧要的,因为日在块设备而不是文件系统上运行。
这日命令访问块设备,而 MTD 不是,因此必须使用 mtdblock(具有闪存转换层)。
这MTD 常见问题解答对于使用 mtdblock 和 NAND 有明确的警告:
But think twice before using mtdblock in read-write mode.
And don't try to use it on NAND flash as it is does not handle bad eraseblocks.
换句话说,问题不在于日程序,而是使用 mtdblock 设备。
MTD FAQ 建议使用坏块感知程序,例如 mtd-utils。
答案2
该dd
命令将尝试写入扇区,无论扇区是否坏。dd
设备管理员不会关心该设备上可能存在的文件系统。但如果写入成功,扇区就不会坏,因为对于闪存,最常见的故障是无法清除/写入块。
对于磁盘,覆盖可能会使以前无法读取的块再次可读,但我不会将重要数据信任给以前出现过问题的扇区。