Centos7.4使用recuse模式恢复虚机mbr分区表

1、检查sda系统盘mbr信息
[root@gfs03 ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x000c2ad4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

centos7下,默认分区表信息是保存在sda系统的的前2048个扇区的,可以看到,sda1是从第2048个扇区开始的。

我们可以看下sda前面2048个扇区的内容:

root@wufantest01[/root]#hexdump -n 512 /dev/sda
0000000 63eb 1090 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
0000030 ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
0000040 024c 13cd 00ea 007c eb00 00fe 0000 0000
0000050 0000 0000 0000 0000 0000 8000 0001 0000
0000060 0000 0000 faff 9090 c2f6 7480 f605 70c2
0000070 0274 80b2 79ea 007c 3100 8ec0 8ed8 bcd0
0000080 2000 a0fb 7c64 ff3c 0274 c288 be52 7c05
0000090 41b4 aabb cd55 5a13 7252 813d 55fb 75aa
00000a0 8337 01e1 3274 c031 4489 4004 4488 89ff
00000b0 0244 04c7 0010 8b66 5c1e 667c 5c89 6608
00000c0 1e8b 7c60 8966 0c5c 44c7 0006 b470 cd42
00000d0 7213 bb05 7000 76eb 08b4 13cd 0d73 845a
00000e0 0fd2 de83 be00 7d85 82e9 6600 b60f 88c6
00000f0 ff64 6640 4489 0f04 d1b6 e2c1 8802 88e8
0000100 40f4 4489 0f08 c2b6 e8c0 6602 0489 a166
0000110 7c60 0966 75c0 664e 5ca1 667c d231 f766
0000120 8834 31d1 66d2 74f7 3b04 0844 377d c1fe
0000130 c588 c030 e8c1 0802 88c1 5ad0 c688 00bb
0000140 8e70 31c3 b8db 0201 13cd 1e72 c38c 1e60
0000150 00b9 8e01 31db bff6 8000 c68e f3fc 1fa5
0000160 ff61 5a26 be7c 7d80 03eb 8fbe e87d 0034
0000170 94be e87d 002e 18cd feeb 5247 4255 0020
0000180 6547 6d6f 4800 7261 2064 6944 6b73 5200
0000190 6165 0064 4520 7272 726f 0a0d bb00 0001
00001a0 0eb4 10cd 3cac 7500 c3f4 0000 0000 0000
00001b0 0000 0000 0000 0000 bb0d 000a 0000 0080
00001c0 0221 0f83 ffff 0800 0000 f7df 18ff 0000
00001d0 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0000200
root@wufantest01[/root]#

前2048个扇区占用空间512字节。

2、备份mbr分区信息
[root@gfs03 data]# dd if=/dev/sda of=/data/sda.mbr.bak bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00024294 s, 2.1 MB/s

3、备份sda1的系统信息
[root@gfs03 data]# dd if=/dev/sda1 of=/data/sda1.bak
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 17.0521 s, 63.0 MB/s

4、检查备份信息
[root@gfs03 data]# ll
total 1048580
-rw-r--r-- 1 root root 1073741824 Nov 27 02:02 sda1.bak
-rw-r--r-- 1 root root        512 Nov 27 01:38 sda.mbr.bak

5、干掉sda的mbr分区表信息
[root@gfs03 data]# dd if=/dev/zero of=/dev/sda bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00022241 s, 2.3 MB/s

6、干掉sda1分区信息
[root@gfs03 data]# dd if=/dev/zero of=/dev/sda1
dd: writing to ‘/dev/sda1’: No space left on device
2097153+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 4.05596 s, 265 MB/s
[root@gfs03 data]# 

7、重启
[root@gfs03 data]# reboot

8、reboot以后,由于磁盘mbr分区表引导信息和系统都没了,所以需要通过从其它的介质引导来提供一个基本的shell环境进行恢复,我们使用centos7的镜像引导,然后通过recuse模式进行恢复。

重启虚机后选择troubleshooting,如果本地盘mbr信息没有损坏,启动会默认进入本地盘,可以尝试快速按ESC键进入下面的页面:

选择rescue a CentOS system:

按enter键启动一个简单的系统:

输入1,continue:

输入enter键,进入shell环境:

使用fdisk -l|more可以查看到原来属于的系统盘sda和原来mbr备份和sda1备份的信息所在的盘sdc,我们可以发现盘符并没有改变。此处特别注意:由于sda的mbr分区表信息被清掉了,所以此时查看sda盘的时候看不到该磁盘下面有分区sda1。对比第9步。

8、新建一个目录挂载之前备份所在的盘sdc

可以看到之前备份的mbr的信息和sda1的信息有了。

9、恢复mbr分区表信息。

执行完这一步后,我们再次fdisk -l |more就能看到sda上面的分区表信息了。

10、恢复sda1系统信息

11、此时reboot,尝试从本地磁盘引导启动。

发布了177 篇原创文章 · 获赞 43 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/kadwf123/article/details/103268101