linux rm 不释放_linux删除文件空间不释放问题解决
場(chǎng)景描述
某天,收到Prometheus報(bào)警,生產(chǎn)中某臺(tái)機(jī)器出現(xiàn)磁盤空間不足報(bào)警,該臺(tái)服務(wù)器是mysql其中一臺(tái)從庫(kù),遠(yuǎn)程登錄到該服務(wù)后,排查磁盤空間的原因,發(fā)現(xiàn)mysql日志文件過多,于是清空日志文件,但是日志清理后,發(fā)現(xiàn)磁盤空間并沒有釋放,下面分析處理過程和原因
日志清理后,查看磁盤空間
[root@hhjy3-21 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 98G 65G 33G 73% /
devtmpfs devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs tmpfs 1.5G 8.9M 1.5G 1% /run
tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 120M 895M 12% /boot
tmpfs tmpfs 293M 0 293M 0% /run/user/0
原因
在Linux或Unix系統(tǒng)中,通過使用rm刪除文件的原理,rm命令只是從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink),也就是說如果文件是被打開的(有一個(gè)進(jìn)程正在使用該文件句柄),那該進(jìn)程還是可以讀取已刪除的文件,而我刪除的正是在運(yùn)行中的MySQL的Logs,刪除的時(shí)候文件正在被使用中,所以并不釋放磁盤空間。
解決方法
Linux中使用lsof | grep deleted命令可以獲取一個(gè)已經(jīng)被刪除但是仍然被應(yīng)用程序占用的文件列表
[root@hskj3-21 ~]# lsof | grep -i delete
mysqld_sa 1311 root 2u CHR 136,0 0t0 3 /dev/pts/0 (deleted)
mysqld 1607 mysql 1w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld 1607 mysql 2w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld 1607 mysql 5u REG 8,3 0 134335687 /mysql/3306/tmp/ibz8LDOk (deleted)
mysqld 1607 mysql 6u REG 8,3 0 134374089 /mysql/3306/tmp/ibprHY8C (deleted)
mysqld 1607 mysql 7u REG 8,3 0 135173881 /mysql/3306/tmp/ibS7LjtV (deleted)
mysqld 1607 mysql 8u REG 8,3 0 134429856 /mysql/3306/tmp/ibX2QZcx (deleted)
mysqld 1607 mysql 12u REG 8,3 0 134429858 /mysql/3306/tmp/ibMxDsTQ (deleted)
mysqld 1607 mysql 21w REG 8,3 153673 1700035 /mysql/3306/logs/slow.log (deleted)
mysqld 1607 1609 mysql 1w REG 8,3 312627 1700052 /mysql/3306/logs/mysql.log (deleted)
......
用該命令后,我發(fā)現(xiàn)占用的文件列表非常多,我們需要將占用已刪除文件的進(jìn)程給一個(gè)一個(gè)的殺掉
[root@hskj3-21 ~]# kill -9 PID
在線清空文件
其實(shí)上面那種直接rm刪除文件的方法非常危險(xiǎn),特別是針對(duì)MySQL,Mongodb,數(shù)據(jù)相關(guān)的服務(wù),rm刪除之后,沒法釋放空間,還得手動(dòng)重啟或者kill這些數(shù)據(jù)相關(guān)的服務(wù)進(jìn)程,會(huì)影響到業(yè)務(wù)。
可以使用以下方法,磁盤空間不足可以馬上釋放,也可以保證進(jìn)程繼續(xù)向文件寫入日志,這種方法適合在線清理。
$ echo >xxx/log
總結(jié)
以上是生活随笔為你收集整理的linux rm 不释放_linux删除文件空间不释放问题解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: $_post 数据上传到那个位置_如何实
- 下一篇: oracle指令df,怎么使用df命令查