← 回到技术随笔
· 6171 字

H3C交换机固件升级

以单台 H3C 盒式交换机为例,记录固件升级前的准备、文件传输、启动项设置、重启验证和故障回退方法。

适用范围:仅适用于本人拥有或已获明确授权维护的 H3C 交换机。固件升级需要重启设备,会中断业务;错误的软件包或启动项可能导致设备无法启动。

版本说明:H3C 不同型号、Comware V5/V7、单机或 IRF 环境的命令存在差异。本文主要整理单台盒式交换机的常规升级思路,实际命令必须以设备在线帮助、目标版本说明书和对应型号官方升级指导为准。

阅读说明:代码块中以 # 开头的是操作说明,不需要输入设备。文件名、地址、账号和版本号都是示例,使用时必须替换。

一、这类升级最重要的不是上传文件

参考案例是一台较老的 H3C S3110-26TP-SI。设备运行 Comware V5,遇到 MAC 地址漂移、异常 BPDU 报文等问题后,运维人员决定更新固件。

现场做固件升级时,真正容易出问题的通常不是 FTP 上传,而是下面几件事:

  1. 固件与设备子型号不匹配。
  2. 没看版本说明,漏掉中间版本或 BootWare 要求。
  3. 新文件传完后,启动项设置错误。
  4. 为腾空间提前删除旧镜像,失去回退条件。
  5. 只保存配置,没有把配置和旧固件备份到电脑。
  6. 远程升级却没有 Console 应急手段。
  7. 重启后只看版本号,没有检查端口和业务。

所以我的理解是:上传固件只是中间一步,升级前确认和升级后验证才是主要工作。

二、先把现场信息记下来

到设备后先不要急着传文件。第一件事是记录型号、当前版本、启动文件和剩余空间。

# 查看设备型号、Comware 版本和 BootWare 版本。
<H3C> display version

# 查看设备序列号、生产信息和具体型号。
<H3C> display device manuinfo

# 查看当前运行镜像以及下次启动的主用、备用镜像。
<H3C> display boot-loader

# 查看当前和下次启动使用的配置文件。
<H3C> display startup

# 查看 Flash 中已有文件和剩余空间。
<H3C> dir

老版本设备可能不支持其中某条命令。这时不要猜命令,可以输入 display ? 查看当前版本提供的选项。

建议至少记录以下内容:

设备型号:
序列号:
当前 Comware 版本:
当前 BootWare 版本:
当前启动镜像:
主用启动镜像:
备用启动镜像:
启动配置文件:
Flash 剩余空间:

这份记录升级后还要再做一次,前后对比比单纯看一眼版本号更可靠。

三、固件一定按完整型号下载

固件应从 H3C 官方文档与软件下载页面 获取。

这里有一个很容易踩的坑:设备面板上看到的系列名称不一定足够。例如同为 S3100 或 S5130 系列,不同子型号、硬件版本和 Comware 平台使用的软件包可能不同。下载前要用 display versiondisplay device manuinfo 的结果逐项核对。

下载后不要只留下固件,还要把对应版本说明书一起保存。重点看以下几项:

  • 适用产品列表;
  • 当前版本能否直接升级;
  • 是否要求先升级到中间版本;
  • 是否需要升级 BootWare;
  • 新版本是否有配置不兼容项;
  • 是否支持从新版本直接回退;
  • 升级文件的官方校验值。

在电脑上计算文件哈希:

# Linux:计算升级包的 SHA-256。
sha256sum H3C-model-release.ipe

# macOS:计算升级包的 SHA-256。
shasum -a 256 H3C-model-release.ipe
# Windows PowerShell:计算升级包的 SHA-256。
Get-FileHash .\H3C-model-release.ipe -Algorithm SHA256

如果官方提供的是其他算法,就按官方给出的算法比较。文件名正确但哈希不一致时,不要继续。

四、升级前先给自己留退路

