测试闪存驱动器的稳健性:驱动器直到它失败?

时间:2009-06-24 14:54:42

标签: flash md5

我得到了一个便宜的,无品牌的2GB闪存盘。由于我有一个更大的闪存驱动器,我决定用它来测试闪存技术的稳健性。

我打算在整个驱动器上写1,检查是否正确,写0,检查等等。我将记录结果,并在以后寻找失败。

我正在寻找最节省资源的技术。我目前的策略包括使用linux dd命令进行写入和读取,并将结果与​​1和0的文件进行比较。另一种方法是将1和0写入驱动器,并计算其内容的md5。这是广泛的IO读取和高CPU使用之间的简单权衡;我想我只是测量每种方法的运行时间并决定。

有没有更好,更优雅的方法呢?

2 个答案:

答案 0 :(得分:2)

你也可以使用linux'nodblocks'命令为你做测试。当与-w选项一起使用时,它将使用各种模式为您执行写模式测试,编写块并将其读回以检查它是否成功。

您可以直接在设备上运行它,而无需安装它,以测试物理设备的每个块。

   -w     Use  write-mode  test. With this option, badblocks scans for bad
          blocks by writing some patterns  (0xaa,  0x55,  0xff,  0x00)  on
          every block of the device, reading every block and comparing the
          contents.  This option may not be combined with the  -n  option,
          as they are mutually exclusive.

答案 1 :(得分:1)

选择一个随机的32位数字。在每个块中写下它。从每个块读取。新的32位数。再次运行驱动器。像MD5这样的散列算法是CPU密集型的。由于您确切地知道模式并且只是测试驱动器不会搞砸这些位,因此简单的直接比较是最好的方法。不要使用DD ...直接用C语言或Perl语言编写(如果苹果站在橘子旁边......)

无需比较文件......模式适合内存。事实上,如果整齐地完成整个测试可能适合CPU缓存,但闪存驱动器显然会成为瓶颈。找一个不对的数字,你知道你有坏块。