最近,我一直在奇怪和罕见的文件系统损坏,我怀疑这是我的SSD的故障。我正在寻找一个好的驾驶折磨测试工具。可以写入整个磁盘的东西,然后返回并读取它,以查找快速写入,损坏的块,恢复为较旧版本的块以及其他错误。这将远不止badblocks
于此。有这样的工具吗?
注意:我并不是在寻找性能基准,而是已经检查了SMART状态。说健康,没有坏块报告。
最近,我一直在奇怪和罕见的文件系统损坏,我怀疑这是我的SSD的故障。我正在寻找一个好的驾驶折磨测试工具。可以写入整个磁盘的东西,然后返回并读取它,以查找快速写入,损坏的块,恢复为较旧版本的块以及其他错误。这将远不止badblocks
于此。有这样的工具吗?
注意:我并不是在寻找性能基准,而是已经检查了SMART状态。说健康,没有坏块报告。
Answers:
可能有些大材小用,但是这里有Phoronix测试套件。还有bonnie++
,还有hdparm
。
我通常使用hdparm
,例如:
% hdparm -Tt /dev/hdb
/dev/hdb:
Timing buffer-cache reads: 128 MB in 1.25 seconds =102.40 MB/sec
Timing buffered disk reads: 64 MB in 16.70 seconds = 3.83 MB/sec
我不会hdparm
进行酷刑测试,但是它确实可以让您大致了解硬盘的整体性能。
折磨驱动器后,可以使用以下命令检查驱动器的总体运行状况:
% sudo udisks --dump | grep -A 24 Updates
Attribute Current|Worst|Threshold Status Value Type Updates
===============================================================================
raw-read-error-rate 103| 99| 34 good 5854752 Pre-fail Online
spin-up-time 100| 99| 0 n/a 0 Pre-fail Online
start-stop-count 98| 98| 20 good 2785 Old-age Online
reallocated-sector-count 100|100| 36 good 0 sectors Pre-fail Online
seek-error-rate 72| 60| 30 good 25872884688 Pre-fail Online
power-on-hours 89| 89| 0 n/a 424.4 days Old-age Online
spin-retry-count 100|100| 97 good 0 Pre-fail Online
power-cycle-count 98| 98| 20 good 2753 Old-age Online
attribute-184 100|100| 99 good 0 Old-age Online
reported-uncorrect 100|100| 0 n/a 0 sectors Old-age Online
attribute-188 100| 96| 0 n/a 0 Old-age Online
high-fly-writes 100|100| 0 n/a 0 Old-age Online
airflow-temperature-celsius 58| 42| 45 FAIL_PAST 42C / 108F Old-age Online
g-sense-error-rate 100|100| 0 n/a 124 Old-age Online
power-off-retract-count 100|100| 0 n/a 15 Old-age Online
load-cycle-count 1| 1| 0 n/a 248327 Old-age Online
temperature-celsius-2 42| 58| 0 n/a 42C / 108F Old-age Online
hardware-ecc-recovered 45| 38| 0 n/a 5854752 Old-age Online
reallocated-event-count 89| 89| 30 good 14877766723263 Pre-fail Online
current-pending-sector 100|100| 0 n/a 0 sectors Old-age Online
offline-uncorrectable 100|100| 0 n/a 0 sectors Old-age Offline
udma-crc-error-count 200|200| 0 n/a 0 Old-age Online
attribute-254 100|100| 0 n/a 0 Old-age Online
在我工作的以下两个工具中,我们取得了成功。HDAT2和Spinrite。后者是一种商业工具,而前者HDAT2是一个开源项目。
这是HDAT2的几个屏幕截图:
您必须将系统重新引导到这两个系统中,以便在执行这些操作时它可以脱机,但是它们都恢复了发生故障或开始出现故障的驱动器。HDAT2中的UI导航有些困难,我们通常在大多数情况下使用默认选项,并尽量不要离它太远。
bonnie ++浮现在脑海:
因此,取决于您的包装盒的硬件配置:
bonnie++ -d /path/to/mounted/ssd -r your-system-ram-size-in-MB
例:
# For a 32GB system with the SSD formatted and mounted at /mnt/mounted-ssd-001
bonnie++ -d /mnt/mounted-ssd-001 -r 32000
它应该给您的设备一个良好的压力测试。您也可以自定义它。
请注意,使用SSD时,如果发生坏块,驱动器硬件可能会自动重新映射它,具体取决于您使用的驱动器。此外,酷刑测试会消耗掉SSD的写入寿命。因此,请自行决定使用。
编辑:
添加了关于SSD故障的注释,因为已经指出Bonnie ++会进行压力测试,但不会跟踪错误。SSD“重映射坏块”的方式与硬盘驱动器重映射的方式不同。运作方式完全取决于您拥有哪个品牌/品牌/型号的SSD:
由于隔离的坏块而使SSD调整大小时,如果驱动器的固件没有自动自动执行适当的更新,则可能需要执行以下操作来恢复驱动器:
http://communities.intel.com/message/145676
除非考虑到压力测试和错误记录工具是专门为SSD设计的,否则您将耗尽设备的使用寿命。
编辑:
根据以上答案的信息,建议使用更好的电缆替换电缆或更换驱动器(RMA /保修),因为这种操作系统文件系统级别的错误是不正常的。
另外,如果驱动器支持,则可以增加为处理错误而保留的空间:
http://www.thomas-krenn.com/en/wiki/SSD_Over-provisioning_using_hdparm
我知道这已经使用了一年多,但是为了以后阅读该线程的任何人的利益,我希望您需要的软件(d)在HP Labs之外尚不存在:
“了解电源故障下固态硬盘的坚固性” https://www.usenix.org/system/files/conference/fast13/fast13-final80.pdf
用选择的事件代替电源故障注入(如果检测到间歇性的固件错误,则不进行任何操作),并且看来该软件可以检测到它。不幸的是,我认为没有其他选择,否则惠普可能不会在内部编写任何东西。
很遗憾,因为我还需要类似的东西来证明虚拟环境中的问题。我怀疑已提交的写入实际上尚未进入物理磁盘。能够像这样对存储堆栈进行压力测试,而不仅仅是对SSD进行压力测试,将是很棒的。我还没有找到合适的东西。
使用制造商测试工具,这是测试HD的最佳方法,因为它可以访问低级别测试,重新映射坏扇区,测试所有智能运行状况(特别是对于SSD,对于我们大多数人来说,许多寄存器都是未知的但可以帮助制造商查看硬盘状态)
hirensCD有许多测试工具,但我认为它尚未更新为启用SSD的工具,因此请直接检查制造商的网站。有些确实支持linux,有些则可能需要Windows liveCD(再次检查hirenCd)或从笔式驱动器启动(freedos,特殊OS等)。
大多数旧版HD工具都不适合测试SSD,因为一个扇区永远不会位于同一位置,而是由固件动态映射的,从而将写入内容分散到整个驱动器上。因此,如果他们确实进行测试,则您只是在烧写周期,而不是真正地测试磁盘。
读测试不会烧坏SSD,但也可能不会真正测试所有SSD扇区,这同样是由于固件隐藏了实际布局。