linux系統刪除空間后系統分區空間仍不釋放問題


總結的原因:

1、刪除文件文件后沒有清空回收站;

2、刪除的文件不在系統分區,在其他分區上;

3、刪除的文件被保留在了/tmp分區下,而/tmp分區不是獨立的分區,是在根分區/的基礎上划分出來的分區;

4、刪除文件的進程delete一直在后台運行,仍然無法對該文件進行讀寫

常用指令總結:

du -h --max-depth=1        查看目錄深度為1的目錄或文件所占空間大小

lsof |grep deleted        獲得一個已經被刪除但是仍然被應用程序占用的文件列表

df -hl           查看文件系統所占磁盤空間大小

kill 9  pid-num       殺掉對應的進程

 

使用lsof /home | grep -i delete查找刪除的文件,但句柄未釋放的一大堆,而且目錄都是/xxx/index,直接指向solr離線索引項目。做 solr離線索引的時候,使用了FileUtils.delete()操作,有2個地方,一個是在inform中,core重啟的時候;一個是在 handle方法中,那時候是想同步索引時失敗回滾,確保舊的索引文件全部刪除,就是這里刪除了句柄未釋放的文件,造成磁盤滿了。

另:由上面的查詢結果我們可以看到,已經刪除的Java日志文件占用了很大的空間。
  主要是因為我們在刪除這個日志文件的時候是用rm -rf *.log這樣的命令刪除的,刪除日志之后又沒有重啟java進程,導致inode節點不被釋放,空間一直被占用。
有些刪了文件,但是進程沒 reload,那些空間還是占用的,你可以理解為類似 windows 下的進程句柄沒釋放的概念吧~ 只是 windows 下如果有文件被進程使用,你一般是刪不掉的,而 Linux 雖然不做刪除限制,但卻要等到進程使用完文件才能完全釋放,以防止進程奔潰,這是操作系統對資源的管理差異吧~


免責聲明!

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



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