今天用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 !
|