跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 部署指南 / 更新和升级 SUSE Linux Enterprise / 升级 SUSE Linux Enterprise
适用范围 SUSE Linux Enterprise Server 12 SP5

19 升级 SUSE Linux Enterprise

SUSE® Linux Enterprise (SLE) 允许将现有系统升级到新版本。不需新安装。主目录和数据目录以及系统配置等现有数据将保持不变。您可以从本地 CD 或 DVD 驱动器或从中央网络安装源进行更新。

本章介绍如何通过 DVD、网络、自动化过程或 SUSE Manager 手动升级 SUSE Linux Enterprise 系统。

19.1 支持的 SLE 12 SP5 升级路径

支持的升级路径概述
图 19.1︰ 支持的升级路径概述
重要
重要:不支持跨体系结构升级

支持跨体系结构升级!例如从 32 位版本的 SUSE Linux Enterprise Server 升级到 64 位版本,或者从大字节序升级到小字节序。

具体地说,支持从 SLE 11 on POWER(大字节序)升级到 SLE 12 SP2 on POWER(新增:小字节序)。

另外,由于 SUSE Linux Enterprise 12 只有 64 位版本,因此支持从任何 32 位 SUSE Linux Enterprise 11 系统升级到 SUSE Linux Enterprise 12 和更高版本。

要跨体系结构升级,需执行全新安装。

注意
注意:跳过服务包

最安全的升级路径是逐步连续地安装所有服务包。在某些情况下,支持在升级时跳过一到两个服务包,有关细节,请参见每个版本支持的升级路径图 19.1 “支持的升级路径概述”。但建议不要跳过任何服务包。

注意
注意:升级到主要版本

建议您通过执行全新安装来升级到新的主要版本。

每个版本支持的升级路径
从 SUSE Linux Enterprise 10(任何服务包)升级

不支持直接迁移到 SUSE Linux Enterprise 12。在此情况下,建议执行全新安装。

从 SUSE Linux Enterprise 11 GA/SP1/SP2/SP3 升级

不支持直接迁移到 SUSE Linux Enterprise 12。您的版本至少需为 SLE 11 SP4,才能升级到 SLE 12 SP5。

如果您不能执行全新安装,请先将已安装的 SLE 11 服务包升级到 SLE 11 SP4。《SUSE Linux Enterprise 11 部署指南》中说明了这些步骤:https://documentation.suse.com/sles-11/

从 SUSE Linux Enterprise 11 SP4 升级

只有通过脱机升级才能从 SLE 11 SP5 升级到 SLE 12 SP4。有关详细信息,请参见第 20 章 “脱机升级

从 SUSE Linux Enterprise 12 GA/SP1/SP2 升级到 SP5

不支持从 SLE 12 GA、SP1 或 SP2 直接升级到 SP5。请先升级到 SLE 12 SP3 或 SP4。

从 SUSE Linux Enterprise 12 SP3/SP4 升级到 SP5

支持从 SUSE Linux Enterprise 12 SP3 或 SP4 升级到 SP5。

从 SUSE Linux Enterprise 12 LTSS GA/SP1 升级到 SP5

不支持从 SUSE Linux Enterprise 12 LTSS GA 或 SP1 直接升级到 SP5。请先升级到 SLE 12 LTSS SP2。

从 SUSE Linux Enterprise 12 LTSS SP2/SP3/SP4 升级到 SP5

支持从 SUSE Linux Enterprise 12 LTSS SP2、SP3 或 SP4 升级到 SP5。

19.2 联机和脱机升级

SUSE 支持两种不同的升级和迁移方法。有关术语的详细信息,请参见第 18.1 节 “术语”。这些方法是:

联机

从正在运行的系统中执行的所有升级均视为联机升级。示例:使用 Zypper 或 YaST 通过 SUSE Customer Center、Subscription Management Tool (SMT) 或 SUSE Manager 连接。

在同一主要版本的服务包之间迁移时,建议使用下面两种方法:第 21.4 节 “使用联机迁移工具 (YaST) 升级”第 21.5 节 “使用 Zypper 升级”

脱机

脱机方法通常会引导另一个操作系统,从中升级已安装的 SLE 版本。示例有:DVD、闪存盘、ISO 映像、AutoYaST、纯 RPM或 PXE 引导。

