/var是Linux系统的“动态数据心脏”,需科学规划分区(如10–20GB起)、配置logrotate日志轮转、定期清理缓存、分离关键子目录(/var/log、/var/lib/docker等),并实施容量监控与自动化告警。

/var 目录是 Linux 系统的“动态数据心脏”,日志、缓存、数据库和容器数据都在这里持续写入。不加干预,几个G的默认分区很快就会被撑爆——尤其是 /var/log 和 /var/cache 这两个主力膨胀区。管理核心不是等满了再救火,而是从结构划分、自动轮转、定期清理、容量监控四条线同步推进。
/var/log 日志必须做分级轮转,不能只靠删文件
logrotate 是标准方案,但配置不当等于没配。关键点在于匹配路径、控制粒度、保障权限:
- 按服务单独配:Nginx 日志用
/etc/logrotate.d/nginx,MySQL 错误日志用/etc/logrotate.d/mysql,避免所有日志共用一个策略 - 常用参数组合:
daily+rotate 14+compress+delaycompress+missingok+notifempty - 权限必须显式声明:
create 640 root adm保证新日志可被运维组读取,又不暴露给普通用户 - 服务重载要可靠:
postrotate段里用systemctl reload nginx 2>/dev/null || true,避免因服务未运行导致轮转中断
/var/cache 要定期清空,但得区分缓存类型
不同包管理器缓存行为差异大,不能一概而论:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- apt(Debian/Ubuntu):
apt clean清空全部已下载包;apt autoclean只删旧版本安装包,更安全 - yum/dnf(RHEL/CentOS):
dnf clean all最彻底;若只想清元数据缓存,用dnf clean metadata - 第三方工具缓存(如 pip、npm)需单独处理:
pip cache info查位置,pip cache purge清理;npm cache clean --force - 建议写进定时任务,每月初执行一次:
0 2 1 * * /usr/bin/dnf clean all > /dev/null 2>&1
提前划好边界,避免单一分区被日志拖垮
/var 不该和 / 共用根分区,更不该把 /var/log、/var/lib/docker、/var/lib/mysql 堆在一块:
- 生产环境至少拆出独立
/var/log分区(建议 10–20G 起),防止 Nginx access.log 爆掉影响整个系统 - Docker 数据强烈建议挂载到独立卷:
/var/lib/docker → /mnt/docker-data,并设dockerd --data-root - 数据库数据目录迁移后,记得更新 SELinux 上下文或 AppArmor 规则,否则服务起不来
- 用
df -hT /var /var/log /var/lib/docker定期检查各挂载点使用率,而非只看df -h /
用脚本+监控兜底,别信“应该不会满”
人工巡检不可靠,自动化才是底线:
- 每日检查脚本示例:
du -sh /var/log/* /var/cache/* 2>/dev/null | sort -hr | head -10,输出前十大目录 - 磁盘告警阈值设为 85%,而不是 95% —— 给 logrotate 和清理留出缓冲时间
- 结合
journalctl --disk-usage看 journald 占用,若超 500MB 且已启用Storage=persistent,需调SystemMaxUse=200M并重启systemd-journald - 关键日志目录加 inotify 监控(如
inotifywait -m -e create,delete /var/log),异常高频写入可触发告警

















