闪存的写入次数有限。在最近的问题@Rsya Studios 讨论了读取影响相邻位的问题,这个问题在一定程度上是可以纠正的。这两个问题都不像开关;在某个时期,性能处于边缘状态。
在软盘驱动器时代,有一种称为“弱位”的复制保护方法。边缘位被故意写入磁盘,这需要特殊设备。这些位无法通过在家用计算机上复制磁盘来复制。这些位通过多次读取进行测试。如果每次结果不相同,则磁盘被识别为原始磁盘。
是否有人知道是否已采用类似的技术来测试闪存驱动器是否即将发生故障 - 通过多次读取来寻找边际位?(我不是在谈论写入边际位或写入位并查看它们是否是边际的;只是读取现有位以查看是否有边际的。)
编辑:这个问题是关于闪存驱动器的测试方法及其有效性。请专注于此,不要讨论是否值得测试闪存驱动器或是否应该将闪存驱动器用于某种目的。
答案1
软盘和现代闪存是两种完全不同的东西。
USB 闪存驱动器有一个闪存控制器芯片,该芯片具有复杂的逻辑,可以处理磨损均衡和错误校正等问题。底层复杂性对计算机来说是隐藏的,因此它只能看到逻辑块,而看不到物理块。在旧系统上访问软盘的级别要低得多,因为您可以直接读取物理块,并且任何错误都是显而易见且可重复的。
内置错误校正功能可检测错误并将数据移至另一个块。因此,如果驱动器仍可使用,则尝试使用比较重复读取等方法可能发现的错误已经得到纠正。
正如您链接的答案中提到的那样,闪存控制器可能会定期将数据从一个单元移动到另一个单元以防止数据损坏,因此反复读取同一个块来测试它只会导致它磨损。
因此,U 盘所能做的事情是有限的,但偶尔运行 chkdsk 之类的程序或操作系统的等效程序来检查错误可能是有意义的。更好的做法是定期备份,以防它真的出现故障。
普通的 U 盘绝对不能用来存储关键数据。合适的 SSD 或 HDD 更好,因为它通常支持 SMART 错误报告系统,可以让您了解设备的物理状态以及是否可能发生故障。此外,一些廉价的 U 盘使用低质量的闪存芯片,可能不会持续很长时间。
真正担心数据完整性的人会使用相反的东西,比如带有 ECC 内存的 PC 上的 ZFS RAID 阵列,其中有足够的空间来检测和修复大多数错误。