跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 升级指南 / 联机升级
适用范围 SUSE Linux Enterprise Server 15

5 联机升级

SUSE 提供了直观的图形工具和简单的命令行工具,供您将正在运行的系统升级到新服务包。它们提供回滚服务包支持及其他功能。本章将逐步介绍如何使用这些工具来执行服务包升级。

5.1 概念概述

SUSE 会定期发布用于 SUSE Linux Enterprise 系列的新服务包。为了方便客户迁移到新的服务包,并最大限度减少停机时间,SUSE 支持在系统运行时进行联机迁移。

从 SLE 12 开始,YaST Wagon 已经由 YaST 迁移 (GUI) 和 Zypper 迁移(命令行)替代。系统支持以下功能:

  • 系统在首个 RPM 更新之前始终处于指定的状态

  • 在首个 RPM 更新之前可以取消

  • 如果出现错误可以轻松恢复

  • 通过系统工具回滚;不需要备份/恢复

  • 使用所有活动储存库

  • 可以跳过服务包

警告
警告:不支持对主要版本进行联机迁移

支持在服务包之间进行联机迁移。不支持通过联机迁移升级到新的主要版本。有关细节,请参见第 1 章 “升级路径和方法

请通过脱机迁移升级到新的主要版本。有关细节,请参见第 4 章 “脱机升级

5.2 服务包迁移工作流程

服务包迁移可通过 YaST、zypper 或 AutoYaST 执行。

在开始服务包迁移之前,必须在 SUSE Customer Center 或本地 RMT 服务器中注册您的系统。也可以使用 SUSE Manager。

不论使用哪种方式,服务包迁移都包含以下步骤:

  1. 在注册系统中查找可能的迁移目标。

  2. 选择一个迁移目标。

  3. 请求并启用新的储存库。

  4. 运行迁移。

迁移目标列表取决于您所安装和注册的产品。如果您安装的扩展没有新的 SP 可用,则无法向您提供迁移目标。

主机可用的迁移目标列表将始终从 SUSE Customer Center 检索,并与安装的产品或扩展相关。

5.3 取消服务包迁移

