拯救数据fdisk恢复损坏的分区表

今天用qemu试试fdisk能否无损坏合并分区,不成功,不过到是对fdisk分区有了了解
发现可以用fdisk恢复分区表,效果不错,十分有用的功能。分区表是很重要地 ^_^
今天用qemu创建个虚拟硬盘,使用LiveCD尝试fdisk无损坏合并分区,首先用fdisk创建了9个分区,3主分区+1逻辑分区,使用 reisefs,ext3,一个swap.

hda5(cylinder:792-992)hda6(cylinder:993-1193) 均为ext3, 装满东东,再fdisk删除掉,合并在一起(cylinder:792-1193), 重新挂载.结果原hda5数据全部保留,没有hda6的,使用df查看,仍然只是hda5大小,看来fdisk无损坏合并linux分区是不行的,因为 linux的FS中是用超级块记录分区信息的,虽然合并了两个分区,但超级块无法改变,使用hda5的超级块,当然就只会有hda5的数据了。:(

不过发现可以用fdisk恢复损坏的分区表,再没有软驱,U盘等东东很有用。 ^_^

经常在论坛看到有人不慎损坏分区表,丢失重要数据的教训,都是没有备份的后果阿。。
在没有软驱,U盘情况下要分区,就可以用这个办法备份分区表,以防万一 :)

首先使用fdisk -l 查看当前分区表信息 :
[root@LFS ~]#fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start       End      Blocks   Id  System
/dev/hda1   *           1         834     6699073+   b  W95 FAT32
/dev/hda2             835        9729    71449087+   f  W95 Ext'd (LBA)
/dev/hda5             835        3559    21888531   83  Linux
/dev/hda6            3560        6767    25768228+   7  HPFS/NTFS
/dev/hda7            6768        8072    10482381   83  Linux
/dev/hda8            8073        8085      104391   83  Linux
/dev/hda9            8086        8525     3534268+  fd  Linux raid autodetect
/dev/hda10           8526        9403     7052503+  83  Linux
/dev/hda11           9404        9468      522081   82  Linux swap / Solaris
/dev/hda12           9469        9729     2096451   fd  Linux raid autodetect

Disk /dev/md0: 5765 MB, 5765660672 bytes
2 heads, 4 sectors/track, 1407632 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table
[root@LFS ~]#

记下每一个分区的Start cylinders---End cylinders
hda1 1-834 hda2 835-9729(extend)  hda5  835-3559 (logical) .......
用什么记? 当然是纸啦。

如果很不幸分区失败,分区表被损坏,用fdisk按照记下的信息重写整个分区表就可以恢复了。
以前一直用cfdisk分区,今天发现fdisk基本操作也是很简单的,还比cfdisk快。
还不会用?快找个虚拟机练练吧!

这里我做了两个实验,如上所说,在虚拟硬盘上分了9个分区,然后又用PQ8.0删除掉所有分区,使用fat32重新格式化整个硬盘:
第一次在PQ进行其间退出qemu,再用fdisk -l查看分区表已经显示为fat32了
删除掉,按照记好的信息写回原先的分区表,hda5无法正常挂载,运行e2fsck,一路y后,就OK了。所有分区数据完全没有损坏。

第二次让PQ顺利完成操作,fdisk -l查看仍然显示为fat32,恢复后,除hda1,其余分区数据无任何损坏。
挂载hda1是以fat32挂载,df查看,hda1显示整个硬盘空间。e2fsck -b 8193 用hda1中备份的超级块恢复.
能检查出错误,一路y后仍然无效果。只能重新mke2fs -j /dev/hda1,恢复hda1正常分区信息

我想应该是因为第一次PQ还没有格式化成fat32,所以fdisk恢复后,数据无损坏
第二次格式化成fat32,结果hda1被损坏,但其他分区数据仍然完好。

可以看出,只有再没有创建文件系统(格式化)的情况下才可以使用fdisk恢复分区表。

实验完毕 ^_^
Good Luck !
原文地址:https://www.cnblogs.com/huqingyu/p/131108.html