当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [交流]分区恢复:testdisk/fdisk
帖子发表于 : 2010-11-26 14:43 
头像

注册: 2010-01-03 10:55
帖子: 255
送出感谢: 0 次
接收感谢: 1
testdisk下载:http://www.cgsecurity.org/wiki/TestDisk_Download

昨天恢复了一个硬盘,原因是因为开机时出现error loading operating system(后来我发现是BIOS/CMOS的错),后来这块硬盘经历了被重新分区的悲惨命运,到我手里的时候,我就先研究分区恢复。

几个月前,我的前一任ST500G7200.12硬盘经过了坏扇区的洗礼(后来发现是电源接口有问题,多次增.增.的响的时候,就是接触不良这类现象,应赶快处理,如果不是单纯的接触不良,就用电源转接线),那1个扇区坏在了关键位置:首分区的前部扇区,现象就是首分区不被识别了,那时我的/home还在/中,所以少量新下载的Anime就没了,那时自己瞎找了很多恢复工具和修复工具,结果整个硬盘的分区都没了,后来邂逅了testdisk,恢复了分区表,由于首分区是关键位置上的坏扇区,所以仍是之前现象。[已解决]数据恢复 硬盘分区表貌似也丢了

上件事情是分区表丢失,而且分区没有被改写,所以经过深度扫描后,就OK了。

这回是分区已经被改了,会有什么问题,边看边说!

到手时,fdisk -l / -lu /dev/sdb:

代码:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        2550    20482843+   7  HPFS/NTFS
/dev/sdb2            2551       10011    59930482+   f  W95 Ext'd (LBA)
/dev/sdb5            2551        5100    20482843+   7  HPFS/NTFS
/dev/sdb6            5101        7650    20482843+   7  HPFS/NTFS
/dev/sdb7            7651       10011    18964701    7  HPFS/NTFS

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63    40965749    20482843+   7  HPFS/NTFS
/dev/sdb2        40965750   160826714    59930482+   f  W95 Ext'd (LBA)
/dev/sdb5        40965813    81931499    20482843+   7  HPFS/NTFS
/dev/sdb6        81931563   122897249    20482843+   7  HPFS/NTFS
/dev/sdb7       122897313   160826714    18964701    7  HPFS/NTFS


因为朋友说以前分区是* 30G 20G 20G,于是我就先计算柱面:

