Red Hat Training

A Red Hat training course is available for RHEL 8

第 12 章 使用快照管理系统升级

作为系统管理员,您可以使用 Boom 引导管理器、Leapp 实用程序和 OS 现代化框架对 Red Hat Enterprise Linux 系统执行回滚的升级。

这个用户故事中提到的程序有以下限制:

  • 它不适用于您的系统树中的多个文件系统,例如:一个独立的 /var 或者 /usr 分区。
  • 它不适用于 RHUI 系统。考虑创建虚拟机的快照,而不是使用 Boom 工具。
  • 目前,此用户案例仅涵盖具有传统 BIOS 和 Intel 架构的现场系统。您只能在使用 BIOS 进行引导的 Red Hat Enterprise Linux 7 系统中使用它。

12.1. Boom 过程概述

使用 Boom,您可以创建引导条目,然后可从 GRUB 2 引导装载程序菜单中选择这些条目。通过创建引导条目,现在简化了回滚功能升级的准备过程。

以下是不同的引导条目,它们是升级和回滚过程的一部分:

Upgrade boot entry
引导 Leapp 升级环境。使用 leapp 实用程序创建和管理这个引导条目。这个引导条目会在 leapp 升级过程中自动删除。
Red Hat Enterprise Linux 8 boot entry
引导升级的系统环境。使用 leapp 实用程序在成功升级后创建此引导条目。
Snapshot boot entry
引导原始系统的快照,并可用于在升级尝试成功或失败后检查和测试以前的系统状态。在升级系统前,使用 boom 命令创建此引导条目。
Rollback boot entry
引导原始系统环境,并将任何升级回滚到以前的系统状态。在启动升级过程的回滚时,使用 boom 命令创建此引导条目。

可使用以下流程进行可回滚的升级,而无需编辑任何配置文件:

  1. 创建 root 文件系统的快照或副本。
  2. 使用 boom 命令为当前(旧的)环境创建引导条目。
  3. 升级 Red Hat Enterprise Linux 系统。
  4. 重启系统,然后选择要使用的版本。

根据更新过程的结果,应当在流程结束时清理 Red Hat Enterprise Linux 8、快照和回滚条目:

  • 如果要保留更新的 Red Hat Enterprise Linux 8 系统,使用 boom 命令删除创建的快照和回滚条目,并使用 lvremove 命令删除快照逻辑卷。更多信息请参阅 第 12.4 节 “删除快照”
  • 如果要回滚到原始系统状态,合并快照和回滚引导条目,并在系统重启后删除未使用的快照和回滚引导条目。更多信息请参阅 第 12.5 节 “创建回滚引导条目”

其它资源

  • boom man page。

12.2. 使用 Boom 升级到另一个版本

除了 Boom 外,升级过程中还会使用以下 Red Hat Enterprise Linux 组件:

  • 逻辑卷管理器(LVM)
  • GRUB 2 引导装载程序
  • Leapp 升级工具

这个步骤描述了如何使用 boom 命令从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。

先决条件

  • 安装 boom 软件包:

    # yum install lvm2-python-boom

    确保 lvm2-python-boom 软件包的版本至少为 boom-0.9 (最好为 boom-1.2)。

    注意

    如果要在 Red Hat Enterprise Linux 8 中安装 boom 软件包,请执行以下命令:

    # yum install boom-boot
  • 快照必须有足够的空间。使用以下命令在卷组和逻辑卷中查找可用空间:

    # vgs
    VG  #PV  #LV  #SN  Attr  VSize    VFree
    rhel 4 2 0 wz--n- 103.89g 29.99g
    
    # lvs
    LV     VG    Attr     LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    root rhel -wi-ao--- 68.88g
    swap rhel -wi-ao--- 5.98g

    在这里,rhel 是系统的卷组,rootswap 是系统逻辑卷。

  • 查找所有挂载的逻辑卷:

    # mount | grep rhel
    
    /dev/mapper/rhel-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
    注意

    如果存在多个条目,且附加条目的挂载点包括 '/usr' 或 '/var',则无法遵循以上步骤而不执行超出这个用户权限的附加步骤。

  • 已安装 Leapp 软件包并启用软件程序库。如需更多信息,请参阅为升级准备 RHEL 7 系统部分,以下载升级所需的软件包。

