「硬盘」- 如何检测坏块

  CREATED BY JENKINSBOT

本文将介绍检测SSD坏块的方法,包括使用第三方工具及系统工具。

使用命令行(使用 Linux 命令)

方法一、使用 badblock 命令

参考 使用 badblock 命令检查磁盘坏块 笔记。

方法二、使用 Smartmontools 工具(推荐)

对于现代硬盘(ATA/SATA、SCSI/SAS、SSD),通常带有S.M.A.R.T模块。它用于检测、记录、报告磁盘的健康状况。因此可以使用它检测硬件故障。

在安装smartmontools之后,就可以通过smartctl命令操作集成到磁盘中的S.M.A.R.T模块。实际上smartmontools分为两部分,客户端与服务端。客户端是smartctl命令,而服务端是smartd程序。在发行版中,安装smartmontools后,服务会被自动启动。所以实际过程是「smartctl => smartd => S.M.A.R.T」。

#!/bin/sh

################################################################################
# 安装工具(Debian)
################################################################################
apt-get install smartmontools
systemctl status smartd.service # 验证samard.service已经启动

################################################################################
# 简单使用示例
################################################################################
#1 显示S.M.A.R.T的整体健康自我评估结果
smartctl -H /dev/sda1 # 如果结果显示PASS值,则表示通过。但这不代表没有问题。

#2 使用--all则显示相关磁盘信息;使用--xall则显示磁盘所有信息(包括SMART与非SMART信息)。
# 留意输出结果中的Current_Pending_Sector值,该值显示有多少磁盘扇区无法读取并在等待重新映射。
smartctl -a /dev/sdb

#3 测试硬盘
smartctl -t short /dev/sdb # 执行测试,即发送命令给smartd程序
smartctl -l selftest /dev/sdb # 查看测试结果

使用第三方工具

使用工具检测时,最好使用多款工具进行测试,以防止工具不准确的问题。

Macrorit Disk Scanner

官方首页:https://macrorit.com/disk-surface-test/disk-surface-test.html
根据官方介绍,该工具支持的存储设备类型有IDE, SATA HDD and SSD, SCSI, FireWire, hardware RAID, flash cards等等。

傲梅分区助手

官方首页:https://www.disktool.cn/jiaocheng/safely-partition.html
该工具也可以用于坏块检测。

系统内置工具(Windows)

系统内置工具通常具有局限性,比如在Window中的chkdsk命令需要磁盘具有盘符。

chkdsk

使用chkdsk E:命令来检测E盘:

Error checking

也可以在磁盘上单击右键 => 属性 => 工具 => 检错 => 开始检查,但是要卸载磁盘。

参考文献

4 Useful Freeware to Check and Repair Bad Sectors on SSD Drives
3 Ways to Check Bad Sectors
How to Check Bad Sectors or Bad Blocks on Hard Disk in Linux
Analyzing a Faulty Hard Disk using Smartctl