• 拯救数据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 !
  • 相关阅读:
    2.1 JavaScript应用开发实践指南
    2 JavaScript应用开发实践指南
    一 JavaScript应用开发实践指南
    工作“触雷”经历与总结--记博弈论的应用
    设计模式之 简单工厂,工厂方法,抽象工厂
    C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)
    C语言知识结构
    Visual Studio 项目和解决方案 路径修改(解决部分模板丢失的问题)
    C#静态方法和实例方法的内存分配测试
    Java字符串String
  • 原文地址:https://www.cnblogs.com/huqingyu/p/131108.html
Copyright © 2020-2023  润新知