现场升级前,我认为下面几项缺一不可:

  • 已批准的维护时间;
  • Console 线和可用的终端软件;
  • 当前配置的设备内保存和电脑端备份;
  • 当前稳定固件的电脑端备份;
  • 新固件及版本说明书;
  • 明确的主用、备用启动方案;
  • 交换机无法启动时的 BootWare 恢复资料;
  • 核心业务的升级前状态记录。

先保存配置:

# 保存当前运行配置。
<H3C> save

# 确认下次启动使用的配置文件。
<H3C> display startup

然后把启动配置文件和当前固件下载到受控的运维电脑。配置中可能包含账号、密文口令、SNMP 团体字等敏感信息,不能放到公开网盘或公共 GitHub 仓库。

升级前最好再保存一组业务状态,例如:

# 查看端口简要状态。
<H3C> display interface brief

# 查看设备和板卡状态。
<H3C> display device

# 查看日志缓冲区。
<H3C> display logbuffer

# 如果使用 IRF,查看成员和角色状态。
<H3C> display irf

如果设备承载 STP、链路聚合、VRRP 或动态路由,还要保存对应的邻居和协议状态。升级后按同一组命令复查。

五、先搭一个独立的维护网络

参考案例使用交换机管理 VLAN 与电脑直连。假设:

设备 示例地址
交换机管理地址 192.0.2.2/24
运维电脑地址 192.0.2.10/24

实际地址要按现场规划填写。建议使用空闲端口和独立管理 VLAN,先测试电脑能够访问交换机管理地址,再传固件。

FTP 和 TFTP 都是明文协议,只适合隔离、可信、临时使用的维护网络。设备支持 SFTP 或 USB 时,可以优先选择更合适的方式。

六、传固件:我更倾向让交换机做客户端

参考案例的做法是开启交换机 FTP Server,再从电脑上传。这个方法能用,但需要在交换机上临时开放 FTP 服务和账号。

实际维护中,我更倾向于:

  1. 在运维电脑上临时开启 FTP Server。
  2. 限制 FTP 根目录和来源地址。
  3. 让交换机作为 FTP Client 主动下载。
  4. 下载结束后关闭电脑上的临时 FTP Server。

这样不会在交换机配置里留下 FTP 服务和临时账号。

6.1 交换机作为 FTP Client

把固件放进电脑 FTP Server 的授权目录,电脑上开启FTP Server软件,配置好用户名、口令、IP地址等信息,然后在交换机上操作:

# 进入设备启动软件所在的 Flash 根目录。
<H3C> cd flash:/

# 登录运维电脑的临时 FTP Server。
<H3C> ftp 192.0.2.10

# 按提示输入运维电脑上的临时 FTP 用户名和口令。
User: upgrade-transfer
Password:

# 切换为二进制传输模式,避免固件内容被转换。
ftp> binary

# 下载升级文件。
ftp> get H3C-model-release.ipe

# 退出 FTP 会话。
ftp> quit

Comware V5 的老设备常见单个 .bin 文件,Comware V7 常见 .ipe 文件,也有版本会分别提供 Boot 和 System 镜像。这里不能只改文件扩展名,必须按版本说明书准备。

6.2 需要交换机作为 FTP Server 时

如果现场软件只能从电脑主动上传,可以临时开启交换机 FTP Server。下面是常见 Comware V5 配置思路:

# 进入系统视图。
<H3C> system-view

# 创建本次传输使用的临时账号。
[H3C] local-user upgrade-transfer

# 设置临时口令,实际口令应符合现场安全要求。
[H3C-luser-upgrade-transfer] password cipher <temporary-password>

# 只允许该账号使用 FTP。
[H3C-luser-upgrade-transfer] service-type ftp

# 把账号工作目录限制在 Flash。
[H3C-luser-upgrade-transfer] authorization-attribute work-directory flash:/

# 返回系统视图。
[H3C-luser-upgrade-transfer] quit

# 临时开启 FTP Server。
[H3C] ftp server enable

