网络设备里的「存储」主要是固件、配置、日志三样,前两样固定,日志会涨。 日志写满不是「满了就好」,是丢证据或者写坏 Flash。
上一节讲 CPU,这一节讲存放东西的地方。 这一节与下一节要连着看:这里讲「存储设备」这个大类(盘、卡、内置存储), 下一节讲「存储器」的分工(RAM/Flash/NVRAM/ROM)。
一、三样东西各占多少
固件:几十到几百 MB,升级时整体替换。这是设备里最大的固定开销。 配置:几 KB 到几 MB。看起来很小,但它决定设备行为,最需要备份。 日志:唯一会持续增长的东西,取决于事件频率与保留策略。
所以「设备存储够不够」这个问题,问的其实是日志策略。一台 256 MB Flash 的设备,固件占掉一半, 剩下能留给日志的就那么点。
二、日志该往哪儿写
三个选择,各有代价:
① 本地 Flash:方便、不依赖网络;但会写坏 Flash,容量也小。 ② 外发 syslog 服务器:容量无限、可检索;但网络断了就丢日志。 ③ 两者都留:本地只留最近几百条做「断网时的证据」,长期送服务器。
工程上默认选第三种。本地日志级别调低(只留警告以上), 信息级的全送出去——这样既省 Flash,又不会在关键时刻没记录。
三、配置备份比日志重要得多
配置丢了,设备就等于砖。所以正经流程里配置必须三处都有:
① 设备 NVRAM:运行配置保存后的版本。 ② 本地备份:导出到 U 盘或 TFTP,改配置前后各一份。 ③ 版本库:把配置文本纳入 Git 或配置管理系统,能 diff。
第三条是分水岭。没有版本库的时候,「上周改了什么」只能靠回忆; 有了版本库,一次 diff 就能看出是哪一行把网络改坏的。
配置是纯文本,天生适合版本管理——这一点比很多软件系统都幸运。
四、动手 Demo:30 天日志占多少 Flash,以及为什么必须外发
这段按每分钟 30 条、每条 200 字节估算一个月的日志量,再跟设备 Flash 比。
lpm, size, days = 30, 200, 30
total = lpm * 60 * 24 * days * size
print(total / 1e6, 100.0 * total / 256e6)
实跑输出:
--------------------------------------------------------------------
日志与配置到底占多少空间,算一遍才知道要不要外发
--------------------------------------------------------------------
**网络设备里的存储,主要装三样:固件、配置、日志。**前两样大小固定,
日志是唯一会「涨」的东西,也是唯一会把 Flash 写坏的东西。
项 值
------------------------------------------
每分钟日志 30 条
每条日志 200 字节
保留天数 30 天
合计占用 259.2 MB
折成 Flash 占比(256 MB) 101.2%
**30 天不到 260 MB,听起来不多,但设备 Flash 常常只有 128 到 256 MB**,
而且固件与配置已经占掉一半。
**写满之后两种结局**:新日志覆盖旧日志(丢证据),或者写失败导致进程异常。
**标准做法是外发**:syslog 送到日志服务器,设备本地只留几百条。
**顺带解决第二个问题**:Flash 有写入寿命,天天写日志的便宜设备,几年后会出现坏块。
两百多 MB,占掉 256 MB Flash 的绝大部分——但固件已经吃掉一半,实际根本放不下。
这就是为什么设备本地日志默认只留几百条。一旦写满,两种结局都不好:覆盖掉最早的记录(丢证据), 或者写失败(进程异常)。
顺带一个隐性成本:Flash 有擦写寿命,天天写日志的便宜设备,几年后开始出现坏块与启动失败。 外发日志同时解决了容量与寿命两个问题。
30 秒实验
- 看你设备的 Flash 总容量与剩余容量。
- 查一下本地日志的最大条数与级别设置。
- 把一台设备的配置导出成文本,看看它有多少行。
常见误区
- 以为 Flash 容量大就能随便写日志。写寿命与写满都要考虑。
- 只备份配置到本地。设备坏了本地备份也跟着没了。
- 把日志级别开到 debug 长期跑。CPU 与存储双杀。
自测三问(点开对答案)
1. 设备里三样存储内容各是什么? —— 固件、配置、日志;前两样固定,日志持续增长。 2. 为什么建议日志外发? —— 省本地容量、延长 Flash 寿命、便于集中检索。 3. 配置为什么适合纳入版本库? —— 它是纯文本,可以 diff,能追出「哪一行改坏了」。下一节:把「存储器」这个词拆开——RAM、Flash、NVRAM、ROM 各装什么。
- ☐ (本节完,下一节 01.04.05 存储器)