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

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

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

没有评论

发表回复

cmd shell
如何忽略PowerShell错误邮件地址?

1 前言 一个问题,一篇文章,一出故事。 笔者使用PowerShell发送邮件时,由于收件人列表包含 …

Linux基础
如何解决KDC不支持加密类型问题?

1 前言 一个问题,一篇文章,一出故事。 笔者最近发现生产环境的sftp域用户登录异常,查看sssd …

Linux基础
如何允许应用倾听低于1000的系统端口?

1 前言 一个问题,一篇文章,一出故事。 笔者集群运行logstash发现它希望在514端口倾听,但 …