阿修罗武器推荐:2011版数据指南针技术白皮书

来源:百度文库 编辑:九乡新闻网 时间:2024/05/05 20:21:30

2011版数据指南针技术白皮书

背景

数据指南针是效率源科技于2008年推出的针对逻辑层的数据恢复工具。该工具从推出以后,经过了很多次升级,增加了许多实用强大的功能,如影子技术、日立硬盘固件区虚拟技术、硬盘分头镜像技术等。这些技术的应用解决了很多数据恢复难题,为客户创造了可观的经济效益。

然而,硬盘的技术在不断地发展进步,新的难题也不断出现。因应市场的需求,硬盘厂商推出了TB级大容量硬盘,并在这些硬盘中引入了一些新的设计。因为技术的不成熟,这些设计存在一些缺陷,使得很多硬盘特别是大容量硬盘产生了盘体故障和固件问题。200811月初网络上陆续出现了关于希捷存在“卡死”问题的报道,当时涉及的产品是世界第一块1.5TB台式机硬盘-----酷鱼11代 (Barracuda 7200.11)。根据用户的反映,该款硬盘在使用过程中会无故失去响应,导致系统卡死数秒(时间不等),随后又自动恢复。以后又有陆续报道反映希捷硬盘使用一段时间以后无法被BIOS识别以及LBA识别成0等故障(效率源科技在希捷专修中给出了专门的解决方案)。据希捷官方称,这是因为该系列硬盘存在固件缺陷,并向用户发布了新的固件升级解决此类问题。这就是著名的希捷“固件门”。尽管希捷升级了硬盘固件,并推出了酷鱼12代(Barracuda 7200.12)系列,然而这两个系列的硬盘依然存在新的故障,假卡死就是其中一种。假卡死是指硬盘遇到坏道以后无法响应,并且硬盘无法刷新状态,仍然报告就绪。

    正是受“固件门”的部分影响,2010年第一季度西部数据硬盘出货量首次超过希捷,占据第一的位置。然而,这并不能说明西部数据的硬盘完美无瑕,其近些年推出的ROYL系列大容量硬盘同样存在设计缺陷。和其它品牌硬盘一样,西数硬盘的固件设计了两份。对于两个磁头以上的硬盘,两份固件依次存放在逻辑0头(主头)和逻辑1头(副头)。尽管固件只存放在两个磁头上,西数硬盘在通电以后会检测每一个磁头的状况。如果有一个磁头损坏,硬盘就无法初始化,发出敲盘声并停转电机。如果想从这些故障硬盘中恢复数据,用户就必须更换整个磁头组件。由于这些硬盘一般都是500GB以上的大容量硬盘,更换磁头的成本很高;并且有时即使更换了完好的磁头组件,硬盘仍然无法正常工作!

    为了解决上述两大难题以及客户遇到一些其它问题,效率源科技重磅推出2011版数据指南针,升级了七大功能:西数硬盘固件加载技术、希捷硬盘电源复位设置、东芝和富士通硬盘分头技术、状态寄存器和错误寄存器、硬盘信息获取、镜像过程中的扇区实时查看、数据指南针的东芝和富士通硬盘接口。本文档将会介绍所有的七大功能,包括一些细节。

状态寄存器和错误寄存器

这次升级采纳了客户的建议,在程序中引入了状态寄存器和错误寄存器,让用户实时了解硬盘的状态以及错误类型。其实,很早就有客户建议引入这个两个寄存器,开发者出于功能和速度平衡的考虑,没有在程序中引入,而是在控制终端面板上设计了部分重要的状态寄存器,如硬盘忙碌(BSY),硬盘就绪(DRD)等。这次升级,开发者为了让用户能够更方便地查看硬盘状态,更重要地是为了配合“电源复位设置”功能,在程序中引入了状态寄存器和错误寄存器,如图5所示。

5

 下面介绍状态寄存器和错误寄存器每个bit位含义。

 7

6

5

4

3

2

1

0

BSY

DRD

DWF

DSC

DRQ

CRR

IDX

ERR

1

如表1所示,状态寄存器各bit位含义如下:

BSY: 硬盘忙碌,

DRD:硬盘就绪

DWF:  硬盘写入失败

DSC:  硬盘寻道完成

DRQ:  硬盘数据传输请求

CRR:  ECC校验更正

IDX:   索引

ERR:  当前命令执行发生错误

7

6

5

4

3

2

1

0

BBK

UNC

0

IDNF

0

ABRT

TONF

AMNF

2

如表2所示,错误寄存器各bit位含义如下:

BBK:扇区被标记为坏扇区

UNC: ECC错误无法更正 

IDNF: 扇区ID丢失

ABRT: 命令被终止

TONF: 0磁道损坏

AMNF:扇区地址标记丢失

希捷硬盘电源复位设置

