MBR分区表的备份与还原

MBR分区表的备份与还原

MBR分区的存储

从下图可以看出,MBR分区前446字节是boot loader;接下来64字节是分区表;再然后就是三个主分区加一个拓展分区。

f6eee1d76fc21e0788a6fc5d3a9d821e.png

一、备份分区表,要跳过前446字节

# 使用dd备份sda的分区表,跳过前446字节
[root@localhost ~]# dd if=/dev/sda of=./partition bs=1 count=64 skip=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000353636 s, 181 kB/s
# 使用16进制查看备份的内容
[root@localhost ~]# hexdump -C partition 
00000000  80 20 21 00 83 aa 28 82  00 08 00 00 00 00 20 00  |. !...(....... .|
00000010  00 aa 29 82 8e fe ff ff  00 08 20 00 00 f8 df 18  |..)....... .....|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040
# 查看硬盘的前512字节,和上面对比下,确保没搞错
[root@localhost ~]# hexdump -C /dev/sda -n 512
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  fc 9c 0b 00 00 00 80 20  |............... |
000001c0  21 00 83 aa 28 82 00 08  00 00 00 00 20 00 00 aa  |!...(....... ...|
000001d0  29 82 8e fe ff ff 00 08  20 00 00 f8 df 18 00 00  |)....... .......|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

二、发送分区表到另一个机器上(鸡蛋要放在不同的篮子里)

[root@centos7 data]# scp root@192.168.38.137:/root/partition .
root@192.168.38.137's password: 
partition                                                                           100%   64    60.0KB/s   00:00    
[root@centos7 data]# hexdump -C partition 
00000000  80 20 21 00 83 aa 28 82  00 08 00 00 00 00 20 00  |. !...(....... .|
00000010  00 aa 29 82 8e fe ff ff  00 08 20 00 00 f8 df 18  |..)....... .....|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040

三、使用zero设备抹掉sda的分区表,要跳过前446字节,前446字节是bootloder

bootloader都长得差不多,可以从同一批机器里恢复,如果抹掉了的话分区表不行

[root@centos7 data]# dd --help
  seek=N          skip N obs-sized blocks at start of output
  skip=N          skip N ibs-sized blocks at start of input
# 使用zero设备抹掉sda的分区表
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000603535 s, 106 kB/s
# 查看下sda的分区表
[root@localhost ~]# hexdump -C /dev/sda -n 512
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  fc 9c 0b 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

此时服务器一关机就开不了了:

75987fecb8f7e02c12ed02dd3915aaee.png

四、光盘启动开始救援

可以参考这篇文章进入救援界面:https://blog.51cto.com/14012942/2426097

4.1、此时的救援模式没网,需要手动配个Ip把分区表scp过来

没网

93634fb488433eee0a3921c29f0e274a.png

临时手动配个IP,把分区表scp过来

sh-4.2# ifconfig ens33 192.168.38.138 netmask 255.255.255.0
sh-4.2# scp 192.168.38.128:/data/partition .

59232fdbbee86144e8fbddac03ae13b4.png

4.2、lsblk查看下系统的硬盘名字,看到是sda

sh-4.2# lsblk

12736132d5b429040b49f3f31f4cf105.png

4.3、使用dd命令恢复,要跳过前446字节

sh-4.2# dd if=partition of=/dev/sda bs=1 count=64 seek=446

16766466d54fc8ad8ea4d876b67cc85c.png

4.4、查看下sda的前512字节

sh-4.2# hexdump -C /dev/sda -n 512

9a2021e2c43c49128b76edfd742c00c4.png

4.5、exit重启

sh-4.2# exit

五、救援成功

b5cd60a3f0ff5681c5c9eb57aaa5f60d.png

转载于:https://www.cnblogs.com/uscWIFI/p/11321832.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。 MBR(Master Boot Record)分区表是存储在计算机硬盘的第一个扇区的一段数据,它记录了硬盘的分区信息和引导程序。如果MBR分区表遭到破坏或者丢失,会导致计算机不能正常引导,因此备份和恢复MBR分区表非常重要。 以下是备份、删除和恢复MBR分区表的方法: 1. 备份MBR分区表 在Windows系统中,可以使用命令行工具diskpart来备份MBR分区表: 1)打开命令行窗口,输入diskpart并回车; 2)输入list disk并回车,查看硬盘编号; 3)输入select disk X(X为硬盘编号)并回车,选择要备份的硬盘; 4)输入list partition并回车,查看硬盘分区信息; 5)输入exit并回车,退出diskpart命令行工具; 6)使用命令行工具dd来备份MBR分区表,例如:dd if=/dev/sda of=/home/user/mbr.backup bs=512 count=1。 备份完成后,会在/home/user目录下生成一个名为mbr.backup的文件,其中包含了MBR分区表的内容。 2. 删除MBR分区表 如果需要删除MBR分区表,可以使用命令行工具dd来实现: 1)打开命令行窗口,输入sudo fdisk -l并回车,查看硬盘分区信息; 2)输入sudo dd if=/dev/zero of=/dev/sda bs=446 count=1并回车,删除MBR分区表。 这条命令会将硬盘第一个扇区的前446个字节都设置为0,从而删除MBR分区表。但是要注意,这样会导致硬盘的所有数据丢失,因此在操作前一定要做好数据备份。 3. 恢复MBR分区表 如果MBR分区表丢失或者损坏,可以使用备份文件来恢复: 1)打开命令行窗口,输入sudo fdisk -l并回车,查看硬盘分区信息; 2)输入sudo dd if=/home/user/mbr.backup of=/dev/sda bs=512 count=1并回车,恢复MBR分区表。 这条命令会将备份文件中的MBR分区表内容写入硬盘的第一个扇区,从而恢复分区信息和引导程序。恢复完成后,可以重新引导计算机,如果一切正常,硬盘的分区信息将被正确读取,并且计算机能够正常启动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值