使用“dd if=/dev/zero”擦除 MTD 与“flash_eraseall”有何不同?

使用“dd if=/dev/zero”擦除 MTD 与“flash_eraseall”有何不同?

flash_eraseall <mtd device>专门提供了擦除所有MTD(设备)的命令。它 和 和有什么不一样dd if=/dev/zero of=<mtd device>

答案1

SDD 和 MTD 都有使用寿命,并且都有一定的写入次数。早期 MTD 的额定擦除/写入周期为 1000 秒。许多 MTD 实际上并不是块设备,但 Linux 驱动程序会模拟它,并呈现一个块层。或者底层硬件上的标准块大小 (512) 可能要大得多。如果你写入连续的512字节块,但底层技术是4K块,你将导致底层的块被写入8次。在某些 MTD 中,每次写入都会重写整个闪存单元。

[这mtdblock驱动程序]的工作原理是在 RAM 中缓存整个闪存擦除块,根据请求对其进行修改,然后擦除整个块并写回修改后的内容。这意味着 mtdblock 不会尝试进行任何优化,并且在断电的情况下您将丢失大量数据。最后但并非最不重要的一点是,mtdblock 不进行任何磨损均衡或位翻转处理。1

几乎所有 MTD 设备都支持全擦除操作。除了或多或少保证可靠和完全擦除的好处之外,它对设备来说也更容易、更好。

有些设备不应该归零dd if=/dev/zero

  • SDD(固态硬盘)
  • MTD(内存技术设备)
  • COW 和其他精简配置虚拟磁盘

MTD 出于上述原因。对于 COW(写时复制)文件系统/磁盘,您最终将强制底层块驱动程序分配以前不存在的块,并且您不会覆盖旧的/现有的数据。 SDD 还采用类似于 COW 的某些磨损均衡算法,其中将写入以前未写入的块,而不是覆盖现有块(因此,为了数据安全,将设备归零是不明智的)。许多 STA 和 SAS 设备使用主密钥提供块级加密,BIOS 会记住该主密钥并在启动时与其进行通信。您只需擦除或重置主密钥即可有效地擦除块设备。

相关内容