简介
本文档介绍升级Catalyst 9000系列设备时发生的常见故障,并提供恢复步骤。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档基于以下硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
Catalyst 9000交换机使用Cisco IOS® XE软件,在两种模式(安装模式和捆绑模式)下运行。
安装模式是较新的且推荐使用的运行模式。 安装模式使用名为packages.conf的软件包调配文件来引导交换机。此外,闪存驱动器中packages.conf文件附带有许多.pkg文件。建议不要修改packages.conf和.pkg文件。
捆绑包模式使用单片Cisco IOS映像(.bin文件)来启动交换机。捆绑包模式比安装模式消耗更多内存,因为软件包是从捆绑包中提取并复制到RAM。 您可以在任一模式下运行Catalyst 9000交换机。
以下是一些命令的部分示例输出,用于检验操作模式。在INSTALL模式下:
Switch#show version | be Mode
Switch Ports Model SW Version SW Image Mode
------ ----- ----- ---------- ---------- ----
* 2 60 C9500-12Q 16.12.4 CAT9K_IOSXE INSTALL <-------
Switch#show run | inc boot system
boot system bootflash:packages.conf <-------
Switch#show boot
---------------------------
Switch 1
---------------------------
Current Boot Variables:
BOOT variable = flash:packages.conf; <-------
--snip--
以下是一些命令的部分示例输出,用于检验操作模式。 在BUNDLE模式下:
Switch#show version | be Mode
Switch Ports Model SW Version SW Image Mode
------ ----- ----- ---------- ---------- ----
* 2 60 C9500-12Q 16.12.4 CAT9K_IOSXE BUNDLE <-------
Switch#show run | inc boot system
boot system bootflash:cat9k_iosxe.16.12.04.SPA.bin <------- BUNDLE mode .bin image
Switch#show boot
---------------------------
Switch 1
---------------------------
Current Boot Variables:
BOOT variable = bootflash:cat9k_iosxe.16.12.04.SPA.bin; <------- switch set to boot from .bin image
--snip--
故障场景
交换机在安装模式下重新加载后在早期版本上启动
如果switch boot语句仍指向早期版本而不是新版本,则会发生这种情况。要验证这一点,可以执行以下步骤:
步骤1: 使用命令验证引导变量 show boot
.
Switch#show boot
---------------------------
Switch 1
---------------------------
Current Boot Variables:
BOOT variable = flash:packages.conf;
Boot Variables on next reload:
BOOT variable = flash:packages.conf;
Manual Boot = no
Enable Break = yes
Boot Mode = DEVICE
iPXE Timeout = 0
第二步: 使用命令验证当前.conf文件属于哪个版本 more flash:packages.conf | include pkg
.
Switch#more flash:packages.conf | in pkg
boot rp 0 0 rp_boot cat9k-rpboot.17.03.02a.SPA.pkg
iso rp 0 0 rp_base cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 0 0 rp_daemons cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 0 0 rp_iosd cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 0 0 rp_security cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 0 0 rp_wlc cat9k-wlc.17.03.02a.SPA.pkg
iso rp 0 0 rp_webui cat9k-webui.17.03.02a.SPA.pkg
iso rp 0 0 srdriver cat9k-srdriver.17.03.02a.SPA.pkg
iso rp 0 0 guestshell cat9k-guestshell.17.03.02a.SPA.pkg
boot rp 1 0 rp_boot cat9k-rpboot.17.03.02a.SPA.pkg
iso rp 1 0 rp_base cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 1 0 rp_daemons cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 1 0 rp_iosd cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 1 0 rp_security cat9k-rpbase.17.03.02a.SPA.pkg
iso rp 1 0 rp_wlc cat9k-wlc.17.03.02a.SPA.pkg
iso rp 1 0 rp_webui cat9k-webui.17.03.02a.SPA.pkg
iso rp 1 0 srdriver cat9k-srdriver.17.03.02a.SPA.pkg
iso rp 1 0 guestshell cat9k-guestshell.17.03.02a.SPA.pkg
第三步: 如果文件指向早期版本,请使用命令检查闪存中正确的.conf文件 dir flash: | include conf
和 more flash:
.conf | include pkg
.
Switch#dir flash: | in conf
81132 -rw- 7773 Jan 5 2021 14:59:34 +00:00 packages.conf
第四步: 设置引导变量以更正.conf文件并重新启动交换机。
Switch(config)#boot system flash:packages.conf
Switch#copy run start
Switch#reload
在安装模式下升级/重新加载后切换到ROMMON模式
步骤1: 通过控制台登录交换机。
第二步: 检查闪存中的.conf文件。
Switch:dir flash:
第三步: 确定正确的.conf文件。
Switch:more flash:packages.conf
第四步: 使用正确的.conf文件启动交换机
Switch:boot flash:packages.conf
提示:如果您找不到与正确的软件版本对应的.conf文件,请使用与以前的软件版本对应的.conf文件启动交换机。
在设备陷入没有有效映像的ROMMON中的情况下,您可以选择通过USB将文件复制到交换机或通过TFTP:
boot usbflash0:cat9k_iosxe.16.12.01.SPA.bin
提示:USB A型端口支持使用FAT文件系统格式化的USB闪存驱动器,容量从128 MB到8 GB(支持端口密度为128 MB、256 MB、1 GB、4 GB和8 GB的USB设备)
- 选项#2:从TFTP服务器复制更加详细。您需要将笔记本电脑设置为TFTP服务器并将以太网电缆连接到设备的管理端口,或者需要将设备的管理端口连接到正常运行的设备的网络端口。然后,您可以将带有目标映像的设备配置为 TFTP 服务器.
tftp-server flash:cat9k_iosxe.16.12.01.SPA.bin
- 最好使用路由器/交换机作为TFTP服务器,这样您就不必担心Windows防火墙或计算机帐户权限问题。完成TFTP服务器设置后,您需要在ROMMON中配置此设置。
DEFAULT_GATEWAY=172.16.0.1
IP_ADDRESS=172.16.0.10
IP_SUBNET_MASK=255.255.255.0
TFTP_SERVER=172.16.0.100
ping 172.16.0.100
boot tftp://172.16.0.100/cat9k_iosxe.16.12.01.SPA.bin
从捆绑包转换到安装模式
执行以下操作步骤将操作模式从捆绑包模式转换为安装模式:
步骤 |
命令或操作 |
目的 |
第 1 步 |
enable 示例: switch#enable |
启用特权执行模式。
|
步骤 2 |
show version 示例: switch#show version |
验证操作模式 |
步骤 3 |
show boot 示例: switch#show boot |
显示BOOT变量的内容、CONFIG_FILE变量指向的配置文件名称、BOOTLDR变量的内容和配置寄存器 |
步骤 4 |
no boot system 示例: switch(config)#no boot system |
删除启动系统映像规范。 注:在应用no boot system命令之前,请确保已加载要使用的Cisco IOS版本的.bin文件。 |
步骤 5 |
boot system switch all flash 示例: switch(config)#boot system switch all flash:packages.conf |
更新堆栈中所有交换机的启动变量。 |
步骤 6 |
退出 示例: switch(config)#exit |
退出配置模式到层次结构中的下一个最高模式。 |
步骤 7 |
写存储器 示例: switch#write memory |
将文件从源复制到目标。 |
步骤 8 |
install add file flash 示例: switch#install add file flash:cat9k_iosxe.16.12.04.SPA.bin activate commit 或 switch#install add file flash:cat9k_iosxe.16.12.04.SPA.bin activate switch#install commit |
将单个Cisco IOS XE软件包和调配文件从指定捆绑包扩展到特定目标目录。 注意:如果您不想在一个步骤中完成升级,可以将其分解为各个步骤 |
步骤 9 |
reload 示例: 此操作可能需要重新加载系统。 是否要继续[y/n] |
它会要求您在系统重新加载设备之前确认是否要重新加载 |
步骤 10 |
show version 示例: switch#show version |
验证操作模式 |
此示例说明如何使用旧版请求平台软件包扩展 指令:
Switch#request platform software package expand file flash:image_name.bin
注:在手动提取过程中,创建的配置文件可以命名为bin image file_name.conf。确定正确的配置文件并设置引导变量。
从安装模式转换为捆绑包模式
执行以下操作步骤将操作模式从安装模式转换为捆绑模式:
步骤 |
命令或操作 |
目的 |
第 1 步 |
enable 示例: switch#enable |
启用特权执行模式。
|
步骤 2 |
show version 示例: switch#show version |
验证操作模式 |
步骤 3 |
show boot 示例: switch#show boot |
显示BOOT变量的内容、CONFIG_FILE变量指向的配置文件名称、BOOTLDR变量的内容和配置寄存器 |
步骤 4 |
no boot system 示例: switch(config)#no boot system |
删除启动系统映像规范。 注:在应用no boot system命令之前,请确保已加载要使用的Cisco IOS版本的.bin文件。 |
步骤 5 |
boot system switch all flash 示例: switch(config)#boot system switch all flash:cat9k_iosxe.16.12.04.SPA.bin |
更新堆栈中所有交换机的启动变量。 |
步骤 6 |
退出 示例: switch(config)#exit |
退出配置模式到层次结构中的下一个最高模式。 |
步骤 7 |
写存储器 示例: switch#write memory |
将文件从源复制到目标。 |
步骤 8 |
|
|
步骤 9 |
reload 示例: switch#reload |
它会要求您在系统重新加载设备之前确认是否要重新加载 |
步骤 10 |
show version 示例: switch#show version |
验证操作模式 |
Bin文件损坏
为避免这种情况,请在执行软件安装操作之前验证md5校验和值。 如果md5校验和值不匹配,请再次将bin文件复制到闪存中。
Switch#verify /md5 flash:
.bin
闪存中的空间不足
为避免这种情况,请在安装软件之前执行软件清理操作。软件清理的命令语法取决于交换机当前使用的代码版本。
对于16.6.3及更低版本:
Switch#request platform software package clean
对于16.6.4及更高版本:
Switch#install remove inactive
堆栈故障场景(V — 不匹配)
如果您获得V-mismatch,这意味着交换机上安装的软件不同于活动软件,如以下命令输出所示:
switch#show switch
Switch/Stack Mac Address : 08ec.f5e1.8f80 - Local Mac Address
Mac persistency wait time: Indefinite
H/W Current
Switch# Role Mac Address Priority Version State
-------------------------------------------------------------------------------------
*1 Active 08ec.f5e1.8f80 10 V01 Ready
2 Member 701f.5300.fa00 15 V01 V-Mismatch <--- Indicates a version mismatch
如果您处于安装模式,则可以选择使用auto-upgrade命令解决此问题。 自动升级功能的目的是允许交换机升级到兼容的软件映像,以便交换机可以加入交换机堆栈。 当新交换机尝试加入交换机堆叠时,活动交换机将执行兼容性检查。每个堆叠成员将兼容性检查的结果发送到活动交换机,活动交换机使用该结果来确定交换机是否可以加入交换机堆叠。如果新交换机上的软件与交换机堆叠不兼容,新交换机将进入版本不匹配(VM)模式。如果在当前交换机堆叠上启用了自动升级功能,活动交换机将使用安装在兼容堆叠成员上的相同软件映像自动升级新交换机。自动升级在检测到不匹配的软件后几分钟启动。
您可以通过 software auto-upgrade enable
全局配置命令。
注:默认情况下禁用自动升级。自动升级功能在捆绑包模式下不可用。交换机堆叠必须在安装模式下运行。
如果您处于捆绑包模式,请执行以下操作步骤:
步骤1:从堆叠中删除不匹配的交换机。
第二步: 将其升级到正确的版本。
第四步: 将引导变量设置为正确的.bin文件并保存配置。
第五步: 关闭交换机电源,连接堆栈电缆并打开交换机电源。
由于堆栈1+1变量,交换机启动到ROMMON
如果设备显示以下日志,则可以识别此情况:
switch:boot
attempting to boot from [flash:packages.conf]
Located file packages.conf
##########################################################################################################################
Validate packages: SHA-1 hash:
calculated 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA
expected 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA
Both links down, not waiting for other switches
Switch number is 2
Chassis 2 reloading, reason - Active/standby selection failed in 1+1 Mode <<<<<<
Feb 19 20:06:55.572 FP0/0: %PMAN-5-EXITACTION: Process manager is exiting: reload fp action requested
Feb 19 20:06:57
Initializing Hardware...
恢复:
步骤1:取消设置Stack 1+1变量。
Switch:unset STACK_1_1
第二步: 取消设置Stack 1+1引导加载程序变量后,发出 boot
命令,以便交换机可以从交换机上设置的引导变量启动。
switch:boot
##########################################################################################################################
Validate packages: SHA-1 hash:
calculated 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA
expected 550C9730:667B2788:DD6F6B06:D0FFA819:01A315DA
Both links down, not waiting for other switches
Switch number is
升级时无法将Bin映像复制/提取到成员交换机之一
有时,在将映像复制到成员交换机时可能会出错:
Preparing install operation ...
[1]: Copying software from active switch 1 to switch 2
[2]: % Failed to copy file flash:cat9k_iosxe.17.03.03.SPA.bin from active switch 1 to switch 2,
operation aborted
恢复:
步骤1: 检查复制失败的成员上的闪存。验证它是否有足够的可用空间,或者闪存是否损坏。
第二步: 如果空间不足,则删除文件以确保有足够的可用空间。
第三步: 如果空间可用但仍未复制,则格式化成员交换机的闪存驱动器。
Switch#format flash-1:
第四步: 一旦有足够的空间可用或闪存已恢复,请执行升级
第五步: 如果即使在格式化后发现同一交换机有相同错误,请排除交换机上的闪存问题。
注意:有关特定于版本的进一步说明,请参阅您计划升级到的版本的版本说明。
安装模式与捆绑包模式的限制
安装模式和捆绑操作模式具有以下限制:
传统请求平台命令
本节介绍如何使用 request platform
命令和9500和9300上支持的命令。
- 对于Cisco Catalyst 9000交换机,不建议使用此方法。请使用上述方法之一.
- 这些命令自 16.10.1 版本起已弃用,建议您使用“install”命令.
- 此处列出了三个最重要的命令(还有很多选项,但最好使用
install
命令而不是这些命令)。
扩大采购
- 此命令会支持您指定的任何 .bin 文件,并从中提取出 .pkg 文件.
Switch#request platform software package expand switch all file flash:cat9k_iosxe.16.09.02.SPA.bin
- 如果设备以捆绑模式运行。首先运行“expand”命令,然后将引导语句更改为 packages.conf 并重新加载以进入安装模式
Install(安装)
- 如果您已处于安装模式,请使用此命令切换至另一个版本.
request platform software package install switch all file flash:test auto-copy new
Clean(清理)
request platform software package clean
ROMMON改进
Cisco IOS XE版本16.12.X提供以下3个ROMMON增强功能
show romvar
— 转储ROMMON变量的新CLI命令(相当于ROMMON中的“set”命令)
- 能够从ROMMON模式显示文件
show bootlog
- ROMMON升级日志会被捕获,并同时从Cisco IOS和ROMMON模式提供
注:默认情况下启用此功能。禁用功能集 ROMMON_BOOT_LOG_DISABLE=1
在ROMMON提示符下
C9200L#show romvar
----------------------------------
ROMMON variables for Active Switch
----------------------------------
AUTOBOOT_COUNT="0"
AUTOBOOT_STATE="0"
BAUD="9600"
BOOT="tftp://chinmoha/pol.bin;"
BOOT64="flash:quake.itb.ssa.181009"
BOOT_LOADER_UPGRADE_DISABLE="yes"
BOOT_PARAM="ip=172.16.0.230::172.16.0.1:255.255.0.0:vore:eth0:on DEBUG_CONF= REAL_MGMTE_DEV="
CFG_MODEL_NUM="C9200L-48T-4X-E"
CLEI_CODE_NUMBER="INM6H00ARA"
DEFAULT_GATEWAY="172.16.0.1"
DEFAULT_ROUTER="172.16.0.1"
ENABLE_BREAK="yes"
IP_ADDRESS="172.16.0.230"
IP_MASK="255.255.0.0"
IP_SUBNET_MASK="255.255.0.0"
LICENSE_BOOT_LEVEL="network-essentials,all:C9200L-48;"
MAC_ADDR="70:B3:17:2E:1C:80"
MANUAL_BOOT="yes"
MODEL_NUM="C9200L-48T-4X"
MODEL_REVISION_NUM="29"
MOTHERBOARD_ASSEMBLY_NUM="73-19242-03"
MOTHERBOARD_REVISION_NUM="04"
MOTHERBOARD_SERIAL_NUM="JAE22370MLD"
ROMMON_AUTOBOOT_ATTEMPT="3"
ROMMON_BOARDID="0x315"
ROMMON_BOARDREV="0x4"
ROMMON_BOOT_LOG="1" ---> boot log is enabled (default)
STANDALONE="1"
SWITCH_NUMBER="1"
SYSTEM_SERIAL_NUM="JAE22370MLD"
TAN_NUM="68-101384-01"
TEMPLATE="advanced"
TFTP_SERVER="172.16.0.25"
USB_DB_INFO="73-18785-03A0JAE22410UH0"
VERSION_ID="PPC"
ABNORMAL_RESET_COUNT="0"
BSI="0"
RANDOM_NUM="966540990"
C9200L#show bootlog switch active r0
=========================================================
//// ROMMMON Boot up log start ////
System Bootstrap, Version 99.2, DEVELOPMENT SOFTWARE
Compiled Wed 12/12/2018 14:56:53 by chinmoha
Copyright (c) 2018 by Cisco Systems, Inc.
Current ROMMON image : Primary
C9200L-48T-4X platform with 2097152 Kbytes of main memory
switch: boot: attempting to boot from [tftp://chinmoha/pol_try.bin]
Filename : /chinmoha/pol_try.bin
IpAddress : 172.16.0.230
TftpServer : 172.16.0.25
TftpBlkSize : 1468
*
File Size : 349275061
//// ROMMMON Boot up log end ////
==========================================================
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.155 (xelinux@xe-linux-bld1) (gcc version 5.3.0 (GCC) ) #1 SMP Thu Dec 13 00:46:18 PST 2018
[ 0.000000] Boot CPU: AArch64 Processor [410fd034]
[ 0.000000] Cisco Package: start=0xa2000000
[ 0.000000] Cisco Package: size=0x12b02000
[ 0.000000] Cisco Package at 0xffffffc022000000 (313532416 bytes)
[ 0.000000] crashkernel reserved: 0x00000000fde00000 - 0x00000000ffe00000 (32 MB)
[ 0.000000] cma: Reserved 128 MiB at 0x00000000f0000000
[ 0.000000] On node 0 totalpages: 524229
[ 0.000000] DMA zone: 8192 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 524229 pages, LIFO batch:31
[ 0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc07ffa3000 s24472 r8192 d28776 u61440
[ 0.000000] pcpu-alloc: s24472 r8192 d28776 u61440 alloc=15*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: enabling workaround for ARM erratum 845719
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 516037
--snip--
ROMMON — 在ROMMON模式下允许文件传输到USB/TFTP/从USB/TFTP
在ROMMON模式中,这些命令可用于在USB/TFTP之间传输。
重要信息:这些命令可从Cisco IOS XE 17.1.1获得
switch: copy ?
usage:
copy
switch:
switch: dir
usage:
dir <path-to-directory>
supported filesystem(s):
flash: ro flash
bootflash: ro system partition
usbflash0: rw front-panel USB
usbflash1: rw back-panel USB
switch: dir flash:
Size Attributes Name
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
—snip—
616 -rw- vlan.dat
4096 drw- tech_support
835079148 -rw- cat9k_iosxe.17.01.01.SPA.bin
910498192 -rw- cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20191212_030414_2.SSA.bin
9307 -rw- cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20180819_200912_2.SS.conf
—snip—
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
switch: copy flash:vlan.dat usbflash0:
Using Destination file path: usbflash0:vlan.dat
Reading : 616
Writing : 616
switch:
switch: dir usbflash0:
Size Attributes Name
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
—snip—
880878448 -rw- cat9k_iosxe.sh_tech_cts
835079148 -rw- cat9k_iosxe.17.01.01.SPA.bin
4096 -rw- ._cat9k_iosxe.17.01.01.SPA.bin
910498192 -rw- cat9k_iosxe.BLD_POLARIS_DEV_LATEST_20191212_030414_2.SSA.bin
616 -rw- vlan.dat
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
相关信息