我最近一直有奇怪和罕见的文件系统损坏,我怀疑是我的 SSD 的错。我正在寻找一个好的驱动器酷刑测试工具。可以写入整个磁盘的东西,然后返回并读取它以查找快速写入、损坏的块、恢复到旧版本的块和其他错误。这将远远超过什么badblocks
。有这样的工具吗?
注意我不是在寻找性能基准并且已经检查了 SMART 状态;说健康,没有坏块报告。
slm*_*slm 12
可能有点矫枉过正,但有Phoronix Test Suite。还有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
Run Code Online (Sandbox Code Playgroud)
我不会称之为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
Run Code Online (Sandbox Code Playgroud)
我们使用我工作的以下 2 个工具取得了很好的成功。HDAT2和Spinrite。后者是一个商业工具,而前者 HDAT2 是一个开源项目。
以下是 HDAT2 的几个屏幕截图:
您必须将系统重新启动到这两个,以便在您执行这些操作时它处于脱机状态,但它们都已恢复发生故障或开始出现故障的驱动器。HDAT2 中的 UI 导航有点粗糙,我们通常在大多数情况下使用默认选项,并尽量不要在那里徘徊太远。
bonnie++ 浮现在脑海中:
因此,取决于您的盒子的硬件配置:
bonnie++ -d /path/to/mounted/ssd -r your-system-ram-size-in-MB
Run Code Online (Sandbox Code Playgroud)
例子:
# For a 32GB system with the SSD formatted and mounted at /mnt/mounted-ssd-001
bonnie++ -d /mnt/mounted-ssd-001 -r 32000
Run Code Online (Sandbox Code Playgroud)
它应该给你的设备一个很好的压力测试。您也可以自定义它。
请注意,对于 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