首页 > 业界动态

时间:2010-06-14 22:58:02
     现在用移动硬盘的人越来越多,但随之遇到的问题也越来越多,最让人头疼的就是数据丢失,一般而言移动硬盘都是用来备份数据的,所以一旦数据丢失就会给大家造成很大的麻烦。
  在这里只简单说说硬盘逻辑错误造成的数据丢失,如果是物理损伤的话,建议把硬盘送数据恢复中心
  逻辑错误造成的数据丢失呢,大家还是可以自己处理的,因为这个基本都是分区表丢失或出错造成的,恢复方法简单的说下,
1,如果你的硬盘有足够的空间可以使用数据恢复软件把你的数据抢救到硬盘上;推荐软件EasyRecovery Professional。
2,如果你没有这么大的硬盘空间来放要抢救的数据也有个办法那就是把分区表修好,推荐的软件windows下用DiskGenius,DOS下用diskgen(用ghost快速分区也可以用这个恢复)。。。
3,其实还可以自己手动恢复的,不过要求要高点
分区表的相关资料如下,想学习的就自己看看吧。
一.分区表的位置及识别标志
   分区表一般位于硬盘某柱面的0磁头 1扇区.而第1个分区表(也即主分区表)总是位于
  (0柱面,1磁头,1扇区),剩余的分区表位置可以由主分区表依次推导出来.分区表有64个字节,占据其所在扇区的[441-509]字节.要判定是不是分区表,就看其后紧邻的两个字节(也即[510-511])是不是 "55AA",若是,则为分区表.
二.分区表的结构
  分区表由4项组成,每项16个字节.共4×16 = 64个字节.每项描述一个分区的基本信息.每个字节的含义如下:
  分区表项含义 字节 含义
  0 Activeflag.活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.
  1,2,3 该分区的起始磁头号,扇区号,柱面号磁头号 -- 1字节, 扇区号 -- 2字节低6位,柱面号 -- 2字节高2位 + 3字节
  4 分区文件系统标志:
  分区未用: 0x00H.
  扩展分区: 0x05H, 0x0FH.
  FAT16分区: 0x06H.
  FAT32分区: 0x0BH, 0x1BH, 0x0CH, 0x1CH.
  NTFS分区: 0x07H.
  5,6,7 该分区的结束磁头号,扇区号,柱面号,含义同上.
  8,9,10,11 逻辑起始扇区号。表示分区起点之前已用了的扇区数.
  12,13,14,15 该分区所占用的扇区数.
  分区表项有几个字节比较重要,下面分别阐述之:
  1、(1,2,3)字节
   磁头号由(1)字节8位表示,其范围为(0 -- 28 - 1),也即(0 磁头-- 254磁头)。
  扇区号由(2)字节低6位表示,其范围为(0 -- 26 - 1),由于扇区号从1开始,所以其范围是(1扇区-- 63扇区)。
  柱面号由(2)字节高2位 + (3)字节,共10位表示,其范围为(0 --2 10 - 1),也即(0 柱面-- 1023柱面)。
  当柱面号超过1023时,这10位依然表示成1023,需要注意。
  (5,6,7)字节含义同上。
  2、(8, 9, 10, 11)字节
   如果是主分区表,则这4 个字节表示该分区起始逻辑扇区号与逻辑0扇区(0柱面,0磁头,1扇区)之差。如果非主分区表,
   则这4 个字节要么表示该分区起始逻辑扇区号与扩展分区起始逻辑扇区号之差,要么为63。详细情况在后面有所阐述。
  注意:
  1、扇区上的字节是按左边低位,右边高位的顺序排列的。所以在取值时,需要把字节再反一下,让高位字节在左边,低位字节在右边,
  这一点在读取逻辑起始扇区号和分区大小时需要注意。举个例子:第一项的逻辑起始扇区为(3F 00 00 00),转换为十进制前要先反一下字
  节顺序,为(00 00 00 3F)然后在转换为十进制,即63 .同理分区大小为(3F 04 7D 00),先反为(00 7D 04 3F)再转换为十进制,
  即8193087。
  2、逻辑扇区号与(柱面,磁头,扇区)的相互转换:
  令L = 逻辑扇区号,C = 柱面号,H = 磁头号,S = 扇区号。
  每道扇区数 = 63
  每柱面磁头数 = 255
  每柱面扇区数 = 每道扇区数* 每柱面磁头数
   = 63 × 255
   = 16065
  柱面号下标从0开始。磁头号[0 -- 254],扇区号[1 -- 63]。
  逻辑扇区号下标也从0开始。
  (柱面,磁头,扇区)转换成逻辑扇区号的公式为:
  L = C×16065 + H ×63 + S - 1 ;
  比如(1柱面,1磁头,1扇区),其逻辑扇区号为:
  L = 1×16065 + 1×63 + 1 - 1
  = 16128
  逻辑扇区号转换成(柱面,磁头,扇区) 公式为:
  C = L / 16065
  H = (L % 16065) / 63
  S = (L % 16065) % 63 + 1
  比如逻辑扇区号 16127:
  C = 16127 / 16065 = 1
  H = (16127 % 16065) / 63 = 0
  S = (16127 % 16065) % 63 + 1 = 63
  即(1柱面,0磁头,63扇区)
  3、分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。主分
  区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘
  最多可以有四个主分区或者三个主分区,一个扩展分区。余下的分区表是表示逻辑分区的。
  这里有必要阐述一点:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。
  4、分区表所在扇区通常在(0磁头,1扇区),而该分区的开始扇区通常位于(1磁头,1扇区),中间隔了63 个隐藏扇区。
三.分区表链的查找
    分区表链实际上相当于一个单向链表结构。第一个分区表,也即主分区表,可以有一项 描述扩展分区。而这一项就相当于指针,指向扩展分区。然后我们根据该指针来到扩展分 区起始柱面的0头1扇区,找到第二个分区表。对于该分区表,通常情况下:第一项描述了 扩展分区中第一个分区的信息,第二项描述下一个分区,而这第二项就相当于指向第二个分 区的指针,第三项,第四项一般均为0。我们可以根据该指针来到扩展分区中第二个分区起 始柱面的0头1扇区,找到第三个分区表。以此类推,只到最后一个分区表。而最后一个分 区表只有第一项有信息,余下三项均为0.相当于其指针为空.所以只要找到了一个分区表就可 以推导找出其后面所有分区表。不过该分区表前面的分区表就不好推导出来了。但令人高兴 的是这个链表的头节点,也即主分区表的位置是固定的位于(0柱面, 0磁头, 1扇区)处, 我们可以很轻易的找到它,然后把剩下的所有分区表一一找到。