centos缓存更新机制详解
导读:CentOS缓存更新机制详解 一 概览 CentOS 的缓存主要分为三类: 软件包管理器缓存(YUM/DNF 元数据与 RPM 包); 内核与文件系统页缓存(Page Cache、dentry/inode、块缓存); 名称解析缓存(ns...
CentOS缓存更新机制详解
一 概览
- CentOS 的缓存主要分为三类:
- 软件包管理器缓存(YUM/DNF 元数据与 RPM 包);
- 内核与文件系统页缓存(Page Cache、dentry/inode、块缓存);
- 名称解析缓存(nscd、systemd-resolved、dnsmasq 等)。
- 更新机制对应为:
- YUM/DNF 通过元数据过期与按需下载来“更新”;
- 内核通过回写与回收策略自动“更新/淘汰”;
- DNS 缓存由相应守护进程控制 TTL 与主动刷新。
二 软件包管理器缓存 YUM/DNF
- 缓存位置与关键配置
- 元数据与包缓存目录:/var/cache/yum/$basearch/$releasever;
- 全局配置:/etc/yum.conf,常用项:
- cachedir:缓存目录;
- keepcache=0/1:安装后是否保留 RPM 包;
- gpgcheck=1:是否进行 GPG 校验。
- 更新与清理
- 检查可更新:yum check-update;
- 执行升级:yum update;
- 清理与重建元数据缓存:
- 清理全部缓存:yum clean all;
- 重建元数据索引:yum makecache。
- 自动更新
- 安装并启用自动更新服务(CentOS 7 常用):
- 安装:yum install yum-cron;
- 启用:systemctl enable --now yum-cron;
- 策略配置:/etc/yum/yum-cron.conf(如 update_cmd、update_interval)。
- 安装并启用自动更新服务(CentOS 7 常用):
- 要点
- 元数据“更新”本质是重新下载 repodata 索引;
- 包是否“更新”取决于仓库中版本与本地策略;
- 使用国内镜像源可显著提升元数据与包下载的“更新”速度。
三 内核与文件系统缓存
- 缓存类型与作用
- Page Cache:缓存文件数据,加速读写;
- dentry/inode(dcache):缓存目录项与索引节点;
- 块缓存(buffer cache):缓存文件系统块层数据。
- 刷新与清理
- 仅“同步”脏数据到磁盘(不释放缓存):sync;
- 释放缓存(需 root):
- 仅页缓存:echo 1 > /proc/sys/vm/drop_caches;
- 仅 dentry/inode:echo 2 > /proc/sys/vm/drop_caches;
- 全部:echo 3 > /proc/sys/vm/drop_caches;
- 注意:drop_caches 不会清理脏页,应先 sync。
- 影响“更新/回写”的内核参数(示例)
- vm.dirty_background_ratio / dirty_ratio:后台/前台写回阈值;
- vm.dirty_expire_centisecs / dirty_writeback_centisecs:脏页过期与周期性写回间隔;
- vm.vfs_cache_pressure:回收 vfs 缓存倾向;
- vm.swappiness:使用 swap 的倾向。
- 监控
- 内存与缓存:free -h、cat /proc/meminfo | grep Cached、vmstat -s。
四 名称解析 DNS 缓存
- 机制与判断
- CentOS 默认不内置 DNS 缓存;若安装并启用了 nscd,会对解析结果做缓存,常见 TTL 约 3600 秒;
- 如使用 systemd-resolved,则由该服务维护缓存;
- 如使用 dnsmasq(常见于内网 DNS/网关),由 dnsmasq 维护缓存。
- 刷新方法
- nscd:systemctl restart nscd(或 reload);
- systemd-resolved:resolvectl flush-caches,可用 resolvectl statistics 查看命中/失效;
- dnsmasq:systemctl restart dnsmasq。
- 应用层注意
- JVM 有进程内 DNS 缓存(JDK 6/7 常见 30 秒),与系统缓存不同;
- 长连接(如数据库连接池)可能延迟感知 DNS 变更,必要时需重启应用以重建连接。
五 生产实践与建议
- 软件包缓存
- 变更仓库后先 yum clean all & & yum makecache;
- 定期执行 yum update 或启用 yum-cron 按计划更新;
- 需要离线/加速时配置国内镜像源并合理设置 keepcache。
- 内核页缓存
- 优先依赖内核自动回写与回收,避免频繁 drop_caches;
- 调整 dirty_ratio/background_ratio 与 vfs_cache_pressure 以匹配业务 I/O 特征;
- 变更前 sync,变更窗口内评估性能波动。
- DNS 缓存
- 明确本机使用的缓存组件(nscd/systemd-resolved/dnsmasq);
- 记录并统一 TTL 策略;变更解析后按组件执行刷新或重启;
- 对依赖域名的长连接服务,规划滚动重启或连接重建流程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos缓存更新机制详解
本文地址: https://pptw.com/jishu/754037.html
