linux磁盘空间不足
约 297 字小于 1 分钟
问题描述
线上服务器突然告警磁盘空间不足,于是登录服务器,运行df -h .,du -sh .,发现返回使用大小不一致。

修复方法
这种情况一般是文件被删除,但是还被进程占用,df 输出的占用情况一般大于 du 。
- 查询删除状态的文件PID
提示
可以看到delete状态的文件占用了64441629016KB,约60GB。
# 查找未能删掉的文件
lsof +L1
# 获取PID
lsof +L1 | awk '{print $2}' | uniq
- 查找文件句柄
# 查找文件句柄
ll /proc/${PID}/fd/* | grep ${FileName}
# 例如
ll /proc/9197/fd/* | grep /data/docker/containers/e4c57a7c707053d047d44ebb7e9ec3e08839866b1d5c1601e693080b26691625/e4c57a7c707053d047d44ebb7e9ec3e08839866b1d5c1601e693080b26691625-json.log
- 将无效的文件句柄置为空
# 将无效的文件句柄置为空
echo > /proc/${PID}/fd/${FD}
# 例如
echo > /proc/9197/fd/53
- 查询磁盘占用情况
提示
delete状态的文件占用磁盘空间已经清除,磁盘df的Used输出由原来99G下降为39G。
# 系统磁盘使用情况
df -h .
# 占用磁盘空间
du -sh .
