> 背景速览:做数通运维这几年,我自己实测过不下十次华为 S 系列交换机”配置看着都在,重启就丢”的诡异故障。说白了,这类问题十有八九是配置文件优先级没搞清楚——尤其是改了启动路径、又用了 `backup.cfg` 双保险之后,启动顺序一乱,场面就直接破防了。这篇文章就把这套排障流程掰开了讲,按步骤照着做就行。
一、故障现象:哪些”症状”算配置丢失?
先把现场常见的几种”配置丢失”摆出来,免得你对着错误的方向排查:
- 重启即丢:交换机断电重启后,所有配置(VLAN、接口、路由、ACL)全部归零;
- 部分丢失:只有少数命令回到出厂状态,其余配置完好;
- 启动慢 / 卡在 “Press Ctrl+B”:说明启动文件指向了一个不存在的 `.cfg` 文件;
- `display startup` 显示路径和实际运行配置对不上:当前生效的是 `startup.cfg`,但你明明手动指定过 `backup.cfg`;
- 换板/换主控后配置漂移:堆叠或集群场景下,从交换机配置被主交换机覆盖。
如果以上症状命中两条以上,大概率就是启动文件优先级那条线出了问题。下面我们直接进正题。
二、踩坑实录:一个真实的「配置消失」现场
去年给客户部署一台 S5731-S24P4X 做接入层改造,三层架构跑得稳稳的——这型号是华为 S 系列里当下出货量很大的一款。结果某天园区断电恢复后,VLAN 配置全没了,IP 也没了,业务直接瘫了一片。
到场一看:
- `display startup` 显示启动文件是 `flash:/startup.cfg`,存在;
- `dir flash:/` 里同时有 `startup.cfg` 和 `backup.cfg`;
- 但 `display current-configuration` 是空的。
问题在哪?原来上一任工程师做过一次手工切换,把 `startup` 指向了 `backup.cfg`,然后 `save force` 了一下。但是中间又手动编辑过 `startup.cfg`(没保存),结果重启时 VRP 按优先级逻辑读到了过时的那份。这事儿说白了,就是配置文件优先级 + 双备份机制这套玩法没彻底摸透。
下面把完整排查步骤拆给你看。
第一步:先看”启动配置”,别上来就乱 save
很多人一看配置丢了,第一反应就是 `save`,但这其实是最坑的操作——你可能把错误的当前配置直接固化到启动文件里,再重启就更回不去了。
先看两条命令:
<HUAWEI> display startup
这条命令会告诉你:
- MainBoard startup saved-configuration:主控板下次启动加载的配置文件路径
- SlaveBoard startup saved-configuration:备板(如果有)的启动路径
- Next startup saved-configuration:下一次启动要用的文件
再确认一下 VRP 版本和文件系统:
<HUAWEI> display version
<HUAWEI> dir flash:/
`dir flash:/` 这一步必须看,因为要确认:
- `startup.cfg` 和 `backup.cfg` 实际大小——空文件一般只有几百字节,正常配置至少几 KB;
- 修改时间——哪个是新的、哪个是旧的,心里有数;
- 有没有被 `unzip` 或 `delete /unreserved` 误删。
第二步:摸清 VRP 启动顺序与配置文件优先级
华为 VRP 启动时读配置的顺序是这样的(这是整个排障的核心):
- 先读 `display startup` 里”Next startup saved-configuration”指向的文件;
- 如果这个文件不存在或损坏,回退到默认 `flash:/startup.cfg`;
- 如果默认文件也不存在,设备启动后进入空配置模式;
- `backup.cfg` 不会参与启动加载,它只是你手工维护的一份冗余备份。
所以你看到的”配置丢了”,其实有几种典型触发场景:
| 触发场景 | 典型表现 |
|---|---|
| `startup` 指向了不存在的 `.cfg` | 重启后空配置 |
| `startup.cfg` 被手动编辑未保存,重启读取旧版本 | 部分配置回退 |
| `backup.cfg` 比 `startup.cfg` 新,但启动路径没切 | 启动用的是旧版本 |
| 升级 VRP 后新版本不识别旧配置 | 部分命令被丢弃 |
| CF 卡 / flash 损坏 | 所有配置都无法加载 |
把现场对照这个表,先定位是哪种场景,再下手修。
第三步:执行保存与恢复——四种核心命令按需选用
这一步是原稿精华,四个命令我整理在一起,方便你直接复制粘贴,但每种用法对应不同场景,别用错:
方式一:将当前配置强制保存到默认的 startup 文件(推荐)
# 方式一:将当前配置强制保存到默认的 startup 文件(推荐)
save force
适用场景:当前 `display current-configuration` 显示是对的,但你担心重启会丢——直接 `save force` 把当前运行配置固化到 `startup.cfg`。
方式二:手动指定下次启动配置路径
# 方式二:手动指定下次启动配置路径
startup saved-configuration flash:/startup.cfg
适用场景:你明确要把”下次启动加载哪个文件”指到 `startup.cfg`,比如刚从 backup 恢复完之后,要把这个路径重新固化。
方式三:把启动路径切换到 backup.cfg
# 方式三:把启动路径切换到 backup.cfg
startup saved-configuration flash:/backup.cfg
save force
适用场景:你对比过 `backup.cfg` 和 `startup.cfg`,确认 backup.cfg 才是正确版本,并且你希望长期让 VRP 从 backup.cfg 启动——直接 `startup saved-configuration` 把启动路径切过去。这步的关键是”启动路径已经指过去了,下次重启就走 backup.cfg”。
方式四:把 backup.cfg 内容覆盖回 startup.cfg
# 方式四:把 backup.cfg 内容覆盖回 startup.cfg
copy flash:/backup.cfg flash:/startup.cfg
startup saved-configuration flash:/startup.cfg
save force
适用场景:你希望”未来启动仍然读 startup.cfg”,但 startup.cfg 的内容已经坏了,所以先 `copy` 把 backup.cfg 整份覆盖回 startup.cfg,再把启动路径指回 startup.cfg,最后 `save force` 固化当前运行配置。
第四步:验证修复结果
这一步千万别省。修完之后,必须确认三件事:
- 启动路径对了;
- 当前配置和你期望的一致;
- 重启一遍真的不会丢。
4.1 确认启动路径
<HUAWEI> display startup
预期输出(修复成功后):
MainBoard:
Startup saved-configuration file: flash:/startup.cfg
Next startup saved-configuration file: flash:/startup.cfg
SlaveBoard:
Startup saved-configuration file: flash:/startup.cfg
Next startup saved-configuration file: flash:/startup.cfg
4.2 对比当前配置和启动配置
<HUAWEI> display current-configuration
<HUAWEI> display saved-configuration
两条命令输出应当完全一致(行数、字符都一致)。如果出现差异,说明 `save force` 没执行成功,或者保存到了错误路径。
<HUAWEI> compare configuration
输出会以 `+` `!` `-` 标记差异行,一眼就能看出哪儿对不上。
4.3 模拟重启(强烈推荐)
在条件允许的情况下,做一次真正的软重启来验证:
<HUAWEI> reboot
重启后再次登录,执行 `display current-configuration`,如果配置还在——恭喜,坑踩完了,可以松口气。如果还是丢,回去看 `dir flash:/` 里文件大小和修改时间,多半是 flash 介质出问题或者 startup 路径又指错了。
三、避坑指南:2026 年我整理的几条血泪经验
这部分是我自己踩过、或者看同行踩过的真实案例,比命令本身更重要,建议收藏:
- 永远不要裸改 `startup.cfg`:先用 TFTP / SFTP 把文件备份出来,编辑完再传回去,别直接在设备上 `delete` + `mkdir` 操作文件,VRP 有时候会因为文件锁出问题。
- `save force` 之前先看一眼时间:交换机时间不对的话,配置文件的”修改时间”会误导你判断新旧。
- CF 卡扩容后记得重新指定启动路径:S5731-S 升级到大容量 flash 之后,路径可能从 `flash:/` 变成 `flash:/switch/`,老配置里写死的 `flash:/startup.cfg` 会失效。
- 堆叠环境慎用 `save force`:堆叠里从交换机 `save force` 可能触发和主控的配置同步冲突,先 `display stack` 看主备状态。
- 升级 VRP 前必做 backup:尤其是跨大版本升级(比如从 V200R 系列升到 V600R 系列),部分私有命令会失效。
四、FAQ:工程师最容易问的几个问题
Q1:`save` 和 `save force` 到底有啥区别?
A:`save` 会交互式问你 “Are you sure?”,`save force` 跳过这一步直接写。脚本和自动化场景必须用 `force`。
Q2:`backup.cfg` 是 VRP 自动生成的吗?
A:默认情况下不是。VRP 不会自动给你生成 `backup.cfg`,这个文件需要你自己手工用 `copy` 命令把 `startup.cfg` 复制一份过去(比如 `copy flash:/startup.cfg flash:/backup.cfg`),或者在自动化脚本里定期备份。所谓 `backup.cfg` 是”上次确认能用的快照”——这个说法没错,但前提是你手动维护了它。
Q3:能不能让 `startup.cfg` 和 `backup.cfg` 都加载?
A:不能。VRP 启动只读一个配置文件,`backup.cfg` 只是冗余备份,不参与启动加载。如果你想要双保险,就手工维护两份,并把 `startup` 指向最新的那份。
Q4:S5731-S 和老的 S5720 排障命令一样吗?
A:核心命令(`display startup`、`save force`、`startup saved-configuration`)完全一致。但 S5731-S 较新批次预装 VRP 版本更高,部分 `display` 输出格式有微调(比如多了 `Next startup` 行),看的时候注意对应字段。
Q5:配置丢失但 `dir flash:/` 显示文件都在,是为啥?
A:九成是文件损坏。可以尝试 `fixdisk flash:/` 修复文件系统,或者把文件拷出来用 `disassemble` 类工具做完整性检查。
Q6:升级 VRP 后配置丢失,是不是升级失败了?
A:不一定。VRP 大版本升级会对配置做兼容性裁剪,不兼容的命令会被静默丢弃。建议升级前用 `display current-configuration | include` 关键命令做一次快照。
五、写在最后
如果你是网络运维新手,老老实实把 `display startup`、`display saved-configuration`、`dir flash:/` 这三条命令输出背下来,每次改配置前后都对照看一眼,基本就不会再踩这个坑。这三条命令说白了就是华为交换机排障的”天花板三件套”,拿捏住优先级,问题就稳了。