流程

  1. 创建您的 root 逻辑卷快照:

    • 如果您的 root 文件系统使用精简置备,请创建一个精简快照:

      在创建精简快照时,请不要定义快照大小。从精简池中分配快照。

      # lvcreate -s rhel/root -n root_snapshot_before_changes

      在这里:

      • -s 用于创建快照
      • rhel/root 是在逻辑卷中复制的文件系统
      • -n root_snapshot_before_changes 是快照的名称
    • 如果您的 root 文件系统使用密集置备,请创建一个厚快照:

      在创建粘性快照时,定义可在升级过程中保存所有更改的快照大小。

      # lvcreate -s  rhel/root -n root_snapshot_before_changes -L 25g

      在这里:

      • -s 用于创建快照
      • rhel/root 正在复制的文件系统
      • -n root_snapshot_before_changes 是快照的名称
      • -L 25g 是快照大小。这个快照必须可以保存升级过程中的所有更改

        重要

        创建快照后,不会包含任何附加系统更改。

  2. 创建配置集:

    # boom profile create --from-host --uname-pattern el7
    注意

    如果要在 Red Hat Enterprise Linux 8 中创建 boom 配置集,使用 el8 作为 uname-pattern。

  3. 使用原始引导镜像的备份副本创建原始系统的快照引导条目:

    1. 对于 boom-1.2 或更高版本:

      # boom create --backup --title "Root LV snapshot before changes" --rootlv rhel/root_snapshot_before_changes

      在这里:

      • --title 更改之前 root LV 快照是引导条目的名称,在系统启动期间显示在列表中
      • --rootlv 是与新引导条目对应的 root 逻辑卷
    2. 对于 boom-1.1 或更早的版本:

      # cp /boot/vmlinuz-$(uname r) /boot/vmlinuz$(uname -r).bak
      
      # cp /boot/initramfs-$(uname r).img /boot/initramfs$(uname -r).img.bak
      
      # boom create -title "Root LV snapshot before changes" --rootlv rhel/root_snapshot_before_changes --linux /boot/vmlinuz$(uname r).bak --initrd /boot/initramfs$(uname -r).img.bak

      如果您首次执行 boom create 命令,则会显示以下消息:

      WARNING - Boom configuration not found in grub.cfg
      
      WARNING - Run 'grub2-mkconfig > /boot/grub2/grub.cfg' to enable

      在 GRUB 2 中启用 Boom:

      # grub2-mkconfig > /boot/grub2/grub.cfg
  4. 使用 Leapp 实用程序升级到 Red Hat Enterprise Linux 8:

    # leapp preupgrade

    如果 leapp preupgrade 命令报告有任何阻塞,则检查和地址。

  5. 解决预升级报告中指定的块后,使用 --reboot 选项重新运行 upgrade 命令:

    # leapp upgrade --reboot

    这个命令会重启到 leapp 工具创建的升级引导条目,并开始执行到 Red Hat Enterprise Linux 8 的原位升级。reboot 参数会在升级过程后启动自动系统重启。

    在重启过程中,GRUB 2 屏幕会显示:

    GRUB2 显示
    注意

    如果您在 Red Hat Enterprise Linux 8 系统中,GRUB2 引导屏幕中的 Snapshots 子菜单不可用。

验证步骤

  • 选择 RHEL Upgrade Initramfs 条目并按 ENTER。继续升级并安装新的 Red Hat Enterprise Linux 8 RPM 软件包。升级完成后,系统会自动重启,GRUB 2 屏幕会显示升级的和旧版本的可用系统。升级的系统版本是默认选择。

    在新版本和旧版本间切换

    另外,存在更改引导条目前创建的 Root LV 快照,它会在升级前即时访问系统状态。

12.3. 在新的和旧的 Red Hat Enterprise Linux 版本间切换

