Linux 灾难恢复

来源:developerworks

简介: Linux 发行版本众多,现如今也得到了越来越广泛的应用,同时也面临着系统出现故障的潜在风险,本文将详细介绍几种 Linux 灾难恢复技术和方法,以确保 Linux 系统安全恢复。

Linux 灾难恢复

Linux 发行版本众多,现如今也得到了越来越广泛的应用,同时也面临着系统出现故障的潜在风险,本文将以发行版本 RHEL6 为例详细介绍几种 Linux 灾难恢复技术和方法,以确保 Linux 系统的安全恢复。

Linux 灾难恢复

在介绍 Linux 灾难恢复方法之前,我们先来了解下 MBR,其全称为 Master Boot Record,即硬盘的主引导记录。它由三个部分组成,主引导程序、硬盘分区表和硬盘有效标志。在总共 512 字节的主引导扇区里主引导程序(Bootloader)占 446 个字节,第二部分是硬盘分区表,占 64 个字节,硬盘有多少分区以及每一分区的大小都记录在其中。第三部分是硬盘有效标志,占 2 个字节。具体如图示:

图 1. MBR

Linux 灾难恢复系统硬盘分区表破坏

生产环境中的 Linux 服务器可能会因为病毒或者意外断电而引起硬盘分区表被破坏,通常恢复硬盘分区表需要之前我们先备份其分区表的信息,一般我们使用 USB 外接设备来备份主机硬盘的分区表。

在主机上挂载 USB 设备后我们查看系统当前磁盘设备 :

现在我们在 sdb 这个设备上创建一个新的分区 :

在新分区 sdb1 上创建文件系统:

挂载新的文件系统:

通常我们通过备份硬盘的 MBR 来备份硬盘分区表:

现在我们来写零硬盘分区表来实现类似分区表被破坏的结果:

查询硬盘 sda 上的分区信息,发现其已不包含任何分区:

当主机硬盘分区表丢失了之后,再次启动后 GRUB 会因找不到配置文件而进入命令行模式 :

图 2. 分区表丢失

Linux 灾难恢复

接下来我们挂载 RHEL6 的安装盘,同时也接入我们之前备份的 USB 设备,然后重启主机,选择 CD-ROM 为第一引导设备,启动后选择“Rescue installed system”。

图 3. 选择援救

Linux 灾难恢复 按照提示,最终我们选择一个 shell。

图 4. 选择 shell

Linux 灾难恢复

我们查询系统磁盘信息,发现硬盘设备 sda 没有包含任何分区。

我们来恢复它的硬盘分区表,创建一个目录并且挂载之前备份的 USB 设备,我们看到它的设备名是 /dev/sdb。

通过原来备份的 sda.mbr 文件来恢复硬盘设备 sda 的硬盘分区表 :

再次查询系统磁盘信息:

硬盘设备 sda 的分区表已经恢复,重启后系统便可正常引导。

系统 GRUB 损坏

类似得我们可以来写零 Bootloader 来实现 GRUB 被破坏的结果:

重启后系统会因找不到 GRUB 而卡在“Booting from Hard Disk …”

挂载系统安装光盘然后选择进入 Rescue 模式,然后恢复 GRUB:

图 5. 恢复 GRUB

Linux 灾难恢复

重启主机后,系统可正常引导。

系统内核文件丢失

系统丢失内核 kernel 文件,再次启动后会提示找不到文件。

图 6. 内核丢失

Linux 灾难恢复

挂载系统安装盘进入援救模式,检查 /boot 目录下发现没有 kernel 文件。

从挂载的系统安装盘强制重新安装内核:

在 /boot 目录下已经生成新的 kernel 文件 vmlinuz-2.6.32-71.el6.x86_64

重启主机后,系统可正常引导。

系统镜像文件丢失

系统丢失镜像文件,主机启动后黑屏。

图 7. 镜像丢失

Linux 灾难恢复

挂载系统安装盘进入援救模式 , 检查 /boot 目录下发现没有镜像文件。

重新生成镜像文件 initramfs-2.6.32-71.el6.x86_64.img。

重启主机后 , 系统可正常引导。

系统 /boot 分区损坏

一般来说系统 /boot 分区损坏,我们会先尝试修复文件系统。如果文件系统损坏不能修复,那么我们可以参照前述的方法来依次新建 /boot 分区,重新安装内核和镜像,然后安装 GURB 再手工编辑引导菜单,以最终来恢复系统可正常引导。通常我们需要按照如下的步骤来恢复。

创建分区

碰到比较严重的情况就是 /boot 分区已经完全损坏,启动时会提示找不到引导设备。

图 8. 引导分区损坏

Linux 灾难恢复

挂载安装盘后进入援救模式,查看分区情况,发现分区 /dev/sda1 不存在。

新建一个分区并且设置它为启动分区。

重启主机以更新分区表,然后进入援救模式,并在我们新创建的分区上创建文件系统。

安装内核镜像文件

通过前述的方法我们安装内核和镜像文件。

安装 GRUB

我们安装 GRUB 到硬盘设备 sda 上。

编辑引导菜单

由于我们创建了新的分区,其对应的 UUID 会发生变化,可以通过命令 blkid 来查询分区的 UUID。

上述的 sda3 为根分区,编辑 /boot/grub/grub.conf 文件更新其对应的 UUID,其内容如下。

更新 /etc/fstab

类似的我们也需要更新 /etc/fstab 里 /boot 分区对应的新 UUID,其内容如下。

现在我们的恢复步骤已经完成,重启主机后 GRUB 中可见我们配置的系统列表。

图 9. GRUB 菜单

Linux 灾难恢复

至此 /boot 分区已恢复,系统可正常引导启动。

图 10. 系统启动

Linux 灾难恢复总结

本文阐述了常见的 Linux 灾难恢复技术和方法,及其出现严重灾难时应注意的恢复顺序,以确保 Linux 系统在出现灾难时得以安全恢复。

 

2 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部