电脑端应使用二进制模式上传。文件传完后立即关闭服务并删除临时账号:

# 进入系统视图。
<H3C> system-view

# 关闭 FTP Server。
[H3C] undo ftp server enable

# 删除临时账号。
[H3C] undo local-user upgrade-transfer

不同 Comware 版本删除用户的语法可能不同。执行前先用 undo local-user ? 核对,不要直接照抄。

七、文件传完先别急着重启

传输结束后至少做三项检查:文件是否存在、大小是否正确、设备能否校验。

# 查看文件名、文件大小和 Flash 剩余空间。
<H3C> dir flash:/

# 在支持该命令的设备上计算文件 SHA-256。
<H3C> sha256sum flash:/H3C-model-release.ipe

部分设备只支持 md5sum,部分老版本可能没有文件摘要命令。应通过命令行 ? 确认,并与官方提供的同类校验值比较。

如果 Flash 空间不足,不要上来就删除旧固件。先通过 display boot-loaderdisplay startup 确认哪些文件正在使用,再查清楚未使用文件的用途。当前镜像和备用镜像最好都保留。

八、设置启动项才是真正的关键步骤

固件传到 Flash 后不会自动生效。必须把新版本设置为下次启动的主用镜像,同时把当前稳定版本保留为备用镜像。

8.1 Comware V7 的 IPE 文件

常见命令如下:

# 将新 IPE 设置为所有成员的主用启动软件。
# 是否支持 all 应以设备在线帮助为准。
<H3C> boot-loader file flash:/H3C-new-release.ipe all main

# 将当前稳定版本设置为备用启动软件。
<H3C> boot-loader file flash:/H3C-old-release.ipe all backup

# 核对当前、主用和备用启动软件。
<H3C> display boot-loader

如果版本提供独立的 Boot 和 System 文件,两者必须属于同一配套版本:

# 同一条命令在文档中折行显示,反斜杠表示下一行仍属于本条命令。
<H3C> boot-loader file boot flash:/new-boot.bin \
  system flash:/new-system.bin all main

在设备终端中通常要连续输入完整命令,不要把反斜杠当成设备命令的一部分。

8.2 参考案例中的 Comware V5

参考文章中的 S3110-26TP-SI 使用单个 .bin 固件:

# 将新版本设置为 1 号槽位的主用启动软件。
# 反斜杠只表示文章换行,设备终端中应输入完整的一行命令。
<H3C> boot-loader file S3110_26TP_SI-CMW520-R1120.bin \
  slot 1 main

# 将原来的稳定版本设置为备用启动软件。
<H3C> boot-loader file S3110_26TP_SI-CMW520-R1107.bin \
  slot 1 backup

这些文件名只适用于参考案例,不能拿到其他型号上使用。

有些更早的 V3/V5 设备会使用 .btmboot bootromboot boot-loader 等命令。遇到这种设备时应停下来查该型号手册,不要把新平台的 boot-loader file 命令硬套上去。

九、重启前做最后一次“三确认”

我习惯在重启前再确认三遍:

1. 启动镜像

# 确认新版本是主用镜像,旧版本是备用镜像。
<H3C> display boot-loader

2. 启动配置

# 确认下次启动配置文件没有选错。
<H3C> display startup

3. 文件是否还在

# 确认新旧镜像和配置文件都存在。
<H3C> dir flash:/

只要文件路径、主备关系或启动配置有一项不确定,就不要重启。

确认无误后:

# 保存需要保留的配置。
<H3C> save

# 在批准的维护窗口内重启设备。
<H3C> reboot

重启期间保持 Console 连接,不要断电,也不要拔出存放启动文件的介质。如果设备自动升级 BootWare 或板卡软件,应耐心等待并保存完整输出。

十、设备起来以后,不要只看版本号

升级后的第一项当然是确认版本:

# 确认当前运行版本和 BootWare 版本。
<H3C> display version

