1. 交换机存储管理到底要管什么
交换机系统存储管理,听起来像是后台运维才关心的事,实际上它离故障现场最近。我前阵子在某园区网络改造项目里做设备例行巡检,连续几台设备冒出来同样的问题:启动配置文件明明保存过,断电重启后却回到出厂状态;日志文件把 Flash 剩余空间挤到 0,连一条告警日志都写不进去。折腾到后来发现,根子全在存储管理上。
这篇文章就把我从排障经历里总结出来的东西完整写一遍,讲讲存储结构、常用操作、升级注意事项和故障排查,适合刚接触网络设备的同学,也适合每天和设备打交道但很少深究存储细节的运维老手。
不少人以为交换机存储就是看看 Flash 还剩多少空间,其实没那么简单。交换机上的“存储”指设备自身的 Flash、外部 U 盘/TF 卡这类介质,而系统软件、补丁、配置文件、License、日志,全部都要落在这些存储介质上。任何一块空间分配不合理,都可能引发连锁问题。
1.1 一个典型故障画面
先说我在项目上遇到的具体情况。设备巡检时发现一台设备保存配置一直报错,提示写文件失败。我跑到现场执行dir一看,Flash 剩余空间是 0。再一查,发现/logfile目录下积压了好几个月的日志文件,每个几十 MB,把整个存储塞满了。
当时第一反应是赶紧删日志,但删完之后又发现启动配置文件也没了,因为之前保存配置失败,配置其实一直只存在于运行时内存里,设备一重启就什么都没了。这就是典型的“存储管理没跟上”引发的连环故障。
1.2 存储管理对象清单
| 管理对象 | 主要作用 | 不管会怎样 |
|---|---|---|
| 系统软件文件 | 设备启动时加载的操作系统镜像 | 镜像损坏或丢导致无法启动 |
| 配置文件 | 保存运行配置,保证重启后配置仍在 | 配置丢失,重启恢复出厂 |
| License/特性文件 | 控制功能授权和资源规格 | 功能无法启用,授权失效 |
| 日志文件 | 记录运行状态、告警和排障信息 | 日志缺失,故障无从查起 |
| 补丁/热补丁文件 | 修复已知问题,不替换主版本 | 版本缺陷无法及时规避 |
| 临时/核心转储文件 | 系统异常时生成的排障文件 | 文件堆积占用大量空间 |
所以存储管理不是“偶尔清理一下 Flash”这种事,而是要形成一套日常纪律:知道哪些文件存在哪里、占用多大、能不能删,以及升级和恢复时该依赖哪个文件。
2. 存储介质与文件系统结构
不同型号的设备存储介质不太一样,常见的是内置 Flash、外部 U 盘、TF 卡,早期还有 CF 卡。接口形态虽然不同,逻辑上基本一致:设备把存储介质挂载成一个文件系统,用/表示根目录,用flash:、usb0:这类名称指代具体介质。
我在命令里最常用的是flash:,它通常对应设备内置存储,也是系统软件和配置文件的默认存放位置。外部介质则像认识的新朋友,第一次插上去可能需要确认格式和挂载点,用dir就能看到它当前的内容。
2.1 查看存储容量的正确姿势
先把最常用的命令写出来:
dir这条命令看的是当前目录下的文件和子目录列表。如果要看某个具体介质,可以这样:
dir flash:/ dir usb0:/输出里通常会包含文件权限、大小、日期和文件名,还会给出总共多少空间、已用多少、剩余多少。比如下面这段:
Directory of flash:/ -rw-r--r-- 7868868 Apr 12 2025 10:23:22 system-version.cc -rw-r--r-- 1148 Apr 12 2025 10:25:36 private-data.txt drwxr-xr-x 4096 Apr 12 2025 10:30:01 logfile 128 MB total (26 MB free)第一列的d表示目录,没有d的就是普通文件;第二列之后的数字是文件大小,单位字节;最后是时间和文件名。后面那行空间统计才是关键:如果剩余空间不足,保存配置和升级都会出问题。
2.2 文件命名与文件类型
各厂商的设备对文件后缀的偏好不太一样,但常见类型基本能归纳出来:
| 后缀/关键词 | 用途 |
|---|---|
.cc/.bin | 系统软件镜像 |
.cfg/.dat | 配置文件 |
.lic/.dat | License 授权文件 |
.log | 日志文件 |
.pat | 补丁文件 |
我一般不给设备搞一堆自定义的奇怪文件,尽量保持根目录干净。系统软件放根目录,配置文件固定一个名字,日志归到/logfile,临时上传的文件用完之后马上转移或删除。存储管理做得好的设备,根目录一眼看过去就知道每个文件是干嘛的。
3. 日常存储操作的关键命令与实操要点
真正在设备上做存储管理,绕不开文件操作命令。这些命令不复杂,但用错一个字母就可能把配置文件删了或者覆盖掉,所以要养成先查看、再复制、最后删除的习惯。
3.1 目录切换与文件查看
pwd cd flash:/ mkdir backup dir backuppwd看当前目录,cd切换目录,mkdir创建子目录,dir查看内容。我建议在 Flash 上至少建一个backup目录,专门放手工备份的配置和临时文件,避免和系统文件混在一起。
上传文件到设备或者从设备下载文件,常常也要先确认目标目录存在。目录路径不对,拷贝会直接失败。
3.2 复制、删除和重命名的陷阱
复制文件是最常用的操作:
copy flash:/startup.cfg flash:/backup/startup-20250412.cfg复制完成后最好再用dir对比一下源文件和目标文件的大小,确保文件完整。
删除文件就要小心了。很多设备删除并不是真正把空间释放出来,而是把文件放进回收站,需要执行清空回收站的操作才能真正释放 Flash 空间。比如:
delete flash:/logfile/old-log_202503.log reset recycle-bin如果直接执行格式化,那就不是删单个文件的问题了:
format flash:/这条命令会把整个 Flash 清掉,系统软件、配置文件、日志全部消失。除非你确认手上有完整的备份,而且已经做好了设备返厂或者重装的准备,否则不要轻易执行。
重命名文件用rename,比如把备份配置改成更容易识别的名字。改完之后记得检查一下启动配置引用的是不是新文件名,否则重启后可能加载不到配置。
3.3 配置文件上传与备份实操
配置备份是存储管理里最核心的一环。我常用 TFTP 把配置文件拉到外部服务器,步骤大概是:
- 先执行
save,确保运行配置已经落盘。 - 查看当前启动配置文件名称。
- 用
copy将配置文件复制到 TFTP 服务器。 - 去服务器上确认文件大小不为 0,内容可读。
命令参考:
save copy flash:/startup.cfg tftp://192.0.2.10/backup/switch1-20250412.cfg这里192.0.2.10是文档中常用的测试地址,实际使用要换成你自己管理网段的地址。用 TFTP 时要注意,服务器需要允许写入,而且 TFTP 是明文传输,生产环境建议拉到内部的运维网络里操作。
如果设备支持 FTP 或 SCP,我更推荐用 SCP 这类带加密的协议。原因很简单:配置文件里往往有密码哈希、SNMP 团体名、管理地址这类敏感信息,裸奔传输不安全。
4. 升级与启动中的存储关键点
交换机系统软件升级是最考验存储管理水平的场景。很多人升级失败,不是版本不兼容,而是 Flash 空间不够、文件没传输完整、启动配置指向了错误文件。
4.1 升级前空间计算
先看一个真实的计算过程。设备输出显示 Flash 一共 128 MB,已用 102 MB,剩余 26 MB。我要上传一个新的系统软件文件,大小 60 MB。
这时候如果直接copy,大概率会失败,因为剩余空间不够。要顺利放下这个文件并保证后续运行有余量,我至少需要 70 MB 空闲空间,也就是还要清理 44 MB 左右。
清理目标优先考虑这些文件:
- 过期的日志文件
- 旧的备份配置
- 核心转储文件
- 已经废弃的补丁包
- 上传了一半的临时文件
清理完再执行一次dir,确认剩余空间确实够用,才开始上传新版本。这个“先算空间、再传文件”的顺序,能避免至少一半的升级失败。
4.2 启动配置文件管理
设备重启后加载哪个配置文件,是由启动配置指定的。用这条命令查看:
display startup输出会告诉你当前启动配置文件和下一次启动时的配置文件。如果显示NULL,那就意味着设备重启后不会加载任何配置文件,直接进入空配置状态。
手动指定启动配置文件:
startup saved-configuration flash:/startup.cfg执行之后最好再display startup确认一次。我见过有人改了文件名,但启动配置还指向旧名字,结果设备重启后加载不到配置,直接变成哑设备。
还有一个容易踩的坑:只修改运行配置而不save,然后在设备断电前自信满满地离开现场。运行配置在内存里,一断电就没了。每次变更结束,写配置和查看启动配置应该是一对固定动作。
5. 常见故障与排查实录
这部分我把实际排查中见过的典型问题整理成速查表,每个问题后面再补充一下我的处理过程。
| 故障现象 | 可能原因 | 优先处理方向 |
|---|---|---|
| 保存配置报错,提示写文件失败 | Flash 剩余空间不足 | 清理日志和临时文件,再save |
| 重启后配置全部丢失 | 启动配置文件不存在或被改名 | display startup,重新指定配置文件 |
| 设备无法正常启动 | 系统软件文件损坏或不完整 | 进入引导菜单,重传系统文件 |
| 日志文件异常增长 | 日志文件无大小限制或未轮转 | 配置日志文件上限,关闭不必要的调试日志 |
dir命令报文件系统错误 | 文件系统异常或 Flash 损坏 | 尝试修复,必要时格式化后恢复 |
5.1 Flash 空间不足
排查这类问题,我会先看空间统计,再看哪个目录占得多。日志目录是首要嫌疑对象,其次是/core或类似路径下的异常转储文件。
处理顺序是:先清空回收站,再删旧的日志和 core 文件,最后再试保存配置。不要在空间不足时反复保存,每次失败都可能产生临时文件,让情况更糟糕。
5.2 配置文件丢失
如果发现display startup里指向的配置文件不存在,首先不要慌,也不要在现场重新敲一遍全量配置。先检查有没有手工备份,有备份就直接上传恢复。
没有备份但系统软件还在,设备至少能启动到命令行。这时候可以试着从其他同型号设备复制一份基线配置,再按实际需求做增量修改。如果连系统软件都没了,就走引导菜单,从外部服务器把镜像和配置一起传回来。
这类问题的根源,通常是之前有人在清理 Flash 时把配置文件当临时文件删了,或者改名后忘了更新启动配置。教训很简单:清理文件前先看清楚它是不是当前启动配置文件。
5.3 文件系统异常
设备在异常断电后偶尔会出现文件系统错误,表现是dir显示目录内容怪异,或者文件大小变成乱码。这个时候不要反复重启,反复重启可能导致文件系统进一步损坏。
稳妥的做法是先尝试文件系统修复操作,不同的设备命令不太一样,但思路一致:让系统重新扫描并修正目录项。修复不了,就只能格式化 Flash,然后从备份恢复全部文件。
格式化是最后手段,执行前必须确认手上有系统软件文件、配置文件、License 文件的完整备份。
5.4 日志文件把存储塞满
日志问题比想象中常见。设备默认的日志容量有限,但如果开启了大量调试日志,并且没有设置覆盖策略,日志文件就会一直累积,直到把 Flash 吃干净。
我习惯的做法是:
- 把日志同时输出到远程日志服务器,本地只保留必要部分。
- 配置日志文件大小上限,超出后覆盖最旧日志。
- 业务正常运行时关闭 debug 级日志。
- 定期检查
/logfile目录,结合空间使用情况决定是否清理。
日志不是越多越好,尤其在生产设备上,保存日志的目的是排障,而不是慢性吃掉系统空间。
6. 我的存储管理操作习惯
踩过几次坑之后,我给自己定了几条存储管理的硬规矩,现在基本不再因为存储问题半夜去机房。
6.1 文件命名与备份纪律
所有备份文件都按“设备名-日期-用途”的格式命名,比如sw1-20250412-before-upgrade.cfg。每次变更前至少保留一份变更前配置,变更稳定后再根据策略清理旧备份。
备份不只放在设备本地,还要定期拉到外部服务器。设备本地备份只防误删,不防设备硬件故障。只有外部备份才真正兜底。
6.2 升级和排障时的操作习惯
任何涉及格式化、删除系统文件、覆盖配置的操作,我都会先开会话记录,或者至少保留操作前的dir输出。这样出了问题可以快速回溯。
操作顺序也有讲究:先备份,再清理,再传输,再校验,最后才切换启动配置。每一步都确认上一步成功再继续。升级后先保留旧版本软件文件,等新版本稳定运行一段时间再清理,给自己留一条退路。
最后再分享一个小技巧。我每次在设备上做存储相关操作,都会先把dir输出完整记录下来,特别是系统软件文件和配置文件的字节数。遇到问题一对比,就能很快判断文件是被篡改过、覆盖过还是直接丢了。这个习惯救过我很多次,强烈建议你也试试。