重要
重要:SUSE Manager 客户端

如果您的计算机由 SUSE Manager 管理,则应在管理界面中启动升级过程。有关详细信息,请参见 第 20.6 节 “通过 SUSE Manager 更新”

19.3 准备系统

在开始升级过程之前,请确保您的系统已准备妥当。这些准备工作包括备份数据,查看发行说明,以及其他工作。

19.3.1 确保当前系统是最新的

仅支持从最新的增补级别升级系统。运行 zypper patch 或启动 YaST 模块 Online-Update,以确保已安装最新的系统更新。

19.3.2 阅读发行说明

在发行说明中,您可以找到有关自 SUSE Linux Enterprise Server 的上一个版本发行后所进行的更改的其他信息。检查发行说明以了解:

  • 您的硬件是否有特殊的注意事项;

  • 所用的任何软件包是否已发生重大更改;

  • 是否需要对您的安装实施特殊预防措施。

发行说明还提供未能及时编入手册中的信息。它们还包含有关已知问题的说明。

如果您跳过了一个或多个服务包,另请检查所跳过服务包的发行说明。发行说明通常只包含两个连续的版本之间的更改。如果您只阅读最新的发行说明,可能会了解不到某些重大更改。

本地的 /usr/share/doc/release-notes 目录中或 https://www.suse.com/releasenotes/ 网页上会提供发行说明。

19.3.3 创建备份

在更新之前,请将现有配置文件复制到单独一个媒体(如磁带设备、可卸硬盘等)上,用以备份数据。这主要适用于储存在 /etc 中的文件以及 /var/opt 中的一些目录和文件。最好将 /homeHOME 目录)中的用户数据也写入备份媒体。以 root 用户的身份备份此数据。仅 root 用户对所有本地文件具有读许可权限。

如果您已在 YaST 中选择更新现有系统作为安装模式,则可以选择在以后的某个时间执行(系统)备份。您可以选择包含所有已修改的文件以及 /etc/sysconfig 目录中的文件。但是,此备份尚不完整,因为缺少了上述所有其他重要目录。在 /var/adm/backup 目录中查找备份。

19.3.3.1 列出已安装的包和储存库

已安装包列表通常很有用,例如,在全新安装某个新的主要 SLE 版本或恢复到旧版本时就是如此。

请注意,并非所有已安装的包或使用的储存库在 SUSE Linux Enterprise 的较新版本中都可用。有些包或储存库可能已被重命名,有些可能已被取代。还有可能提供的一些包只是用于旧版,而默认会使用另一个替代它的包。因此,可能需要手动编辑一些文件。您可使用任何文本编辑器进行编辑。

创建包含所有使用的储存库列表的文件 repositories.bak

root # zypper lr -e repositories.bak

另外,创建包含所有已安装包的列表的文件 installed-software.bak

root # rpm -qa --queryformat '%{NAME}\n' > installed-software.bak

备份这两个文件。使用以下命令可恢复储存库和已安装的包:

root # zypper ar repositories.bak
root # zypper install $(cat installed-software.bak)
注意
注意: 更新到新主要版本后,包数量也随之增加

升级到新主要版本的系统 (SLE X+1) 包含的包可能会比初始系统 (SLE X) 的多,也会比选择相同模式执行的 SLE X+1 全新安装所包含的包多。原因如下:

  • 包经过拆分,以便用户能以更高的粒度选择包。例如,SLE 11 上的 37 个 texlive 包已拆分成 SLE 12 上的 422 个包。

  • 将某个包拆分成其他包后,在升级过程中会安装所有新包,以与旧版本保持相同的功能。但是,SLE X+1 全新安装的新默认设置可能不会安装所有包。

  • 出于兼容原因,可能会保留 SLE X 中的旧包。

  • 包依赖项和模式范围可能已发生变化。

19.3.4 迁移 MySQL 数据库

从 SUSE Linux Enterprise 12 开始,SUSE 已从 MySQL 转移到 MariaDB。在开始任何升级操作之前,强烈建议您备份数据库。

