温馨提示×

centos缓存更新机制是怎样的

小樊
33
2025-12-17 08:54:52
栏目: 智能运维

CentOS缓存更新机制概览

CentOS 中,“缓存”主要分为两类:一是面向软件包的 YUM/DNF 仓库元数据与包缓存,二是面向内核与文件系统的 Page Cache、dentry/inode、Buffer Cache 等内核页缓存。二者更新与失效的机制完全不同,下面分别说明。

软件包管理器缓存机制

  • 元数据获取与过期
    • YUMDNF 在本地维护仓库元数据缓存(如包名、版本、依赖、镜像列表等),默认缓存目录分别为 /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 makecachednf 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 默认多使用 nscdsystemd-resolved 管理 DNS 缓存;CentOS 8/Stream 常用 systemd-resolved。刷新方式随组件不同而异(如 systemd-resolved 可通过 resolvectl flush-caches),需先确认本机使用的 DNS 缓存服务。

0