dd 命令会将数据写入闪存芯片的坏块吗?

dd 命令会将数据写入闪存芯片的坏块吗?

我想知道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设备管理员不会关心该设备上可能存在的文件系统。但如果写入成功,扇区就不会坏,因为对于闪存,最常见的故障是无法清除/写入块。

对于磁盘,覆盖可能会使以前无法读取的块再次可读,但我不会将重要数据信任给以前出现过问题的扇区。

相关内容