var文件目录使用率超过百分之95
主机var文件目录使用率超过百分之95
一、问题背景
主机 /var
目录使用率超过95%,需紧急清理以释放空间。
- 关键命令与输出:
1
2
3df -h /var
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_var 20G 20G 983M 96% /var- 结论:
/var
目录所在逻辑卷已接近满载(96%),需立即清理。
- 结论:
二、定位大文件/目录
进入 /var
目录并分析占用:
1 | cd /var |
- 作用:
du -sm *
:统计当前目录下所有子目录/文件的大小(以MB为单位)。2>/dev/null
:忽略无权限访问的目录报错。sort -rn
:按占用空间降序排序。head
:显示前10大占用项。
- 输出关键信息:
1
2
39740 account # 占用9.7GB
9110 adm # 占用9.1GB
8858 log # 占用8.8GB - 结论:
account
和log
是主要占用目录,需优先清理。
三、清理 /var/log 目录
1.进入 /var/log 并分析文件
1 | cd /var/log |
- 输出关键信息:
1 | 4134 secure # 4.1GB |
1.1 /var/log/secure 文件
/var/log/secure
是 Linux 系统中记录安全相关信息的日志文件,主要用于存储身份验证和授权相关的日志,如用户登录、sudo
使用、远程登录等。它帮助系统管理员监控系统的安全状态。
主要内容
- 用户登录:记录本地和远程登录的成功与失败。
sudo
使用:记录用户通过sudo
执行的命令。- 远程登录:记录通过 SSH 等工具的远程登录情况。
- 认证失败:记录失败的登录尝试,帮助识别潜在攻击。
1.2 /var/log/messages 文件
/var/log/messages
是 Linux 系统中一个重要的系统日志文件,用于记录内核、系统服务和其他应用程序的通用消息。它帮助系统管理员监控系统运行状态、排查问题。
主要内容
- 内核消息:硬件检测、设备驱动加载等。
- 系统服务日志:启动、停止、错误等信息。
- 应用程序日志:部分应用程序的日志。
- 系统事件:如网络连接、文件系统挂载等。
/var/log/messages-20250315
文件是 /var/log/messages
日志文件的一个归档版本。通常,这个文件包含了在 2025年3月15日(根据文件名中的日期部分”20250315”可以推断)这一天及其之前记录的系统消息和事件信息。Linux 系统通过一种称为日志轮转(log rotation)的机制来管理日志文件,以防止日志文件无限增长占用过多磁盘空间。
2.置空secure文件:
1 | > secure # 清空文件内容(保留文件句柄,避免服务中断) |
3.删除两个月前的messages日志:
1 | rm -f messages-2024* # 删除2024年的旧日志 |
四、清理 /var/account 目录
在 Linux 中,/var/account
目录用于存放与进程账户统计相关的数据,主要用于系统管理员跟踪和审计用户在系统上的活动。这个目录通常由 acct
(进程账户)或者 psacct
(进程统计)软件包管理。
1.pacct文件的作用
pacct
文件(/var/account/pacct
)是进程账户记录文件,它详细记录了系统上运行的每个进程的信息,包括:
- 用户运行的命令
- 进程启动和结束的时间
- 进程消耗的 CPU 时间
- 进程的 UID(用户 ID)和 GID(组 ID)
- 进程的退出状态
该文件主要由 acct
或 psacct
守护进程自动生成并更新。
2.进入 /var/account 并分析文件
1 | cd /var/account |
- 输出关键信息:
1
21490 pacct # 1.4GB(当前进程记账文件)
107 pacct-2025**** # 压缩后的旧记账文件(每个约100MB) - 清理操作:
1
2
3rm -f pacct-2024* # 删除2024年的旧文件
rm -f pacct-202501* # 删除2025年1月的旧文件
rm -f pacct-202502* # 删除2025年2月的旧文件
五、清理结果验证
验证命令:
1 | df -h /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 按数值比较)。 |
七、总结与建议
问题根源:
- 日志文件未轮转:
secure
和messages
未配置自动切割与压缩,导致单文件过大。 - 旧文件未清理:历史日志(如
pacct-*
)未定期删除,长期占用空间。
优化建议:
配置日志轮转:
- 使用
logrotate
工具定期切割、压缩日志文件(如/var/log/secure
)。 - 示例配置:
1
2
3
4
5
6
7/var/log/secure {
daily
rotate 30
compress
missingok
notifempty
}
- 使用
定期清理旧文件:
- 通过 cron 任务自动删除超过指定时间的文件(如保留最近3个月):
1
0 0 * * * find /var/account -name "pacct-*" -mtime +90 -exec rm -f {} \;
- 通过 cron 任务自动删除超过指定时间的文件(如保留最近3个月):
监控磁盘使用率:
- 部署监控工具(如 Prometheus + Grafana)实时报警磁盘使用率阈值(如 >80%)。
扩容存储(可选):
- 若业务需求增长,可扩展
/var
所在逻辑卷(LVM)的容量。
- 若业务需求增长,可扩展
风险提示:
- 直接删除日志文件前,需确认文件是否被进程占用(如
lsof | grep secure
)。 pacct
文件为进程记账记录,删除后可能导致审计信息丢失,建议备份重要数据。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 RHCloudOps博客!
评论