3 准备升级 #
在开始升级过程之前,请确保您的系统已准备妥当。除了其他工作以外,准备工作还包括备份数据和查看发行说明。下一章将指导您完成这些步骤。
3.1 确保当前系统是最新的 #
仅支持从最新的增补级别升级系统。运行 zypper patch
或启动 YaST 模块 ,以确保已安装最新的系统更新。
3.2 阅读发行说明 #
有关所有更改、新功能和已知问题的列表,请参见发行说明。安装媒体上的 docu
目录中也提供了发行说明。
发行说明通常只包含两个连续的版本之间的更改。如果您跳过了一个或多个服务包,另请检查所跳过服务包的发行说明。
检查发行说明以了解:
您的硬件是否有特殊的注意事项;
所用的任何软件包是否已发生重大更改;
是否需要对您的安装实施特殊预防措施。
3.3 创建备份 #
升级前,将现有配置文件复制到独立媒体(例如磁带设备、可卸硬盘等)以备份数据。这主要适用于储存在 /etc
中的文件以及 /var
和 /opt
中的一些目录和文件。最好将 /home
(HOME
目录)中的用户数据也写入备份媒体。
以 root
身份备份所有数据。只有 root
对所有本地文件具有足够的权限。
如果您已在 YaST 中选择/etc/sysconfig
目录中的文件。但是,此备份尚不完整,因为缺少了上述所有其他重要目录。在 /var/adm/backup
目录中查找备份。
3.4 列出已安装的软件包和储存库 #
在全新安装某个新的主要 SLE 版本或还原到旧版本时(举例而言),您可以保存已安装软件包的列表。
请注意,并非所有已安装的软件包或使用的储存库在 SUSE Linux Enterprise 的较新版本中都可用。有些软件包或储存库可能已被重命名,有些可能已被取代。还有可能提供的一些软件包只是用于旧版,而默认会使用另一个替代它的软件包。因此,可能需要手动编辑一些文件。您可使用任何文本编辑器进行编辑。
创建包含全部所用储存库列表的文件
repositories.bak.repo
:root #
zypper
lr -e repositories.bak另外,创建包含所有已安装软件包的列表的文件
installed-software.bak
:root #
rpm
-qa --queryformat '%{NAME}\n' > installed-software.bak备份这两个文件。使用以下命令可恢复储存库和已安装的软件包:
root #
zypper
ar repositories.bak.reporoot #
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。在开始任何升级操作之前,强烈建议您备份数据库。
要进行数据库迁移,请执行以下操作:
登录到 SUSE Linux Enterprise 11 计算机。
创建转储文件:
root #
mysqldump
-u root -p --all-databases > mysql_backup.sql默认情况下,
mysqldump
不会转储INFORMATION_SCHEMA
或performance_schema
数据库。有关详细信息,请参见 https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html。将您的转储文件、配置文件
/etc/my.cnf
以及/etc/mysql/
目录储存在安全位置,以供日后调查(不要用于安装!)。执行 SUSE Linux Enterprise Server 升级。升级后,以前的配置文件
/etc/my.cnf
仍将保持不变。新配置保存在/etc/my.cnf.rpmnew
文件中。根据需要配置 MariaDB 数据库。不要使用以前的配置文件和目录,只是将其用作提醒,并对其进行改编。
确保启动 MariaDB 服务器:
root #
systemctl
start mariadb如果您希望每次引导时都启动 MariaDB 服务器,请启用以下服务:
root #
systemctl
enable mariadb通过连接数据库来校验 MariaDB 是否正常运行:
root #
mariadb
-u root -p
3.5.3 创建用于 Java 应用程序的非 MD5 服务器证书 #
从 SP1 更新到 SP2 期间,在安全性修复时禁用了基于 MD5 的证书。如果您之前创建的证书是 MD5 证书,请执行以下步骤重新创建证书:
打开终端窗口并以
root
身份登录。创建一个私用密钥:
root #
openssl
genrsa -out server.key 1024如果需要强度更高的密钥,请将
1024
替换为更大的数字,例如4096
。创建证书签名请求 (CSR):
root #
openssl
req -new -key server.key -out server.csr对证书自我签名:
root #
openssl
x509 -req -days 365 -in server.csr -signkey server.key -out server.crt创建 PEM 文件:
root #
cat
server.key server.crt > server.pem将
server.crt
、server.csr
、server.key
和server.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 升级时,postgresql94
将被卸装,不可用于将数据库迁移到更高的 PostgreSQL 版本。因此,在这种情况下,请确保先迁移 PostgreSQL 数据库,然后再升级系统。
以下过程描述如何将数据库从版本 9.6 迁移到版本 10。使用不同的版本作为起始或目标时,请相应地替换版本号。
要进行数据库迁移,请执行以下操作:
确保满足以下先决条件:
如果尚未通过维护更新将旧 PostgreSQL 版本的任何软件包升级到最新版本,请执行该操作。
创建现有数据库的备份。
安装新 PostgreSQL 主要版本的软件包。对于 SLE15 SP3,这意味着要安装 postgresql10-server 及其依赖的所有软件包。
安装软件包 postgresql10-contrib, 其中包含命令
pg_upgrade
。确保 PostgreSQL 数据区域(默认为
/var/lib/pgsql/data
)中有足够的可用空间。如果空间不足,请对每个数据库使用以下 SQL 命令,以尝试减少大小(这可能需要花费很长时间!):VACUUM FULL
使用以下任一命令停止 PostgreSQL 服务器:
root #
/usr/sbin/rcpostgresql
stop或
root #
systemctl stop postgresql.service(取决于要用作升级起始版本的 SLE 版本)。
重命名旧数据目录:
root #
mv
/var/lib/pgsql/data /var/lib/pgsql/data.old使用
initdb
手动初始化新的数据库实例,或者启动再停止 PostgreSQL 让数据库实例自动初始化:root #
/usr/sbin/rcpostgresql
startroot #
/usr/sbin/rcpostgresql
stop或
root #
systemctl start postgresql.serviceroot #
systemctl stop postgresql.service(取决于要用作升级起始版本的 SLE 版本)。
如果您在旧版本中更改了配置文件,请考虑将这些更改转移到新配置文件。可能受影响的文件包括
postgresql.auto.conf
、postgresql.conf
、pg_hba.conf
和pg_ident.conf
。这些文件的旧版本位于/var/lib/pgsql/data.old/
中,新版本可在/var/lib/pgsql/data
中找到。请注意,不建议复制旧配置文件,因为这可能会重写新选项、新默认值和更改的注释。
以
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/"使用以下任一命令启动新数据库实例:
root #
/usr/sbin/rcpostgresql
start或
root #
systemctl start postgresql.service(取决于要用作升级起始版本的 SLE 版本)。
检查迁移是否成功。测试范围取决于用例,没有任何普通的工具可以自动完成此步骤。
去除所有旧 PostgreSQL 软件包和旧数据目录:
root #
zypper
search -s postgresql96 | xargs zypper rm -uroot #
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 服务器中取消注册该计算机。然后重启动升级过程。
登录客户端计算机。
以下步骤根据客户端的当前操作系统而异:
对于 SUSE Linux Enterprise 11,请执行以下命令:
tux >
sudo
suse_register -Etux >
sudo
rm -f /etc/SUSEConnecttux >
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.cachetux >
sudo
rm -f /etc/zmd/deviceidtux >
sudo
rm -f /etc/zmd/secret对于 SUSE Linux Enterprise 12,请执行以下命令:
tux >
sudo
SUSEConnect --de-registertux >
sudo
SUSEConnect --cleanuptux >
sudo
rm -f /etc/SUSEConnecttux >
sudo
rm -rf /etc/zypp/credentials.d/*tux >
sudo
rm -rf /etc/zypp/repos.d/*tux >
sudo
rm -f /etc/zypp/services.d/*
登录 SMT 服务器。
列出所有客户端注册,以检查是否已成功取消注册该客户端:
tux >
sudo
smt-list-registrations如果该客户端的主机名仍旧列在此命令的输出中,请从第一列获取该客户端的
唯一 ID
。(可能列出了该客户端的多个 ID。)删除此客户端的注册:
tux >
sudo
smt-delete-registration -g UNIQUE_ID如果列出了该客户端的多个 ID,请针对每个唯一 ID 重复上述步骤。
重新运行以下命令,以检查现在是否已成功取消注册该客户端:
tux >
sudo
smt-list-registrations
3.9 磁盘空间 #
从旧版本到新版本,软件的大小有增长的趋势。因此,在进行更新之前,请查看可用分区空间。如果您怀疑磁盘空间不足,请先备份数据,再通过调整分区大小等方法来增大可用空间。对于每个分区应该具有多少空间,没有一般的经验可以借鉴。空间要求取决于特定的分区配置文件和选定的软件。
在更新过程中,YaST 会检查可用磁盘空间的容量,并在安装大小可能超出可用空间时向用户显示警告。在该情况下,执行更新会导致系统不可用!只有在您完全了解自己要进行的操作的情况下(通过事先测试),才能跳过警告继续更新。
3.9.1 检查非 Btrfs 文件系统上的磁盘空间 #
使用 df
命令可列出可用磁盘空间。例如,在例 3.1 “使用 df -h
列示信息”中,根分区为 /dev/sda3
(作为 /
装入)。
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-filesystem
和 https://btrfs.wiki.kernel.org/index.php/FAQ。
如果您在计算机上使用 Btrfs 作为根文件系统,请确保有足够的可用空间。检查所有装入分区上的可用空间。在最坏的情况下,升级进程需要将当前根文件系统的所有磁盘空间(不含 /.snapshot
)用于存放新快照。
下列建议已证实值得采纳:
包含 Btrfs 在内的所有文件系统需有足够的可用磁盘空间用于下载和安装大型 RPM。旧 RPM 的空间只会在新 RPM 安装之后释放。
对于包含快照的 Btrfs,至少需要有当前安装任务所需的可用空间。建议提供两倍于当前安装大小的可用空间。
如果没有足够的可用空间,您可以尝试使用
snapper
删除旧快照:root #
snapper
listroot #
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"