这个功能的升级源于客户发过来的一个希捷酷鱼11代(Barracuda 7200.11320GB硬盘。客户反映该硬盘在数据拷贝过程中经常卡死,程序无法自动完成软复位和硬复位,需要手动电源复位。开发者在研究了这个硬盘以后发现,这种硬盘在遇到坏道时卡死,但同时“BSY”位不置“1”,仍然保留卡死之前的就绪状态,因此程序无法判断硬盘的真实状态,不会触发软复位,硬复位和电源复位。这是硬盘设计上的缺陷,因为根据ATA协议规定,当设备卡死无法响应外部命令时,状态寄存器“BSY”位必须置“1”。针对这种情况,开发者增加了电源复位设置功能,由用户指定触发电源复位的条件(状态寄存器的bit位)。

使用这个功能时,用户首先必须判断硬盘卡死时的状态,即状态寄存器的各个bit位是否生效。本文用上述的硬盘为例说明(具体步骤请参照程序安装包对应视频)。在没有设置电源复位条件时,我们可以打开两个分区,如图6所示。

6

但是,我们也注意到硬盘的状态报告为“Error”,同时终端面板上“DRD”、“DWF”、“DSC”、“ERR”灯亮,如图7所示。接着,查看扇区发现扇区都是“4040”(图8),即无法访问,硬盘此时已经卡死,无法响应外部命令。

7

8

因此当前硬盘卡死时的标志就是上述的几个bit位有效,必须触发电源复位。在程序中设置好相应的状态bit位以后(图9),硬盘的第三个分区也能够打开,如图10所示。

9(图中“DWF”后应为“DRD”)

10

这个功能能够有效解决部分希捷7200.117200.12硬盘卡死后仍然报告状态为就绪的故障。目前我们只发现希捷硬盘存在此故障,如果用户认为其它品牌硬盘有相似的症状,也可以尝试此功能。

硬盘信息获取

硬盘信息获取功能用于获取硬盘的型号,固件版本号,序列号,LBA和缓存大小,如图12所示。这个功能被整合到“固件加载”菜单,其目的就是为了配合“西数硬盘固件加载”功能,使得用户能够有效判断硬盘的参数能否正确获取。

西数硬盘固件加载技术

  此项技术的引入在于解决西数ROYL系列硬盘在一个固件存放头损坏的情况下无法加载固件的故障。这种故障的表现是:硬盘通电以后,电机起转,磁头尝试寻道并发出轻微的“咯咯”摩擦声,尝试两三次以后,电机停转。硬盘这时工作在电路板模式,仍然报告状态就绪。我们将硬盘连接到数据指南针,获取硬盘信息如图1所示。由图可知,只有硬盘型号被识别,固件版本,序列号,容量和缓存容量为空。这说明硬盘固件没有加载,硬盘型号是从电路板上识别到的。然后,我们点击“主头加载”(本例中是副头故障),让硬盘从主头加载固件并复位,再次获取硬盘信息如图2所示。这时,硬盘已经从主头固件启动并完成初始化,所以硬盘的全部信息都正确地获取到了。

11

12

硬盘固件加载以后,我们进入Data Compass Explorer顺利打开了分区(图13)。

13

这个硬盘有6个磁头,损坏了一个磁头,数据的完整率为83%(理论数值)。我们可以先查看目录,直接提取用户的重要数据。当然,出于数据安全的考虑,可以采用分头镜像技术,先把完好磁头的数据镜像出来,以避免完好的磁头在和损坏的磁头一起动作时损坏。如图4所示,我们创建磁头位图以后,将逻辑1头(H1)去掉,分头镜像剩下的5个头的数据,这样可以恢复大概80%(理论数值为83%,需将坏道考虑进去)的数据。这80%的数据很大可能就是客户需要的数据。这种情况下我们不需要更换磁头就能恢复客户的数据,节省了大容量硬盘开盘带来的一大笔成本。这是很有意义,很实用的一个技术,因为有些客户的数据并不是那么重要,他们没有意愿更换磁头,我们就可以通过指定磁头加载固件,然后分头镜像来恢复数据。同时,我们在实际工作中还发现,有些硬盘的磁头并不是全部损坏,只是性能降低了,在分头镜像过后,磁头竟然又变好了。这可能是因为,磁头组件是一个整体,在分头镜像过程中,损坏的磁头和完好的磁头一起动作,慢慢地性能就变好了。

14

这里需要强调,并不是所有的磁头损坏的情况都可以使用固件加载技术。这是因为西数固件只有两份,分别存放在逻辑0头(主头)和逻辑1头(副头),如果主头和副头全部损坏,加载其它磁头也没有效果,因为其它磁头上没有固件,无法让硬盘工作。因此,用户需要正确判断硬盘是否能够使用固件加载技术。用户必须牢记,适用固件加载技术的硬盘故障表现是:硬盘通电以后,电机起转,磁头尝试寻道并发出轻微的“咯咯”摩擦声,尝试两三次以后,电机停转。

附注:此次升级将日立硬盘固件加载和西数硬盘固件加载整合到同一个菜单,这里顺带说明日立硬盘固件加载功能。日立硬盘加载技术在这次升级中作了优化,开发者将所有硬盘系列资源整合到了一起(包括最新的7232,5450等系列),原来的资源选择框变成了“自动加载”按钮。用户不再须要选择硬盘系列,直接点击“自动加载”,程序会自动判断硬盘系列并加载相应资源。

数据指南针的东芝和富士通专修接口

这个功能使得数据指南针可以直接访问连接到东芝和富士通专修终端的硬盘。此功能的设计旨在让用户在使用专修检测修复完固件以后,能够直接访问数据,而不必将硬盘从专修终端取下连接到数据指南针。

东芝和富士通硬盘分头镜像

这个功能用于东芝和富士通硬盘的分头镜像,适用于单个磁头损坏的多磁头硬盘。此功能的加入进一步完善了数据指南针的分头镜像技术。其中,富士通的分头镜像更是独家支持。

镜像过程中扇区实时查看

扇区实时查看是指在数据镜像拷贝过程中,程序实时显示当前拷贝扇区的十六进制数值。这是一个非常有用的功能,其目的在于让用户能够很清楚地判断当前的镜像是否有意义。以前,有些用户在花费了数小时做完镜像以后,才发现镜像的数据全是“4040”或者其它无意义的数据,极大地增加时间和人工成本。有了这个功能以后,用户就能在镜像过程中判断数据是否有效,是否值得继续镜像。

15