要进行数据库迁移,请执行以下操作:

  1. 登录到 SUSE Linux Enterprise 11 计算机。

  2. 创建转储文件:

    root # mysqldump -u root -p --all-databases > mysql_backup.sql

    默认情况下,mysqldump 不会转储 INFORMATION_SCHEMAperformance_schema 数据库。有关详细信息,请参见 https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

  3. 将您的转储文件、配置文件 /etc/my.cnf 以及 /etc/mysql/ 目录储存在安全位置,以供日后调查(不要用于安装!)。

  4. 执行升级。升级后,以前的配置文件 /etc/my.cnf 仍将保持不变。新配置保存在 /etc/my.cnf.rpmnew 文件中。

  5. 根据需要配置 MariaDB 数据库。不要使用以前的配置文件和目录,只是将其用作提醒,并对其进行改编。

  6. 确保启动 MariaDB 服务器:

    root # systemctl start mysql

    如果您希望每次引导时都启动 MariaDB 服务器,请启用以下服务:

    root # systemctl enable mysql
  7. 通过连接数据库来校验 MariaDB 是否正常运行:

    root # mysql -u root -p

19.3.5 迁移 PostgreSQL 数据库

较新版本的 PostgreSQL 数据库以维护更新的形式随附。由于需要完成数据库的迁移工作,因此无法使用自动升级过程。您需要手动完成从一个版本到另一个版本的转移。

迁移过程通过使用 pg_upgrade 命令执行,这种方法可替代传统的转储和重新装载。与转储并重新装载方法相比,pg_upgrade 可以减少迁移耗费的时间。

每个 PostgreSQL 版本的程序文件储存在不同版本的相关目录中。例如,/usr/lib/postgresql96/ 对应于版本 9.6,/usr/lib/postgresql10/ 对应于版本 10。请注意,PostgreSQL 主要版本 9.6 与 10 的版本控制策略有所不同。有关详细信息,请参见 https://www.postgresql.org/support/versioning/

重要
重要:从 SLE 11 升级

从 SLE 11 升级时,postgresql94 将被卸装,不可用于将数据库迁移到更高的 PostgreSQL 版本。因此,在这种情况下,请确保先迁移 PostgreSQL 数据库,然后再升级系统。

以下过程描述如何将数据库从版本 9.6 迁移到版本 10。使用不同的版本作为起始或目标时,请相应地替换版本号。

要进行数据库迁移,请执行以下操作:

  1. 确保满足以下先决条件:

    • 如果尚未通过维护更新将旧 PostgreSQL 版本的任何包升级到最新版本,请执行该操作。

    • 创建现有数据库的备份。

    • 安装新 PostgreSQL 主要版本的包。对于 SLE12 SP5,这意味着要安装 postgresql10-server 及其依赖的所有包。

    • 安装包 postgresql10-contrib, 其中包含命令 pg_upgrade

    • 确保 PostgreSQL 数据区域(默认为 /var/lib/pgsql/data)中有足够的可用空间。如果空间不足,请对每个数据库使用以下 SQL 命令,以尝试减少大小(这可能需要花费很长时间!):

      VACUUM FULL
  2. 使用以下任一命令停止 PostgreSQL 服务器:

    root # /usr/sbin/rcpostgresql stop

    或者

    root # systemctl stop postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  3. 重命名旧数据目录:

    root # mv /var/lib/pgsql/data /var/lib/pgsql/data.old
  4. 使用 initdb 手动初始化新的数据库实例,或者启动再停止 PostgreSQL 让数据库实例自动初始化:

    root # /usr/sbin/rcpostgresql start
    root # /usr/sbin/rcpostgresql stop

    或者

    root # systemctl start postgresql.service
    root # systemctl stop postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  5. 如果您在旧版本中更改了配置文件,请考虑将这些更改转移到新配置文件。可能受影响的文件包括 postgresql.auto.confpostgresql.confpg_hba.confpg_ident.conf。这些文件的旧版本位于 /var/lib/pgsql/data.old/ 中,新版本可在 /var/lib/pgsql/data 中找到。

    请注意,不建议只是复制旧配置文件,因为这可能会重写新选项、新默认值和更改后的注释。

  6. postgres 用户身份启动迁移过程:

    root # su - postgres
    postgres > pg_upgrade \
       --old-datadir "/var/lib/pgsql/data.old" \
       --new-datadir "/var/lib/pgsql/data" \
       --old-bindir "/usr/lib/postgresql96/bin/" \
       --new-bindir "/usr/lib/postgresql10/bin/"
  7. 使用以下任一命令启动新数据库实例:

    root # /usr/sbin/rcpostgresql start

    或者

    root # systemctl start postgresql.service

    (取决于要用作升级起始版本的 SLE 版本)。

  8. 检查迁移是否成功。测试范围取决于用例。没有通用的工具可用来自动执行此步骤。

  9. 去除所有旧 PostgreSQL 包和旧数据目录:

    root # zypper search -s postgresql96 | xargs zypper rm -u
    root # rm -rf /var/lib/pgsql/data.old

