linux刪除文件后不釋放磁盤的問題


1. 用df 檢查發現根目錄可用空間越為200M

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            9.9G  9.4G  232M  36% /
none                  7.4G   16K  7.4G   1% /dev/shm

2. 用du命令查看根目錄各子目錄占用空間,可以發現6G的空間莫名其妙地丟了

復制代碼
# du -sm /* | sort -nr | head
1755    /usr
664    /var
538    /lib
331    /opt
104    /boot
31    /etc
23    /lib64
14    /sbin
9    /bin
復制代碼

3. 用lsof命令查看有很多處於deleted狀態的進程

復制代碼
# lsof | grep delete
cbdaemon    993        root    5w      REG             202,65      388      65623 /var/log/cb/sensor/cbdaemon.ec2s-usercassandra-02.invalid-user.log.ERROR.20170713-143157.993 (deleted)
salt-mini  1761        root    0r      REG             202,65       17      16389 /tmp/sh-thd-1499978414 (deleted)
salt-mini  1761        root    6w      REG             202,65      265     347691 /var/log/salt/minion-20170714 (deleted)
salt-mini  1762        root    0r      REG             202,65       17      16389 /tmp/sh-thd-1499978414 (deleted)
salt-mini  1762        root    6w      REG             202,65      265     347691 /var/log/salt/minion-20170714 (deleted)
filebeat   1852        root   10r      REG             202,65  6292254      75366 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   12r      REG             202,65  6291461      74061 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   14r      REG             202,65  6291523      74051 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   15r      REG             202,65  6291516      74050 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   16r      REG             202,65  6291575      74052 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   17r      REG             202,65  6291508      74049 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   18r      REG             202,65  6291824      74053 /var/log/audit/audit.log.4 (deleted)
filebeat   1852        root   19r      REG             202,65  6291512      74054 /var/log/audit/audit.log.4 (deleted)


 4. 根據lsof列出的進程號,kill這些進程,稍等片刻,再查看磁盤容量使用情況,注意如果不熟悉進程的作用,請不要隨意kill

# kill -9 1852
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            9.9G  3.3G  6.1G  36% /
none                  7.4G   16K  7.4G   1% /dev/shm

 原理:

在linux上被刪除的文件仍被其他進程所使用,文件句柄沒有完全釋放出來,導致空間無法釋放出來,在Linux或者Unix系統中,通過rm或者文件管理器刪除文件將會從文件系統的目錄結構上解除鏈接(unlink).然而如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。

解決:
一、通過lsof |grep deleted查看被占用文件

二、釋放被占用文件磁盤空間

    • kill掉相應的進程
    • 停掉使用這個文件的應用,讓os自動回收磁盤空間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM