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
- Linux檔案刪除空間未釋放Linux
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- RM刪除檔案空間釋放詳解
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- Linux刪除指定時間之前的檔案Linux
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- Linux批量刪除檔案Linux
- Linux刪除檔案命令Linux
- linux 刪除問題 一次刪除多個目錄下的相同副檔名的檔案Linux
- 面試官給我挖坑:rm刪除檔案之後,空間就被釋放了嗎?面試
- linux 模糊批量刪除檔案Linux
- c盤可以刪除哪些檔案 怎樣清理c盤空間不影響系統
- 刪除UNDO表空間並處理ORA-01548問題
- 如何釋放Mac空間?釋放Mac系統空間小技巧Mac
- Tablespace表空間刪除
- linux的刪除檔案命令和強制刪除命令Linux
- 定期刪除檔案,限制linux使用者登入時間Linux
- linux 刪除檔案或目錄——rmLinux
- Linux rm(刪除檔案/目錄) 命令Linux
- Linux如何快速刪除大量碎小檔案?Linux
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- 刪除檔案後儲存空間容量沒有變化怎麼辦?
- Linux 命令列刪除指定副檔名檔案Linux命令列
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- oracle級聯刪除使用者,刪除表空間Oracle
- 刪除臨時表空間組
- Linux批量刪除同一型別檔案Linux型別
- linux 刪除 .ts 結尾的所有檔案Linux
- Linux之刪除帶有空格的檔案Linux
- Linux批量刪除指定型別的檔案Linux型別
- Linux rm命令:刪除檔案或目錄Linux
- 記錄一次刪除檔案失敗的問題
- 【Linux】linux下刪除/清空資料夾/檔案命令Linux
- Linux 5.12 的 exFAT 檔案系統更快刪除大檔案Linux