Boom 引导管理器减少了与升级系统相关的风险,并帮助减少硬件停机时间。例如:您可以将 Red Hat Enterprise Linux 7 系统升级到 Red Hat Enterprise Linux 8,同时保留原始 Red Hat Enterprise Linux 7 环境。通过在环境间进行切换,您可以:

  • 以并排方式快速比较这两个环境,并以最少的开销在两者之间切换。
  • 恢复旧的文件系统的内容。
  • 在升级的主机正在运行时继续访问旧的系统。
  • 随时停止并恢复更新过程,即使更新本身正在运行。

这个步骤描述了如何在升级完成后在新的和旧的 Red Hat Enterprise Linux 版本间切换。

先决条件

流程

  1. 重启系统:

    # reboot
  2. 从 GRUB 2 引导装载程序屏幕选择所需引导条目。

    在新版本和旧版本间切换

验证步骤

  • 验证所选引导卷是否已显示:

    # cat /proc/cmdline
    
    root=/dev/rhel/root_snapshot_before_changes ro rd.lvm.lv=rhel/root_snapshot_before_changes rd.lvm.lv=vg_root/swap rhgb quiet

其它资源

  • boom man page。

12.4. 删除快照

快照引导条目引导原始系统的快照,并可用于在升级尝试成功或失败后检查并测试以前的系统状态。这个步骤描述了删除快照的步骤。

先决条件

流程

  1. 从 GRUB 2 条目引导 Red Hat Enterprise Linux 8。以下输出确认选择了新的快照:

    # boom list
    BootID  Version                    Name                            RootDevice
    6d2ec72 3.10.0-957.21.3.el7.x86_64 Red Hat Enterprise Linux Server /dev/rhel/root_snapshot_before_changes
  2. 使用 BootID 值删除快照条目:

    # boom delete --boot-id 6d2ec72

    这会从 GRUB 2 菜单中删除该条目。

  3. 删除 LV 快照:

    # lvremove rhel/root_snapshot_before_changes
    Do you really want to remove active logical volume rhel/root_snapshot_before_changes? [y/n]: y
          Logical volume "root_snapshot_before_changes" successfully removed

    其它资源

    • boom man page。

12.5. 创建回滚引导条目

回滚引导条目引导原始系统环境,并将任何升级回滚到以前的系统状态。检查后将升级的和回滚引导条目恢复到原始环境,现在可以通过快照引导条目获得。

可以从升级的系统或快照环境中准备回滚引导条目。

先决条件

流程

  1. 合并快照:

    # lvconvert --merge rhel/root_snapshot_before_changes
  2. 为合并的快照创建一个回滚引导条目:

    1. 对于 boom-1.2 或更高版本:

      boom create --backup --title "RHEL Rollback" --rootlv rhel/root
    2. 对于 boom-1.1 或更早的版本:

      boom create --title "RHEL Rollback" --rootlv rhel/root --linux /boot/vmlinuz$(uname r).bak --initrd /boot/initramfs$(uname -r).img.bak
  3. 可选:引导回滚环境并恢复系统状态:

    # reboot

    系统重启后,使用箭头键选择RHEL Rollback 引导条目,然后按 Enter 键引导此条目

    激活 root 逻辑卷后,系统会自动启动快照合并操作。

    注意

    启动合并操作后,快照卷将不再可用。在成功引导 RHEL Rollback 引导条目后, 修改引导条目前 Root LV 快照 无法正常工作,因为它现在已合并到原始逻辑卷中。合并快照逻辑卷,销毁快照并恢复原始卷之前的状态。

  4. 可选:完成合并操作后,删除未使用的条目并恢复原始引导条目:

    1. /boot 文件系统中删除未使用的 Red Hat Enterprise Linux 8 引导条目并刷新 Grub2 配置:

      # rm -f /boot/el8
      # grub2-mkconfig -o /boot/grub2/grub.cfg
    2. 恢复原始 Red Hat Enterprise Linux 7 引导条目:

      # new-kernel-pkg --update $(uname -r)
  5. 成功回滚到系统后,删除 boom 引导条目:

    # boom list
    # boom delete boot-id

其它资源

  • boom man page。