如果数据正在被写入闪存设备,那么存储单元(或者整个存储设备)是否可以身体上断电后数据是否会损坏?还是数据只是被损坏了?受影响的设备或内存块是否仍然可以写入和读取(即使数据本身已损坏)?
自从我遇到过视频游戏机的存储卡后,这个问题就一直在我的脑海中,制造商声称如果在保存时关闭电源就会发生这样的损坏,而对于 USB 闪存驱动器和 SSD,这个问题仍然困扰着我。
答案1
这是一篇关于闪存因电源故障而导致的错误的论文:http://cseweb.ucsd.edu/users/swanson/papers/DAC2011PowerCut.pdf
我引用摘要的最后一句话:
最后,我们表明不完整的擦除操作会导致对同一块的未来编程操作不可靠。
论文结论如下:
我们在本文中研究的闪存设备在发生电源故障时表现出意想不到的行为。错误率并不总是随着操作的进行而降低,并且电源故障可能会损坏成功完成的操作的数据。我们还发现,即使数据看起来完好无损,依赖在电源故障期间编程或擦除的块也是不可靠的。
我个人的结论是
断电通常会导致闪存处于不可靠的状态。但是,一旦您进行硬擦除,内存就会像以前一样正常工作。
精心编写的固件可以完全防止断电时出现的错误,但由于写入必须受到额外写入的保护,因此会损害闪存的性能和寿命。
许多供应商提供硬擦除实用程序供下载。但我认为有些闪存设备不允许您执行硬擦除,也不会自行执行硬擦除,也不采用完全安全的写入协议。因此,即使它们没有受到物理损坏,写入过程中的断电也会导致这些设备变得不可靠或无法使用。
如果您确实想要,您可以拿一个“实际上不可靠或不可用”的 USB 存储器并将其闪存 IC 移动(即拆焊并重新连接)到允许硬擦除的环境中。闪存 IC 现在应该可以再次使用了。
答案2
如果电源中断,内存块不会受到任何损坏。如果出现某种电涌,可能会发生这种情况,但简单地切断电源不会损坏内存块本身。
文件系统可能会损坏,具体取决于相关驱动器的固件,它可能存在文件系统/表损坏的问题,可能需要使用制造商提供的实用程序进行擦除(如果他们提供),似乎某些损坏可能会导致驱动器不可靠,但通常这是由于固件而不是 NAND 故障造成的。