linux删除文件未释放空间

时间:2021-06-23 16:15:54
今天有个服务器出现了无法启动ambari-agent的情况,df -h发现/空间已经满了,

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb4             620G  620G     0 100% /
tmpfs                  63G     0   63G   0% /dev/shm
/dev/sdb1              291M   36M  241M  13% /boot

查看/目录文件没有发现大的文件和目录,
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).
然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。

使用lsof |grep delete 查看被删除了的所有文件,

mingetty   2516      root  txt       REG               8,20    19144   21364848 /sbin/mingetty (deleted)
mingetty   2518      root  txt       REG               8,20    19144   21364848 /sbin/mingetty (deleted)
zabbix_ag 14869     zabbix    1w      REG               8,20     3847    9961480 /tmp/zabbix_agentd.log (deleted)
zabbix_ag 14869    zabbix    2w      REG               8,20     3847    9961480 /tmp/zabbix_agentd.log (deleted)
红色为进程号,使用kill -9 2516 结束进程
或者使用
lsof |grep delete |awk '{print $2}'|xargs kill -9
kill全部的进程

再运行df -h空间已经释放了
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb4             620G  151G  438G  26% /
tmpfs                  63G     0   63G   0% /dev/shm
/dev/sdb1             291M   36M  241M  13% /boot

服务启动成功,很多问题都是由于空间不足引起的,所以再出现问题的时候,先看看空间情况。