升级 Cumulus Linux
您可以通过两种方式升级 Cumulus Linux
Cumulus Linux 提供 ISSU,可在最大程度减少对网络中断的情况下升级活动交换机。请参阅在服务中系统升级 - ISSU。
升级之前
优化的映像升级和软件包升级不会覆盖交换机上的配置文件,但是使用 ONIE 升级 Cumulus Linux 具有破坏性,并且不会保存交换机上的任何配置文件。在使用 ONIE 开始升级之前,请将配置文件备份到不同的服务器。
为了解决任何升级问题,请在开始升级之前和完成升级之后创建 cl-support 文件。
备份配置文件
了解配置数据的位置对于成功升级、迁移和备份非常重要。与其他 Linux 发行版一样,/etc
目录是 Cumulus Linux 中所有配置数据的主要位置。以下列表包含您需要备份和迁移到新版本的文件。确保检查任何已更改的文件。使以下文件和目录成为备份策略的一部分。
要显示从以前的 Cumulus Linux 安装中更改的文件列表,请运行 sudo dpkg --verify
命令。要显示从以前的 Cumulus Linux 安装中更改的生成的 /etc/default/isc-*
文件列表,请运行 egrep -v '^$|^#|=""$' /etc/default/isc-dhcp-*
命令。
使用 NVUE 备份和恢复配置
只有当您使用 NVUE 命令配置要升级的交换机时,才能使用 NVUE 备份和恢复配置文件。
备份和恢复配置文件
使用
nv config save
命令将配置保存到/etc/nvue.d/startup.yaml
文件中cumulus@switch:~$ nv config save saved
将
/etc/nvue.d/startup.yaml
文件从交换机复制到不同的位置。升级完成后,恢复配置。将
/etc/nvue.d/startup.yaml
文件复制到交换机,运行nv config patch
命令,然后运行nv config apply
命令。在以下示例中,startup.yaml
位于交换机上的/home/cumulus
目录中cumulus@switch:~$ nv config patch /home/cumulus/startup.yaml cumulus@switch:~$ nv config apply
有关 NVUE 对象模型和命令的信息,请参阅NVIDIA 用户体验 - NVUE。
由于 NVUE 支持更多功能并引入了新语法,代码片段和灵活的代码片段将变为无效。
在将 Cumulus Linux 升级到新版本之前,请确保
- 查看新增功能以了解新的 NVUE 语法。
- 如果 NVUE 为代码片段配置的功能引入了新语法,则必须在升级之前删除该代码片段。
- NVUE 提供用于将旧配置文件转换为交换机上当前运行版本格式的命令。请参阅转换配置修订版或文件。
创建 cl-support 文件
在之前和之后您升级交换机,运行 cl-support
脚本以创建 cl-support
存档文件。该文件是用于故障排除的有用信息的压缩存档。如果您在升级期间遇到任何问题,您可以将此存档文件发送给 Cumulus Linux 支持团队进行调查。
- 使用 NVUE
nv action generate system tech-support
命令或 Linuxsudo cl-support
命令创建cl-support
存档文件
cumulus@switch:~$ nv action generate system tech-support
将
cl-support
文件从交换机复制到不同的位置。升级完成后,创建一个新的存档文件
cumulus@switch:~$ nv action generate system tech-support
映像升级
映像升级使您可以选择要升级到的确切版本,并且是用于将交换机升级到新版本系列(例如,从 4.4.3 升级到 5.12)的唯一方法。
Cumulus Linux 提供了两种不同的方法来使用新映像升级交换机
ONIE 是一个开源项目(等同于服务器上的 PXE),它支持在交换机上安装网络操作系统 (NOS)。
优化的映像升级使用两个分区来升级映像,只需一个重启周期。在交换机上具有两个分区的情况下,当前映像从一个分区启动,映像升级从该分区触发。在检测到正在运行的分区并检查第二个分区是否可用于安装后,优化的升级开始在第二个分区中暂存安装(复制映像、准备分区、解压缩新映像以及调整和最终确定新分区的映像)。随后的启动从第二个分区发生。
- 交换机在热重启模式下不支持优化的映像升级。
- 您无法使用优化的映像升级将 Cumulus Linux 5.12 交换机降级到 Cumulus Linux 5.11 及更早版本;请改用 ONIE。
- 升级 MLAG 对需要额外的步骤。如果您在环境中使用 MLAG 双连接两个 Cumulus Linux 交换机,请按照下面的升级 MLAG 对中的交换机中的步骤操作,以确保平稳升级。
使用
nv action fetch system image <remote-url>
命令下载 Cumulus Linux 映像cumulus@switch:~$ nv action fetch system image http://10.0.1.251/cumulus-linux-5.12.0-mlx-amd64.bin
将映像安装在第二个分区上
cumulus@switch:~$ nv action install system image files cumulus-linux-5.12.0-mlx-amd64.bin
使用
force
选项强制安装映像cumulus@switch:~$ nv action install system image files cumulus-linux-5.12.0-mlx-amd64.bin force
设置启动分区
cumulus@switch:~$ nv action boot-next system image other
重启交换机
cumulus@switch:~$ reboot
- 要在交换机上重命名 Cumulus Linux 映像,请运行
nv action rename system image files <image> <new-image-name>
命令。 - 要从交换机中删除 Cumulus Linux 映像,请运行
nv action delete system image files <image>
命令。
要显示有关 cumulus 映像的信息
cumulus@switch:~$ nv show system image
operational
------------- -------------------------
current 2
next 2
partition1
build-id 5.11.0.0026.devsignedpkgs
description Cumulus Linux 5.11.0
disk /dev/sda5
release 5.11.0
partition2
build-id 5.12.0.0018.devsignedpkgs
description Cumulus Linux 5.12.0
disk /dev/sda6
release 5.12.0
- 要列出可用的 Cumulus Linux 映像文件,请运行
nv show system image files
命令。 - 要显示有关特定 Cumulus Linux 映像文件的信息,请运行
nv show system image files <image-filename>
命令。
将 Cumulus Linux 映像下载到交换机。
将映像安装在第二个分区上
cumulus@switch:~$ cl-image-upgrade -u cumulus-linux-5.12.0-mlx-amd64.bin
要检查当前启动分区状态,请运行 cl-image-upgrade -s
命令
cumulus@switch:~$ cl-image-upgrade -s
Current system partition is 1 on /dev/sda5
Current system partition has 5.12.0 "Cumulus Linux 5.12.0" 5.12.0.0012
Other system partition is 2 on /dev/sda6
...
要在下次启动时激活另一个分区,请运行 cl-image-upgrade -a
命令
cumulus@switch:~$ cl-image-upgrade -a
- 使用 ONIE 安装 Cumulus Linux 映像具有破坏性;不会保存交换机上的任何配置文件;在开始 Cumulus Linux 映像安装之前,将其复制到不同的服务器。
- 您必须在操作系统首次启动时,或之后不久使用带外管理,使用 ZTP 或自动化将配置数据移动到新的网络操作系统。
- 移动配置文件可能会导致问题。
- 识别包含配置数据的所有位置并不总是一件容易的任务。请参阅上面的升级 Cumulus Linux 之前。
- 与新版本中的配置文件更改合并冲突有时会被忽略。
- 如果配置文件未正确恢复,则无法通过带内管理
ssh
到交换机。请使用带外连接(eth0 或控制台)。 - 升级后,您必须重新安装和重新配置第三方应用程序。
使用 ONIE 升级交换机
备份交换机外的配置。
下载 Cumulus Linux 映像。
使用
onie-install -a -i <image-location>
命令安装 Cumulus Linux 映像,这将交换机启动到 ONIE 中。以下示例命令从 Web 服务器安装映像,然后重启交换机。还有其他安装 Cumulus Linux 映像的方法,例如使用 FTP、本地文件或 USB 驱动器。有关更多信息,请参阅使用 ONIE 安装新的 Cumulus Linux 映像。cumulus@switch:~$ sudo onie-install -a -i http://10.0.1.251/cumulus-linux-5.12.0-mlx-amd64.bin && sudo reboot
将配置文件恢复到新版本(NVIDIA 不建议使用自动化恢复文件)。
验证旧配置在新版本上的正确操作。
重新安装第三方应用程序和关联的配置。
软件包升级
Cumulus Linux 完全采用 Linux 和 Debian 升级工作流程,您可以使用安装程序安装基本映像,然后通过软件包升级在该版本系列中执行任何升级。自基本安装以来已更改的任何软件包都将从存储库中就地升级。所有交换机配置文件都保持不变,或者在极少数情况下在软件包升级期间合并。
当您使用软件包升级来升级交换机时,配置数据在升级期间保持不变。如果新版本更新了以前更改的配置文件,则升级过程会提示您指定要使用的版本或评估差异。
升级 MLAG 对需要额外的步骤。如果您在环境中使用 MLAG 双连接两个 Cumulus Linux 交换机,请按照下面的升级 MLAG 对中的交换机中的步骤操作,以确保平稳升级。
- 您无法将交换机升级到新的版本系列。例如,您不能使用软件包升级将交换机从 4.x 升级到 5.x。
- 软件包升级仅支持当前版本加上两个版本。例如,只有在安装了 5.10.1 二进制映像的情况下,您才能使用软件包升级从 Cumulus Linux 5.10.1 升级到 Cumulus Linux 5.12。
- 软件包升级始终更新到 Cumulus Linux 存储库中最新的可用版本。例如,如果您当前正在运行 Cumulus Linux 5.10.0 并执行软件包升级,则软件包将升级到最新的 5.12 版本。
- 软件包升级命令可能会在升级过程中重启或停止服务。
- 软件包升级命令可能会通过更改核心服务依赖软件包来中断核心服务。
- 升级后,软件包创建的帐户 UID 和 GID 在不同的交换机上可能不同,具体取决于配置和软件包安装历史记录。
- Cumulus Linux 不支持 Linux
sudo -E apt-get dist-upgrade
命令。在升级软件包时,请务必使用sudo -E apt-get upgrade
。 - 要从 Cumulus Linux 5.10 或 5.11 升级到 Cumulus Linux 5.12,您需要 0.8GB 的可用磁盘空间。在升级之前,运行 NVUE
nv show system disk usage
命令或 Linuxsudo df -h
命令以显示您当前在交换机上使用的磁盘空间量。
使用软件包升级来升级交换机
备份交换机中的配置。
从存储库中获取最新的更新元数据,并查看潜在的升级问题(在某些情况下,由于依赖关系,升级新软件包也可能会升级其他现有软件包)。
cumulus@switch:~$ nv action upgrade system packages to latest use-vrf default dry-run
默认情况下,NVUE
nv action upgrade system packages
命令在管理 VRF 中运行。要在非管理 VRF(例如default
)中运行该命令,您必须使用use-vrf <vrf>
选项。将所有软件包升级到最新发行版。
cumulus@switch:~$ nv action upgrade system packages to latest use-vrf default
默认情况下,NVUE
nv action upgrade system packages
命令在管理 VRF 中运行。要在非管理 VRF(例如default
)中运行该命令,您必须使用use-vrf <vrf>
选项。如果您看到阻止您升级软件包的过期 GPG 密钥的错误,请按照更新过期的 GPG 密钥中的步骤操作。
升级完成后,检查是否需要重启交换机,然后根据需要重启交换机
cumulus@switch:~$ nv show system reboot required yes cumulus@switch:~$ nv action reboot system
验证旧配置在新版本上的正确操作。
备份交换机中的配置。
从存储库中获取最新的更新元数据。
cumulus@switch:~$ sudo -E apt-get update
查看潜在的升级问题(在某些情况下,由于依赖关系,升级新软件包也可能会升级其他现有软件包)。
cumulus@switch:~$ sudo -E apt-get upgrade --dry-run
将所有软件包升级到最新发行版。
cumulus@switch:~$ sudo -E apt-get upgrade
如果您在升级完成后不需要重启交换机,则升级结束,重启所有升级的服务,并在
/var/log/syslog
文件中记录类似于下面所示的消息。在以下示例中,该过程仅升级frr
软件包。Policy: Service frr.service action stop postponed Policy: Service frr.service action start postponed Policy: Restarting services: frr.service Policy: Finished restarting services Policy: Removed /usr/sbin/policy-rc.d Policy: Upgrade is finished
如果升级过程遇到在您要升级到的版本中具有新版本的已更改配置文件,您将看到类似于此的消息
Configuration file '/etc/frr/daemons' ==> Modified (by you or by a script) since installation. ==> Package distributor has shipped an updated version. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : start a shell to examine the situation The default action is to keep your current version. *** daemons (Y/I/N/O/D/Z) [default=N] ?
- 要查看当前安装版本和新版本之间的差异,请键入
D
。 - 要保留当前安装的版本,请键入
N
。新的软件包版本安装时带有后缀.dpkg-dist
(例如,/etc/frr/daemons.dpkg-dist
)。当升级完成并且在重启之前,将您的更改与新安装的文件中的更改合并。 - 要安装新版本,请键入
I
。您当前安装的版本带有后缀.dpkg-old
。 - Cumulus Linux 在
cumulus-archive-keyring
软件包中包含/etc/apt/sources.list
。在升级期间,您必须选择是要软件包中的新版本还是现有文件。
升级完成后,您可以使用
sudo find / -mount -type f -name '*.dpkg-*'
命令搜索文件。如果您看到阻止您升级软件包的过期 GPG 密钥的错误,请按照更新过期的 GPG 密钥中的步骤操作。
- 要查看当前安装版本和新版本之间的差异,请键入
如果升级消息指示您需要执行系统重启,请重启交换机。
cumulus@switch:~$ sudo -E apt-get upgrade ... upgrade messages here ... *** Caution: Service restart prior to reboot could cause unpredictable behavior *** System reboot required *** cumulus@switch:~$ sudo reboot
验证旧配置在新版本上的正确操作。
升级 MLAG 对中的交换机
如果您在环境中使用MLAG双连接两个交换机,请按照以下步骤升级交换机。
您必须将 MLAG 对中的两个交换机都升级到相同版本的 Cumulus Linux。
仅在升级过程中,Cumulus Linux 才支持 MLAG 对等交换机之间使用不同的软件版本。在升级对中的第一个 MLAG 交换机后,运行 clagctl showtimers
命令来监控 init-delay
计时器。当计时器到期后,将升级后的 MLAG 交换机设为主交换机,然后将对等交换机升级到相同版本的 Cumulus Linux。
NVIDIA 尚未测试在升级时间段之外在 MLAG 对等交换机上运行不同版本的 Cumulus Linux;您可能会看到意外的结果。
验证交换机是否处于辅助角色
cumulus@switch:~$ nv show mlag
关闭核心上行链路第 3 层接口。以下示例关闭 swp1
cumulus@switch:~$ nv set interface swp1 link state down cumulus@switch:~$ nv config apply
关闭对等链路
cumulus@switch:~$ nv set interface peerlink link state down cumulus@switch:~$ nv config apply
升级交换机
如果您在交换机上安装了新映像,请将配置文件恢复到新版本。如果您使用
apt
执行了升级,请启动您在步骤 2 和 3 中关闭的上行链路和对等链路接口cumulus@switch:~$ nv set interface swp1 link state up cumulus@switch:~$ nv set interface peerlink link state up cumulus@switch:~$ nv config apply cumulus@switch:~$ nv config save
使用 Linux
mstpctl showall
命令验证两个交换机上的 STP 收敛。NVUE 不提供等效命令。cumulus@switch:~$ mstpctl showall
验证核心上行链路和对等链路是否为 UP 状态
cumulus@switch:~$ nv show interface
验证 MLAG 收敛
cumulus@switch:~$ nv show mlag
将此辅助交换机设为主交换机
cumulus@switch:~$ nv set mlag priority 2084
验证另一个交换机现在是否处于辅助角色。
在新辅助交换机上重复步骤 2-8。
移除优先级 2048,并将当前主交换机上的优先级恢复为 32768
cumulus@switch:~$ nv set mlag priority 32768
验证交换机是否处于辅助角色
cumulus@switch:~$ clagctl status
关闭核心上行链路第 3 层接口
cumulus@switch:~$ sudo ip link set <switch-port> down
关闭对等链路
cumulus@switch:~$ sudo ip link set peerlink down
升级交换机
重启交换机
cumulus@switch:~$ sudo reboot
如果您在交换机上安装了新映像,请将配置文件恢复到新版本。
验证两个交换机上的 STP 收敛
cumulus@switch:~$ mstpctl showall
验证核心上行链路和对等链路是否为 UP 状态
cumulus@switch:~$ ip addr show
验证 MLAG 收敛
cumulus@switch:~$ clagctl status
将此辅助交换机设为主交换机
cumulus@switch:~$ clagctl priority 2048
验证另一个交换机现在是否处于辅助角色。
在新辅助交换机上重复步骤 2-9。
移除优先级 2048,并将当前主交换机上的优先级恢复为 32768
cumulus@switch:~$ clagctl priority 32768
降级安全启动交换机
运行 Cumulus Linux 5.12.0 的 SN3700C-S、SN5400 和 SN5600 安全启动交换机使用 shim 15.8 启动,该版本将条目添加到 SBAT 撤销列表中,以防止交换机启动具有安全漏洞的 shim 15.7 或更早版本。
从 Cumulus Linux 5.12.0 与 ONIE 降级交换机后,请按照以下步骤在交换机启动之前禁用,然后启用安全启动。
您也可以按照以下步骤恢复无法启动且显示以下错误的降级安全启动交换机
Verifiying shim SBAT data failed: Security Policy Violation
Something has gone seriously wrong: SBAT self-check failed: Security Policy Violation
在交换机上,在 BIOS 中禁用安全启动
a. 在系统启动期间,在 BIOS 版本打印时,通过串行控制台按 Ctrl B。
b. 出现提示时,提供 BIOS 密码。默认密码为
admin
。c. 要禁用安全启动,请导航到
Security
,并将Secure Boot
更改为Disabled
。d. 选择
Save & Exit
。启动到 Cumulus Linux。
运行
mokutil --set-sbat-policy delete
命令。重启交换机。
按照上面的步骤 a 到 d 在 BIOS 中启用安全启动。在步骤 c 中,将
Secure Boot
更改为Enabled
。
第三方软件包
如果您在 Cumulus Linux 交换机上安装任何第三方应用程序,配置数据通常安装在 /etc
目录中,但这不能保证。您有责任了解安装在交换机上的任何第三方软件包的行为和配置文件信息。
在使用完整的 Cumulus Linux 映像安装升级后,您需要重新安装任何第三方软件包。软件包升级不会替换或删除第三方应用程序。
注意事项
- 当您使用软件包升级或Cumulus Linux 映像安装升级交换机时,
/etc/os-release
和/etc/lsb-release
文件会更新到当前安装的 Cumulus Linux 版本。例如,如果您执行软件包升级,并且存储库上的最新 Cumulus Linux 版本是 5.12,则升级后这两个文件会将版本显示为 5.12。 /etc/image-release
文件仅在您运行 Cumulus Linux 映像安装时更新。因此,如果您运行 Cumulus Linux 5.10.1 的 Cumulus Linux 映像安装,然后进行软件包升级到 5.12,则/etc/image-release
文件将继续显示 Cumulus Linux 5.10.1,这是最初安装的基础映像。