1. 为什么一块机械硬盘值得你花时间做坏道检测
手里攒了几块老机械硬盘的人,大概率都遇到过这种情况:系统突然卡死、文件复制到一半报I/O错误、开机自检越来越慢、某个分区动不动就提示“无法访问”。这些症状里,十有八九藏着同一个元凶——坏道。机械硬盘用久了,盘片上的磁性介质会自然老化,磁头长期读写也会带来磨损,再加上偶尔的断电、震动、高温,坏道几乎是必然产物。问题在于,很多人直到硬盘彻底罢工才意识到严重性,而那时候数据往往已经取不出来了。
MHDD就是在这个场景下被反复提起的一个工具。它是一款运行在DOS环境下的硬盘底层检测软件,能绕过操作系统直接对硬盘的物理扇区进行读写测试,把每一块扇区的好坏、响应速度都摸得一清二楚。和Windows里那些“表面扫描”工具不同,MHDD拿到的是最原始的数据,它不关心文件系统、不关心分区表,只看扇区本身能不能正常读写、响应时间是多少毫秒。这种底层视角,恰恰是判断一块机械硬盘还能不能继续用的关键依据。
不过MHDD原生是DOS程序,现在大多数人手头只有Windows系统,怎么在Windows环境下把它跑起来、怎么解读它给出的结果、检测出坏道之后又该怎么处理,这一整套流程才是真正卡住新手的地方。这篇内容就是围绕这条完整链路展开的:从制作启动环境、进入MHDD、读懂扫描结果,到针对不同严重程度的坏道采取对应的修复或隔离手段。适合手里有老机械硬盘、想自己动手判断硬盘健康状况的普通用户,也适合做数据恢复或二手硬盘买卖、需要快速筛查盘况的从业者。哪怕你之前完全没接触过DOS工具,跟着走一遍也能上手。
2. 检测前的整体思路与工具选型
2.1 为什么非得用MHDD,Windows自带工具不够用吗
Windows下常见的硬盘检测手段无非这么几种:系统自带的chkdsk、厂商提供的诊断工具、CrystalDiskInfo这类读取SMART信息的软件,还有HD Tune之类的表面测试。它们各有用途,但都存在一个共同的局限——它们都运行在操作系统之上,检测过程要经过文件系统层、驱动层,拿到的结果是被“加工”过的。
chkdsk主要针对文件系统的一致性,它能发现逻辑错误、修复文件索引,但对物理坏道基本无能为力,顶多把坏扇区标记出来。CrystalDiskInfo读的是硬盘固件记录的SMART参数,比如重映射扇区计数、待映射扇区数,这些是硬盘自己统计的“体检报告”,能反映趋势,但没法告诉你坏道具体在哪个位置、有多严重。HD Tune的Error Scan能扫表面,但它同样跑在Windows下,扫描速度和准确性都会受系统干扰,而且它只能告诉你“这块区域有问题”,给不出响应时间分布这种更细的信息。
MHDD的价值就在于它跳过了所有这些中间层。它在DOS下直接调用硬盘的ATA指令集,对每一个LBA扇区发起读写请求,记录响应时间,把结果以颜色块的形式直观呈现。响应时间小于3毫秒是正常,3到10毫秒算偏慢,10到50毫秒就要警惕,超过50毫秒基本可以判定为坏道或即将坏道,而直接报错(显示为红色叉号或问号)的就是已经损坏的扇区。这种颗粒度,是Windows下的工具给不了的。
2.2 在Windows环境下运行MHDD的几种可行方案
MHDD是DOS程序,要在Windows机器上跑,核心思路就是给这台机器临时引导一个DOS环境。目前比较靠谱的做法有这么几种,我按推荐程度排一下。
第一种是用U盘制作一个DOS启动盘,把MHDD的可执行文件放进去。这是最干净、最接近原生体验的方式,因为DOS直接接管硬件,MHDD能拿到最真实的硬盘访问权限。制作工具可以用Rufus配合DOS启动镜像,或者用一些专门的DOS启动盘制作工具。U盘容量不用大,128MB都绰绰有余,但要注意制作过程会清空U盘数据,提前备份好。
第二种是通过光盘引导。如果你的机器还有光驱,刻一张DOS启动光盘也行,原理和U盘一样。不过现在带光驱的机器越来越少,这个方案逐渐被淘汰了。
第三种是在虚拟机里跑。用VMware或VirtualBox建一个DOS虚拟机,然后把物理硬盘以“物理磁盘”的方式挂载给虚拟机。这个方案的好处是不用重启主机、不用折腾U盘,但缺点也很明显:虚拟机对物理硬盘的直通访问在某些主板上不稳定,而且USB转接的硬盘在虚拟机里识别率不高。我实测下来,如果是主板SATA接口直连的硬盘,虚拟机方案基本可用;如果是USB硬盘盒里的盘,还是老老实实用U盘启动。
注意:不管你用哪种方案,检测前一定要确认目标硬盘已经接好、供电稳定。检测过程中断电或松动,轻则扫描中断,重则加重坏道甚至导致磁头划伤盘片。
2.3 检测前必须做的两件事:备份和记录
在正式动手之前,有两件事必须先做,而且顺序不能反。
第一件是备份数据。坏道检测本身是只读操作,理论上不会破坏数据,但一块已经有坏道的硬盘,它的状态是不稳定的。扫描过程中磁头反复经过坏道区域,有可能导致坏道扩散,或者让原本勉强能读的扇区彻底失效。所以只要盘里还有你在乎的东西,先想办法拷出来。如果系统已经进不去,可以用PE环境或者把盘挂到另一台机器上做数据提取。数据比硬盘值钱,这个顺序不能乱。
第二件是记录硬盘的基本信息。包括型号、容量、SN序列号、当前SMART里的重映射扇区数和待映射扇区数。这些信息在检测前后各记录一次,对比一下就能看出这次扫描有没有导致新的扇区被重映射。如果扫描后重映射数明显增加,说明这块盘的状况比想象中更糟,要慎重考虑是否继续使用。记录SN还有个用处:如果你同时检测多块盘,不会搞混结果。
3. MHDD核心操作与扫描结果解读
3.1 制作DOS启动盘并进入MHDD
先说U盘启动盘的制作。我习惯用Rufus,因为它对DOS镜像的支持比较直接。打开Rufus,设备选你的U盘,引导类型选择“FreeDOS”或者加载你准备好的DOS镜像文件,分区类型选MBR,文件系统选FAT32,然后点开始。等进度条走完,一个可引导的DOS U盘就做好了。
接下来把MHDD的文件拷进U盘根目录。MHDD通常是一个压缩包,解压后里面有MHDD.exe以及一些配置文件。全部拷到U盘根目录就行,不用建子文件夹,DOS下路径越简单越好。
然后重启目标机器,进BIOS把启动顺序改成U盘优先。不同主板进BIOS的按键不一样,常见的是Del、F2、F12,开机时留意屏幕提示。进入BIOS后找到Boot菜单,把USB设备调到第一位,保存退出。
机器从U盘启动后会进入DOS命令行。这时候先别急着运行MHDD,先确认一下硬盘有没有被正确识别。输入fdisk /status或者直接用MHDD自带的硬盘列表功能看一眼。MHDD启动后会自动扫描IDE/SATA通道上的硬盘,把它们列出来,每块盘前面有个编号,从0开始。你要记住目标硬盘对应的编号,后面所有操作都基于这个编号。
提示:如果你的硬盘是SATA接口,但BIOS里把SATA模式设成了AHCI,DOS下可能识别不到。进BIOS把SATA模式改成IDE或Legacy,MHDD才能看到盘。检测完再改回来就行。
3.2 MHDD命令速查与扫描参数设置
进入MHDD主界面后,你会看到一个黑底白字的命令行界面,顶部显示当前选中的硬盘信息。MHDD的操作全靠命令,常用的就那么几个,我整理成一张表,方便对照。
| 命令 | 作用 | 使用场景 |
|---|---|---|
PORT | 切换当前操作的硬盘 | 多块盘时先选对目标盘 |
ID | 读取硬盘识别信息 | 确认型号、容量、SN |
SCAN | 启动表面扫描 | 核心检测命令 |
SMART | 查看SMART参数 | 检测前后对比 |
ERASE | 擦除指定扇区 | 修复逻辑坏道 |
REMAP | 重映射坏扇区 | 将坏道加入G-list |
STOP | 停止当前操作 | 扫描中途想终止 |
EXIT | 退出MHDD | 检测完毕 |
重点说SCAN命令。输入scan回车后,MHDD会弹出一系列参数让你设置。第一个是扫描起始LBA,默认从0开始,一般不用改。然后是扫描结束LBA,默认到硬盘最大容量,也不用改。接下来是扫描模式,有LBA和CHS两种,选LBA,因为现代硬盘都用LBA寻址。
再往后是几个关键选项,我逐个解释。Remap选项,开启后MHDD在扫描过程中遇到坏道会自动尝试重映射,这个功能要慎用,后面会详细说。Timeout是超时时间,默认值就行。Loop test/repair是循环测试,一般关掉。Erase waits是擦除等待,也关掉。最后是扫描块大小,默认255个扇区一块,这个值影响扫描速度和精度,保持默认即可。
设置完按F4或者直接回车开始扫描。屏幕上会出现一个进度条,下面是一排排彩色方块,每个方块代表一个扫描块。颜色含义是这样的:灰色是未扫描,白色是响应时间小于3毫秒(优秀),浅灰是3到10毫秒(良好),绿色是10到50毫秒(偏慢),橙色是50到150毫秒(警告),红色是150到500毫秒(危险),红色叉号是读取错误(坏道),问号是无法识别的扇区。
3.3 读懂扫描结果:颜色块背后的硬盘健康状况
扫描跑完之后,屏幕上会留下一张彩色的“地图”,这张图就是这块硬盘的健康画像。怎么解读,我按颜色从好到坏说一遍。
白色和浅灰占绝大多数,说明这块盘状态很好,绝大多数扇区响应迅速。偶尔出现几个绿色块,问题不大,可能是盘片边缘区域或者出厂时就略慢的扇区,不影响使用。但如果绿色块成片出现,或者集中在某个区域,就要留意了,那可能是盘片局部介质老化或者磁头在该区域读写吃力。
橙色和红色块是明确的警告信号。橙色意味着响应时间超过50毫秒,这个延迟在正常硬盘上几乎不会出现,说明该扇区读写已经非常吃力,虽然还能读出数据,但随时可能变成坏道。红色更严重,响应时间超过150毫秒,基本处于“读得出但快挂了”的状态。这两种块如果数量少且分散,可以暂时观察;如果数量多或者集中,说明盘片该区域已经严重退化。
红色叉号是已经损坏的扇区,MHDD读不出任何数据。问号是扇区无法定位或响应异常。这两种就是真正意义上的坏道。坏道分两种:逻辑坏道和物理坏道。逻辑坏道是扇区数据校验出错,但介质本身没坏,通过擦写可以修复;物理坏道是盘片磁性介质真的损伤了,无法修复,只能隔离或重映射。
判断逻辑还是物理,有个简单办法:用MHDD的ERASE命令对坏道所在区域擦除一次,然后重新扫描。如果擦除后坏道消失,说明是逻辑坏道,已经修复;如果擦除后依然报错,那就是物理坏道,没救了。
注意:ERASE命令会彻底清除目标扇区的数据,操作前务必确认该区域没有重要数据,或者数据已经备份。擦除是不可逆的。
4. 坏道修复与隔离的实操流程
4.1 逻辑坏道的擦除修复:ERASE命令的正确用法
逻辑坏道的成因通常是突然断电、非正常关机、写入过程中断,导致扇区的校验信息与数据不匹配。硬盘固件在读取时会发现校验失败,于是报告读取错误。这种坏道的特点是“假性”的,介质本身完好,只要重新写入一次正确的数据,扇区就能恢复正常。
MHDD的ERASE命令就是干这个的。操作步骤是:先用SCAN定位坏道的大致LBA范围,记下起始和结束LBA。然后退出SCAN,在命令行输入erase,MHDD会提示你输入起始LBA和结束LBA。把刚才记下的范围填进去,回车确认,MHDD就会对该区域逐扇区写入零。擦除完成后,再用SCAN扫一遍这个区域,如果之前的红叉变成了白色或浅灰,说明逻辑坏道修复成功。
这里有个细节要注意:擦除范围不要开得太大。有些人图省事,直接把整个盘从头擦到尾,这没必要,而且耗时极长。一块500GB的盘全盘擦除可能要几个小时。精准定位、小范围擦除,效率高得多。另外,擦除前最好把该区域的数据备份出来,虽然逻辑坏道区域的数据往往已经损坏,但万一有能恢复的片段呢。
我自己的经验是,逻辑坏道擦除的成功率大概在七成左右。如果擦除一次没效果,可以再擦一次,但不要反复擦同一个区域超过三次,否则可能把原本只是逻辑问题的扇区真的写坏。擦完还是报错的,就按物理坏道处理。
4.2 物理坏道的重映射:REMAP的利与弊
物理坏道没法修复,只能隔离。隔离的手段有两种:一是靠分区工具把坏道所在区域单独划成一个分区然后隐藏,二是用MHDD的REMAP命令把坏道加入硬盘固件的G-list(增长缺陷列表)。
REMAP的原理是这样的:硬盘出厂时有一份P-list(永久缺陷列表),记录了出厂时就存在的缺陷扇区。硬盘还有一部分预留扇区作为备用。当MHDD对某个坏扇区执行REMAP时,硬盘固件会把该扇区的LBA地址重定向到一个备用扇区,以后所有对该LBA的读写请求都会自动转到备用扇区上。对操作系统来说,这个LBA依然可用,只是实际读写发生在别的位置。
听起来很美好,但REMAP有代价。第一,备用扇区是有限的,一般也就几百到几千个,用完了就没了。第二,重映射会改变硬盘的固件记录,操作不当可能导致硬盘变砖。第三,如果坏道是磁头划伤盘片造成的,坏道会持续扩散,今天重映射了100个,明天可能又冒出200个,备用扇区很快耗尽。
所以我的建议是:REMAP只用于坏道数量少、位置分散、且确认不再扩散的情况。如果扫描发现坏道成片出现,或者重映射后短时间内又出现新坏道,说明硬盘已经进入快速衰退期,这时候应该考虑的是数据迁移和换盘,而不是继续修。
REMAP的操作和ERASE类似,在SCAN过程中开启Remap选项,MHDD会在扫描到坏道时自动执行重映射。也可以扫描完后单独对特定LBA执行REMAP命令。操作前务必确认硬盘的SMART里备用扇区还有余量,如果“可用备用扇区”已经很低,就别再重映射了。
4.3 坏道区域的分区隔离:不碰固件的保守方案
如果你不想动硬盘固件,或者坏道数量不多但REMAP风险太大,还有一个更保守的办法:用分区工具把坏道区域隔离出去。
具体做法是:先用MHDD扫描,记录坏道的起始LBA和结束LBA。然后进PE系统,用DiskGenius之类的分区工具,把坏道区域前后的正常区域各划成一个分区,中间坏道区域留空不分配。这样操作系统就不会去读写那块区域,坏道也就不会影响日常使用。
这个方案的优点是零风险,不碰固件,不消耗备用扇区。缺点是会浪费一部分容量,而且如果坏道扩散到隔离区之外,还得重新调整分区。另外,隔离区最好留出一定的余量,比如坏道前后各多留1GB的缓冲,防止坏道边缘的“亚健康”扇区被误用。
我一般建议普通用户优先用这个方案。除非你是做数据恢复的,需要尽可能榨干硬盘的最后一点可用空间,否则没必要冒险去REMAP。
5. 常见问题排查与避坑经验
5.1 MHDD识别不到硬盘怎么办
这是新手最常遇到的问题。MHDD启动后硬盘列表是空的,或者只有光驱没有硬盘。原因通常有三个。
第一个是BIOS里SATA模式设成了AHCI。DOS环境下的MHDD只认IDE/ Legacy模式,AHCI它看不到。解决办法是进BIOS把SATA Configuration改成IDE或Compatibility,保存重启再进MHDD。
第二个是硬盘接在了第三方SATA控制器上。有些主板除了芯片组自带的SATA口,还有额外的第三方芯片提供的SATA口,比如某些扩展卡上的接口。MHDD对第三方控制器的兼容性不好,尽量把盘接在主板原生SATA口上,通常是最靠近CPU的那几个。
第三个是硬盘本身没被BIOS识别。如果BIOS里都看不到盘,那MHDD更不可能看到。这时候要检查供电线、数据线是否插紧,换一根线试试,或者把盘接到另一台机器上确认是不是盘本身的问题。
5.2 扫描速度异常慢或卡死
正常情况下一块500GB的机械硬盘,MHDD全盘扫描大概需要一到两个小时,具体取决于转速和坏道数量。如果扫描速度明显偏慢,比如几个小时才走了百分之几,或者进度条长时间不动,通常有几种可能。
一是硬盘本身坏道太多,磁头在坏道区域反复重试,导致扫描停滞。这时候可以按ESC中断扫描,看看已经扫过的区域是不是大片红色。如果是,这块盘基本可以判死刑了。
二是硬盘进入了降速保护模式。有些硬盘在检测到大量错误后会主动降低转速或限制读写速度,导致扫描变慢。这种情况重启一下MHDD,或者断电重启硬盘,有时能恢复。
三是数据线或电源线接触不良。劣质线材在长时间读写时可能出现信号衰减,导致传输错误和重试。换一根质量好点的SATA线,电源线也检查一下。
5.3 检测后硬盘反而更糟了
这个情况虽然不常见,但确实会发生。有些盘在检测前只是偶尔报错,检测后坏道反而增多了。原因在于MHDD的扫描是全盘逐扇区读写,磁头要反复经过坏道区域。如果坏道是盘片划伤造成的,磁头经过划伤处时可能被进一步磨损,或者把划伤处的碎屑带到其他区域,造成新的划伤。
所以对于已经明确有物理坏道的盘,扫描要适可而止。不要为了“扫得彻底”而反复全盘扫描。扫一遍,记录坏道位置,然后直接做隔离或迁移数据。反复扫描只会加速硬盘死亡。
另外,检测过程中如果听到硬盘发出规律的“咔咔”声或者“吱吱”声,那是磁头反复寻道失败的声音,说明坏道区域已经严重到磁头无法正常定位了。这时候应该立即停止扫描,断电,把盘取下来。继续扫下去可能让磁头彻底卡死,到时候连数据都取不出来。
5.4 常见问题速查表
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| MHDD看不到硬盘 | SATA模式为AHCI | BIOS改IDE/Legacy |
| MHDD看不到硬盘 | 接在第三方SATA口 | 换到主板原生SATA口 |
| 扫描速度极慢 | 坏道过多导致重试 | 中断扫描,评估坏道分布 |
| 扫描中途卡死 | 磁头寻道失败 | 立即停止,断电取盘 |
| 擦除后坏道仍在 | 物理坏道 | 改用隔离或重映射 |
| 重映射后新坏道不断 | 盘片持续退化 | 停止修复,尽快迁移数据 |
| 检测后坏道增多 | 磁头磨损或碎屑扩散 | 停止扫描,做数据抢救 |
5.5 几个容易被忽略的实操细节
第一个细节是MHDD的版本。网上流传的MHDD版本很多,有些是修改版,有些带病毒。尽量找原版或者口碑好的汉化版,文件大小通常在几百KB到1MB左右。下载后先杀毒,再拷进U盘。
第二个细节是DOS下的键盘布局。有些机器的USB键盘在DOS下可能不识别,尤其是无线键盘。尽量用PS/2接口的键盘,或者有线USB键盘。如果键盘没反应,进BIOS看看有没有“USB Legacy Support”选项,开启它。
第三个细节是扫描时的电源管理。有些主板在DOS下会触发节能模式,导致硬盘供电不稳。进BIOS把C-State、EIST之类的节能选项关掉,保证扫描期间供电稳定。
第四个细节是记录扫描日志。MHDD支持把扫描结果输出到文件,命令是scan设置完后按F2还是什么快捷键我记不太清了,反正可以保存。把日志存到U盘上,方便后续对比。如果没有日志功能,用手机拍下屏幕上的彩色地图也行,至少能看出坏道分布。
6. 检测之后的决策:修还是换
扫描做完、坏道定位了、该擦的擦了、该隔离的隔离了,最后要面对一个现实问题:这块盘还能不能用?
我的判断标准是这样的。如果坏道数量在个位数,且都是逻辑坏道,擦除后恢复正常,那可以继续用,但重要数据不要只存这一份。如果坏道数量在几十个以内,位置集中,隔离后不影响其他区域,可以当个临时存储盘用,放些不重要的东西。如果坏道数量超过一百个,或者成片出现,或者重映射后新坏道不断冒出,那就别犹豫了,这块盘已经进入生命末期,赶紧把数据迁走,然后让它退役。
机械硬盘的坏道有个特点:一旦开始出现,往往意味着盘片介质或磁头已经进入老化阶段,坏道会越来越多、越来越快。今天修好了十个,下个月可能又冒出五十个。与其反复折腾,不如趁数据还能读出来的时候赶紧转移。
我自己的做法是,凡是检测出物理坏道的盘,一律降级为“临时盘”,只放一些下载缓存、临时文件之类丢了也无所谓的东西。重要数据永远保持至少两份,分别放在不同的物理硬盘上。这个习惯帮我躲过了好几次硬盘突然暴毙的灾难。
最后分享一个小技巧:如果你经常需要检测机械硬盘,可以专门准备一个DOS启动U盘,里面放好MHDD和几个常用工具,再放一个PE系统。这样一块盘拿过来,先PE里看数据能不能读,能读就先备份,然后重启进DOS跑MHDD,一套流程下来行云流水。比每次现做启动盘省事得多。