如何测试存储卡的性能和坏扇区?


10

我刚刚为DSLR购买了新的CF卡。我使用Xbench(Mac OS X)对其进行了测试,并且其性能符合预期。但是,我想执行“表面扫描”(移动拼盘术语)以检查“坏扇区”(移动拼盘术语)。我可以使用dd来bash一个进程的脚本,但是我感觉有更好的方法。我的目标是最终确定照片中可以安全使用存储卡(CF,SD等),并且在30天供应商策略窗口到期之前不需要将其退还。

我绝对希望这里提供Mac解决方案。我还想得到一些Linux建议。让我们甚至向Windows用户投掷骨头,以便这个问题可以满足每个人的需求。


我知道固态存储器与旋转盘片不同。我不需要那堂课。我需要的是一种验证我拥有的设备的方法。过程很简单:用已知的内容填充设备。从设备读取并验证内容。如果您在读取或写入时遇到错误,则明显失败。如果您所阅读的内容与您所写的内容不同,则失败的可能性较小。日期应该是随机的,应该使用多个周期。我需要的是一种可以做到这一点的工具。我已经写了一个,但这是一个hack。
布鲁诺·布罗诺斯基

Answers:


8

由于控制器可以将块移动到任意位置(请参阅损耗平衡),因此整个读/写测试人员将磁盘装满然后进行比较是唯一的机会。当然要用不同的模式多次。

而且,您仍然不会发现有问题的区域,因为只要有空位,控制器也会将它们隐藏起来。


6

闪存的工作方式与带有磁盘的磁盘不同。闪存实际上并不存在“坏扇区”的概念。如今,借助闪存和SSD,内置控制器负责识别和标记不可用的内存块,动态移动数据以减轻块写入限制等。这些功能在SSD中更为普遍,但有些功能存在于优质闪存卡(如SanDisk)中。

大多数文件系统检查工具要么对存储设备的物理结构做出特定假设(即基于磁盘,具有物理柱面,扇区,集群等),要么在抽象级别工作并使用文件或目录“虚拟”进行修复表。您将需要专门设计用于标记闪存设备上坏块的工具,因为其他任何事情都可能导致更多问题(假设它可以像使用基于磁盘的设备一样解决问题)或进行虚拟化不考虑闪存的动态硬件级功能的修复程序。即使您可以将特定的“扇区”或“集群”标记为“不良”,也不一定有好处,因为这些物理概念实际上并不存在于闪存中。如果闪存设备更高级,并且动态地移动数据以自动绕过坏块并减轻写入限制,则数据的物理位置可能会暂时驻留在坏块中,稍后再驻留在好块中。(请注意,闪存中的“坏”块的想法比磁盘大得多,更模糊了……闪存块倾向于缓慢死亡,而不是突然死亡,并且可能在可读/不可读之间“闪烁”。完全无法使用之前)。

一般而言,谈到闪存时,请让设备从坏块的角度进行管理。不同的制造商以不同的方式构造和存储数据,并且每个制造商可能具有不同级别和数量的动态行为,这些动态行为会移动数据以避免闪存的某些限制。自己尝试对其进行管理可能会导致超出解决方案的问题,并且从长远来看可能会使您的闪存盘无用。

如果您希望避免闪存卡损坏,我强烈建议您使用信誉良好的品牌。我过去曾尝试过各种闪存卡,但是SanDisk是我使用过的唯一一个品牌,至少到目前为止,它从未失败过。我有几张4、8和16 Gb SDHC卡,这些卡我经常使用,并且经常从相机中取出并插入笔记本电脑或计算机中,但它们仍能正常工作。(有些已经几岁了。)


1
坏块可以与任何块设备一起存在:如果我向某个特定的块中写入一些数据,但我无法将其读回,那就是坏块。控制器可以通过将数据写入其他位置来隐藏此问题以进行写入,但不能将其隐藏以进行读取。
Vaddadi Kartick

3

在Linux中,所需的命令是badblocks。作为ext2-for-os-x端口的一部分,Mac OS X似乎有一个端口-安装整个程序并忽略/usr/local/sbin/badblocks命令以外的所有内容。

话虽如此,这将有助于测试,但我认为这不会是结论性的,因为首先,正如列奥尼达斯所说,您并没有真正获得对闪存的原始访问权限,因此很难进行完整的扫描,而且还因为测试后可能会出现新的故障,甚至可能由测试触发。


1

阅读问题下方的评论,我相信F3确实可以满足您的需求。它可以在Linux / Mac OS X上编译,也可以通过Homebrew获得。


-1

我在Google上发现了这个问题,但我并没有使用SD卡存储相机,而是在不到2年的三星银河S2上使用完了10类32个演出的Sdhc Sandisk完全损坏了。

我正在使用Badblocks来查看第一个Badblocks的起始位置,然后,如果可能的话,将在该区域进行分区。这是我目前非常非常糟糕的解决方案:/


您能否详细说明您的答案?根据快速搜索,我猜“ badblocks”是Linux程序吗?它能满足操作要求吗?
MikeW
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.