确认物理硬件坏道必须通过SMART数据而非文件系统操作:先用smartctl -H判断健康状态,再查Reallocated_Sector_Ct、Current_Pending_Sector和Offline_Uncorrect三项原始值,>0即存在物理缺陷;badblocks仅能验证已失效扇区,不能发现早期劣化。

直接查看物理硬件坏道,不能靠文件系统操作,得从硬盘固件层入手。Linux 下最可靠、最快捷的方式是读取磁盘内置的 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)数据——它由硬盘自身传感器和日志实时维护,能反映真实物理状态,比如扇区重映射、校验失败、寻道异常等。
先用 smartctl 快速筛查健康状态
这是第一步,也是最关键的前置判断:
- 安装工具(如未安装):
sudo apt install smartmontools(Debian/Ubuntu)sudo yum install smartmontools或sudo dnf install smartmontools(RHEL/CentOS/Fedora) - 启用 SMART(部分老硬盘需手动开启):
sudo smartctl -s on /dev/sdb(注意是整块盘/dev/sdb,不是分区) - 查看综合健康结论:
sudo smartctl -H /dev/sdb
✅ 输出PASSED表示当前无严重告警;❌ 若为FAILED或DISK FAILURE IS IMMINENT,立即备份并准备换盘。
重点盯住三项原始值(Raw Value)
运行 sudo smartctl -a /dev/sdb 后,在输出中查找以下属性:
-
Reallocated_Sector_Ct:已重映射扇区数。>0 即表示硬盘已发现物理缺陷,并将坏扇区替换成备用扇区。这是最典型的物理坏道证据。 -
Current_Pending_Sector:待重映射扇区数。值非零说明有扇区读写不稳定,下次访问可能触发重映射——属于“即将暴露”的物理坏道。 -
Offline_Uncorrect:离线校验无法修复的扇区数。同样 >0 就代表存在底层读取失败,属硬件级问题。
辅助验证:执行短时/长时自检
- 快速筛查(2分钟内):
sudo smartctl -t short /dev/sdb - 全盘深度扫描(几小时,机械盘慎用):
sudo smartctl -t long /dev/sdb
等待完成后,用sudo smartctl -l selftest /dev/sdb查看结果。若某次测试出现Completed: read failure,对应 LBA 地址就是物理不可读位置。
badblocks 只能验证,不能“发现”隐藏坏道
它只能检测当前已完全失效、无法读取的扇区(即 SMART 中已标记为 Reallocated 或 Pending 的那些),但:
- 不会触发硬盘固件重映射机制;
- 无法识别“偶发性延迟”“写入超时”等早期物理劣化;
- 扫描结果为 0,不代表硬盘健康——SMART 才是第一道防线。
所以,真正想确认物理硬件坏道,smartctl 是唯一推荐的起点。发现异常值后,再结合 badblocks 做扇区级定位(需卸载分区),最后用 e2fsck -l 隔离(仅限 ext 系列)。XFS/Btrfs 等现代文件系统不支持坏块列表注入,依赖的是底层 RAID 或设备映射层规避,而非手动标记。











