0

我正在尝试编写一个程序来检测便携式闪存设备(拇指驱动器等)的故障迹象。

过去我见过能够检测传统机械硬盘驱动器上的故障扇区和其他类型故障的工具,但我担心闪存由于内部原因而无法对硬件进行相同类型的可预测低级访问存储的工作原理。诸如磨损均衡和其他块重新映射技术(跳过“死”扇区?)之类的东西让我相信,如果不是不可能的话,确定闪存驱动器是否出现故障充其量是困难的(除非经常出现读取故障和设备卸载)。

闪存驱动器在其生命周期结束时应该很容易检测(在读取和全面故障期间不断出现 CRC 差异)。但是那些可能会提前出现故障的驱动器呢?是否有任何迹象,例如吞吐速度较慢,可能表明闪存驱动器将比正常情况更快地发生故障?

沿着检测潜在坏块的思路,我曾考虑尝试随机读取/写入接近或恰好等于整个卷大小的文件,但即便如此,驱动器可能会报告其最大容量以下的大小以占“死”块?

简而言之,是否有任何方法可以规避或至少检测(算法或其他方式)对闪存使用块重映射或其他寿命延长技术?

让我通过表达我对这是否属于 serverfault.com 的不确定性来结束这个问题。这绝对是一个与硬件相关的问题,但我也想要一个软件解决方案——最好是我可以自己编程的解决方案。如果这个问题放错了地方,我很乐意将它迁移到 serverfault -但我确实需要一个编程解决方案。如果您需要澄清,请告诉我:)

谢谢!

4

2 回答 2

0

AFAIK, Wear leveling happens at the firmware level. The hardware does not know about the bad block, till such time the firmware detects one.

And there is no known way to find this bad sectors before hand. BTW, I guess, it is not bad sectors, but bad blocks. Once a sector is bad, the whole block is marked as bad ...

于 2009-09-10T05:02:11.650 回答
0

如果坏块可以在这种情况下提供帮助,这很有趣

于 2009-09-02T21:25:25.587 回答