# 确认当前镜像以及下次启动的主用、备用镜像。
<H3C> display boot-loader

接着按升级前保存的命令逐项复查:

# 检查设备和板卡状态。
<H3C> display device

# 检查端口状态和异常接口。
<H3C> display interface brief

# 检查启动配置文件。
<H3C> display startup

# 检查升级和启动过程中是否有异常日志。
<H3C> display logbuffer

现场还要关注:

  • IRF 成员是否全部上线;
  • 聚合成员口是否恢复;
  • STP 状态是否稳定;
  • MAC 地址学习是否正常;
  • VRRP 和动态路由邻居是否恢复;
  • PoE、光模块和业务板卡是否正常;
  • SSH、SNMP、NTP 和日志功能是否正常;
  • 关键业务端到端连通性是否恢复。

最后再看一次 display boot-loader。有些问题是“这次已经启动成功,但下次启动项仍然错误”,这一项很容易被忽略。

十一、出现问题时怎么退

如果新版本启动后出现严重故障,不要先删除日志或反复修改配置。应先记录:

  • 故障开始时间;
  • 当前版本和启动镜像;
  • Console 和日志中的报错;
  • 哪些端口、协议或业务异常;
  • 与升级前相比发生了什么变化。

设备还能进入系统时,可按已确认的回退方案把旧版本重新设置为主用镜像,并恢复与旧版本匹配的配置文件。设置后仍要检查主备镜像、启动配置和文件是否存在,再重启。

如果设备已经不能进入 Comware,就需要通过 Console 进入 BootWare 菜单恢复。不同型号的菜单内容和编号并不统一,应使用该型号的官方升级指导,不要凭其他设备的截图盲选。

还要注意:软件回退不等于配置自动回退。 新版本保存过的配置可能出现旧版本不认识的命令,所以升级前单独备份原配置非常重要。

十二、几条现场经验

1. 不要用文件名判断兼容性

文件名像、系列相近,都不能代替官方适用型号列表。

2. 不要升级前就删旧镜像

新版本还没有启动验证时,旧镜像就是最直接的退路。

3. 主用和备用不要都指向新版本

备用镜像应该是已经验证能正常启动的旧版本,否则主用失败后仍然没有可用镜像。

4. FTP 用完就关

FTP 明文传输账号和口令。临时维护结束后要关闭服务、删除账号,并确认配置中没有遗留。

5. 核心设备不要只靠远程升级

远程会话一旦中断,就无法判断设备是在正常重启、卡在 BootWare,还是网络没有恢复。关键设备应准备 Console 和现场协助。

6. IRF 不要照搬单机步骤

IRF 涉及主从成员、文件同步和业务倒换。是否能使用 ISSU、成员升级顺序如何,都应按对应型号和版本的官方指导执行。

十三、可以直接使用的升级检查表

升级前

  • [ ] 已记录完整型号、序列号、当前版本和 BootWare 版本。
  • [ ] 已确认目标固件适用型号和升级路径。
  • [ ] 已阅读版本说明书并核对文件哈希。
  • [ ] 已保存并导出当前配置。
  • [ ] 已备份当前稳定固件。
  • [ ] 已记录端口、协议和关键业务状态。
  • [ ] 已准备 Console、维护窗口和回退方案。

重启前

  • [ ] 新固件传输完整,文件校验通过。
  • [ ] Flash 空间满足升级要求。
  • [ ] 新版本已设置为主用镜像。
  • [ ] 旧版本已设置为备用镜像。
  • [ ] 启动配置文件正确。
  • [ ] 新旧镜像和配置文件均存在。

升级后

  • [ ] 当前运行版本正确。
  • [ ] 下次启动的主用、备用镜像正确。
  • [ ] 端口、IRF、板卡和协议状态正常。
  • [ ] 关键业务验证通过。
  • [ ] 日志中没有未处理的异常。
  • [ ] 临时 FTP 服务和账号已清理。
  • [ ] 升级记录、配置和固件已归档。