|
在《希捷前好后坏解决办法(上)》中,我们演示了通过修改缺陷表中的条目来人为制造前好后坏故障,印证了造成前好后坏故障的具体原因。那么当碰到一个前好后坏故障的希捷硬盘时,我们又该如何去分析并解决问题呢?
之前我们使用的MRT前好后坏三步法是一个通用的流程化的修复方法,那么在了解了前好后坏故障原理和具体原因后,我们可以尝试手动修复希捷前好后坏故障。
下面我们来介绍一下MRT新前好后坏三步法,主要的操作流程如下:
1. 先找到前好后坏故障的坏点,并查询该坏点的PBA。
我们需要在扫描中将坏点的位置精确到一个区块大小,获取到具体的LBA地址后,使用“磁道扇区地址转换器”,查询到该坏点的PBA地址。在“磁道扇区地址转换器”中,LBA地址我们可以填入十进制数值也可以填入十六进制数值,如果是填入十六进制数值,我们需要在数值前加上0x作为前缀。在《希捷前好后坏解决办法(上)》中,因为我们是在终端条件下进行的操作,而终端情况下,只能支持十六进制,所以我们才必须将LBA地址转换成十六进制数值。
2. 查看坏点PBA是否命中在V40表中或者在V100表附近。
在查询到坏点的PBA后,我们在非常驻G表和P表中查找,看该坏点PBA是否能在非常驻G表中找到或者能否在P表中找到接近的地址。
3. 根据命中情况判断具体是哪张缺陷表,分析是因为什么原因导致的前好后坏故障。
如果在V40中刚好存在一个条目,PBA地址等于坏点PBA地址,那么大概率就是这个条目引起的坏点,所以我们可以尝试定点删除这个条目,看看当前坏点是否修复。如果再次扫描时该坏点能够正常被读取,意味着坏点被修复,那么能够说明造成前好后坏故障的原因是因为V40表中存在多余的条目。这种情况下,通过删除多余条目并重建编译器,即可修复前好后坏故障。
如果上一步在V40中没有命中,那么再查看P表(V100),是否存在符合或接近坏点PBA地址的条目,如果存在,大概率是此条目引起坏点,我们需要从V100反查V10,再删除V10中的对应条目,看看坏点是否消失。从V100中反查V10,只需要找到相同磁头号和逻辑柱面值的条目即可。如果相同磁头号和柱面号有好几个条目,那就要通过SFI地址区分了。
再次扫描时如果该坏点能够正常被读取,意味着坏点被修复,那么说明造成前好后坏故障的原因是因为V10表中存在多余的条目。这种情况下,通过删除多余条目并重建编译器,即可修复前好后坏故障。
如果在V40和V100里面都不能找到命中坏点PBA或者与坏点PBA接近的条目(接近是指与坏点PBA只相差几个扇区,相差太多了不能算接近),那么一般坏点就不是因为由于存在多余条目引起的。这个时候我们就应该考虑加表而不是删表了。
用编译器恢复工具,直接填入坏点地址,然后往坏点处加一些缺陷,然后等待看会不会好,要注意的是,在使用编译器恢复工具时,一定要注意4K和非4K选项,大家一定不要选错了。4K硬盘,一定要将“利用扫描特性加表(支持4K硬盘)”勾选上。
用编译器恢复加表,会把坏点PBA加入V40,然后缺陷长度会一直增加。如果加了半天还不好,可以中途点停止按钮,停下来,然后查看下V40表,看看到底加进去了没有,如果成功加入了,那么此时V40表中应该有坏点所在的PBA条目,长度就是循环加表的长度;如果没有条目,说明没加进去,此时需要找下原因,要么就是SMART子系统被关闭了(需要打开),要么是其它原因,比如固件损坏,无法重建编译器,那么也是加不进去的,对于这种无法加入条目的情况,我们需要先解决前置故障,让硬盘能够加表,然后再来修复前好后坏的故障。
对于不好判断的复杂情况,建议尝试使用删除法来排查,在缺陷表中删除部分条目后我们再次进行逻辑扫描,如果新坏点的LBA值比之前的LBA值小,也就是说前好后坏的起始扇区提前了。在理想环境下(前好后坏只有一段),这种情况就能说明前好后坏是因为条目缺失造成的。为什么?坏点提前,意味着之前部分好扇区也变得无法读取了,说明我们删掉的条目中存在着有用的条目,也就是需要的条目丢失了,进而造成了前好后坏故障,那么这种情况下,我们就要尝试去在V40和V10中加入那些必要条目,也就是加表操作;如果新坏点的LBA值比之前的LBA值大,也就是说前好后坏的起始扇区后移了。在理想环境下(前好后坏只有一段)这种情况就能说明前好后坏是因为条目冗余造成的。为什么?坏点后移,意味着之前不能正常读取的坏扇区变得能够读取了,说明我们删掉的条目中,有多余的不必要条目,也就是因为缺陷表中的条目冗余,进而造成了前好后坏故障,那么在这种情况下,我们就要尝试去在V40和V10中删除那些多余条目,也就是减表操作。
在之前的操作中,我们是批量删除条目,批量删除条目简单易操作,但是效果肯定不如一条一条删除的要好。因为一条一条的删除,我们可以判断坏点是否前移和后移,以此判断被删的那一个条目是必要的还是多余的。
举个例子:比如说,坏点在PBA=0x123456,然后
V40
123400 8
123420 9
123486 5
可以看到V40里面没有命中的条目并且附近相差几个扇区的条目也没有,那么多半不是V40引起的,但是在排除了其他原因后,我们觉得还是因为V40问题导致的前好后坏,这时候,我们就需要更进一步的筛查,我们扩大筛查范围,找到与PBA=0x123456最相近的条目(通常是往前找),我们可以看到此处是
123420 9
我们删除这个条目,如果这时候坏点提前了,变成了PBA=0x123420,也就能够说明这个条目是有用的,我们不能将其删除。
筛查P表时,我们也是这样筛查,不过我们需要在V100中确定需要删除的条目,然后反查V10,然后在V10中删除条目。这样单个条目的删除来判断坏点的情况,比批量删除更加精准。
这种一条一条删除的方法,对于复合型前好后坏故障是非常有效的。复合型前好后坏,顾名思义也就是需要我们删除一些条目,然后再增加另一些条目,那么我们就必须找到需要删除的条目才行,直接在后面加表是永远加不好的。因为如果那些需要删除的条目没有被删除,就会造成LBA从那个条目开始错位,而且是右错位,这样的话在后面加表是没有任何作用的。
举个例子:
123400 8
123420 9
123486 5
上面这些都是正常的V40条目,现在我们加入一个条目,再删除一个条目,修改后如下:
123400 8
123420 9
123456 7
那么坏点一定会出现在PBA=123456的位置。如果我门不删除这个条目,那么往后面加表是不可能加好的。为什么?想想看,现在我们已经在V40中命中了坏点,PBA=123456,删除这个条目后,就变成了:
123400 8
123420 9
重新扫描,会发现坏点往后移动了,移动到PBA=123486的位置了,说明我们的删除是正确的,123486在V40中不命中,说明应该加表,那么我们尝试在PBA=123486处加表,加到第5次,也就是LEN=5时,刚好V40就还原了
此时坏点就修复了。
还有更复杂的情况,就是V40和V10都有错误的条目,并且都需要加一些条目,再删除一些条目,但是基本思路是一样的。所以说前好后坏只是工作量大,并没有技术难度,你愿意花精力去做,肯定能都做好的。
对于坏点很多,且密集的情况,可以放弃中途的LBA,直接从后面某个LBA地址开始修复。这个有一个前提,就是缺陷表应该“加表”而不是“减表”。
此外,对于顽固前好后坏故障,我们可以尝试清03模块第一张表试试,也就是我们可以尝试清除磁道缺陷表。如图:
或者也可以尝试通刷法(对于能通刷的硬盘)
以上就是希捷前好后坏解决办法下篇的全部内容,谢谢!
点击下载视频教程 |
|