实战分享:OB ECS服务器文件已删除但磁盘空间未释放

问题描述:多次调用脚本通过重定向方式向同一个文件写入大量数据,期间杀死该脚本进程后重新调用脚本,造成查询磁盘空间时当前文件大小和实际占用磁盘空间情况不符。

原因分析:脚本被强制终止(如 kill -9),尤其是当磁盘空间满时强制杀死进程,造成进程未正常关闭文件句柄,即:旧文件句柄泄露。

解决方案:查找未释放磁盘空间的文件对应的进程并将其杀掉。

1. 查看未释放文件相关进程信息。

lsof | grep deleted | awk ‘{print $2, $9, $7}’ | numfmt --field=3 --to=iec --suffix=B

2. 删除进程,释放磁盘空间。

kill -9 ${PID1} ${PID2} ${PID3}…

3. 查看磁盘下各目录空间占用情况。

df -h

排除/home目录下下挂的其他挂载点,如:/home/chkappa、/home/chkappb等

du -h --max-depth=1 --exclude=/home/chkappa --exclude=/home/chkappb --exclude=/home/chkdev --exclude=/home/chksec --exclude=/home/zabbix --exclude=/home/chksys /home | sort -h

1 个赞