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

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基础
如何配置RHEL 8.x OpenSSH客户端登录自动过期?

1 前言 一个问题,一篇文章,一出故事。 基于服务器安全,笔者需要让OpenSSH客户端在10分钟内 …

Linux基础
如何安装部署SentinelOne EDR?

1 基础知识 1.1 软件公司介绍 SentinelOne,Inc.是一家在纽约证券交易所上市的美国 …

Linux基础
如何配置Ext4的磁盘配额?

1 基础知识 1.1 Disk Quota的概念 Disk Quota用于合理分配有限的磁盘使用空间 …