2、交换机基础架构与文件系统

2.1 交换机操作系统(IOS/IOS-XE)简介

说实话,很多刚入行的朋友会把交换机操作系统想得太神秘。其实它就是个专门跑在网络硬件上的操作系统,跟Windows、Linux一个道理。只不过它更专一——就是为了转发数据包而生的。

思科目前主流的操作系统分两派:经典IOSIOS-XE。我最早接触的是经典IOS,那时候还在用Catalyst 2950系列。经典IOS的特点是「一体化」——整个系统、所有功能都打包在一个镜像文件里,跑起来就是一个单进程。你想想看,这就像一台老式收音机,所有功能都焊在一块电路板上。

而IOS-XE呢?它把系统拆成了两层:底层是Linux内核,上层是IOS控制平面。我刚开始接触IOS-XE时还不太适应,总觉得「怎么多了个Linux?」后来在项目中遇到一次故障,才真正体会到它的好处——某个进程挂了,不影响其他功能,重启一下就好。这在经典IOS时代,基本就得整机重启了。

我个人习惯这样区分:

  • 经典IOS:适合小型网络、老旧设备,配置简单直接
  • IOS-XE:适合中大型网络,支持虚拟化、模块化,更稳定
小提示:查看设备运行的是哪种系统,用 show version 命令。输出里如果看到「IOS-XE」字样,那就是新系统;如果只有「IOS」,那就是经典版。

2.2 Flash与Bootflash文件系统

交换机上的存储,说白了就两个地方:FlashBootflash。很多人搞混它们,我刚开始也犯过这个错。

Flash 是主存储区,相当于你电脑的硬盘。系统镜像、配置文件、日志文件,全放这儿。我记得有一次帮客户升级固件,发现Flash空间只剩2MB了,结果新镜像有50MB……嗯,那场面挺尴尬的。所以每次操作前,我第一件事就是检查Flash剩余空间。

Bootflash 呢?它是个小容量的专用存储区,通常只有几十到几百MB。它存的是引导程序(boot loader)和备用镜像。说白了,就是万一主系统坏了,还能从Bootflash启动救急。

为什么会这样设计?你想想看,如果Flash里的镜像损坏了,交换机连启动都做不到,那不就成砖了吗?Bootflash就是最后一道防线。

重要:升级固件时,千万别把Bootflash里的引导文件删了!我曾经见过有人为了腾空间,把Bootflash清空了,结果交换机再也起不来了……最后只能返厂维修。

2.3 文件类型(Image、Config、License)

交换机上的文件,主要就三类。我按重要程度排个序:

文件类型 扩展名 作用 我的经验
Image(系统镜像) .bin 操作系统的核心文件 升级时一定要校验MD5,我吃过亏
Config(配置文件) .cfg / .txt 保存交换机的配置 每次改配置前先备份,这是铁律
License(许可证) .lic 解锁高级功能 丢了很麻烦,建议单独存一份

Image文件 是最关键的。它决定了交换机支持哪些功能。比如同一个型号的交换机,装不同的镜像,有的支持三层路由,有的只支持二层交换。我建议你升级前先查清楚当前版本和功能集,别升完发现功能少了。

Config文件 是咱们最常打交道的。说白了就是你在命令行敲的那些配置,最终都存到 startup-config 里。我个人习惯是每次做完重大变更,都用 copy running-config startup-config 保存,然后再导出一份到TFTP服务器。为什么?因为交换机万一挂了,你至少还有配置能恢复。

License文件 这个容易被忽略。我记得有个项目,客户买了高级功能授权,结果升级固件后忘了重新激活License,导致IPsec VPN用不了。折腾了两天才发现是License没装……所以升级后一定要检查License状态。

警告:License文件跟设备的序列号(SN)绑定。换了硬件,旧License就失效了。别问我怎么知道的……说多了都是泪。

2.4 文件操作命令(dir、delete、rename)

这部分是基本功,但越基础的东西越容易出错。我带你过一遍常用命令:

查看文件:dir

这是最常用的命令。我每次登录交换机,第一件事就是 dir flash:,看看空间够不够、文件对不对。

Switch# dir flash:
Directory of flash:/
  1  -rw-    33554432   Jan 1 2024 00:00:00  c2960-lanbase-mz.150-2.SE.bin
  2  -rw-      123456   Jan 1 2024 00:01:00  config.text
  3  -rw-        1024   Jan 1 2024 00:02:00  vlan.dat

196608000 bytes total (163000000 bytes free)

注意看输出里的几个关键信息:文件大小、日期、文件名。我一般会特别关注 bytes free,如果剩余空间小于镜像大小的两倍,我就开始紧张了。

删除文件:delete

这个命令看着简单,但坑不少。我建议你养成一个习惯:删除前先用 dir 确认文件名,别手滑删错了。

Switch# delete flash:old-image.bin
Delete filename [old-image.bin]? 
Delete flash:/old-image.bin? [confirm]

它会让你确认两次。别嫌烦,这是保护机制。我曾经见过有人直接 delete flash: 加通配符,结果把整个Flash清空了……嗯,那哥们后来被领导叫去喝茶了。

避坑指南:删除大文件后,Flash空间不会立即释放。需要用 squeeze flash: 命令整理碎片。我一般会在删除后执行一次,确保空间真正可用。

重命名文件:rename

这个命令用得不多,但关键时刻很有用。比如你下载了新镜像,想保留旧镜像做备份,就可以重命名一下。

Switch# rename flash:old-config.cfg flash:backup-config.cfg
Destination filename [backup-config.cfg]?

我个人习惯在升级前,把当前配置文件重命名加个日期后缀,比如 config-20240101.cfg。这样万一新配置有问题,还能快速切回旧版本。

其他常用命令

  • copy:复制文件,最常用的是 copy tftp: flash: 下载镜像
  • more:查看文件内容,比如 more flash:config.text
  • format:格式化Flash,慎用!会清空所有数据
核心原则:操作文件前,先备份。操作文件时,先确认。操作文件后,先验证。这三步走下来,基本不会出大问题。

好了,这一章的内容就这些。说白了,交换机文件系统没那么复杂,就是记住「三个地方、三类文件、几个命令」。但越简单的东西越容易栽跟头,我建议你找个实验环境多练练,把命令敲熟了,真到生产环境操作时才不会慌。