温馨提示×

centos缓存更新机制解析

小樊
31
2025-12-23 06:10:46
栏目: 智能运维

CentOS 缓存更新机制解析

一 软件包管理器缓存 YUM/DNF

  • 缓存内容与位置:YUM 将仓库的元数据(包名、版本、依赖等)与实际下载的 RPM 包缓存在本地,默认目录为 /var/cache/yum。元数据由仓库通过 createrepo 生成,客户端在解析与安装时优先使用本地缓存以提升速度与稳定性。核心配置位于 /etc/yum.conf/etc/yum.repos.d/*.repo。关键参数包括:
    • metadata_expire:控制元数据缓存的过期时间(秒),过期后再次操作会触发刷新。
    • cachedir:缓存目录位置。
    • gpgcheck:是否进行 GPG 校验。
  • 刷新与清理常用命令:
    • 刷新元数据:yum makecache(从已配置的仓库重新下载元数据并重建本地缓存)。
    • 清理命令:yum clean all(清理全部缓存)、yum clean packages(仅清理 RPM 包)、yum clean metadata(仅清理元数据)、yum clean expire-cache(清理已过期缓存)。
    • 更换或新增仓库后,通常执行 yum clean all && yum makecache 以避免新旧元数据冲突。
    • 自动更新:安装并启用 yum-cron,编辑 /etc/yum/yum-cron.conf 设置如 update_cmd = security,updatesupdate_interval = 1(按天检查更新)。

二 文件系统与磁盘缓存

  • 缓存类型与作用:Linux 通过 Page Cache、Buffer Cache、inode/dentry cache 等加速文件访问。写操作先进入脏页,随后由内核回写线程异步或同步写入磁盘。
  • 刷新与回收:
    • 同步数据到磁盘:sync(同步已修改的页与元数据,但不回收缓存);对单个文件可调用 fsync()
    • 回收已同步缓存:echo 1 > /proc/sys/vm/drop_caches(清理 page cache)、echo 2(清理 dentries/inodes)、echo 3(清理全部三类)。注意:未同步的脏页不会被 drop_caches 清除,通常应先 sync
  • 写回策略可调参数(/proc/sys/vm/):
    • vm.dirty_background_ratio:当脏页占内存超过该比例时,启动后台回写
    • vm.dirty_ratio:当脏页占比达到该阈值时,开始同步回写,可能阻塞应用 I/O。
    • 建议保持 dirty_background_ratio < dirty_ratio;大写入场景可适当降低两者以加快落盘、减少抖动。

三 DNS 解析缓存

  • 系统侧缓存:默认情况下 CentOS 不内置 DNS 缓存;若安装并启用 nscd(Name Service Cache Daemon),会对解析结果进行缓存,常见TTL 为 3600 秒。变更 DNS 映射后,可在客户端执行 nscd -r(或 service nscd reload)刷新缓存。
  • 应用侧缓存:如 JVMInetAddress 也会做进程内 DNS 缓存(JDK 6/7 常见为30 秒),与系统 nscd 无关。
  • 长连接影响:数据库连接池等长连接不会因 DNS 变更自动重建,常需在变更后重启应用以按新映射建立连接。

四 缓存更新最佳实践

  • 软件包管理:
    • 变更仓库或遇到依赖异常时,先 yum clean allyum makecache;日常更新前可 yum check-update 查看可用更新。
    • 需要无人值守时启用 yum-cron,并按需设置安全/常规更新策略与检查频率。
  • 文件系统与磁盘:
    • 正常业务无需手动清缓存;出现异常或基准测试前,先 sync,必要时再按需 drop_caches(避免误删脏页导致数据丢失风险)。
    • 写入密集型或延迟敏感场景,结合负载调优 dirty_background_ratio/dirty_ratio,在性能与数据安全间取得平衡。
  • DNS:
    • 使用 nscd 时,变更 DNS 记录后统一执行 nscd -r 刷新;应用存在长连接时,规划变更窗口并重启应用以确保解析生效。

0