升级 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 备份和恢复配置文件。

备份和恢复配置文件

  1. 使用 nv config save 命令将配置保存到 /etc/nvue.d/startup.yaml 文件中

    cumulus@switch:~$ nv config save
    saved
    
  2. /etc/nvue.d/startup.yaml 文件从交换机复制到不同的位置。

  3. 升级完成后,恢复配置。将 /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 支持团队进行调查。

  1. 使用 NVUE nv action generate system tech-support 命令或 Linux sudo cl-support 命令创建 cl-support 存档文件
cumulus@switch:~$ nv action generate system tech-support
  1. cl-support 文件从交换机复制到不同的位置。

  2. 升级完成后,创建一个新的存档文件

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 对中的交换机中的步骤操作,以确保平稳升级。

  1. 使用 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
    
  2. 将映像安装在第二个分区上

    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
    
  3. 设置启动分区

    cumulus@switch:~$ nv action boot-next system image other 
    
  4. 重启交换机

    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> 命令。
  1. 将 Cumulus Linux 映像下载到交换机。

  2. 将映像安装在第二个分区上

    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 升级交换机

  1. 备份交换机外的配置。

  2. 下载 Cumulus Linux 映像。

  3. 使用 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
    
  4. 将配置文件恢复到新版本(NVIDIA 不建议使用自动化恢复文件)。

  5. 验证旧配置在新版本上的正确操作。

  6. 重新安装第三方应用程序和关联的配置。

软件包升级

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 命令或 Linux sudo df -h 命令以显示您当前在交换机上使用的磁盘空间量。

使用软件包升级来升级交换机

  1. 备份交换机中的配置。

  2. 从存储库中获取最新的更新元数据,并查看潜在的升级问题(在某些情况下,由于依赖关系,升级新软件包也可能会升级其他现有软件包)。

    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> 选项。

  3. 将所有软件包升级到最新发行版。

    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 密钥中的步骤操作。

  4. 升级完成后,检查是否需要重启交换机,然后根据需要重启交换机

    cumulus@switch:~$ nv show system reboot required
    yes
    cumulus@switch:~$ nv action reboot system
    
  5. 验证旧配置在新版本上的正确操作。

  1. 备份交换机中的配置。

  2. 从存储库中获取最新的更新元数据。

    cumulus@switch:~$ sudo -E apt-get update
    
  3. 查看潜在的升级问题(在某些情况下,由于依赖关系,升级新软件包也可能会升级其他现有软件包)。

    cumulus@switch:~$ sudo -E apt-get upgrade --dry-run
    
  4. 将所有软件包升级到最新发行版。

    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 密钥中的步骤操作。

  5. 如果升级消息指示您需要执行系统重启,请重启交换机。

    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
    
  6. 验证旧配置在新版本上的正确操作。

升级 MLAG 对中的交换机

如果您在环境中使用MLAG双连接两个交换机,请按照以下步骤升级交换机。

您必须将 MLAG 对中的两个交换机都升级到相同版本的 Cumulus Linux。

仅在升级过程中,Cumulus Linux 才支持 MLAG 对等交换机之间使用不同的软件版本。在升级对中的第一个 MLAG 交换机后,运行 clagctl showtimers 命令来监控 init-delay 计时器。当计时器到期后,将升级后的 MLAG 交换机设为主交换机,然后将对等交换机升级到相同版本的 Cumulus Linux。

NVIDIA 尚未测试在升级时间段之外在 MLAG 对等交换机上运行不同版本的 Cumulus Linux;您可能会看到意外的结果。

  1. 验证交换机是否处于辅助角色

    cumulus@switch:~$ nv show mlag
    
  2. 关闭核心上行链路第 3 层接口。以下示例关闭 swp1

    cumulus@switch:~$ nv set interface swp1 link state down
    cumulus@switch:~$ nv config apply
    
  3. 关闭对等链路

    cumulus@switch:~$ nv set interface peerlink link state down
    cumulus@switch:~$ nv config apply
    
  4. 升级交换机

  5. 如果您在交换机上安装了新映像,请将配置文件恢复到新版本。如果您使用 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
    
  6. 使用 Linux mstpctl showall 命令验证两个交换机上的 STP 收敛。NVUE 不提供等效命令。

    cumulus@switch:~$ mstpctl showall
    
  7. 验证核心上行链路和对等链路是否为 UP 状态

    cumulus@switch:~$ nv show interface
    
  8. 验证 MLAG 收敛

    cumulus@switch:~$ nv show mlag
    
  9. 将此辅助交换机设为主交换机

    cumulus@switch:~$ nv set mlag priority 2084
    
  10. 验证另一个交换机现在是否处于辅助角色。

  11. 在新辅助交换机上重复步骤 2-8。

  12. 移除优先级 2048,并将当前主交换机上的优先级恢复为 32768

    cumulus@switch:~$ nv set mlag priority 32768
    
  1. 验证交换机是否处于辅助角色

    cumulus@switch:~$ clagctl status
    
  2. 关闭核心上行链路第 3 层接口

    cumulus@switch:~$ sudo ip link set <switch-port> down
    
  3. 关闭对等链路

    cumulus@switch:~$ sudo ip link set peerlink down
    
  4. 升级交换机

  5. 重启交换机

    cumulus@switch:~$ sudo reboot
    
  6. 如果您在交换机上安装了新映像,请将配置文件恢复到新版本。

  7. 验证两个交换机上的 STP 收敛

    cumulus@switch:~$ mstpctl showall
    
  8. 验证核心上行链路和对等链路是否为 UP 状态

    cumulus@switch:~$ ip addr show
    
  9. 验证 MLAG 收敛

    cumulus@switch:~$ clagctl status
    
  10. 将此辅助交换机设为主交换机

    cumulus@switch:~$ clagctl priority 2048
    
  11. 验证另一个交换机现在是否处于辅助角色。

  12. 在新辅助交换机上重复步骤 2-9。

  13. 移除优先级 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
  1. 在交换机上,在 BIOS 中禁用安全启动

    a. 在系统启动期间,在 BIOS 版本打印时,通过串行控制台按 Ctrl B。

    b. 出现提示时,提供 BIOS 密码。默认密码为 admin

    c. 要禁用安全启动,请导航到 Security,并将 Secure Boot 更改为 Disabled

    d. 选择 Save & Exit

  2. 启动到 Cumulus Linux。

  3. 运行 mokutil --set-sbat-policy delete 命令。

  4. 重启交换机。

  5. 按照上面的步骤 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,这是最初安装的基础映像。