我正在尝试编写一个可以检测便携式闪存设备(拇指驱动器等)故障迹象的程序。
我见过过去能够检测传统机械硬盘驱动器上的故障扇区和其他类型问题的工具,但我担心闪存不具备相同类型的可预测的低级硬件访问权限到存储的内部工作。像磨损均衡和其他块重新映射技术(跳过'死'扇区?)这样的事情让我相信,确定闪存驱动器是否出现故障将是最困难的,如果不是不可能的话(没有持续的读取失败和设备卸载)。
闪存驱动器的寿命终结应易于检测(读取和全部故障期间的CRC差异不断)。但是那些可能早期失败的驱动器呢? 是否有任何迹象表明吞吐速度较慢可能表明闪存驱动器将比正常情况更快失效?
在检测潜在坏块的过程中,我曾考虑尝试对接近或完全与整个卷大小相关的文件进行随机读/写,但即便如此,驱动器可能会报告其最大容量下的大小解释'死'块?
简而言之,有没有办法规避或至少检测(在算法上或其他方面)使用块重映射或其他生命延长技术用于闪存?
让我通过表达我对于它是否属于serverfault.com的不确定性来结束这个问题。这绝对是一个与硬件相关的问题,但我也想要一个软件解决方案 - 最好是我自己编程的软件解决方案。 如果这个问题放错了地方,我很乐意将其迁移到serverfault - 但我需要一个编程解决方案。如果您需要澄清,请告诉我:)
谢谢!
答案 0 :(得分:0)
有趣的是badblocks在这种情况下可以提供帮助
答案 1 :(得分:0)
AFAIK,磨损均衡发生在固件级别。硬件不知道坏块,直到固件检测到它为止。
并且没有任何已知方法可以事先找到这些坏道。顺便说一句,我想,它不是坏扇区,而是坏块。一旦扇区坏了,整个区块就会被标记为坏...