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,嘗試從本地磁盤引導啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章