linux 硬盘磁道恢复,Linux MBR扇区误删恢复

如果MBR分区表没了,你有备份的话直接恢复就好。如果没有...恭喜你。。。

如果是前446字节的引导记录丢了,你有备份的话,直接恢复就好。如果没有,那就从另一台相同的主机上cp一份就好了。

我这里使用虚拟机进行测试。

1. 引导记录误删恢复

我这里用CentOS7系统操作(一块硬盘)

1.1 备份引导记录

[root@www ~]# dd if=/dev/sda of=/loader.back bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.00021032 s, 2.1 MB/s

[root@www ~]# ls -lh /loader.back

-rw-r--r-- 1 root root 446 Apr 8 21:07 /loader.back

1.2 误删引导记录

[root@www ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.000247003 s, 1.8 MB/s

# 然后重启

[root@www ~]$ reboot

1.3 恢复引导记录

哟,进不去了。

96e27912da2d572f2264e1e3436cef2e.png

(1)关闭主机,然后挂载光盘

90d46d1506a204744b42806f7ef3894b.png

(2)进入BIOS,反正不是f2就是f12,或者Delete,设置优先级,然后f10保存

730612b3e7e9a4a3ecafa96b763cfdd7.png

记得这个是亮的啊。。。不是就右键连接

dba58e210abad2a644f3ac6e9afc5f0a.png

(3)进入修复模式

7a6f8996b8c79209c2264cade80c2d64.png

1121127951c36b661c7cbbf573952f5d.png

当然选1咯

b66f3e75e97d8131eae766bcb9711846.png

直接回车

0ecee36b5e602b5a39769ca2603723ad.png

系统已经被挂到/mnt/sysimage/下了,进去把。

57e78c594e5bb7db9b8f55393d6caa07.png

如果这一步你chroot进不去...可能是你的分区表坏了,或者其他原因。

(4)恢复mbr引导记录

bash-4.2# dd of=/loader.back of=/dev/sda bs=446 count=1

aed5e53564da5ef1d216d51cd311e3f3.png

然后退出(exit),重启(reboot)(记得把BIOS启动顺序改回来,为Hard Drive第一个,这一步我就不截图了)

然后...就没然后了,就好了。

a7fc25f82802321656cd336f8409abef.png

如果啊,你忘记了备份,被担心,你将那块磁盘卸下来,插到另一台之主机上,然后通过 dd if=dev/sda of=/dev/sdb count=1 bs=446进行恢复,但是注意,这里的/dev/sdb是你那块有问题的磁盘。并且你这块/dev/sda硬盘必须是好的,而且与之版本相同。否则可能会出现另外的问题。

2. 分区表误删恢复

我这里用CentOS7系统操作(一块硬盘)。

对于分区表,如果你做了备份,那没问题。如果没有备份...我也不知道咋解决了。。。

2.1 备份分区表

[root@www ~]# dd if=/dev/sda of=/root/partition_table.back skip=446 bs=64 count=1

1+0 records in

1+0 records out

64 bytes (64 B) copied, 0.00020132 s, 318 kB/s

注意了啊,这个备份文件一定是备份在远程服务器的,因为你的分区表已经坏了,找都找不到了。你存在本地有何意义。。。

2.2 误删分区表

[root@www ~]$ dd if=/dev/zero of=/dev/sda skip=446 bs=64 count=1

[root@www ~]$ reboot

ace3aad2797de1e0fc8928f0f8131631.png

哟。。。又坏了。

2.3 恢复分区表

# 1. 将磁盘卸载

# 2. 将磁盘挂载到远程服务器

# 3. 然后用dd恢复

[root@www ~]# ls

partition_table.back

# 我这是远程服务器

[root@www ~]# dd if=./partition_table.back of=/dev/sdb seek=446 bs=64 count=1

1+0 records in

1+0 records out

64 bytes (64 B) copied, 0.00102179 s, 62.6 kB/s

然后,就可以卸载磁盘,放回原来的服务器里。

然后。

bbdb522cf3e48f58a42fe286c93340f9.png

这。。。出毛病了。。。

是不是引导记录出毛病了。。。我赶紧将磁盘插回远程服务器,然后dd if=/dev/sda of=/dev/sdb bs=446 count1,将引导记录恢复了以下。然后。。。然后就好了。。。

946346fc8a52689ebbe31a9c2019302b.png

看了看,原来是命令搞错了。。。再2.2 误删分区表这一步命令敲错了。skip是跳过输入文件的block,而seek才是跳过输出文件的block,所以我那一步其实是删除了引导记录。。。

其实把,你以后直接使用dd if=/dev/sda of=~/mbr.back bs=512 count=1就好了,不管是分区表坏了,还是引导记录坏了,使用dd if=~/mbr.back of=/dev/sda bs=512 count1恢复就好了。所以啊。一定要备份,不然就凉凉了。

最后,虽然这是在虚拟机上做的,但在真实环境,确实是这样的。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值