代码:
255 heads, 63 sectors/track, 10011 cylinders
20 GiB = 21474836480 B
255*63*512 = [color=#FF4000]16065[/color]*512 = 8225280 B
21474836480 / 8225280 = 2610.833488951
2610 + 1 = 2611
10011 - 2611 = 7400

30 GiB = 32212254720 B
3916.250233427
3917

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         872     7004308+  83  Linux
/dev/sdb2             873        4789    31455270   83  Linux
/dev/sdb3            4790        7400    20972857+  83  Linux
/dev/sdb4            7401       10011    20972857+  83  Linux


但是用GParted看,几个分区都是未格式化,后来想想,朋友所说的分区信息只能当作参考。于是想起了之前用到testdisk,于是就用testdisk的[Deeper Search],得到以下结果:

代码:
Disk /dev/sdb - 82 GB / 76 GiB - CHS 10012 255 63
     Partition               Start        End    Size in sectors
D HPFS - NTFS              0   1  1  1215 254 63   19534977
D HPFS - NTFS              0   1  1  2549 254 63   40965687
D FAT32 LBA             1216   1  1  3647 254 63   39070017 [DISK1_VOL2]
D HPFS - NTFS           1914   1  1  4463 254 63   40965687
D HPFS - NTFS           1914   1  7  4463 254 63   40965681
D HPFS - NTFS           2550   1  1  5099 254 63   40965687
D HPFS - NTFS           2550   1  7  5099 254 63   40965681
D FAT32 LBA             3648   1  1  6079 254 63   39070017 [DISK1_VOL3] OK
D HPFS - NTFS           4464   1  1  7013 254 63   40965687
D HPFS - NTFS           4464   1  7  7013 254 63   40965681
D HPFS - NTFS           5100   1  1  7649 254 63   40965687
D HPFS - NTFS           5100   1  7  7649 254 63   40965681
D FAT32 LBA             6080   1  1  9733 254 63   58701447 [DISK1_VOL4]
D HPFS - NTFS           6375   1  1 10009 254 63   58396212
D HPFS - NTFS           7014   1  1 10010 254 63   48146742
D HPFS - NTFS           7650   1  1 10010 254 63   37929402
D HPFS - NTFS           7650   1  2 10010 254 63   37929401
D FAT32 LBA             9734   0  1 10010 254 63    4450005 [IBM_SERVICE]

推断原先分区为:

D FAT32 LBA             1216   1  1  3647 254 63   39070017 [DISK1_VOL2]
D FAT32 LBA             3648   1  1  6079 254 63   39070017 [DISK1_VOL3]
D FAT32 LBA             6080   1  1  9733 254 63   58701447 [DISK1_VOL4]
D FAT32 LBA             9734   0  1 10010 254 63    4450005 [IBM_SERVICE]

转换成fdisk标记:

1 1216
1217 3648
3649 6080
6081 9734
9735 10011


因为情况比较复杂,还没玩转testdisk,所以用fdisk。

开始时情况有些不对,2 3 4 5分区显示未格式化,然后以扩展分区为标准,2 3 4分区找回来了,5仍然不行,后来朋友说电脑买回来到现在,也就这回分区了,所以推断是乱七八糟的所谓的恢复用~又不是IBM的机器!而且无落是扩展,还是主分区,都无法显示。

这回发现,虽然2 3 4的格式没有错,但是逻辑分区和主分区的信息还是有区别的。

代码:

2 1217 3648
3 3649 6080
4 6081 9734
失败

2 1217 9734
5 1217 3648
6 3649 6080
7 6081 9734
成功



虽然系统中也能看到分区了,但是加载时发生错误:

代码:
Error mounting: mount exited with exit code 12: Failed to read last sector (40965680): Invalid argument
HINTS: Either the volume is a RAID/LDM but it wasn't setup yet,
   or it was not setup correctly (e.g. by not using mdadm --build ...),
   or a wrong device is tried to be mounted,
   or the partition table is corrupt (partition is smaller than NTFS),
   or the NTFS boot sector is corrupt (NTFS size is not valid).
Failed to mount '/dev/sdb5': Invalid argument
The device '/dev/sdb5' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?


重启计算机就好了!

今天查了一下testdisk的文档,发现在深度扫描完成后,用上下左右键进行选择和指定分区主/逻辑即可,貌似应该能识别出主/逻辑。

发现testdisk还可以恢复数据,但是官网只提到ext2,我的ext4就没有[Undelete]这一项,试了一下FAT32分区,可以,现在却定Undelete对在分区内删除的文件有效,不知道如果分区被删除后在同一柱面建立另一个分区会如何,也就是说以前的分区信息完全被破坏,就和用常见的数据恢复工具进行以扇区为单位,而非分区为单位的最低级搜索!

分区是找回来了,该会到开始最担心的问题了!

格式化时会在分区的前部写入信息,FAT32是4K,NTFS是阶段性增长的日志系统,例如A GB以内占a MB,A~B GB占b MB以此类推,EXT4是完全随分区大小增长的日志系统,例如我的400G分区,单日志就占了20G是非常庞大的,看了其他EXT4的分区,日志约占1/20,所以有时考虑到是否数据区用NTFS格式。

话说,因为在写入信息了,所以可能就将之前的数据覆盖了,所以仔细计算了一下:

代码:
1
          1217
2551
          3649
5101
          6081
7651


对照恢复后分区数据应用情况,F分区的某处数据区很可能被改写了。

先按照文件建立时间看了一下,很走运,一个700+ MB的rar文件,测试第59个文件crc错误。

但是为了保险起见,还是从扇区入手:7651号柱面 122897313号扇区,用WinPM可以查看扇区,确实被修改了,但是不知道改扇区所在出的文件。在网上查了下:“FAT32 扇区 文件”,无果。后来想起那些商业化数据恢复工具不是能显示某些值吗,于是用手头就有的,YLMF PE的finaldata,但是上面显示的是簇,建立一个只有一个字节的文本文件,显示占用大小为16K,WinPM也显示分区簇占用32个扇区,7651在6081之后的1570处,簇为788691,虽然找到了最近处文件,用UE查看,未果。但是确实700+ MB是被改写的那个文件。因为和备份对比了!

最后的疑问,fdisk只会向MBR写入数据,testdisk是否也是!

还有linux的fdisk和ms的fdisk有什么关系,那个柱面编号从1开始是linux_fdisk特有的,我见过的其他工具都是从0开始:spfdisk、PM、diskgen、testdisk等。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译