CentOS缓存更新机制概览
在 CentOS 中,“缓存”主要分为两类:一是面向软件包的 YUM/DNF 仓库元数据与包缓存,二是面向内核与文件系统的 Page Cache、dentry/inode、Buffer Cache 等内核页缓存。二者更新与失效的机制完全不同,下面分别说明。
软件包管理器缓存机制
- 元数据获取与过期
- YUM 与 DNF 在本地维护仓库元数据缓存(如包名、版本、依赖、镜像列表等),默认缓存目录分别为 /var/cache/yum 与 /var/cache/dnf。元数据通过 HTTP/HTTPS/FTP/file 从仓库获取,并在本地校验后缓存。关键配置项为 metadata_expire(YUM 常见单位为秒;DNF 默认约 48 小时),过期后再次操作会重新拉取元数据。若仓库不可达,可设置 skip_if_unavailable=1 以跳过失败仓库继续解析其他源。
- 缓存何时更新
- 执行安装/更新/查询时,客户端会先检查本地元数据是否过期;过期则自动刷新。若长时间离线,再次运行命令可能出现提示如 “Repodata is over 2 weeks old”,此时执行 yum makecache fast 或安装/更新操作即可自动重建最新元数据缓存。
- 包文件缓存策略
- 安装过程中 RPM 包会临时下载到缓存目录,安装完成后默认会被删除以节省空间;若需离线复用或审计,可开启 keepcache=1(DNF)保留已下载的 RPM 包。
- 定时刷新与“两次 update”现象
- DNF 通常启用 dnf-makecache.timer 定时任务,在开机后约 10 分钟以及之后按小时自动刷新元数据缓存。若刚同步了本地仓库或镜像,首次执行 dnf/yum update 可能仍使用旧缓存,第二次才看到最新版本,这是定时任务尚未触发或缓存尚未刷新的常见现象。
- 手动刷新与重建
- 常用命令:
- 清理并重建:yum clean all && yum makecache;dnf clean all && dnf makecache。
- 快速重建:yum makecache fast(更快,但可能不覆盖全部仓库元数据)。
- 定时自动更新:启用 yum-cron(CentOS 7)或 dnf-makecache.timer(CentOS 8/Stream)以定期刷新元数据。
内核与文件系统缓存机制
- 缓存类型与作用
- Page Cache:缓存文件数据块,加速读写。
- Buffer Cache:缓存块设备层的数据缓冲。
- dentry/inode cache:缓存目录项与 inode 元数据,加速路径解析与属性查询。
- 刷新与清理
- 同步数据到磁盘但不回收缓存:sync。
- 仅清理已同步的缓存(不处理“脏”页):写入 1/2/3 到 /proc/sys/vm/drop_caches(分别对应 pagecache、dentries/inodes、两者皆清)。如需确保落盘,先 sync 再清理。
- 文件系统日志与磁盘层:对 ext3/ext4 可使用 hdparm -f/-F 等工具处理日志与磁盘写回(视场景与文件系统而定)。
网络相关缓存
- ARP 缓存
- ARP 表将 IP→MAC 映射缓存在内核中,常见维护方式包括:
- 查看:arp -a。
- 删除条目:arp -d (可加 -N 指定接口)。
- 添加静态映射:arp -s (临时静态条目)。
- DNS 缓存
- CentOS 7 默认多使用 nscd 或 systemd-resolved 管理 DNS 缓存;CentOS 8/Stream 常用 systemd-resolved。刷新方式随组件不同而异(如 systemd-resolved 可通过 resolvectl flush-caches),需先确认本机使用的 DNS 缓存服务。