Linux上删除文件空间没有释放的问题

时间:2022-02-28 07:22:58

昨天升级Ubuntu系统,由于空间不足一直失败,当时查看磁盘占用率为99%。删除了/var/lib/mysql 目录下的两个log文件。

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1

删除成功之后,磁盘空间并没有释放,占用率依然是99%。在网上查找了一下资料,找到了未释放的原因:

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink).然而假设文件是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。


首先查看一下已删除的文件是否还在被进程使用。

lsof | grep deleted

输出结果:

Linux上删除文件空间没有释放的问题

然后处理mysql进程。

root@CMGC-5:/var/lib/mysql# ps aux | grep mysql 

1000     14477  0.0  0.0 101792  2624 pts/21   S+   May05   0:00 mysql -h 10.86.51.21 -uroot -px xxxxxxxx
mysql 21460 0.0 0.0 2061264 55220 ? Ssl 2014 43:12 /usr/sbin/mysqld
root 28632 0.0 0.0 8112 940 pts/16 S+ 10:37 0:00 grep --color=auto mysql
root@CMGC-5:/var/lib/mysql# kill -9 21460

kill掉mysql之后再次查看磁盘空间,已经被成功释放了。