重要安全提示:时刻保持警惕,不轻信陌生人或信息,居家注意水电燃气安全,出行遵守交通规则,网络使用中保护个人信息,谨防诈骗,遇紧急情况冷静应对,及时报警求助。
检查硬盘是否存在坏道是维护数据安全和硬件健康的重要步骤,坏道(Bad Sectors)是硬盘上无法正常读取或写入数据的物理或逻辑损坏区域,及时发现坏道可以让你在数据丢失前采取备份或更换硬盘的措施,以下是在不同操作系统中使用命令行工具检查硬盘坏道的详细方法:
- 备份数据: 在运行任何磁盘检查工具之前,强烈建议备份硬盘上的所有重要数据,虽然检查过程本身通常不会导致数据丢失,但如果硬盘已经处于严重故障边缘,任何操作都可能成为压垮骆驼的最后一根稻草。
- 关闭程序: 确保没有程序正在访问或使用待检查的硬盘分区(尤其是系统盘C:),对于系统盘,通常需要重启才能完成完整扫描。
- 理解风险: 深度扫描(尤其是修复扫描)对老旧的、已有问题的硬盘可能造成额外压力,如果硬盘发出异常噪音(咔哒声、反复重启),请立即停止扫描并优先备份数据。
Windows 系统 (使用 chkdsk
命令)
chkdsk
(Check Disk) 是 Windows 内置的磁盘检查和修复工具,它可以扫描文件系统错误和查找坏道。
-
以管理员身份运行命令提示符或 PowerShell:
- 在 Windows 搜索栏中键入
cmd
或powershell
。 - 在搜索结果中右键点击“命令提示符”或“Windows PowerShell”。
- 选择“以管理员身份运行”,如果出现用户账户控制提示,点击“是”。
- 在 Windows 搜索栏中键入
-
理解
chkdsk
参数:/f
: 修复找到的错误(Fix)。注意: 如果扫描的是系统盘(通常是C:),系统会提示你无法锁定该卷,询问是否计划在下次系统重启时检查,按Y
然后回车确认,之后重启电脑开始扫描。/r
: 定位坏扇区并尝试恢复可读信息(Recover)。这个参数包含了/f
的功能,并且是查找坏道的关键参数。 它会对磁盘进行更彻底的扫描。/x
: 如果必要,强制卸载卷(即断开卷与其他程序的连接)以进行扫描(通常与/f
或/r
一起使用)。/scan
: 在在线模式下扫描卷(Windows 10/11 较新版本支持,无需卸载卷,但可能不如离线扫描彻底)。/perf
: 与/scan
一起使用,使用更多系统资源以尽快完成扫描(Windows 10/11)。
-
执行扫描命令:
- 基本扫描(查找错误,不修复):
chkdsk X:
(将
X:
替换为你要检查的盘符,D:
) - 查找并修复文件系统错误:
chkdsk X: /f
- 查找坏道并尝试恢复数据(推荐用于坏道检查):
chkdsk X: /r
- 对于非系统盘,扫描会立即开始(如果卷正在使用,会提示是否强制卸载,按
Y
继续)。 - 对于系统盘 (
C:
):chkdsk C: /r
系统会提示:
由于该卷正被另一进程使用,无法运行 Chkdsk,是否计划在下一次系统重新启动时检查此卷? (Y/N)
按
Y
键,然后按回车键,重启电脑,扫描将在进入 Windows 前进行。这个过程可能非常耗时(几小时甚至更久),取决于硬盘大小和速度,请耐心等待完成。
- 对于非系统盘,扫描会立即开始(如果卷正在使用,会提示是否强制卸载,按
- 基本扫描(查找错误,不修复):
-
解读结果:
- 扫描完成后,
chkdsk
会输出一份报告。 - 重点关注以下部分:
Windows 已扫描文件系统,没有发现问题。
或类似信息:表示未发现文件系统错误(但/r
参数下的坏道检查结果在更详细的日志里)。已处理 xxxx 个文件记录
/已处理 xxxx 个索引
/已处理 xxxx 个安全描述符
:文件系统结构检查进度。已处理 xxxx 个群集
/已处理 xxxx 个可用群集
:这是坏道扫描的关键部分,它显示扫描了多少个磁盘分配单元(群集)。xxxx KB 磁盘空间可用
:磁盘空间统计。- 坏道信息: 如果发现坏道,报告中会明确列出,
在磁盘上发现坏扇区。
/发现损坏的群集。
无法恢复 xxxx 个坏扇区中的文件数据。
- 错误信息: 如果报告了具体的文件错误或修复信息,也需要注意。
- 查看详细日志:
- 扫描完成后,在 Windows 事件查看器中可以找到更详细的
chkdsk
日志:- 按
Win + R
键,输入eventvwr.msc
并回车。 - 展开 “Windows 日志” -> “应用程序”。
- 在右侧“操作”面板点击“筛选当前日志…”。
- 在“事件来源”下拉框中,选择
Wininit
。 - 点击“确定”,查找来源为
Wininit
且事件ID为1001
的事件,双击查看,其描述中就包含了chkdsk
执行的完整报告。
- 按
- 扫描完成后,在 Windows 事件查看器中可以找到更详细的
- 扫描完成后,
Linux 系统 (使用 smartctl
和 badblocks
命令)
Linux 提供了更强大的工具来检查磁盘健康状况和坏道。
A. 使用 smartctl
(S.M.A.R.T. 数据检查)
S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) 是硬盘内置的自我监测技术。smartctl
工具可以读取这些数据,其中包含关于坏道和潜在故障的预警信息,这通常是检查硬盘整体健康和预测性故障的第一步。
-
安装
smartmontools
:- 大多数 Linux 发行版默认未安装
smartctl
,使用包管理器安装:- Debian/Ubuntu:
sudo apt update && sudo apt install smartmontools
- Fedora/RHEL/CentOS:
sudo dnf install smartmontools # 或 sudo yum install smartmontools (旧版)
- Arch Linux/Manjaro:
sudo pacman -S smartmontools
- Debian/Ubuntu:
- 大多数 Linux 发行版默认未安装
-
识别硬盘设备:
- 使用
lsblk
或sudo fdisk -l
命令查看系统连接的硬盘及其设备标识符(如/dev/sda
,/dev/sdb
,/dev/nvme0n1
),确定你要检查的硬盘。
- 使用
-
查看 S.M.A.R.T. 整体健康状态:
sudo smartctl -H /dev/sdX
(将
/dev/sdX
替换为你的硬盘设备,如/dev/sda
)- 输出解读: 最直接的结果是
SMART overall-health self-assessment test result: PASSED
或... FAILED
。PASSED
表示当前S.M.A.R.T.认为硬盘健康,FAILED
表示检测到严重问题(可能包括大量坏道或即将故障),但这只是一个总体状态。
- 输出解读: 最直接的结果是
-
查看详细的 S.M.A.R.T. 属性:
sudo smartctl -A /dev/sdX
- 关键属性解读 (重点关注):
Reallocated_Sector_Ct
(重新分配扇区计数):硬盘发现坏道后,会用备用扇区替换它们,这个值表示已经替换的坏扇区数量。任何大于 0 的值都表示硬盘存在(或曾经存在)坏道,并且数值持续增长是一个严重警告信号。Current_Pending_Sector
(当前待处理扇区计数):硬盘在读写时发现不稳定或无法读取/写入,但尚未决定是重新分配(标记为坏道)还是成功恢复的扇区数量。这个值大于 0 是非常危险的信号,表明硬盘上存在活跃的、未解决的坏道,数据随时可能丢失。Offline_Uncorrectable
(离线无法校正的扇区数):在离线测试(非活动状态下的后台扫描)中发现的无法修复的坏扇区数量,与Reallocated_Sector_Ct
类似,但来源是离线测试。UDMA_CRC_Error_Count
:与数据线连接相关的错误计数,过高可能表示线缆问题而非硬盘本身坏道。
- 重要: 不同硬盘厂商的属性和阈值可能略有不同,请结合
sudo smartctl -i /dev/sdX
查看的型号信息参考厂商文档。
- 关键属性解读 (重点关注):
-
运行 S.M.A.R.T. 自检:
- 短自检 (Short Self-Test): 快速检查(通常几分钟)。
sudo smartctl -t short /dev/sdX
- 长自检/扩展自检 (Long/Extended Self-Test): 全面检查硬盘表面,包括坏道扫描(耗时较长,几小时)。
sudo smartctl -t long /dev/sdX
- 查看自检进度和结果:
sudo smartctl -l selftest /dev/sdX
等待测试状态从
Self-test in progress...
变为Completed without error
或显示错误信息。Completed without error
表示通过,如果显示Completed: read failure
或其他错误,则表明发现了问题(可能包括坏道)。
- 短自检 (Short Self-Test): 快速检查(通常几分钟)。
B. 使用 badblocks
(直接扫描坏道)
badblocks
命令是专门设计来扫描磁盘表面,查找物理坏道的工具,它进行的是破坏性或非破坏性的读写测试。
-
卸载分区 (强烈建议): 为了安全扫描,最好卸载目标硬盘上的所有分区,如果扫描的是非系统盘,可以卸载其挂载点:
sudo umount /dev/sdX1 /dev/sdX2 ... # 卸载该硬盘上的所有分区
如果无法卸载(例如根分区),可以考虑从 Live USB 启动系统。
-
执行
badblocks
扫描:- 只读扫描 (非破坏性,最安全,但可能漏检部分坏道):
sudo badblocks -sv /dev/sdX
-s
: 显示进度。-v
: 详细模式。/dev/sdX
: 指定整个硬盘设备 (如/dev/sda
),不是分区 (如/dev/sda1
),扫描分区可能不完整且不安全。- 此命令仅尝试读取每个块,不会写入数据。
- 非破坏性读写扫描 (更彻底,推荐):
sudo badblocks -nsv /dev/sdX
-n
: 使用非破坏性读写模式,它会将每个块的数据读出来,写入一个不同的模式,再读回来验证,最后将原始数据写回去。理论上不破坏数据,但风险比只读模式略高(万一在写入模式时断电),确保有备份!
- 破坏性读写扫描 (仅用于空盘或完全不在乎数据时!):
sudo badblocks -wsv /dev/sdX
-w
: 使用破坏性写模式。这会用特定模式(0xaa, 0x55, 0xff, 0x00)覆盖硬盘上的所有数据!仅在硬盘为空或数据已备份且可丢弃时使用! 这是最彻底的测试。
- 只读扫描 (非破坏性,最安全,但可能漏检部分坏道):
-
解读结果:
badblocks
会直接在屏幕上输出它找到的所有坏块的块号列表。- 如果没有输出坏块号,并且在最后显示扫描完成的进度(如
done, 0 bad blocks found
),则表示未发现坏道。 - 如果输出了数字列表(如
12345
,67890
),这些就是检测到的坏块号。数量越多,硬盘问题越严重。
-
将坏块信息标记给文件系统 (可选):
如果使用badblocks
发现了坏道,并且你希望文件系统(如ext4
)在格式化或检查时避开这些坏块,可以将坏块列表保存下来,然后在mkfs
(格式化) 或e2fsck
(检查修复) 时使用:sudo badblocks -sv /dev/sdX > badblocks_list.txt # 保存坏块列表到文件 sudo mkfs -t ext4 -l badblocks_list.txt /dev/sdX1 # 格式化分区时避开坏块 # 或者对于已存在的 ext* 文件系统 sudo e2fsck -l badblocks_list.txt /dev/sdX1
总结与建议
- Windows 用户: 首选
chkdsk /r
命令,对于系统盘需重启扫描,耐心等待结果,查看事件查看器日志获取详细信息。 - Linux 用户:
- 先用
smartctl -H /dev/sdX
和smartctl -A /dev/sdX
检查 S.M.A.R.T. 状态,重点关注Reallocated_Sector_Ct
和Current_Pending_Sector
。 - 运行
sudo smartctl -t long /dev/sdX
进行长自检,并用sudo smartctl -l selftest /dev/sdX
查看结果。 - 如果需要更直接的坏道扫描(尤其当 S.M.A.R.T. 有警告时),使用
sudo badblocks -nsv /dev/sdX
(务必先卸载分区并确保有备份)。
- 先用
- 发现坏道怎么办?
- 立即备份数据! 这是最重要的步骤。
- 少量坏道: 现代硬盘通常有备用扇区自动替换少量坏道,继续监控 S.M.A.R.T. 值(特别是
Reallocated_Sector_Ct
是否增长),考虑更换硬盘。 - 大量坏道或
Current_Pending_Sector > 0
: 硬盘很可能即将完全故障,立即备份所有重要数据,并尽快更换硬盘。 不要依赖这样的硬盘存储重要信息。 - 物理损坏迹象(异响): 立即断电,寻求专业数据恢复服务,避免进一步损坏。
定期检查硬盘健康状况(如每月查看一次 S.M.A.R.T. 状态)是预防数据丢失的良好习惯,硬盘是消耗品,最终都会损坏,及时备份才是数据安全的核心保障。
引用说明:
- Microsoft Docs: chkdsk 官方文档
- smartmontools: 官方主页与文档
- Linux
man
手册页 (man chkdsk
在 Windows 不可用,但man smartctl
,man badblocks
,man lsblk
,man fdisk
,man e2fsck
在 Linux 终端中可查看详细说明) - Ubuntu Wiki: S.M.A.R.T. Monitoring (提供特定于 Ubuntu 的指南和背景信息)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4766.html