服务包迁移只能在迁移过程中的特定阶段取消:

  1. 包升级过程开始之前,系统上只有极小的更改,例如服务和储存库的更改。恢复 /etc/zypp/repos.d/* 以便还原到之前的状态。

  2. 包升级过程开始之后,可以使用 Snapper 快照(请参见第 7 章 “通过 Snapper 进行系统恢复和快照管理)还原到之前的状态。

  3. 选择迁移目标之后,SUSE Customer Center 更改了储存库数据。要手动还原此状态,请使用 SUSEConnect --rollback

5.4 使用联机迁移工具 (YaST) 升级

要通过 YaST 执行服务包迁移,请使用联机迁移工具。默认情况下,YaST 不会从第三方储存库安装任何包。如果某包是从第三方储存库安装的,YaST 会阻止该包替换成来自 SUSE 的相同包。

注意
注意:减少安装大小

执行服务包迁移时,YaST 会安装所有推荐的包。特别是在自定义最小安装的情况下,这样可能会大幅增加系统的安装大小。

要更改这种默认行为,只允许安装所需的包,请调整 /etc/zypp/zypp.conf 并设置以下变量:

solver.onlyRequires = true
installRecommends=false # or commented

这会更改所有与包相关操作的行为,例如安装增补程序或新包的行为。

要开始服务包迁移,请执行以下操作:

  1. 停用注册服务器上所有未使用的扩展,以免将来发生依赖性冲突。YaST 稍后会检测未使用的扩展储存库并将其停用,以防您忘记了某个扩展。

  2. 如果您已登录到要更新的计算机上某个正在运行的 GNOME 会话,请切换到文本控制台。建议不要从 GNOME 会话运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 GNOME 运行 VNC 会话)。

  3. 如果您是 LTSS 订购者,请确保 LTSS 扩展储存库处于活动状态。

  4. 运行 YaST 联机更新以获得系统的最新包更新。

  5. 安装包 yast2-migration 及其依赖项(在 YaST 的软件 ›  软件管理下)。

  6. 重启动 YaST;如果不重启动,新安装的模块将不会显示在控制中心中。

  7. 在 YaST 中,选择联机迁移(根据要升级的 SUSE Linux Enterprise Server 版本,此模块会列于系统软件类别下)。YaST 将显示可能的迁移目标和摘要。如果有多个迁移目标可用于系统,请从列表中选择一个。

  8. 从列表中选择一个迁移目标,然后单击下一步继续。

  9. 如果迁移工具提供更新储存库,建议单击继续。

  10. 如果“联机迁移”工具找到来自 DVD 或本地服务器的过时储存库,强烈建议您将其禁用。过时储存库来自上一个服务包。系统会自动去除来自 SUSE Customer Center 或 RMT 的所有旧储存库。

  11. 单击下一步,查看摘要并继续迁移过程。确认开始更新

  12. 成功迁移后,请重启动系统。

5.5 使用 Zypper 升级

要用 Zypper 执行服务包迁移,请使用命令行工具 zypper migration(来自包 zypper-migration-plugin)。

注意
注意:减少安装大小

执行服务包迁移时,YaST 会安装所有推荐的包。特别是在自定义最小安装的情况下,这样可能会大幅增加系统的安装大小。

要更改这种默认行为,只允许安装所需的包,请调整 /etc/zypp/zypp.conf 并设置以下变量:

solver.onlyRequires = true
installRecommends=false # or commented

这会更改所有与包相关操作的行为,例如安装增补程序或新包的行为。要更改某次调用的 Zypper 行为,请在命令行上添加参数 --no-recommends

要开始服务包迁移,请执行以下操作:

  1. 如果您已登录到要更新的计算机上某个正在运行的 GNOME 会话,请切换到文本控制台。建议不要从 GNOME 会话运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 GNOME 运行 VNC 会话)。

  2. 注册 SUSE Linux Enterprise 计算机(如果尚未注册):

    tux > sudo SUSEConnect --regcode YOUR_REGISTRATION_CODE
  3. 如果您是 LTSS 订购者,请确保 LTSS 扩展储存库处于活动状态。

  4. 运行 zypper migration

    tux > sudo zypper migration
    Executing 'zypper  patch-check'
    
    Refreshing service 'SUSE_Linux_Enterprise_Server_12_x86_64'.
    Loading repository data...
    Reading installed packages...
    0 patches needed (0 security patches)
    
    Available migrations:
    
        1 | SUSE Linux Enterprise Server 12 SP1 x86_64
        2 | SUSE Linux Enterprise Server 12 SP2 x86_64

    有关迁移过程的一些备注:

    • 如果有多个迁移目标可用于系统,Zypper 会让您从列表中选择一个服务包。这与跳过一个或多个服务包一样。请注意,基础产品(SLES、SLED)的联机迁移仍然只适用于在主要版本的服务包之间进行。

    • 默认情况下,Zypper 会使用 --no-allow-vendor-change 选项,以传递到 zypper dup。如果某包是从第三方储存库安装的,此选项会阻止该包替换成来自 SUSE 的相同包。

    • 如果 Zypper 找到来自 DVD 或本地服务器的过时储存库,强烈建议您将其禁用。系统会自动去除旧的 SUSE Customer Center 或 RMT 储存库。

  5. 查看所有更改,特别是即将去除的包。键入 y(要升级的包的确切数目会根据系统的不同而变化)继续:

    266 packages to upgrade, 54 to downgrade, 17 new, 8 to reinstall, 5 to remove, 1 to change arch.
    Overall download size: 285.1 MiB. Already cached: 0 B  After the operation, additional 139.8 MiB will be used.
    Continue? [y/n/? shows all options] (y):

    使用 ShiftPage ↑ShiftPage ↓ 键在外壳中滚动。

  6. 成功迁移后,请重启动系统。

5.6 使用 Plain Zypper 升级

如果不能使用 YaST 迁移或 Zypper 迁移,您仍可以单纯通过 Zypper 并执行一些人工交互进行迁移。要开始服务包迁移,请执行以下操作:

  1. 如果您已登录到要更新的计算机上某个正在运行的 GNOME 会话,请切换到文本控制台。建议不要从 GNOME 会话运行更新。请注意,这并不适用于从远程计算机登录的情况(除非您正在使用 GNOME 运行 VNC 会话)。

  2. 用旧 SUSE Linux Enterprise 储存库更新包管理工具:

    tux > sudo zypper patch --updatestack-only
  3. 如果系统已注册,则需要先取消注册:

    tux > sudo SUSEConnect --de-register
  4. 去除旧安装源和储存库,并调整第三方储存库。

  5. 添加新的安装源,不论是本地的还是远程的(有关占位符 REPOSITORY,请参考第 2.3 节 “模块依赖项和生命周期”):

    sudo zypper addrepo REPOSITORY

    您也可以使用 SUSE Customer Center 或储存库管理工具。适用于 AMD64/Intel 64 上的 SUSE Linux Enterprise 12 SP1 的命令为:

    tux > sudo SUSEConnect -p SLES/12.2/x86_64 OPTIONS

    请注意,系统不支持跨体系结构升级。

    Zypper 将显示新旧内核之间的冲突。选择解决方案 1 继续。

    Problem: product:SLES-12.2-0.x86_64 conflicts with kernel < 4.4 provided by kernel-default-VERSION
     Solution 1: Following actions will be done:
      replacement of kernel-default-VERSION with kernel-default-VERSION
      deinstallation of kernel-default-VERSION
     Solution 2: do not install product:SLES-12.2-0.x86_64
  6. 完成迁移:

    tux > sudo zypper ref -f -s
    tux > sudo zypper dup --no-allow-vendor-change --no-recommends

    第一个命令会更新所有服务和储存库。第二个命令会执行发行套件升级。在这里,最后两个选项比较重要:-no-allow-vendor-change 确保第三方 RPM 不会重写基础系统中的 RPM。--no-recommends 选项可确保初始安装过程中取消选择的包不会再次被添加。

5.7 回滚服务包

如果服务包对于您而言不起作用,则 SUSE Linux Enterprise 支持将系统恢复到开始服务包迁移之前的状态。前提是对 Btrfs 根分区启用了快照(这是安装 SLES 12 时的默认设置)。有关详细信息,请参见第 7 章 “通过 Snapper 进行系统恢复和快照管理

  1. 获取所有 Snapper 快照的列表:

    tux > sudo snapper list

    查看输出以找到在开始服务包迁移之前刚创建的快照。Description 列包含相应的声明,并且 Userdata 列中会将该快照标记为 important。记住 # 列中的快照编号,以及 Date 列中该快照的日期。

  2. 重引导系统。从引导菜单中选择从只读快照启动引导加载程序,然后选择上一步中记下的日期和编号所对应的快照。此时会装载第二个引导菜单(快照中的那个)。选择以 SLES 12 开头的项并引导它。

  3. 系统会引导到先前的状态,并且系统分区会以只读方式装入。以 root 身份登录,并检查您是否选择了正确的快照。另外,请确保一切如常。请注意,由于根文件系统是以只读方式装入的,因此功能可能受限。

    如果出现问题,或者您引导了错误的快照,请重新引导并选择从另一个快照引导 — 到此为止,系统尚未进行任何永久更改。如果快照正确并且按预期工作,请运行以下命令让更改永久生效:

    tux > sudo snapper rollback

    然后重引导。在引导屏幕上,选择默认的引导项以重引导至恢复后的系统。

  4. 检查是否已正确重设置储存库配置。另外,检查是否所有产品均已正确注册。如果以上任何一项不正确,则稍后可能无法再有效地执行系统更新,或者可能会使用错误的包储存库更新系统。

    请先确保系统可以访问因特网,再开始此过程。

    1. 运行以下命令以刷新服务和储存库:

      tux > sudo zypper ref -fs
    2. 运行以下命令以获得活动的储存库列表:

      tux > sudo zypper lr

      仔细检查此命令的输出。为此次更新添加的服务和储存库不应该包含在列表中。例如,如果您是从 SLES 12 SP1 回滚到 SLES 12 SP2,则列表中必须包含 SP1 储存库,而不包含 SLES12-SP2-PoolSLES12-SP2-Updates 储存库。

      如果列出了错误的储存库,请将其删除,必要时,请用与您的产品或服务包版本匹配的版本替换它们。有关受支持迁移路径的储存库列表,请参见第 2.3 节 “模块依赖项和生命周期”

    3. 最后,通过运行以下命令检查所有已安装产品的注册状态:

      tux > sudo SUSEConnect --status

      所有产品都应该报告为已注册。若非如此,请运行以下命令修复注册:

      tux > sudo SUSEConnect --rollback

现在,您已成功将系统恢复到就在开始服务包迁移之前捕获的状态。

5.8 从 openSUSE Leap 迁移到 SUSE Linux Enterprise Server

可将 openSUSE 安装联机迁移到 SUSE Linux Enterprise Server。此过程与第 5.5 节 “使用 Zypper 升级”类似,但需要执行一些额外的步骤。我们建议先在与生产设置相同的测试系统上运行此过程,然后再在生产系统中执行。

要查看支持迁移的 openSUSE Leap 版本,请阅读第 1.1 节 “支持的 SLE 15 升级路径”

警告
警告:并非所有 openSUSE 包都可迁移

openSUSE 储存库提供的包比 SUSE Linux Enterprise Server 储存库提供的包要多。如果您安装了 openSUSE 储存库中的任何包,迁移后,它们将不再会接收更新。如果执行下面的过程,将会去除这些包。

请确保 SUSE Linux Enterprise Server 储存库中提供了运行系统所需的全部包。您也可以检查 SUSE Package Hub 储存库中是否提供了这些包。有关细节,请参见第 18.3 节 “SUSE Package Hub”

要从 openSUSE Leap 迁移,请执行以下过程:

  1. 切换到 TTY,例如,按 CtrlAltF1。然后以 root 身份登录。

  2. 安装 SUSEConnect

    root # zypper in SUSEConnect
  3. 下载安装 DVD ISO 文件并装入到系统中。然后导入 SLE 的储存库密钥。

    root # mount /PATH/TO/ISO_FILE /mnt
    root # rpm  --import /mnt/repodata/repomd.xml.key
    root # umount /mnt
  4. 在 SCC 中注册,以获取 SUSE Linux Enterprise Server 储存库。

    root # SUSEConnect -r REGISTRATION_CODE -p SLES/PRODUCT_VERSION/ARCHITECTURE

    PRODUCT_VERSION 替换为 SUSE Linux Enterprise Server 的目标版本,例如 15.0

    ARCHITECTURE 替换为系统的体系结构,例如 x86_64AArch64

    忽略有关产品冲突的错误讯息。

  5. 现在手动添加 SLES 产品。

    root # zypper in --force-resolution -t product SLES

    y 确认包选择。

  6. 列出然后去除系统上的所有 openSUSE 储存库。

    root # zypper lr
    root # zypper rr [REPOSITORY_IDS]
  7. 现在,添加安装所需的模块。

    root # SUSEConnect --list-extensions
    [...]
    root # SUSEConnect -p sle-module-basesystem/VERSION/ARCHITECTURE
  8. 将安装的包迁移到 SUSE Linux Enterprise Server 储存库。

    root # zypper dup --force-resolution

    下载后,文件冲突可能会显示出来。确认这些冲突是否对您有影响,然后键入 yes 继续。

  9. 可选:添加其他储存库(例如 Package Hub),然后再次运行 zypper dup

  10. 去除孤立的包。

    root # zypper rm $(zypper packages --orphaned | gawk '{print $5}' | tail -n +7)
  11. 最后,重引导系统。