0

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

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

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

有没有更好、更优雅的方法来做到这一点?

4

2 回答 2

2

您还可以使用 linux 'badblocks' 命令为您进行测试。当与 -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.
于 2009-06-24T15:04:38.587 回答
1

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

也不需要比较文件……模式适合内存。事实上,如果做得好,整个测试可能适合 CPU 缓存,但闪存驱动器显然会成为瓶颈。找到一个不正确的数字,你知道你有你的坏块。

于 2009-06-24T15:02:27.797 回答