Linux檔案刪除但空間不釋放問題篇
通常報磁碟不足的錯誤,有兩個原因:
•磁碟空間滿:可以通過df -h命令檢視磁碟的使用情況。
•磁碟inode資源佔用完:可以通過df -i命令檢視,確認inode節點使用率;
如果是inode資源佔用完,是因為使用的小檔案過多導致的。但如果是磁碟空間滿,我們需要刪除檔案,擠出空間來,但發現磁碟空間根本沒減少。這就需要了解rm刪除檔案原理。
rm刪除檔案原理
Linux是link的數量來控制檔案刪除的。只有當一個檔案不存在任何link的時候,這個檔案才會被刪除。一般來講,每個檔案都有兩個link計數器:i_count和i_nlink
•i_count的意義是當前檔案使用者(或被呼叫)的數量
當一個檔案被某一個程式引用時,對應的這個值就會增加
•i_nlink的意義是介質連線的數量(硬連結的數量)
當建立檔案的硬連結的時候,這個值就會增加
rm操作只是將檔案的i_nlink減少了,實際就是將檔名到inode的連結刪除了,如果沒有其它的連結,i_nlink就為0。但是由於該檔案依然被程式引用,因此,此時檔案對應的i_count並不為0,所以執行rm操作,系統並沒有真正的刪除這個檔案,只有當i_nlink和i_count都為0的時候,這個檔案才會被真正的刪除。也就是說,必須要解除該程式對該檔案的呼叫,才能真正的刪除。
解決方案
lsof | grep deleted
當發現刪除檔案後,磁碟的空間還是沒有變,庫使用使用以上命令,獲得一個已經被刪除但是仍然被應用程式佔用的檔案列表,然後可以kill 掉相關程式即可強制要求系統回收分配給正在使用的的檔案,這樣就可以釋放次磁碟資源。
注:系統中,只有已釋放的檔案資料塊被重用其中資料被覆蓋時,原檔案資料才算刪除掉。
相關文章
- Linux 刪除檔案後空間不釋放Linux
- 刪除正在使用的檔案,空間不釋放的問題
- hpux刪除檔案後空間不釋放UX
- Linux下資料檔案刪除檔案系統空間不釋放的問題Linux
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- linux中如何解決檔案已刪除但空間不釋放的案例Linux
- 解決linux下刪除檔案或oracle表空間後空間不釋放的問題LinuxOracle
- Linux檔案刪除空間未釋放Linux
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 解決linux刪除檔案後空間沒有釋放問題Linux
- linux下檔案刪除之後,空間沒有釋放問題Linux
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- RM刪除檔案空間釋放詳解
- oracle刪除(釋放)資料檔案/表空間流程Oracle
- Linux rm掉檔案空間不釋放原因Linux
- drop表空間以及對應的資料檔案後空間不釋放的問題
- 刪除表空間,資料檔案也刪除後,但作業系統層面上空閒空間不見增加。作業系統
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- Oracle 刪除資料後釋放資料檔案所佔磁碟空間Oracle
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- Mysql 刪除資料後為釋放物理空間MySql
- mac怎麼徹底刪除檔案不佔用空間Mac
- 刪除表空間和表空間包含的檔案
- delete不釋放表空間delete
- 【LINUX】使用lsof處理檔案恢復、控制程式碼以及空間釋放問題Linux
- Linux下批量刪除空檔案或者刪除指定大小的檔案Linux
- OS 刪除temp表空間 而磁碟空間未釋放的解決方案
- 歸檔日誌物理刪除後閃回恢復區空間未釋放
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- delete/truncate刪除資料索引空間問題delete索引
- 臨時表空間資料刪除問題
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- oracle誤刪除表空間的資料檔案Oracle
- linux 下按照時間刪除檔案Linux
- 刪除空資料檔案
- 記錄刪除後,資料塊空間不釋放,請大家幫忙看看分析一下
- Oracle 11g 表空間的誤刪除, 當前的控制檔案不識別該表空間Oracle
- 面試官給我挖坑:rm刪除檔案之後,空間就被釋放了嗎?面試