前几天打开一台停了半年没用的电脑,发现系统反应非常慢。重装系统后,发现还是出现一些卡顿的情况。最后通过victoria检查,发现绿点3000多个,橘点1000多个,部分扇区的读写延迟近2000ms。难怪系统响应老是卡顿。
按理说这块硬盘陆续地服役了快10年,也算老当益壮。但是奔着科学探究的精神,我尝试能不能再修复坏道继续使用。
一开始,我点击victoria的擦除,扫了一遍,设置250ms延迟超时。扫完之后重新再扫一遍,好像没什么效果,绿点还是存在不少,橙点也还有几百个,日志提示扇区读写延迟大告警。这说明什么?这说明这就是硬盘磁道的物理问题,并不是什么逻辑坏道。(按理说,如果是逻辑坏道,在格式化文件系统的步骤清除数据的过程中就可以修复,就算格式化文件系统没有修复,在硬盘重建分区的时候,如果硬盘物理部分没有问题,应该都是可以正常修复的,如果不能,说明应该是物理坏道。)
然后启动victoria的重映射功能,把延迟过高的扇区映射到glist表,我知道这个有限制,最多可能也不超过几千个。(500g硬盘lba扇区数量9亿多个,这个glist比例真的太小了。)以remap扇区的数量要消灭我硬盘中所有的延迟高的点,是做不到的。
victoria在测试坏道的时候,扫描每个扇区的大小,但并不会同时给出坏区在物理位置的图形显示,得通过日志进行计算,当坏道比较多的时候,这就比较不方便查看坏道分布的情况。
于是我用hdtune重新扫了一下硬盘分布的情况,0到90G这段出现不规则坏道少量,90G到135G这段范围读写延迟大,有些时候降到3mb一秒,坏道占的量比较大。
于是我手贱地希望用victoria的重映射功能,希望能消灭0-90g这部分扇区的坏道。(事后总结,当发现逻辑坏道的时候,如果超过100个以上较为集中的,能通过硬盘分区屏蔽坏道的,尽量通过分区屏蔽,而不要采用glist表,因为glist表实在太珍贵了。一旦glist表耗尽,再发现分散的坏道,你将无从处理。根据同样的道理启发,如果在人体身上的部位发现癌症,切除的方案可能比不切除保守治疗更好。 )
我由于想看看victoria能不能重映射一些延迟高的扇区,很遗憾的是,不知道由于硬盘问题还是别的,我设置超时的时间一开始为300ms和250ms,都没有看到victoria有成功把这些延迟高的绿点给重映射成功。不知道是软件问题还是没有设置正确,又或是把glist表耗尽了。
由于pe里面还有一些低级格式化的工具。我又尝试了一下死马当活马医。最后还是没有用。格式化完后,绿点和橘点的数量还是一样多,可能还产生了部分新的绿点和橘点。
期间,我用hdtune扫了好几段,一开始扫到坏道的,第二次扫居然消失了。看来,hdtune还是不太靠谱。但看smart信息还是很方便。
由于不明确是victoria的软件问题还是设置问题导致remap没有成功,我还是尝试了一下mhdd的扫描修复坏道功能。(mhdd认硬盘需要把硬盘从ahci模式切换到ide模式)。下面就说到mhdd的两大模式,有的文章把开启erase delay 的功能叫做一般模式,把remap叫做高级模式,其实都是不太好的命名习惯。容易搞混,又不容易见名知义。开启erase delay,跟remap都是按f4菜单出来就可以选择,并且remap跟erase选项互斥。
一开始打开erase delay (也就是f4菜单的最后一项,按空格切换)选项,超时设置也可以设置,跟victoria差不多。扫一遍,发现在95G左右的时候卡住跑不动了,于是我强制关机(反正硬盘用这么旧了,也没什么好爱惜的),打算从130G左右扫描一下看看用remap能不能修复这部分延迟比较正常的扇区中比较正常的部分,然后用分区表屏蔽坏道分区的方法。至少让前面0-90G,后面135G-500G这部分可用。
在这里,我看见有的视频说使用erase命令,输入开始扇区和结束扇区的位置就可以删除坏道。其实这是不对的。首先告诉你这个不行,然后告诉你为什么。erase命令的用途可能他们误解了意思,也许并不是擦除坏道,而是擦除硬盘的数据。erase命令也许可以修复逻辑坏道(如果扇区完好,格式化重写数据不是一回事吗?),但肯定无法修复物理坏道。你想想,如果硬盘产生了坏道,根据什么原理可以修复坏道呢?软件的命令到底对硬盘做什么操作呢?显然,就像普通的cd光碟表面划花了无法恢复,软件一般也不可能修复这些。那它唯一可以做的就是屏蔽这些坏道。硬盘有glist表和plist表,plist表要专业软件才可以操作,厂家不可能开放给普通用户使用,不然硬盘寿命这么长,厂家早倒闭了。我们能用的就glist表。我们从erase命令erase一片分区后,硬盘识别到的lba扇区大小并没有发生,这说明,erase命令本身并不会让硬盘自己屏蔽坏掉的扇区。而且,从erase命令执行后,其他软件识别到的硬盘空间也没有发生变化,这说明erase命令本身,也无法阻止操作系统安装程序读写这些坏掉的扇区。因此,erase命令的唯一用途,只能修复逻辑坏道。
经过反复的折腾,我完成了保留0-90G的扇区,屏蔽90-135G的扇区,保留136G-500G的扇区,安装上了win10系统。但像先前的错误做法,把remap扇区用在了修复上,已经把remap的glist表全部用完。
这就导致,后来重装别的系统时,硬盘前面的引导扇区可能还是有磁道出现了故障,remap扇区又全部耗光,连分区表都无法创建保存成功。这个硬盘的寿命就到此终结。
这个事情,总结过保硬盘修复的一般步骤就是。 1、扫一遍硬盘,查看坏区的情况。如果数量少而分散,低于几十个坏区,先用erase,然后再remap。如果数量集中,则采取分区进行屏蔽的方法。也可以结合两者使用,但耗费的时间比较多。对于老旧硬盘真的没必要。
2、能分区屏蔽则优先,尽量别使用remap。