19.3.6 创建用于 Java 应用程序的非 MD5 服务器证书

从 SP1 更新到 SP2 期间,在安全性修复时禁用了基于 MD5 的证书。如果您之前创建的证书是 MD5 证书,请执行以下步骤重新创建证书:

  1. 打开终端窗口并以 root 身份登录。

  2. 创建一个私用密钥:

    root # openssl genrsa -out server.key 1024

    如果需要强度更高的密钥,请将 1024 替换为更大的数字,例如 4096

  3. 创建证书签名请求 (CSR):

    root # openssl req -new -key server.key -out server.csr
  4. 对证书自我签名:

    root # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  5. 创建 PEM 文件:

    root # cat server.key server.crt > server.pem
  6. server.crtserver.csrserver.keyserver.pem 文件放在可在其中找到密钥的相应目录中。例如,对于 Tomcat,此目录为 /etc/tomcat/ssl/

19.3.7 关闭虚拟机 Guest

如果您的计算机充当 KVM 或 Xen 的 VM 主机服务器,请确保在更新之前关闭所有正在运行的 VM Guest。否则,更新后您可能无法访问 guest。

19.3.8 调整 SMT 客户端设置

如果您要升级的计算机已注册为 SMT 服务器的客户端,请注意以下事项:

检查主机上的 clientSetup4SMT.sh 脚本版本是否是最新的。较旧版 SMT 的 clientSetup4SMT.sh 无法管理 SMT 12 客户端。如果您在 SMT 服务器上定期应用软件增补程序,那么位于 <SMT 主机名>/repo/tools/clientSetup4SMT.sh 处的 clientSetup4SMT.sh 始终都是最新版本。

如果将计算机升级到更高版本的 SUSE Linux Enterprise Server 失败,请根据过程 19.1中所述,从 SMT 服务器中取消注册该计算机。然后重启动升级过程。

