[原创] 希捷前好后坏解决办法(下)

[复制链接]
  • TA的每日心情
    奋斗
    2016-8-1 17:19
  • 签到天数: 14 天

    [LV.3]八品县丞

    70

    主题

    92

    回帖

    1418

    积分

    Intohard Team

    Rank: 7Rank: 7Rank: 7

    积分
    1418
    QQ
    发表于 2018-1-31 14:38:56 | 显示全部楼层 |阅读模式
    在《希捷前好后坏解决办法(上)》中,我们演示了通过修改缺陷表中的条目来人为制造前好后坏故障,印证了造成前好后坏故障的具体原因。那么当碰到一个前好后坏故障的希捷硬盘时,我们又该如何去分析并解决问题呢?

    之前我们使用的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模块第一张表试试,也就是我们可以尝试清除磁道缺陷表。如图:
    1.gif

    或者也可以尝试通刷法(对于能通刷的硬盘)

    以上就是希捷前好后坏解决办法下篇的全部内容,谢谢!

    点击下载视频教程
  • TA的每日心情
    开心
    2019-12-13 11:39
  • 签到天数: 327 天

    [LV.8]三品御史

    7

    主题

    728

    回帖

    2255

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    2255
    发表于 2018-2-1 11:22:35 | 显示全部楼层
    沙发 坐一坐
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表