我最近买了一些 USB 记忆棒和 SD 卡。价格是方式太好了,我怀疑它们是假冒产品。我找不到可以在 Ubuntu 上运行的程序来检查这些卡/棒。我没有编译所需的技能,所以我想要一个可以轻松安装的程序。谢谢。
答案1
有一个名为 F3 的 Linux 程序可以测试假闪存驱动器。信息和下载位于http://oss.digirati.com.br/f3/。编译并不麻烦,因为它只需要make
在终端中使用命令。该程序实际上是两个独立的程序,f3write 和 f3read。
在终端中使用它们,如下所示:
cd directory_where_f3_source_is_located
例如:cd ~/Desktop/f3
make
用于编译程序,仅需一次
./f3write /path_to_flash_drive
例如:./f3write /media/my_username/my_flash
./f3read /path_to_flash_drive
例如:./f3read /media/my_username/my_flash
答案2
您基本上需要测试的是驱动器是否可以容纳所宣传的数据量并“记住”它以供日后使用。
一种非常简单的方法是生成一个具有随机内容且大小与驱动器相同的文件作为测试数据,写入驱动器进行测试,最后将写入的数据与原始文件进行比较。这需要相当多的中间存储空间,我们可以通过仅存储随机数生成器的初始化向量来做得更好。这就是我将在下面描述的内容。
我假设要测试的驱动器位于/dev/sdx
并在整个问题中公布其总大小为 32 GiB = 32768 MiB。
openssl
如果尚未安装该软件包,请安装它:sudo apt install openssl
生成一个随机初始化向量(IV),用于生成测试数据流:
openssl rand 32 > ~/template-iv.bin
将(伪)随机数据流写入驱动器,直到驱动器满为止:
dd if=/dev/zero bs=1M count=32768 2>/dev/null | sudo openssl enc -rc4 -nosalt -out /dev/sdx -pass pass:~/template-iv.bin
(将 32768 替换
count=32768
为您驱动器的大小(以兆字节为单位)。)如果您为驱动器指定了正确的大小并且出现任何有关 I/O 错误的消息,则该驱动器有故障。
将驱动器上的数据与相同的(伪)随机数据流进行比较:
sudo dd if=/dev/sdx bs=1M iflag=direct | cmp - <(dd if=/dev/zero bs=1M count=32768 2>/dev/null | openssl enc -rc4 -nosalt -pass pass:~/template-iv.bin)
(
count=32768
像以前一样替换。)第一个命令应该有 3 行状态输出
dd
。如果有任何关于 I/O 错误或比较不匹配的消息,则表示驱动器有故障。
答案3
sudo dd if=/dev/zero of=/dev/sdb
这将填充整个驱动器(假设它显示为 /dev/sdb),并显示为零。它将报告是否存在任何错误,以及完成时的传输速率以及实际写入的数据量。如果没有错误并且大小符合您的预期,则可能不适合。
要使用非零数据进行更彻底的测试,您可以查看badblocks
。