过程 19.1︰ 从 SMT 服务器中取消注册 SUSE Linux Enterprise 客户端
  1. 登录客户端计算机。

  2. 以下步骤根据客户端的当前操作系统而异:

    • 对于 SUSE Linux Enterprise 11,请执行以下命令:

      tux > sudo suse_register -E
      tux > sudo rm -f /etc/SUSEConnect
      tux > sudo rm -rf /etc/zypp/credentials.d/*
      tux > sudo rm -rf /etc/zypp/repos.d/*
      tux > sudo rm -f /etc/zypp/services.d/*
      tux > sudo rm -f /var/cache/SuseRegister/*
      tux > sudo rm -f /etc/suseRegister*
      tux > sudo rm -f /var/cache/SuseRegister/lastzmdconfig.cache
      tux > sudo rm -f /etc/zmd/deviceid
      tux > sudo rm -f /etc/zmd/secret
    • 对于 SUSE Linux Enterprise 12,请执行以下命令:

      tux > sudo SUSEConnect --de-register
      tux > sudo SUSEConnect --cleanup
      tux > sudo rm -f /etc/SUSEConnect
      tux > sudo rm -rf /etc/zypp/credentials.d/*
      tux > sudo rm -rf /etc/zypp/repos.d/*
      tux > sudo rm -f /etc/zypp/services.d/*
  3. 登录 SMT 服务器。

  4. 通过列出所有客户端注册,检查是否已成功取消注册该客户端:

    tux > sudo smt-list-registrations
  5. 如果该客户端的主机名仍旧列在此命令的输出中,请从第一列获取该客户端的唯一 ID。(可能列出了该客户端的多个 ID。)

  6. 删除此客户端的注册:

    tux > sudo smt-delete-registration -g UNIQUE_ID
  7. 如果列出了该客户端的多个 ID,请针对每个唯一 ID 重复上述步骤。

  8. 重新运行以下命令,检查现在是否已成功取消注册该客户端:

    tux > sudo smt-list-registrations

19.3.9 磁盘空间

从旧版本到新版本,软件的大小有增长的趋势。因此,在进行更新之前,请查看可用分区空间。如果您怀疑磁盘空间不足,请先备份数据,再通过调整分区大小等方法来增大可用空间。对于每个分区应该具有多少空间,没有一般的经验可以借鉴。空间要求取决于特定的分区配置文件和选定的软件。

注意
注意:在 YaST 中自动检查是否有足够空间

在更新过程中,YaST 会检查可用磁盘空间的容量,并在安装大小可能超出可用空间时向用户显示警告。在该情况下,执行更新会导致系统不可用!只有在您完全了解自己要进行的操作的情况下(通过事先测试),才能跳过警告继续更新。

19.3.9.1 检查非 Btrfs 文件系统上的磁盘空间

使用 df 命令可列出可用磁盘空间。例如,在例 19.1 “使用 df -h 列示信息”中,根分区为 /dev/sda3(作为 / 装入)。

例 19.1︰ 使用 df -h 列示信息
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda3       74G   22G   53G  29% /
tmpfs          506M     0  506M   0% /dev/shm
/dev/sda5      116G  5.8G  111G   5% /home
/dev/sda1       44G    4G   40G   9% /data

19.3.9.2 检查 Btrfs 根文件系统上的磁盘空间

如果您在计算机上使用 Btrfs 作为根文件系统,请确保有足够的可用空间。在最坏的情况下,升级进程需要将当前根文件系统的所有磁盘空间(不含 /.snapshot)用于存放新快照。要显示可用的磁盘空间,请使用以下命令:

root # df -h /

另外请检查所有其他装入分区上的可用空间。下列建议已证实值得采纳:

  • 包含 Btrfs 在内的所有文件系统需有足够的可用磁盘空间用于下载和安装大型 RPM。旧 RPM 的空间只会在新 RPM 安装之后释放。

  • 对于包含快照的 Btrfs,至少需要有当前安装任务所需的可用空间。建议提供两倍于当前安装大小的可用空间。

    如果没有足够的可用空间,您可以尝试使用 snapper 删除旧快照:

    root # snapper list
    root # snapper delete NUMBER

    但这种做法并不总是有用。在迁移之前,大多数快照只会占用极少的空间。

19.3.10 暂时禁用内核多版本支持

SUSE Linux Enterprise Server 允许您在 /etc/zypp/zypp.conf 中启用相应设置来安装多个内核版本。为了升级到某个服务包,需要暂时禁用对此功能的支持。当更新成功完成后,可以重新启用多版本支持。要禁用多版本支持,请对 /etc/zypp/zypp.conf 中的相应行加上注释。结果应类似如下内容:

#multiversion = provides:multiversion(kernel)
#multiversion.kernels = latest,running

要在成功更新后重新激活此功能,请去除注释符号。有关多版本支持的详细信息,请参见第 15.1 节 “启用和配置多版本支持”

19.4 在 IBM Z 上升级

在 IBM Z 上升级 SUSE Linux Enterprise 安装需要设置 Upgrade=1 内核参数(例如,通过 parmfile 设置)。请参见第 4.3 节 “parmfile — 自动进行系统配置”

19.5 IBM POWER:启动 X 服务器

在 SLES 12 for IBM POWER 上,显示管理器配置为默认不启动本地 X 服务器。该设置在 SLES 12 SP1 则相反,即显示管理器现在会启动 X 服务器。

为了避免升级期间出现问题,SUSE Linux Enterprise Server 设置不会自动更改。如果要让显示管理器在升级后启动 X 服务器,请按如下所示在 /etc/sysconfig/displaymanager 中更改 DISPLAYMANAGER_STARTS_XSERVER 设置:

DISPLAYMANAGER_STARTS_XSERVER="yes"