一种对硬盘进行分磁头操作的方法转让专利

申请号 : CN201710617416.1

文献号 : CN107393560B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄旭董超张佳强

申请人 : 四川秘无痕科技有限责任公司

摘要 :

本发明公开了一种对硬盘进行分磁头操作的方法,其特征在于包括以下步骤:S1:将硬盘连接至电脑;S2:所述电脑向所述硬盘发送磁头访问指令;S3:判断所述磁头访问指令是否执行成功,如果是,执行步骤S4,否则执行步骤S1;S4:通过插值二分法,查找并确定各个磁头所管理的扇区范围;S5:根据各个磁头所管理的扇区范围,分磁头提取并恢复好磁头所管理的扇区上存储的数据;本发明的有益效果是成本低廉,解决了硬盘数据恢复中,由于仅仅依靠更换故障磁头而带来的成本高、难以寻找匹配的磁头以及更换磁头操作中造成硬盘的二次损坏并将故障扩大化等问题。

权利要求 :

1.一种对硬盘进行分磁头操作的方法,其特征在于包括以下步骤:S1:将硬盘连接至电脑;

S2:所述电脑向所述硬盘发送磁头访问指令;

S3:判断所述磁头访问指令是否执行成功,如果是,执行步骤S4,否则执行步骤S1;

S4:通过插值二分法,查找、确定并记录各个磁头所管理的扇区范围,所述步骤S4包括以下步骤:S401:设置初始状态:设置逻辑块地址LBA的初值为0,并设置逻辑块地址LBA=0处的管理磁头为第一磁头;

S402:对变量赋初值:设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,对逻辑块地址LBA赋值为LBA=LBA+h,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;

S403:执行第一查找:查找、确定并记录所述第一查找中所述第一磁头和第二磁头所管理的扇区范围;

S404:判断当前逻辑块地址LBA是否大于或等于所述硬盘的最大容量值MAX,如果是,执行步骤S5,否则执行步骤S405;

S405:执行第二查找:查找、确定并记录所述第二查找中所述第一磁头和所述第二磁头所管理的扇区范围;

S406:判断当前逻辑块地址LBA是否大于或等于所述硬盘的所述最大容量值MAX,如果是,执行步骤S5,否则执行步骤S402;

S5:根据各个磁头所管理的扇区范围,分磁头提取并恢复可用磁头所管理扇区上存储的数据。

2.根据权利要求1所述的一种对硬盘进行分磁头操作的方法,其特征在于,所述硬盘包含2个及以上的磁头。

3.根据权利要求2所述的一种对硬盘进行分磁头操作的方法,其特征在于,所述插值二分法包括以第一磁头为查找起始点的第一查找、第二磁头为查找起始点的第二查找,……,第m磁头为查找起始点的第m查找、第一磁头为查找起始点的第一查找、第二磁头为查找起始点的第二查找,……,第m磁头为查找起始点的第m查找……,依此循环直至查找完所述硬盘的全部扇区,其中,m为大于2的正整数。

4.根据权利要求3所述的一种对硬盘进行分磁头操作的方法,其特征在于,所述硬盘的磁头个数为2个,分别是第一磁头和第二磁头。

5.根据权利要求1所述的一种对硬盘进行分磁头操作的方法,其特征在于,所述步骤S403包括以下步骤:S4031:所述电脑向所述硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为所述第一磁头,如果是,执行步骤S4032,否则执行步骤S4033;

S4032:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4034;

S4033:将当前LBA值赋值给ADDR以记录当前LBA值,对LBA重新赋值为对h重新赋值为 对n重新赋值为n=n+1;

S4034:判断当前h的值是否等于1,如果是,执行步骤S4035,否则执行步骤S4031;

S4035:判断当前LBA处的管理磁头是否为所述第一磁头,如果是,执行步骤S4036,否则执行步骤S4037;

S4036:确定并记录所述第一查找中各个所述磁头所管理的扇区范围,从逻辑块地址至逻辑块地址ADDR的范围内的扇区为所述第二磁头管理,其余为所述第一磁头管理的扇区,并跳转至步骤S4038;

S4037:确定并记录所述第一查找中各个所述磁头所管理的扇区范围,从逻辑块地址至从逻辑块地址ADDR的范围内的扇区为所述第二磁头管理,其余为所述第一磁头管理的扇区;

S4038:将当前ADDR的值赋给LBA作为所述第二查找的LBA初始值。

6.根据权利要求1所述的一种对硬盘进行分磁头操作的方法,其特征在于,所述步骤S405包括以下步骤:S4051:对所述第二查找中的变量赋初值,设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;

S4052:所述电脑向所述硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为所述第二磁头,如果是,执行步骤S4053,否则执行步骤S4054;

