yum缓存是独立于内核page cache的磁盘文件,位于/var/cache/yum,受keepcache和仓库数量影响,需通过清理、禁用仓库或迁移路径管理,而非调整vm参数。

CentOS 7 的系统级软件库缓存不是内核 Page Cache,而是 yum/dnf 的元数据和包缓存
很多人误以为 yum 缓存大小由 /proc/sys/vm/ 下的参数控制,其实完全无关。yum 使用的是独立的本地磁盘缓存,默认路径是 /var/cache/yum,它不走内核文件系统缓存逻辑,也不受 vm.vfs_cache_pressure 或 drop_caches 影响。
它的“大小”本质是磁盘空间占用,不是内存中的缓存页数。所以不存在“调大缓存内存占比”这种操作,只有清理、限制、迁移三种实际手段。
查看当前 yum 缓存实际占用和配置位置
先确认缓存是否启用及存放路径:
-
yum clean all后再运行yum makecache,观察输出里Metadata Cache Created对应的 baseurl 和本地路径 - 直接查配置:
grep -E "^(cachedir|keepcache)" /etc/yum.conf - 默认
cachedir=/var/cache/yum/$basearch/$releasever,keepcache=1表示保留已下载的 RPM 包(否则只留元数据)
注意:keepcache=0 并不减少元数据缓存体积,只是不保存 .rpm 文件;真正影响磁盘用量的是元数据(repodata)本身,尤其当启用了多个仓库(如 epel、ius、docker-ce)时会快速膨胀。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
限制或迁移 yum 缓存的实际方法
没有“设置最大缓存为 2GB”这样的开关,但可通过以下方式控制增长:
- 禁用不用的仓库:
yum-config-manager --disable epel,减少 repodata 下载量 - 定期清理旧元数据:
yum clean expire-cache(比clean all温和,只删过期 repodata) - 手动限制
/var/cache/yum所在分区的磁盘配额(需 ext4/xfs 支持 quota),例如:setquota -u root 0 524288000 0 0 /dev/sda1(硬限制 500MB) - 迁移到更大分区:创建新目录(如
/data/yum-cache),修改/etc/yum.conf中的cachedir,再chown -R root:root /data/yum-cache,最后yum clean all && yum makecache
不要尝试用 echo 3 > /proc/sys/vm/drop_caches 清理 yum 缓存——它对 /var/cache/yum 完全无效,只会刷掉内核 Page Cache,可能反而让下次 yum 操作更慢。
为什么不能像调整内核缓存那样“设一个百分比值”
因为 yum 缓存是应用层静态文件集合,不是内核动态管理的 page cache。它的生命周期由 yum 进程控制:每次 makecache 生成新 repodata,旧文件不会自动覆盖或轮转,除非显式 clean 或被新版本覆盖(且仅限同一仓库同一版本)。即使设置了 metadata_expire=90m,也只是让 yum 在下次运行时判断是否过期,并不自动删除磁盘文件。
真正容易被忽略的是:多个仓库 + 频繁 yum update + keepcache=1,会导致 /var/cache/yum 在数月内增长到数 GB,而系统日志里几乎不报警——直到 df -h 显示 /var 分区 95%+,才意识到问题。










