公司内部一服务器有两块硬盘,系统盘为sda,另一块盘hda。原来在sda上安装RHEL5.2系统时并没有初始化硬盘,而是腾出一部分空余空间来安装Linux,原系统是Windows,在扩展分区上腾出空间给Linux。在安装Linux系统时分区都安装在扩展逻辑分区。一直这么用着,时间长了,今天fdisk -l一看发现有Windows分区,觉着碍眼,也没仔细看。然后fdisk /dev/sda进去就给删除那Windows分区了,结果重启不来了,直接进入grub命令提示界面。我想出问题了,后来仔细一想,那被删除的Windows分区是一个扩展分区,结果下面的逻辑分区全没了。挂到其他系统一看只剩下个swap分区了。本来也没什么太重要的数据,但是里面配置不少服务,是公司内部提供网络安装以及多个测试环境的机器,重新搞也蛮烦得很,就去网上搜索下有没有恢复的可能性。后来发现一盘文章,使用gpart工具或许可以恢复之前的分区表,于是立即尝试。
1. 首先挂到其他系统上,识别是/dev/sdb
先是用gpart /dev/sdb发现可以扫描到之前的分区信息,然后gpart -W /dev/sdb /dev/sdb重新写入之前的分区表信息,需要一点时间。扫描完后提示我是否编辑表:
[root@localhost ~]# gpart -W /dev/sdb /dev/sdb
Begin scan...
Possible partition(DOS FAT), size(19077mb), offset(0mb)
Possible extended partition at offset(19077mb)
Possible partition(Linux ext2), size(20481mb), offset(19077mb)
Possible partition(Linux ext2), size(40962mb), offset(39558mb)
Possible partition(Linux swap), size(1027mb), offset(80521mb)
Possible partition(Linux ext2), size(19539mb), offset(81548mb)
End scan.
Checking partitions...
Partition(DOS or Windows 95 with 32 bit FAT, LBA): primary
Partition(Linux ext2 filesystem): logical
Partition(Linux ext2 filesystem): logical
Partition(Linux swap or Solaris/x86): orphaned logical
Partition(Linux ext2 filesystem): logical
Ok.
Guessed primary partition table:
Primary partition(1)
type: 012(0x0C)(DOS or Windows 95 with 32 bit FAT, LBA)
size: 19077mb #s(39070017) s(63-39070079)
chs: (0/1/1)-(1023/254/63)d (0/1/1)-(2431/254/63)r
Primary partition(2)
type: 015(0x0F)(Extended DOS, LBA)
size: 82011mb #s(167959575) s(39070080-207029654)
chs: (1023/254/63)-(1023/254/63)d (2432/0/1)-(12886/254/63)r
Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Edit which partition (1..4, q to quit) : q
Activate which partition (1..4, q to quit) : 1
Write this partition table (y,n) : y
我没有明白编辑表是什么意思,我猜应该是编辑分区表吧。如果输入分区号的话将进入编辑,诸如扇区号之类,我想是因为上面3,4分区很多信息没有识别到(很多0)。我没有编辑,按q推出,然后又提示激活哪个分区,我也不知道是什么意思,选了1,最后选y写入分区表。之后再用fdisk -l /dev/sdb竟然几个分区都显示出来了,也都全部可以mount并进入分区中,发现里面的数据都完好。
补充:
文件系统检测及修复:
fsck.ext3 /dev/sdb5
磁盘坏道检测:
badblocks -s -v /dev/sdb5
语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]
参数:
-b 指定磁盘的区块大小,单位为字节。
-o 将检查的结果写入指定的输出文件。
-s 在检查时显示进度。
-v 执行时显示详细的信息。
-w 在检查时,执行写入测试。
[磁盘装置] 指定要检查的磁盘装置。
[磁盘区块数] 指定磁盘装置的区块总数。
[启始区块] 指定要从哪个区块开始检查。
阅读(3649) | 评论(0) | 转发(0) |