我有一个 16Gb Verbatim USB 记忆棒,它对我来说既是工具又是礼物,很有价值。最近我遇到了一个问题 - 我在该棒上保留的一个文件已损坏。所以我已经跑badblocks -wsv
了。我使用了默认的 4 个测试。
我已经运行了 4 个测试 5 次。第一次运行时它显示了 3000 个错误。在所有连续运行中 - 0 次错误。
可能发生了什么?我现在应该使用它还是应该把它放在架子上?实际上,我会尝试更换内部板,因为我很看重那个项目。运行可以badblocks
修复错误吗?
Badblocks
不使用文件系统,因此它不可能在某处写入有关损坏扇区的信息,可以吗?
答案1
这个问题很复杂,因为 USB 闪存驱动器内部有固件,可以通过隐藏的动态映射表将同一块的每次写入转换为 I/O,由于磨损均衡,每次写入的内部块编号可能完全不同建筑学。看到这个文章。
简而言之,希望内部固件注意到它从闪存的某些物理部分读取错误,并已将该区域从可用空间列表中删除。这是首先在制造过程中完成的,并且不良区域的列表会随着时间的推移而累积。
由于映射的原因,几个分离良好的块实际上可能都位于同一物理闪存区域中,因此可能只有一个被谴责的区域。
附言。确保您的驱动器在写入期间始终获得足够的 USB 电源,例如,如果它位于集线器上,请使用有源集线器。如果您担心的话,您可以购买便宜的内联 USB 功率计,它可以显示设备的电压/电流。
答案2
除非您的闪存驱动器存在非常特殊的问题(例如固件错误),否则磨损均衡机制很可能会通过平衡所有可用闪存扇区的写入数量来尽可能长时间地防止错误。当介质上出现坏块时,某些扇区已超出其限制,无法处理更多写入,而其他扇区则正在接近限制。随着时间的推移,您可能会遇到越来越多的错误。
在闪存扇区变得完全无法使用之前,它通常会显示存储时间减少(写入一些内容并立即读回可以工作,但几周后读回会失败),所以是的,覆盖故障块可能看起来“修复”它们,但不能用于长的。
也有可能有故障的扇区被储备所取代,就像 meuh 所描述的那样。然而,要点仍然适用:闪存驱动程序的其他部分很可能正在发生故障。
我不会再在该介质上存储任何重要数据,并在可能的情况下更换内部板。