首页主机资讯centos缓存更新机制详解

centos缓存更新机制详解

时间2025-11-22 02:47:04发布访客分类主机资讯浏览484
导读:CentOS缓存更新机制详解 一 概览 CentOS 的缓存主要分为三类: 软件包管理器缓存(YUM/DNF 元数据与 RPM 包); 内核与文件系统页缓存(Page Cache、dentry/inode、块缓存); 名称解析缓存(ns...

CentOS缓存更新机制详解

一 概览

  • CentOS 的缓存主要分为三类:
    1. 软件包管理器缓存(YUM/DNF 元数据与 RPM 包);
    2. 内核与文件系统页缓存(Page Cache、dentry/inode、块缓存);
    3. 名称解析缓存(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)。
  • 要点
    • 元数据“更新”本质是重新下载 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 -hcat /proc/meminfo | grep Cachedvmstat -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_ratiovfs_cache_pressure 以匹配业务 I/O 特征;
    • 变更前 sync,变更窗口内评估性能波动。
  • DNS 缓存
    • 明确本机使用的缓存组件(nscd/systemd-resolved/dnsmasq);
    • 记录并统一 TTL 策略;变更解析后按组件执行刷新或重启;
    • 对依赖域名的长连接服务,规划滚动重启或连接重建流程。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos缓存更新机制详解
本文地址: https://pptw.com/jishu/754037.html
centos缓存配置文件在哪查看 centos缓存与磁盘I/O关联

游客 回复需填写必要信息