「硬盘」- 如何检测坏块

问题描述

该笔记将记录:检测 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