4、文件系统布局:思科设备上的Flash文件系统、文件存储结构、目录组织
好,咱们今天聊聊思科设备上的文件系统。说实话,很多工程师在配置交换机时,很少会去关心Flash里到底长什么样。但一旦你遇到系统启动失败、镜像文件损坏、或者空间不足导致无法升级,你就会发现——嗯,不懂文件系统布局,真的寸步难行。
我个人习惯,拿到一台设备第一件事就是 dir flash: 看看。这就像你搬进新房子,先看看有几个房间、每个房间多大。别笑,这习惯救过我很多次。
4.1 Flash文件系统概述
思科设备上的Flash,说白了就是一块非易失性存储。断电不丢数据,专门用来放IOS镜像、配置文件、日志这些核心文件。
常见的Flash类型有几种:
- 板载Flash芯片:焊在主板上,容量固定,一般几百MB到几GB
- CompactFlash卡:早期设备用得多,可以插拔更换
- USB Flash:新设备支持,方便临时拷贝文件
- SD卡:部分中端设备采用
我记得有一次在数据中心做割接,一台Cisco 4500的Flash空间只剩3MB了,但新镜像需要50MB。当时真是急出一身汗。后来怎么解决的?删掉了一些老旧的core dump文件和未使用的语言包。所以你看,了解文件系统布局,关键时刻能救命。
核心要点:Flash文件系统是思科设备的“硬盘”,所有持久化数据都存放在这里。它的健康状态直接决定设备能否正常启动和运行。
4.2 文件存储结构
思科设备上的文件系统,其实是一个简化版的类Unix文件系统。它支持目录层级,但不像Linux那么复杂。你想想看,交换机上的CPU和内存资源有限,不可能跑一个完整的ext4或NTFS。
常见的文件系统类型:
| 文件系统类型 | 特点 | 常见设备 |
|---|---|---|
| classic Flash | 简单、无目录结构、文件平铺 | 老款2950、3550 |
| Flash MIB | 支持目录、文件属性 | Catalyst 3560/3750 |
| USB Flash | FAT32格式、可热插拔 | ISR 4K、Catalyst 9K |
| SD Flash | ext2/3格式、性能较好 | 部分ASR设备 |
这里有个坑,我必须要说。有些工程师以为所有Flash都支持目录,结果在旧设备上执行 mkdir 命令,直接报错。为什么?因为classic Flash根本就没目录这个概念,所有文件都堆在根目录下。所以操作前,先确认你的设备支持什么文件系统。
4.3 目录组织方式
现代思科设备(比如Catalyst 9K系列),Flash文件系统的目录结构大致是这样的:
flash:/
├── ios_image.bin # 主IOS镜像文件
├── config.text # 启动配置文件
├── vlan.dat # VLAN数据库
├── crashinfo_xxx # 崩溃信息文件
├── core/ # Core dump文件目录
│ ├── core.xxx
│ └── core.yyy
├── bootflash/ # 引导Flash分区
├── .prst_sync # 持久化同步文件
├── lost+found/ # 文件系统修复后的残留文件
└── onep/ # OnePK相关文件(很少用)
你可能会问,为什么有的文件前面带点?比如 .prst_sync。这是隐藏文件,系统内部用的,普通用户看不到。我曾经手贱,想清理空间,直接删了这些隐藏文件,结果设备重启后配置丢失了一半。嗯,从那以后我再也不敢乱删不认识的文件了。
警告:不要随意删除Flash根目录下的隐藏文件或未知文件。这些文件可能是系统运行的关键依赖。删除前,先用 more 命令查看文件内容,确认用途。
4.4 关键文件详解
咱们挑几个最重要的文件说说:
- ios_image.bin:这是操作系统的本体。设备启动时,ROMmon会从Flash加载这个文件到内存。文件名一般包含版本号和平台信息,比如
cat9k_iosxe.16.12.05.SPA.bin - config.text:启动配置。设备每次启动都会读取这个文件。如果你改了配置但没保存,重启后一切归零。我见过有人调试了一整天,结果断电重启,所有配置全没了——因为他忘了
write memory - vlan.dat:VLAN信息。这个文件在VTP模式下尤其重要。如果你把VLAN信息存在Flash里,换了Flash卡,VLAN就全丢了
- crashinfo_xxx:设备崩溃时自动生成的诊断信息。分析这个文件,可以定位是硬件故障还是软件bug
小技巧:升级IOS前,先用 show flash: 查看剩余空间。如果空间不够,可以删除旧的IOS镜像,但一定要保留一个可用的备份。我曾经在远程升级时,删了旧镜像,新镜像又传不上去,结果设备变砖了。最后只能跑一趟机房,用Xmodem慢慢传,那叫一个痛苦。
4.5 文件系统操作命令
常用的文件系统操作命令,我列几个最实用的:
dir flash: # 列出Flash内容
show file information flash: # 查看文件详细信息
copy tftp: flash: # 从TFTP服务器拷贝文件到Flash
copy flash: tftp: # 从Flash上传文件到TFTP
delete flash:xxx.bin # 删除文件
rename flash:old.bin new.bin # 重命名文件
mkdir flash:backup # 创建目录
rmdir flash:backup # 删除空目录
format flash: # 格式化Flash(慎用!)
这里有个细节:delete 命令只是标记文件为已删除,空间并没有立即释放。要彻底释放空间,需要执行 squeeze flash:。这个命令会把所有标记删除的文件彻底清除,回收空间。但注意,squeeze操作很慢,而且不能中断,否则文件系统可能损坏。
4.6 文件系统布局的SVG结构图
下面这张图,是我自己画的思科设备Flash文件系统布局。你可以看到各个目录和文件的层级关系,以及它们之间的调用逻辑。
4.7 避坑指南与实战经验
最后,分享几个我踩过的坑,希望你别再踩:
- 不要用
format flash:清空空间。格式化会擦除所有数据,包括启动镜像。除非你确定有备用启动方式(比如USB启动),否则别碰这个命令。 - 升级前先备份配置文件。我习惯在升级前执行
copy running-config tftp:,把当前配置备份到TFTP服务器。万一升级后配置不兼容,还能快速回退。 - 注意Flash空间碎片。频繁删除和写入文件,会导致Flash产生碎片。碎片多了,即使剩余空间足够,也可能无法写入大文件。定期执行
squeeze flash:可以整理碎片。 - 远程操作时,保留一个备用镜像。我曾经远程升级一台2960,新镜像传了一半网络断了。结果设备重启后找不到完整镜像,直接进ROMmon模式。最后只能让现场同事用console线传文件,折腾了三个小时。
总结一下:Flash文件系统是思科设备的“硬盘”,了解它的布局和操作,是网络工程师的基本功。记住几个关键文件的位置和用途,掌握常用的文件操作命令,遇到问题就能快速定位和解决。
好了,这一章就到这里。文件系统布局搞清楚了,下一章咱们聊聊更深入的东西——不过那是后话了。
公众号:蓝海资料掘金营,微信deep3321