【问题标题】:Testing the robustness of a flash drive: dd'ing the drive till it fails?测试闪存驱动器的稳健性:将驱动器添加到失败?
【发布时间】:2009-06-24 14:54:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: flash md5


    【解决方案1】:

    您也可以使用 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.
    

    【讨论】:

    • 太好了!但是我真的很想自己写,而不是使用现成的工具。
    【解决方案2】:

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

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

    【讨论】:

    • 有没有不使用文件直接写入设备的标准方法?
    • 打开块设备文件句柄。 /dev/usb/001 或您系统上的任何等效项。
    • 非常感谢,我会调查的。
    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2021-08-21
    • 2012-08-15
    • 2018-10-09
    相关资源
    最近更新 更多