H3C交换机固件升级
以单台 H3C 盒式交换机为例,记录固件升级前的准备、文件传输、启动项设置、重启验证和故障回退方法。
适用范围:仅适用于本人拥有或已获明确授权维护的 H3C 交换机。固件升级需要重启设备,会中断业务;错误的软件包或启动项可能导致设备无法启动。
版本说明:H3C 不同型号、Comware V5/V7、单机或 IRF 环境的命令存在差异。本文主要整理单台盒式交换机的常规升级思路,实际命令必须以设备在线帮助、目标版本说明书和对应型号官方升级指导为准。
阅读说明:代码块中以
#开头的是操作说明,不需要输入设备。文件名、地址、账号和版本号都是示例,使用时必须替换。
一、这类升级最重要的不是上传文件
参考案例是一台较老的 H3C S3110-26TP-SI。设备运行 Comware V5,遇到 MAC 地址漂移、异常 BPDU 报文等问题后,运维人员决定更新固件。
现场做固件升级时,真正容易出问题的通常不是 FTP 上传,而是下面几件事:
- 固件与设备子型号不匹配。
- 没看版本说明,漏掉中间版本或 BootWare 要求。
- 新文件传完后,启动项设置错误。
- 为腾空间提前删除旧镜像,失去回退条件。
- 只保存配置,没有把配置和旧固件备份到电脑。
- 远程升级却没有 Console 应急手段。
- 重启后只看版本号,没有检查端口和业务。
所以我的理解是:上传固件只是中间一步,升级前确认和升级后验证才是主要工作。
二、先把现场信息记下来
到设备后先不要急着传文件。第一件事是记录型号、当前版本、启动文件和剩余空间。
# 查看设备型号、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 version 和 display 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 服务和账号。
实际维护中,我更倾向于:
- 在运维电脑上临时开启 FTP Server。
- 限制 FTP 根目录和来源地址。
- 让交换机作为 FTP Client 主动下载。
- 下载结束后关闭电脑上的临时 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-loader 和 display 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 设备会使用 .btm、boot bootrom 或 boot 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 服务和账号已清理。
- [ ] 升级记录、配置和固件已归档。