S4053:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4055;

S4054:将当前LBA值赋值给ADDR以记录当前LBA值,并对LBA重新赋值为对h重新赋值为 对n重新赋值为n=n+1;

S4055:判断当前h的值是否等于1,如果是,执行步骤S4056,否则执行步骤S4052;

S4056:判断当前LBA处的管理磁头是否为所述第二磁头,如果是,执行步骤S4057,否则执行步骤S4058;

S4057:确定并记录所述第二查找中各个所述磁头所管理的扇区范围,从逻辑块地址至逻辑块地址ADDR的范围内的扇区为所述第一磁头管理,其余为所述第二磁头管理的扇区,跳转至步骤S4059;

S4058:确定并记录所述第二查找中各个所述磁头所管理的扇区范围,从逻辑块地址至逻辑块地址ADDR的范围内的扇区为所述第一磁头管理,其余为所述第二磁头管理的扇区;

S4059:将当前ADDR的值赋给LBA作为下一轮第一查找的LBA初始值。

说明书 :

一种对硬盘进行分磁头操作的方法

技术领域

[0001] 本发明属于数据恢复领域,涉及一种硬盘数据的恢复方法,尤其涉及一种对硬盘进行分磁头操作的方法。

背景技术

[0002] 作为存储设备中的重要一员,硬盘起着极其重要的作用。我们大多数的数据都是通过硬盘来存储,这种大规模采用硬盘来记录数据的现象甚至被人们戏称为“基于磁介质的文明”,因此,数据储存量的急剧增加及数据重要性的提升,使得数据恢复也变得更加重要。
[0003] 每个硬盘具有一个或者多个磁头,当硬盘的其中任一磁头损坏后,即使其他磁头都能正常工作,硬盘的数据也不能被读取,对此类故障硬盘进行数据恢复的传统方法是用相同型号硬盘的磁头来更换故障磁头,从而达到读取和恢复数据的目的;但是,利用这种方法来恢复数据的成本很高,并且会花费大量的时间寻找匹配的磁头,加上磁头的精度很高,在更换的过程中,由于人为操作不当等原因,容易造成硬盘的二次损坏并将故障扩大化,导致数据恢复成本的增加。

发明内容

