今天为什么会有系统恢复这样一个专题呢?因为一不小心,系统坏掉了,至于怎么坏的,或者哪部分坏了,谁知道呢。。
在介绍 Linux 灾难恢复方法之前,我们先来了解下 MBR,其全称为 Master Boot Record,即硬盘的主引导记录。它由三个部分组成,主引导程序、硬盘分区表和硬盘有效标志。在总共 512 字节的主引导扇区里主引导程序(Bootloader)占 446 个字节,第二部分是硬盘分区表,占 64 个字节,硬盘有多少分区以及每一分区的大小都记录在其中。第三部分是硬盘有效标志,占 2 个字节。还是看图清楚一点,虽然是盗的图
Linux 灾难恢复开始了
1. root用户密码忘了怎么办(也算是灾难吧)?
如果出现这种情况不知道怎么办那么看官请看我的这篇博客 Linux如何找回或者重置root用户密码
如果问题再严重一点,分区表没了或者系统硬盘分区表破坏,或者内核被删、或者系统引导文件没了、或者系统 GRUB 损坏、系统镜像文件丢失、又或者系统 /boot 分区损坏等等等不知道的情况,怎么办呢?看官请接着往下看 :
2. 系统硬盘分区表破坏怎么办?
生产环境中的 Linux 服务器可能会因为病毒或者意外断电而引起硬盘分区表被破坏,通常恢复硬盘分区表需要之前我们先备份其分区表的信息,一般我们使用 USB 外接设备来备份主机硬盘的分区表。
在主机上挂载 USB 设备后我们查看系统当前磁盘设备 :
[root@localhost ~]# fdisk -l
现在我们在 sdb 这个设备上创建一个新的分区 vdb1:
[root@localhost ~]# fdisk /dev/vdb
如何创建新分区看官请看Linux磁盘分区fdisk命令用法
在新分区 vdb1 上创建文件系统(各系统文件系统有差,不要完全照搬):
[root@FCoE ~]# mkfs.xfs /dev/vdb1
挂载新的文件系统:
[root@localhost ~]# mount /dev/vdb1 /mnt/
通常我们通过备份硬盘的 MBR 来备份硬盘分区表:
[root@localhost~]# dd if=/dev/vda of=/mnt/vda.mbr bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000777948 s, 658 kB/s
我们可以在虚拟机中通过以下命令模拟分区表被破坏的结果(先备份分区表!!!):
[root@localhost ~]# dd if=/dev/zero of=/dev/vda bs=1 count=64 skip=446 seek=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.00160668 s, 39.8 kB/s
查询硬盘 vda 上的分区信息,发现其已不包含任何分区:
[root@localhost ~]# fdisk -l
当主机硬盘分区表丢失了之后,再次启动后 GRUB 会因找不到配置文件而进入命令行模式
3.分区表丢失怎么办?
接下来我们挂载 RHEL7.2 的安装盘,选择 CD-ROM 为第一引导设备,各步骤如下(虚拟机中),然后重启主机,一步步接下来:
选择或者添加CD-ROM引导和镜像
选择 CD-ROM 为第一引导设备