如何解决删除后空间不释放问题?

Linux基础

1 前言

一个问题,一篇文章,一出故事。
今天Zabbix警告说某服务器的“/log”目录显示磁盘空间占用显示100%,同事说已经手动释放部分空间,但是空间占用还是显示100%,感觉非常奇怪。

2 最佳实践

2.1 查看磁盘空间

df -h

可见如下显示,

Filesystem                Size  Used Avail Use% Mounted on
#...
/dev/mapper/data-log       98G  98G   0G   100% /log
#...

2.2 统计目录空间大小

du -sh /log

可见如下显示,

846M    /log/

注:以上log目录的实际大小明显与df的命令显示的100%占用率明显不相符

2.3 查看文件打开情况

lsof -n /log/ | grep deleted

可见如下显示,

java    1924597 app    1w   REG 253,12 99411005440 3408006 /log/app.log (deleted)
java    1924597 app    2w   REG 253,12 99411005440 3408006 /log/app.log (deleted)

注:文件“/log/app.log”已经被“rm”命令删除,删除文件从文件系统的目录结构上解除链接(unlink),但由于文件仍然被进程号“1924597”的程序打开且仍然可读,因此磁盘空间暂时还不能释放。

2.3 释放空间

kill -s 9 1924597

注:杀死正在占用的进程即可释放磁盘空间(如果是服务重启服务亦可)

没有评论

发表回复

Linux基础
Linux下的常用性能分析工具?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要整理常用的Linux分析工具,于是整理此文。 …

Linux基础
如何排查硬盘读写慢问题?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要排查硬盘慢引起的问题,于是整理此文。 2 最佳 …

Linux基础
如何tcpdump实时测量网络吞吐量?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要实时测量网络的吞吐量,于是整理此文。 2 最佳 …