闪存具有读/写周期数有限,之后就会失败。失败时会发生什么?它是否像硬盘一样,失败的写入会被悄无声息地移到磁盘的另一部分,而该扇区会被标记为坏扇区,并且永远不会再使用,而不会丢失数据?替换扇区的数量是否有限?操作系统会以某种方式警告用户吗?
答案1
是的,当扇区发生故障时,它们会执行非常相似的操作:在写入验证失败后,它们都会默默地将扇区移至未分配区域。是的,这两种内存类型上扇区的数量都是有限的。
只有一个但很重要的区别:硬盘上的写入次数没有限制,因此硬盘扇区故障是意料之外的,可能是其他部分出现故障的征兆:磁头损坏、表面划伤、控制器过热等。大多数情况下,当坏扇区开始出现时,即使控制器已成功重新映射它们,您也需要更换整个驱动器,因为很快整个驱动器就会出现故障。
闪存驱动器上的扇区故障是可以预料到的,而且在正常使用中(相当)经常发生:扇区的最大写入次数是有限的,且是确定的,在最近的闪存芯片上平均为 100000 次(我指的是常见 I2C 闪存的数据表,但 USB 闪存驱动器中的技术非常相似)。超过这个数字后任何扇区超出范围,它迟早会失败,所以它不会以任何方式参考驱动器的整体状态。
因为硬盘在正常工作时不应该有任何坏扇区,所以没有任何技术能够检测到它们(以及重新映射和通知用户)。几年前,SMART 被创建来做这项工作。
由于该技术需要重新映射闪存,因此最初在闪存驱动器中使用了类似 SMART 的技术。没有标准化的方法来检查其状态,据我所知也没有特定于供应商的实用程序。这都是为了降低成本。
答案2
我遇到过不少闪存驱动器故障,而且没有任何警告 - 驱动器只是停止读取。它们都是大驱动器,而且我也没有在其中放太多东西,所以我认为东西会自动写入好扇区,即使没有发出任何声音。
这个故事的寓意是什么?备份闪存驱动器上的所有内容。