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

3 准备升级

在开始升级过程之前,请确保您的系统已准备妥当。除了其他工作以外,准备工作还包括备份数据和查看发行说明。下一章将指导您完成这些步骤。

3.1 确保当前系统是最新的

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

3.2 阅读发行说明

有关所有更改、新功能和已知问题的列表,请参见发行说明。安装媒体上的 docu 目录中也提供了发行说明。

发行说明通常只包含两个连续的版本之间的更改。如果您跳过了一个或多个服务包,另请检查所跳过服务包的发行说明。

检查发行说明以了解:

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

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

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

3.3 创建备份

升级前,将现有配置文件复制到独立媒体(例如磁带设备、可卸硬盘等)以备份数据。这主要适用于储存在 /etc 中的文件以及 /var/opt 中的一些目录和文件。最好将 /homeHOME 目录)中的用户数据也写入备份媒体。

root 身份备份所有数据。只有 root 对所有本地文件具有足够的权限。

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

3.4 列出已安装的软件包和储存库

在全新安装某个新的主要 SLE 版本或还原到旧版本时(举例而言),您可以保存已安装软件包的列表。

注意
注意

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

  1. 创建包含全部所用储存库列表的文件 repositories.bak.repo

    root # zypper lr -e repositories.bak
  2. 另外,创建包含所有已安装软件包的列表的文件 installed-software.bak

    root # rpm -qa --queryformat '%{NAME}\n' >
         installed-software.bak
  3. 备份这两个文件。使用以下命令可恢复储存库和已安装的软件包:

    root # zypper ar repositories.bak.repo
    root # zypper install $(cat installed-software.bak)
    注意
    注意:更新到新的主要版本后,软件包数量会相应增加

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

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

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

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

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

3.5 SUSE Linux Enterprise Server 11 SP4 升级

如果您在 SUSE Linux Enterprise Server 11 SP4 上使用的是 MySQL、PostgreSQL 或基于 Java MD5 的证书,请按以下各节所述准备系统。此外,请务必查看本章的其他各节,以了解其他需要执行的准备工作。

3.5.1 迁移 PostgreSQL 数据库

如果您在 SUSE Linux Enterprise Server 11 上使用的是 PostgreSQL 数据库,则需要升级数据库。有关详细信息,请参见第 3.6 节 “迁移 PostgreSQL 数据库”

3.5.2 迁移 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. 执行 SUSE Linux Enterprise Server 升级。升级后,以前的配置文件 /etc/my.cnf 仍将保持不变。新配置保存在 /etc/my.cnf.rpmnew 文件中。

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

  6. 确保启动 MariaDB 服务器:

    root # systemctl start mariadb

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

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

    root # mariadb -u root -p

3.5.3 创建用于 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/

3.6 迁移 PostgreSQL 数据库

SUSE Linux Enterprise Server 15 SP3 随附 PostgreSQL 数据库版本 10、12 和 13。虽然默认版本是版本 13,但我们仍会通过 Legacy 模块提供版本 10 和 12,以便您可以从 SUSE Linux Enterprise Server 的早期版本升级。

由于需要完成数据库的迁移工作,因此无法使用自动升级过程。您需要手动执行从一个版本到另一个版本的迁移。

迁移过程通过使用 pg_upgrade 命令执行,这种方法可替代传统的转储和重新装载。与转储和重新装载方法相比,pg_upgrade 可缩短迁移所需的时间。

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

重要
重要:从 SLE 11 升级

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

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

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

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

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

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

    • 安装新 PostgreSQL 主要版本的软件包。对于 SLE15 SP3,这意味着要安装 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

有关升级数据库或使用逻辑复制等替代方法的详细信息,请参见 https://www.postgresql.org/docs/10/upgrading.html 上的官方 PostgreSQL 文档。

3.7 关闭虚拟机 Guest

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

3.8 调整 SMT 客户端设置

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

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

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

过程 3.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

3.9 磁盘空间

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

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

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

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

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

例 3.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

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

在 Btrfs 文件系统上,df 的输出可能有误导性,因为除了原始数据分配的空间以外,Btrfs 文件系统还会为元数据分配并使用空间。

因此,即使看上去仍有大量的可用空间,Btrfs 文件系统也可能会报告空间不足。发生这种情况时,为元数据分配的全部空间都已用尽。有关如何检查 Btrfs 文件系统上已用和可用空间的细节,请参阅第 1.2.2.3 节 “检查可用空间”有关详细信息,请参见 man 8 btrfs-filesystemhttps://btrfs.wiki.kernel.org/index.php/FAQ

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

下列建议已证实值得采纳:

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

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

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

    root # snapper list
    root # snapper delete NUMBER

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

3.10 AutoYaST 配置文件中的更改(从 SLE 12 到 15)

要了解如何迁移 AutoYaST 配置文件,请参见附录 D “SLE 12 与 15 中的 AutoYaST 配置文件之间的差异

3.11 升级订阅管理工具 (SMT) 服务器

对于运行 SMT 的服务器,需要执行特殊的升级过程。请参见《Repository Management Tool Guide》中的第 3 章 “从 SMT 迁移到 RMT

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

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

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

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

3.13 在 IBM Z 上升级

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

3.14 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"