分区丢失、分区超出磁盘边界处理全过程

背景:电脑Win7、Ubuntu双系统(64bit),买电脑时分好了区,C盘分了100G,后来装Ubuntu,调整了C盘大小,具体怎么弄得忘了,反正最后的分区情况是:

主分区:

Recovery  25G  FAT32  出厂时分的一个还原的

C:  40G  NTFS  Win7系统

/   15G  EXT3  Ubuntu根目录

扩展分区:

Swap  4G  Ubuntu交换分区

/Home  35G  EXT3

D:  90G  NTFS

E:  100G  NTFS

F:  150G  NTFS

Ubuntu在下了两个Android源码编译之后就已经基本没空间了,又不想重新分区安装,所以决定把D盘删除了合并到/home中,所以就先到Win7中将D盘所有东西移走,然后将D盘删除,悲剧就此上演,删除的过程中不知咋的蓝屏了,重启后,好家伙,带着/home和交换分区全给删了,启动Ubuntu提示找不到/home。

分区丢失这种情况自己移动硬盘遇到过几次,所以也没心急,知道数据还在,平常是用DiskGenius这个软件来搜索丢失分区进行恢复,所以试着恢复,DiskGenius能够很容易的搜索到删除的D盘,却死活找不到/home分区了,勉强找到也是无法识别,这点也容易明白linux下能识别ntfs分区,但是windows下识别不了ext分区,所以看来找回分区还得到ubuntu下去才行。

所以呢,进入Ubuntu的LiveCD(我的移动硬盘做成了启动盘),然后找到了传说中的神器:testdisk,果然,轻松找回了swap、home和之前的D盘,恢复后windows、ubuntu都启动OK,文件也未丢失。

到这里貌似要结束了,可是很显然没这么简单,之前说了,我需要删除D盘合并到/home,在不删除文件的情况下调整分区大小,使用的是Ubuntu下的gparted,可这次启动gparted之后,问题来了,整个硬盘显示未分配,无法显示分区信息,使用命令sudo parted /dev/sda print ,显示“错误: 无法让分区超出磁盘!”,sudo fdisk -lu ,信息如下:

Disk /dev/sda: 500.1 GB, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x38601c96

Device Boot Start End Blocks Id System

/dev/sda1 * 2048 52430847 26214400 c W95 FAT32 (LBA)

/dev/sda2 52430848 134350832 40959992+ 7 HPFS/NTFS/exFAT

/dev/sda3 134350848 163647487 14648320 83 Linux

/dev/sda4 163647540 976784129 406568295 f W95 Ext'd (LBA)

/dev/sda5 163649536 169648111 2999288 82 Linux swap / Solaris

/dev/sda6 169650176 259014655 44682240 83 Linux

/dev/sda7 259028992 457605119 99288064 7 HPFS/NTFS/exFAT

/dev/sda8 457607168 667322367 104857600 7 HPFS/NTFS/exFAT

/dev/sda9 667324416 976771071 154723328 7 HPFS/NTFS/exFAT

可以看到/dev/sda4,就是扩展分区,end为 976784129,而磁盘总大小只有 976773168,所以提示超过了边界。

最后在网上搜索,看到这个方法http://blog.qijianjun.me/2011/02/16/over-disk-partation-error-practice.html,自己手动调整分区表大小,文章中说到一定要保证分区的开始位置跟之前一致,我在删除了/dev/sda4~/dev/sda9后重建/dev/sda4,start跟之前一样,end调整为 976773168,然后在建立/dev/sda5时start位置不允许使用163649536,因为正好这里是交换分区,所以影响不大,最后sda4和sda5的start位置都没有跟之前一致,其它几个分区保持了一致。

调整完后写入,重启,OK,文件没丢失,gparted也能显示分区信息了,然后就是在livecd中用gparted删除D盘,扩大/home,最终一切搞定!

 

这次分区恢复和调整总结了几点:

1.不要windows合linux下的磁盘工具交叉使用,很容易引起问题(我的估计就是这样引起)

2.linux下能兼容ntfs分区,windows中不兼容ext分区,所以双系统情况下对磁盘的操作最好在linux下进行。

3.这几个磁盘工具软件:windows下的DiskGenius,Linux的testdisk、gparted,都是比较给力的工具,还有就是fdisk,相关命令最好熟悉。

你可能感兴趣的:(ubuntu,职场,休闲,分区调整,分区丢失)