主机var文件目录使用率超过百分之95

FileSystem-var-95percent

一、问题背景

主机 /var 目录使用率超过95%,需紧急清理以释放空间。

  • 关键命令与输出
    1
    2
    3
    df -h /var  
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/rootvg-lv_var 20G 20G 983M 96% /var
    • 结论/var 目录所在逻辑卷已接近满载(96%),需立即清理。

二、定位大文件/目录

进入 /var 目录并分析占用

1
2
cd /var  
du -sm * 2>/dev/null | sort -rn | head
  • 作用
    • du -sm *:统计当前目录下所有子目录/文件的大小(以MB为单位)。
    • 2>/dev/null:忽略无权限访问的目录报错。
    • sort -rn:按占用空间降序排序。
    • head:显示前10大占用项。
  • 输出关键信息
    1
    2
    3
    9740    account  # 占用9.7GB  
    9110 adm # 占用9.1GB
    8858 log # 占用8.8GB
  • 结论accountlog 是主要占用目录,需优先清理。

三、清理 /var/log 目录

1.进入 /var/log 并分析文件

1
2
cd /var/log  
du -sm * 2>/dev/null | sort -rn | head
  • 输出关键信息
1
2
3
4
4134    secure             # 4.1GB  
2145 Bigdata # 2.1GB
1257 cron # 1.2GB
9 messages-2025**** # 旧日志文件

1.1 /var/log/secure 文件

/var/log/secure 是 Linux 系统中记录安全相关信息的日志文件,主要用于存储身份验证和授权相关的日志,如用户登录、sudo 使用、远程登录等。它帮助系统管理员监控系统的安全状态。

主要内容

  1. 用户登录:记录本地和远程登录的成功与失败。
  2. sudo 使用:记录用户通过 sudo 执行的命令。
  3. 远程登录:记录通过 SSH 等工具的远程登录情况。
  4. 认证失败:记录失败的登录尝试,帮助识别潜在攻击。

1.2 /var/log/messages 文件

/var/log/messages 是 Linux 系统中一个重要的系统日志文件,用于记录内核、系统服务和其他应用程序的通用消息。它帮助系统管理员监控系统运行状态、排查问题。

主要内容

  1. 内核消息:硬件检测、设备驱动加载等。
  2. 系统服务日志:启动、停止、错误等信息。
  3. 应用程序日志:部分应用程序的日志。
  4. 系统事件:如网络连接、文件系统挂载等。

/var/log/messages-20250315 文件是 /var/log/messages 日志文件的一个归档版本。通常,这个文件包含了在 2025年3月15日(根据文件名中的日期部分”20250315”可以推断)这一天及其之前记录的系统消息和事件信息。Linux 系统通过一种称为日志轮转(log rotation)的机制来管理日志文件,以防止日志文件无限增长占用过多磁盘空间。

2.置空secure文件:

1
> secure  # 清空文件内容(保留文件句柄,避免服务中断)  

3.删除两个月前的messages日志:

1
2
rm -f messages-2024*    # 删除2024年的旧日志  
rm -f messages-202501* # 删除2025年1月的旧日志

四、清理 /var/account 目录

在 Linux 中,/var/account 目录用于存放与进程账户统计相关的数据,主要用于系统管理员跟踪和审计用户在系统上的活动。这个目录通常由 acct(进程账户)或者 psacct(进程统计)软件包管理。

1.pacct文件的作用

pacct 文件(/var/account/pacct)是进程账户记录文件,它详细记录了系统上运行的每个进程的信息,包括:

  • 用户运行的命令
  • 进程启动和结束的时间
  • 进程消耗的 CPU 时间
  • 进程的 UID(用户 ID)和 GID(组 ID)
  • 进程的退出状态

该文件主要由 acctpsacct 守护进程自动生成并更新。

2.进入 /var/account 并分析文件

1
2
cd /var/account  
du -sm * 2>/dev/null | sort -rn | head
  • 输出关键信息
    1
    2
    1490    pacct             # 1.4GB(当前进程记账文件)  
    107 pacct-2025**** # 压缩后的旧记账文件(每个约100MB)
  • 清理操作
    1
    2
    3
    rm -f pacct-2024*    # 删除2024年的旧文件  
    rm -f pacct-202501* # 删除2025年1月的旧文件
    rm -f pacct-202502* # 删除2025年2月的旧文件

五、清理结果验证

验证命令

1
2
3
df -h /var  
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_var 20G 14G 7.0G 66% /var
  • 结论:清理后 /var 使用率从 96% 降至 **66%**,空间释放成功。

六、关键命令解释

命令/操作 作用说明
df -h /var 查看 /var 目录所在文件系统的磁盘使用情况(-h 表示人类可读格式)。
du -sm * 统计当前目录下所有子目录/文件的大小(-s 汇总总大小,-m 以MB为单位)。
> secure 清空 secure 文件内容(保留文件句柄,避免服务重启)。
rm -f messages-2024* 强制删除匹配文件名模式的旧日志文件(-f 忽略不存在的文件)。
sort -rn 按数值逆序排序(-r 降序,-n 按数值比较)。

七、总结与建议

问题根源:

  • 日志文件未轮转securemessages 未配置自动切割与压缩,导致单文件过大。
  • 旧文件未清理:历史日志(如 pacct-*)未定期删除,长期占用空间。

优化建议:

  1. 配置日志轮转

    • 使用 logrotate 工具定期切割、压缩日志文件(如 /var/log/secure)。
    • 示例配置:
      1
      2
      3
      4
      5
      6
      7
      /var/log/secure {  
      daily
      rotate 30
      compress
      missingok
      notifempty
      }
  2. 定期清理旧文件

    • 通过 cron 任务自动删除超过指定时间的文件(如保留最近3个月):
      1
      0 0 * * * find /var/account -name "pacct-*" -mtime +90 -exec rm -f {} \;  
  3. 监控磁盘使用率

    • 部署监控工具(如 Prometheus + Grafana)实时报警磁盘使用率阈值(如 >80%)。
  4. 扩容存储(可选)

    • 若业务需求增长,可扩展 /var 所在逻辑卷(LVM)的容量。

风险提示:

  • 直接删除日志文件前,需确认文件是否被进程占用(如 lsof | grep secure)。
  • pacct 文件为进程记账记录,删除后可能导致审计信息丢失,建议备份重要数据。