CentOS 7 GCP虚拟机根目录磁盘占用凌晨飙升排查求助
根目录磁盘空间周期性飙升排查方案(CentOS 7 + GCP)
当前磁盘挂载信息:
Filesystem Size Used Avail Use% Mounted on devtmpfs 63G 0 63G 0% /dev tmpfs 63G 0 63G 0% /dev/shm tmpfs 63G 321M 63G 1% /run tmpfs 63G 0 63G 0% /sys/fs/cgroup /dev/sda2 50G 43G 7.7G 85% / /dev/sda1 200M 12M 189M 6% /boot/efi /dev/mapper/data_vg1-data_lv1 99G 41G 53G 44% /app 10.10.10.10:/fileshare 207G 85G 113G 43% /mnt/fileshare tmpfs 13G 0 13G 0% /run/user/1006 tmpfs 13G 0 13G 0% /run/user/1031
针对每日UTC凌晨1点根分区使用率飙升后快速回落的问题,可按以下步骤排查:
一、实时抓现场(优先操作)
问题具有周期性,直接在触发时段监控是最有效的方式:
- 提前设置定时监控脚本,UTC凌晨0:55启动:
# 创建监控脚本 cat > /tmp/disk_monitor.sh << EOF #!/bin/bash LOG_FILE="/tmp/disk_usage_\$(date +%Y%m%d).log" echo "=== 监控启动时间: \$(date) ===" >> \$LOG_FILE # 监控到01:30结束 while [ \$(date +%H%M) -lt 0130 ]; do # 记录根分区使用情况 df -h / >> \$LOG_FILE # 列出根目录下前20大文件/目录 du -h --max-depth=1 / | sort -hr >> \$LOG_FILE # 记录被删除但仍被进程占用的文件(这类文件会占用空间但不可见) lsof | grep deleted >> \$LOG_FILE echo "---" >> \$LOG_FILE sleep 10 done EOF chmod +x /tmp/disk_monitor.sh # 添加到定时任务 echo "55 0 * * * root /tmp/disk_monitor.sh" >> /etc/crontab - 凌晨时段手动实时追踪:
- 实时查看磁盘变化:
watch -n 5 df -h / - 实时追踪大文件生成:
watch -n 5 du -h --max-depth=2 / | sort -hr | head -20 - 监控文件系统创建/删除行为(排除非根分区目录):
inotifywait -m -r -e create,delete,modify / --exclude='/dev|/proc|/sys|/mnt|/app'
- 实时查看磁盘变化:
二、事后溯源(错过现场时用)
从系统遗留痕迹和日志排查:
- 检查定时任务:
- 系统级任务:
cat /etc/crontab、ls -la /etc/cron.d/、ls -la /etc/cron.hourly/ /etc/cron.daily/ - 用户级任务:
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null; done
- 系统级任务:
- 排查进程占用的已删除文件:
# 列出已删除但未释放空间的文件及对应PID lsof -nP | grep '(deleted)' | awk '{print $2, $7, $9}' # 查看对应进程详情 ps aux | grep <PID> - 检查临时目录与日志:
- 临时文件:
ls -lahtr /tmp /var/tmp(按时间排序查看最近修改的文件) - 日志目录:
du -h /var/log | sort -hr(排查是否有日志轮转异常)
- 临时文件:
- 查看系统日志时段记录:
# 查看凌晨0:50-1:30的系统日志 journalctl --since "1 day ago 00:50:00" --until "1 day ago 01:30:00" | grep -i "disk\|write\|delete"
三、GCP特定排查方向
针对怀疑的GCP相关操作,重点检查:
- GCP Agent行为:查看相关服务日志,排查是否有凌晨时段的异常操作:
journalctl -u google-* --since "1 day ago" | grep -i "disk\|cache\|sync" - 快照/备份任务:检查GCP控制台是否有凌晨1点左右的磁盘快照任务,部分工具可能临时生成本地镜像文件(虽罕见但需确认)
- 日志导出配置:排查是否存在Stackdriver Agent配置错误,导致日志大量写入本地而非云端
- 自动化操作:检查是否有GCP相关的自动化脚本(如实例健康检查、磁盘检测)在凌晨时段触发
四、辅助工具推荐
ncdu:交互式磁盘占用分析工具(安装:yum install ncdu),执行ncdu /可直观浏览目录大小iotop:监控磁盘IO读写进程(安装:yum install iotop),凌晨时段执行iotop -oP查看高IO进程sar:查看历史磁盘数据(需先安装sysstat:yum install sysstat),执行sar -d -p -s 01:00:00 -e 01:30:00查看时段磁盘使用情况
内容的提问来源于stack exchange,提问作者user2872898
相关产品推荐
相关产品推荐

