温馨提示×

centos清理如何定制清理策略

小樊
39
2025-12-21 14:02:54
栏目: 智能运维

定制 CentOS 清理策略

一 策略框架与优先级

  • 目标分层:优先保障**/boot**(旧内核)、/var/log(日志)、/var/cache/yum(包缓存)、/tmp 与 /var/tmp(临时文件)的健康度,避免业务中断与磁盘被占满。
  • 配置优先级:涉及临时目录清理时,遵循 systemd-tmpfiles 的加载顺序:/usr/lib/tmpfiles.d/.conf → /run/tmpfiles.d/.conf → /etc/tmpfiles.d/*.conf(后者覆盖前者),自定义策略建议放入**/etc/tmpfiles.d/**。
  • 变更风险控制:清理前先备份关键配置与数据;对正在运行的业务日志,优先用logrotate轮转与压缩,避免直接删除正在写入的日志文件。

二 关键清理项与推荐阈值

清理项 推荐阈值或做法 命令示例 注意事项
YUM/DNF 缓存 定期清理全部缓存 yum clean all(或 dnf clean all) 释放空间,不影响已安装软件
旧内核 仅保留最新2个内核 package-cleanup --oldkernels --count=2 先确认当前运行内核:uname -r
systemd 日志 journal 保留最近7天或上限500MB journalctl --vacuum-time=7d;journalctl --vacuum-size=500M 避免日志无限增长
传统日志轮转 按日轮转、保留4周、启用压缩 配置 /etc/logrotate.d/* 不要手动删除正在写入的 .log
/tmp 与 /var/tmp 按“未访问时间”清理:/tmp 10天/var/tmp 30天 systemd-tmpfiles --clean 通过 /etc/tmpfiles.d 自定义与排除目录
大文件定位 查找并人工确认后清理 du -sh /*;ncdu /;find / -type f -size +100M 避免误删数据库/容器数据
包管理器冗余 移除无用依赖 yum autoremove 删除前确认依赖关系
可选:内存缓存 仅在特殊场景手动释放 sync && echo 3 > /proc/sys/vm/drop_caches 一般不建议定时清理,可能影响性能

以上阈值可按业务与磁盘容量微调,生产环境建议先在测试环境验证。

三 自动化与定时执行

  • systemd-tmpfiles 自动清理

    • 默认规则:/tmp 10d/var/tmp 30d;排除项如 systemd 私有目录。可于**/etc/tmpfiles.d/clean.conf**自定义:
      • 示例:v /tmp 1777 root root 30d
      • 示例:x /tmp/mysql*(排除匹配前缀)
    • 生效与执行:systemctl restart systemd-tmpfiles-clean.service;也可手动执行 systemd-tmpfiles --clean;清理日志:journalctl -u systemd-tmpfiles-clean.service。
  • 定时任务 cron

    • 建议将不同任务拆分到独立脚本,便于维护与回滚:
      • 示例(每日清理临时文件):0 3 * * * /usr/bin/find /tmp -type f -delete
      • 示例(每周清理旧日志归档):0 2 * * 0 find /var/log -name “*.gz” -mtime +28 -delete
    • 确保 crond 运行:systemctl start crond && systemctl enable crond。
  • 可选:自定义“回收站”

    • 通过别名或包装脚本将 rm 改为 mv 到**~/.trash**,并按日期分目录;配合 @weekly 定时清理旧数据,降低误删风险。

四 安全与回滚建议

  • 保护关键目录与进程:清理**/tmp前确认无服务依赖;必要时在 tmpfiles.d 中排除如/tmp/mysql等目录;检查权限应为1777*(粘滞位)。
  • 日志与缓存的正确姿势:优先使用logrotate管理日志生命周期;drop_caches仅作临时排障手段,不建议纳入日常定时任务,以免影响文件系统性能。
  • 变更流程:先在测试环境验证脚本与阈值;重要清理前做配置与数据备份;对删除类操作保留可审计日志(重定向到专用日志文件)。

0