[0004] 本发明针对现有技术的不足和上述问题,提出一种对硬盘进行分磁头操作的方法,通过插值二分法查找、确定并记录各个磁头所管理的扇区范围,屏蔽损坏磁头所管理的扇区范围,即不进行磁头的访问和数据的读取,对正常工作磁头所管理的扇区范围进行磁头的访问和数据的读取,从而恢复故障硬盘的数据,解决了硬盘数据恢复中,由于仅仅依靠更换故障磁头而带来的成本高、难以寻找匹配的磁头以及更换磁头操作中造成硬盘的二次损坏并将故障扩大化等问题,所述方法包括以下步骤:
[0005] S1:将硬盘连接至电脑;
[0006] S2:所述电脑向所述硬盘发送磁头访问指令;
[0007] S3:判断所述磁头访问指令是否执行成功,如果是,执行步骤S4,否则执行步骤S1;
[0008] S4:通过插值二分法,查找、确定并记录各个磁头所管理的扇区范围;
[0009] S5:根据各个磁头所管理的扇区范围,分磁头提取并恢复可用磁头所管理扇区上存储的数据。
[0010] 作为优选,所述硬盘包含2个及以上的磁头。
[0011] 作为优选,所述插值二分法包括以第一磁头为查找起始点的第一查找、第二磁头为查找起始点的第二查找,……,第m磁头为查找起始点的第m查找、第一磁头为查找起始点的第一查找、第二磁头为查找起始点的第二查找,……,第m磁头为查找起始点的第m查找……,依此循环直至查找完所述硬盘的全部扇区,其中,m为大于2的正整数。
[0012] 作为优选,所述硬盘的磁头个数为2个,分别是第一磁头和第二磁头。
[0013] 作为优选,所述步骤S4包括以下步骤:
[0014] S402:对变量赋初值:设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,对逻辑块地址LBA赋值为LBA=LBA+h,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;
[0015] S403:执行第一查找:查找、确定并记录所述第一查找中所述第一磁头和所述第二磁头所管理的扇区范围;
[0016] S404:判断当前逻辑块地址LBA是否大于或等于所述硬盘的最大容量值MAX,如果是,执行步骤S5,否则执行步骤S405;
[0017] S405:执行第二查找:查找、确定并记录所述第二查找中所述第一磁头和所述第二磁头所管理的扇区范围;
[0018] S406:判断当前逻辑块地址LBA是否大于或等于所述硬盘的所述最大容量值MAX,如果是,执行步骤S5,否则执行步骤S402。
[0019] 作为优选,所述步骤S403包括以下步骤:
[0020] S4031:所述电脑向所述硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为所述第一磁头,如果是,执行步骤S4032,否则执行步骤S4033;
[0021] S4032:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4034;
[0022] S4033:将当前LBA值赋值给ADDR以记录当前LBA值,对LBA重新赋值为对h重新赋值为 对n重新赋值为n=n+1;
[0023] S4034:判断当前h的值是否等于1,如果是,执行步骤S4035,否则执行步骤S4031;
[0024] S4035:判断当前LBA处的管理磁头是否为所述第一磁头,如果是,执行步骤S4036,否则执行步骤S4037;
[0025] S4036:确定并记录所述第一查找中各个所述磁头所管理的扇区范围,从逻辑块地址 至逻辑块地址ADDR的范围内的扇区为所述第二磁头管理,其余为所述第一磁头管理的扇区,并跳转至步骤S4038;
[0026] S4037:确定并记录所述第一查找中各个所述磁头所管理的扇区范围,从逻辑块地址 至从逻辑块地址ADDR的范围内的扇区为所述第二磁头管理,其余为所述第一磁头管理的扇区;
[0027] S4038:将当前ADDR的值赋给LBA作为所述第二查找的LBA初始值。
[0028] 作为优选,所述步骤S405包括以下步骤:
[0029] S4051:对所述第二查找中的变量赋初值,设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;
[0030] S4052:所述电脑向所述硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为所述第二磁头,如果是,执行步骤S4053,否则执行步骤S4054;
[0031] S4053:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4055;
[0032] S4054:将当前LBA值赋值给ADDR以记录当前LBA值,并对LBA重新赋值为对h重新赋值为 对n重新赋值为n=n+1;
[0033] S4055:判断当前h的值是否等于1,如果是,执行步骤S4056,否则执行步骤S4052;
[0034] S4056:判断当前LBA处的管理磁头是否为所述第二磁头,如果是,执行步骤S4057,否则执行步骤S4058;
[0035] S4057:确定并记录所述第二查找中各个所述磁头所管理的扇区范围,从逻辑块地址 至逻辑块地址ADDR的地址范围内的扇区为所述第一磁头管理,其余为所述第二磁头管理的扇区,跳转至步骤S4059;
[0036] S4058:确定并记录所述第二查找中各个所述磁头所管理的扇区范围,从逻辑块至逻辑块地址ADDR的范围内的扇区为所述第一磁头管理,其余为所述第二磁头管理的扇区;
[0037] S4059:将当前ADDR的值赋给LBA作为下一轮第一查找的LBA初始值。
[0038] 与现有技术相比,本发明的有益效果是成本低廉,不用耗时去寻找匹配的磁头,不会造成硬盘硬件损坏。

附图说明

[0039] 图1为本发明的主流程图;
[0040] 图2为本发明中插值二分法的处理流程图;
[0041] 图3为本发明中以第一磁头为查找起始点的第一查找的处理流程图;
[0042] 图4为本发明中以第二磁头为查找起始点的第二查找的处理流程图。

具体实施方式

