31 使用 ReaR (Relax-and-Recover) 实现灾难恢复 #
Relax-and-Recover (“ReaR”) 是供系统管理员使用的灾难恢复框架。它是一个 Bash 脚本集合,您需要根据要在发生灾难时加以保护的特定生产环境调整这些脚本。
没有任何灾难恢复解决方案能够现成地解决问题。因此,必须在灾难发生之前做好准备措施。
31.1 概念概述 #
以下几节介绍了灾难恢复的总体概念,以及使用 ReaR 成功实现灾难恢复所需执行的基本步骤。另外还提供了有关 ReaR 要求、要注意的一些限制、各种方案和备份工具的指南。
31.1.1 创建灾难恢复计划 #
在最坏的情况发生之前采取措施:分析 IT 基础架构是否存在任何重大风险,评估您的预算,并制定灾难恢复计划。如果您还没有现行的灾难恢复计划,请先了解有关以下每个步骤的信息:
风险分析: 对基础设施进行可靠的风险分析。列出所有可能的威胁并评估它们的严重性。确定这些威胁的相似程度并划分优先级。建议使用简单的分类:可能性和影响。
预算计划: 分析结果是一个概述,指出哪些风险可以忍受,哪些风险对业务非常关键。问问自己,怎样才能将风险将至最低,而这需要付出多大的代价。根据公司的规模,在灾难恢复方面的花费占总体 IT 预算的 2% 到 15%。
制定灾难恢复计划: 制作核对清单、测试过程、建立并指派优先级以及列出 IT 基础设施库存。定义当基础设施中的一些服务失败时,如何处理问题。
测试: 定义详细的计划后,测试该计划。每年至少测试一次。使用与主要 IT 基础设施相同的测试硬件。
31.1.2 灾难恢复意味着什么? #
如果生产环境中的某个系统已毁坏(可能出于任何原因 - 例如,硬件损坏、配置不当或软件问题),您需要重创建该系统。可以在相同的硬件或者兼容的替代硬件上重创建。重创建系统并不只是意味着从备份中恢复文件,还包括准备系统的存储空间(与分区、文件系统和安装点相关),以及重新安装引导加载程序。
31.1.3 灾难恢复如何与 ReaR 配合工作? #
在系统正常运行期间,创建文件的备份并在恢复媒体上创建恢复系统。该恢复系统包含一个恢复安装程序。
如果系统已损坏,您可以更换受损的硬件(如果需要),从恢复媒体引导恢复系统,然后起动恢复安装程序。恢复安装程序会重新创建系统:首先,它会准备存储设备(分区、文件系统、挂载点),然后会从备份恢复文件。最后,它会重新安装引导加载程序。
31.1.4 ReaR 要求 #
要使用 ReaR,您至少需要两个相同的系统:用来运行生产环境的计算机,以及相同的测试计算机。举例来说,这里所说的“相同”是指您可以将一个网卡替换为使用相同内核驱动程序的另一个网卡。
如果某个硬件组件使用的驱动程序与生产环境中所用的驱动程序不同,ReaR 不会将该组件视为相同。
31.1.5 ReaR 版本更新 #
要查看适用于 SUSE Linux Enterprise High Availability 15 SP7 的 ReaR 版本,请运行以下命令:
#
zypper search --type package --verbose rear
有关 Bug 修复、不兼容性及其他问题的任何信息都可在包的更改日志中找到。如果需要重新验证灾难恢复过程,建议您另外也要审阅 ReaR 的较新软件包版本。
您需要了解 ReaR 的以下问题:
您需要安装可提供辅助工具
/usr/bin/xorrisofs
的 xorriso 软件包,才能在 UEFI 系统上实现灾难恢复。此辅助工具用于创建 UEFI 可引导 ReaR 恢复系统 ISO 映像。如果您使用某个 ReaR 版本实现的灾难恢复过程已通过测试并且功能完好,请不要更新 ReaR。请保留该 ReaR 软件包,并且不要更改您的灾难恢复方法。
ReaR 的版本更新是以独立软件包的形式提供的,这些软件包在设计上有意彼此冲突,目的是防止所安装的版本意外地被另一个版本替换。
在以下情况下,您需要重新验证现有的灾难恢复过程:
针对每个 ReaR 版本更新。
手动更新 ReaR 时。
针对 ReaR 使用的每个软件。
如果更新了底层系统组件(例如
btrfs
、parted
及类似组件)。
31.1.6 针对 Btrfs 的限制 #
如果您使用 Btrfs,请注意以下限制。
- 您的系统包括子卷,但不包括快照子卷
至少需要 ReaR 版本 1.17.2.a。此版本支持重新创建“正常”Btrfs 子卷结构(不包括快照子卷)。
- 您的系统包括快照子卷
- 警告
无法照常使用基于文件的备份软件来备份和恢复 Btrfs 快照子卷。
尽管 Btrfs 文件系统上的最新快照子卷几乎不占用任何磁盘空间(因为 Btrfs 具有写入时复制功能),但在使用基于文件的备份软件时,这些文件将作为完整文件进行备份。在备份中,这些文件的大小是其原始文件大小的两倍。因此,也就无法将快照恢复到它们以前在原始系统上的状态。
- 您的 SLE 系统需要匹配的 ReaR 配置
例如,SLE12 GA、SLE12 SP1 和 SLE12 SP2 中的设置具有数个不兼容的 Btrfs 默认结构。因此,使用匹配的 ReaR 配置文件至关重要。请参见示例文件
/usr/share/rear/conf/examples/SLE12*-btrfs-example.conf
。
31.1.7 方案和备份工具 #
ReaR 能够创建可从本地媒体(例如硬盘、闪存盘、DVD/CD-R)或通过 PXE 引导的灾难恢复系统(包括系统特定的恢复安装程序)。可以将备份数据存储在网络文件系统(如 NFS)中,如例 31.1 中所述。
ReaR 不会替换文件备份,而是对它进行补充。默认情况下,ReaR 支持常规 tar
命令和若干第三方备份工具(例如 Tivoli Storage Manager、QNetix Galaxy、Symantec NetBackup、EMC NetWorker 或 HP DataProtector)。有关将 ReaR 与用作备份工具的 EMC NetWorker 配合使用的示例配置,请参见例 31.3。
31.1.8 基本步骤 #
要在发生灾难时使用 ReaR 成功进行恢复,需要执行以下基本步骤:
- 设置 ReaR 和备份解决方案
这会涉及到一些任务,例如,编辑 ReaR 配置文件、调整 Bash 脚本,以及配置您要使用的备份解决方案。
- 创建恢复安装系统
在要保护的系统处于正常运行状态时,创建文件备份,并生成包含适用于特定系统的 ReaR 恢复安装程序的恢复系统。
若要使用
tar
进行基本备份,请使用rear mkbackup
命令来创建备份和恢复系统。若要使用第三方备份工具,请使用
rear mkrescue
命令创建恢复系统,并使用第三方备份工具创建备份。- 测试恢复过程
每次使用 ReaR 创建灾难恢复媒体时,都要全面测试灾难恢复过程。所用测试计算机上的硬件必须与生产环境中的硬件相同。有关细节,请参见 第 31.1.4 节 “ReaR 要求”。
- 从灾难中恢复
灾难发生后,更换任何受损的硬件(如果需要)。然后,引导 ReaR 恢复系统,并使用
rear recover
命令启动恢复安装程序。
31.2 设置 ReaR 和备份解决方案 #
要安装最新版 ReaR,请运行以下命令:
#
zypper install rear
如果需要安装早期版本的 ReaR,您可以指定软件包版本。例如:
#
zypper install rear23a
要配置 ReaR,请在 ReaR 配置文件 /etc/rear/local.conf
中添加相应设置,此外可以根据需要编辑属于 ReaR 框架一部分的 Bash 脚本。具体而言,您需要定义 ReaR 应该执行的以下任务:
如何备份文件以及如何创建和存储灾难恢复系统: 这需要在
/etc/rear/local.conf
中配置。需要重新创建的对象(分区、文件系统、挂载点等): 这可以在
/etc/rear/local.conf
中定义。要重创建非标准系统,您可能需要增强 Bash 脚本。恢复过程的工作方式: 要更改 ReaR 生成恢复安装程序的方式,或者要调整 ReaR 恢复安装程序执行的操作,您需要编辑 Bash 脚本。
所有 ReaR 配置变量及其默认值都在 /usr/share/rear/conf/default.conf
中进行了说明。
以下是一些有用的配置选项示例。您还可以在 /usr/share/rear/conf/examples/
子目录中找到适合不同场景的示例文件。请参考它们来创建您的 /etc/rear/local.conf
文件。
按照《SUSE Linux Enterprise Server 15 SP7 管理指南》所述,使用 YaST 设置 NFS 服务器。
在
/etc/exports
文件中定义 NFS 服务器的配置。确保 NFS 服务器上的目录具有正确的挂载选项。例如,您可能需要no_root_squash
,因为rear mkbackup
命令以root
身份运行。有关详细信息,请参见man exports
。调整配置文件
/etc/rear/local.conf
中的各个BACKUP
参数,让 ReaR 将文件备份存储在相应的 NFS 服务器上。已安装系统中的/usr/share/rear/conf/examples/SLE*-example.conf
下提供了示例。
tar
备份 Btrfs 子卷 #
Btrfs 采用子卷架构,但 tar
使用 --one-file-system
选项创建备份时会排除子卷。因此,必须在 ReaR 配置中明确包含子卷的挂载点。
将此配置代码段添加到 /etc/rear/local.conf
中,并根据您的设置进行调整。有关详细信息和其他选项,请参见示例文件 /usr/share/rear/conf/examples/SLE*-btrfs-example.conf
。
OUTPUT=ISO BACKUP=NETFS BACKUP_URL=nfs://host.example.com/path/to/rear/backup BACKUP_PROG_INCLUDE=( /root /boot/grub2/i386-pc /tmp /opt /var /boot/grub2/x86_64-efi /srv /usr/local )
BACKUP_PROG_INCLUDE
的挂载点您可以通过运行以下命令确定特定系统上子卷的挂载点:
#
findmnt -n -r -o TARGET -t btrfs | grep -v '^/$' | egrep -v 'snapshots|crash'
要使用第三方备份工具代替 tar
,您需要在 ReaR 配置文件中进行相应的设置。
以下是 EMC NetWorker 的示例配置。将此配置代码段添加到 /etc/rear/local.conf
中,并根据您的设置进行调整:
BACKUP=NSR OUTPUT=ISO BACKUP_URL=nfs://host.example.com/path/to/rear/backup OUTPUT_URL=nfs://host.example.com/path/to/rear/backup NSRSERVER=backupserver.example.com RETENTION_TIME="Month"
有关支持的第三方备份工具的详细信息,请参见 man rear
的 BACKUP SOFTWARE INTEGRATION 部分。
默认情况下,ReaR 会忽略多路径设备上的文件系统,因为它假定它们位于远程存储设备上,不是本地系统的一部分。您可以将以下代码添加到 /etc/rear/local.conf
中,让 ReaR 将这些文件系统纳入备份范围:
AUTOEXCLUDE_MULTIPATH=n
如果系统使用 UEFI 引导加载程序进行引导,则需要进行其他配置:
安装软件包 xorriso:
#
zypper install xorriso
将以下代码添加到
/etc/rear/local.conf
中:ISO_MKISOFS_BIN="/usr/bin/xorrisofs"
如果您的系统使用 UEFI 安全引导功能引导,还必须添加下行内容:
SECURE_BOOT_BOOTLOADER="/boot/efi/EFI/sles/shim.efi"
有关用于 UEFI 的 ReaR 配置变量的详细信息,请参见 /usr/share/rear/conf/default.conf
文件。
31.3 创建恢复安装系统 #
按照第 31.2 节所述配置 ReaR 后,创建恢复安装系统(包括 ReaR 恢复安装程序)和文件备份。
tar
备份方法创建恢复系统 #
运行 rear mkbackup
命令:
#
rear -d -D mkbackup
此命令会执行以下步骤:
分析目标系统并收集信息,尤其是有关磁盘布局(分区、文件系统、安装点)和引导加载程序的信息。
使用第一步收集的信息创建一个可引导恢复系统。生成的 ReaR 恢复安装程序专用于在发生灾难时要保护的系统。使用该安装程序只能重创建这个特定的系统。
调用内部备份工具备份系统文件和用户文件。
运行
rear mkrescue
命令:#
rear -d -D mkrescue
此命令会分析目标并创建恢复系统,但不会创建文件备份。
使用第三方备份工具创建文件备份。
31.4 测试恢复过程 #
创建恢复系统之后,在具有相同硬件的测试计算机上测试恢复过程。另请参见 第 31.1.4 节 “ReaR 要求”。确保测试计算机已正确设置,并可替代主计算机。
必须在计算机上全面测试灾难恢复过程。请定期测试恢复过程,确保一切按预期运行。
31.5 从灾难中恢复 #
如果灾难已发生,请根据需要更换任何受损的硬件。然后按照过程 31.1所述,使用已修复的计算机(或使用已经过测试可替代原始系统运作的相同计算机)继续操作。
rear recover
命令会执行以下步骤:
恢复磁盘布局(分区、文件系统和安装点)。
从备份中恢复系统和用户文件。
恢复引导加载程序。
31.6 更多信息 #
rear
手册页/usr/share/doc/packages/rear/