[0043] 本实施例的故障硬盘为2磁头的希捷硬盘,下面结合附图和实施例对本发明作进一步阐述。
[0044] 如图1所示,一种对硬盘进行分磁头操作的方法,包括以下步骤:
[0045] S1:将硬盘连接至电脑;
[0046] S2:电脑向硬盘发送磁头访问指令A03F,以打开磁头访问扇区信息的缓冲器,即打开硬盘信息反馈的开关;
[0047] S3:判断磁头访问指令A03F是否执行成功,如果是,执行步骤S4,否则执行步骤S1;
[0048] S4:通过插值二分法,查找、确定并记录各个磁头所管理的扇区范围,包括如图2所示的以下步骤:
[0049] S401:设置初始状态:设置逻辑块地址LBA的初值为0,并设置逻辑块地址LBA=0处的管理磁头为所述第一磁头;
[0050] S402:对变量赋初值:设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,对逻辑块地址LBA赋值为LBA=LBA+h,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;
[0051] S403:执行第一查找:查找、确定并记录第一查找中第一磁头和第二磁头所管理的扇区范围,包括如图3所示的以下步骤:
[0052] S4031:电脑向所述硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为所述第一磁头,如果是,执行步骤S4032,否则执行步骤S4033;具体地,电脑向硬盘发送磁头信息指令A02F,如果该硬盘的反馈值是0x4C,则以该反馈信息的起始地址为开始位置,以反馈值0x4C为偏移地址,读取0x4C处一个字节的内容为磁头号,该磁头号表示第一磁头或第二磁头;同理,如果反馈值为0x5C,则以该反馈信息的起始地址为开始位置,以反馈值0x5C为偏移地址,读取0x5C处一个字节的内容为磁头号,该磁头号表示第一磁头或第二磁头;判断该磁头号,即当前LBA处的管理磁头是否为第一磁头,如果是,执行步骤S4032,否则执行步骤S4033;
[0053] S4032:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4034;
[0054] S4033:将当前LBA值赋值给ADDR以记录当前LBA值,该ADDR作为下述第二查找的LBA的初始地址;对LBA重新赋值为 即,先对当前步长折半,即对h重新赋值为 然后从当前LBA位置往回跳转至折半后步长的位置,以便进行下一次的磁头号判断,并对n重新赋值为n=n+1;
[0055] S4034:判断当前h的值是否等于1,如果是,则表示完成本次第一查找,执行步骤S4035,否则执行步骤S4031,进行下一次的磁头号判断;
[0056] S4035:判断当前LBA处的管理磁头是否为第一磁头,如果是,执行步骤S4036,否则执行步骤S4037;
[0057] S4036:确定并记录本次第一查找中各个磁头所管理的扇区范围,从逻辑块地址至逻辑块地址ADDR的范围内的扇区为第二磁头管理,其余为第一磁头管理的扇区,并跳转至步骤S4038;
[0058] S4037:确定并记录本次第一查找中各个磁头所管理的扇区范围,从逻辑块地址至从逻辑块地址ADDR的范围内的扇区为第二磁头管理,其余为第一磁头管理的扇区;
[0059] S4038:将当前ADDR的值赋给LBA作为下述第二查找的LBA初始值。
[0060] S404:判断当前逻辑块地址LBA是否大于或等于硬盘的最大容量值MAX,如果是,则完成对该硬盘全部扇区的查找,执行步骤S5,否则执行步骤S405;S405:执行第二查找:查找、确定并记录第二查找中第一磁头和第二磁头所管理的扇区范围,包括如图4所示的以下步骤:
[0061] S4051:对第二查找中的变量赋初值,设置n的初值为1,步长为1;设置逻辑块地址LBA的步长为s,将h赋初值为s,其中,n为依次递增的正整数,s及h为大于0且能被2整除的正整数;
[0062] S4052:电脑向硬盘发送磁头信息指令,以判断当前LBA处的管理磁头是否为第二磁头,如果是,执行步骤S4053,否则执行步骤S4054;具体地,电脑向硬盘发送磁头信息指令A02F,如果该硬盘的反馈值是0x4C,则以该反馈信息的起始地址为开始位置,以反馈值0x4C为偏移地址,读取0x4C处一个字节的内容为磁头号,该磁头号表示第一磁头或第二磁头;同理,如果反馈值为0x5C,则以该反馈信息的起始地址为开始位置,以反馈值0x5C为偏移地址,读取0x5C处一个字节的内容为磁头号,该磁头号表示第一磁头或第二磁头;判断该磁头号,即当前LBA处的管理磁头是否为第二磁头,如果是,执行步骤S4053,否则执行步骤S4054;
[0063] S4053:对LBA重新赋值为LBA=LBA+h,并跳转至步骤S4055;
[0064] S4054:将当前LBA值赋值给ADDR以记录当前LBA值,该ADDR作为下一次第一查找的LBA的初始地址,对LBA重新赋值为 即,先对当前步长折半,即对h重新赋值为 然后从当前LBA位置往回跳转至折半后步长的位置,以便进行下一次的磁头号判断,并对n重新赋值为n=n+1;S4055:判断当前h的值是否等于1,如果是,则表示完成本次第二查找,执行步骤S4056,否则执行步骤S4052,进行下一次的磁头号判断;
[0065] S4056:判断当前LBA处的管理磁头是否为第二磁头,如果是,执行步骤S4057,否则执行步骤S4058;
[0066] S4057:确定并记录本次第二查找中各个所述磁头所管理的扇区范围,从逻辑块地址 至逻辑块地址ADDR的范围内的扇区为第一磁头管理,其余为第二磁头管理的扇区,跳转至步骤S4059;
[0067] S4058:确定并记录本次第二查找中各个磁头所管理的扇区范围,从逻辑块地址至从逻辑块地址ADDR的范围内的扇区为第一磁头管理,其余为第二磁头管理的扇区;
[0068] S4059:将当前ADDR的值赋给LBA作为下一次第一查找的LBA初始值[0069] S406:判断当前逻辑块地址LBA是否大于或等于硬盘的最大容量值MAX,如果是,则完成对该硬盘全部扇区的查找,执行步骤S5,否则执行步骤S402,进行下一轮的磁头号判断。
[0070] S5:根据各个磁头所管理的扇区范围,分磁头提取并恢复可用磁头所管理扇区上存储的数据。
[0071] 应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。