解決linux系統(tǒng)刪除文件后,可用率沒變,磁盤還是滿的問題
前言
某天更新服務(wù)時,發(fā)現(xiàn)服務(wù)怎么也上傳不了,原因是磁盤空間不足,這很簡單,直接找到大文件刪除rm -rf 即可,但是我刪除之后,df -h 發(fā)現(xiàn)磁盤空間一點變化都沒有,可用率還是滿的

排查
隨后進行問題排查
難道是系統(tǒng)反應(yīng)慢,沒有刷新造成的?
我就立即執(zhí)行
lecho 3 > /proc/sys/vm/drop_caches
這個命令會強制釋放系統(tǒng)緩存空間,清空所有級別的緩存,包括頁面緩存、dentry緩存和inode緩存
但是沒什么用。。。。。
于是百度了示意
在 Linux 中,文件存儲在硬盤上的最小存儲單位是扇區(qū)(Sector),每個 sector 只有 512字節(jié)大??;多個 sector 可以組成文件塊 (block) 。當(dāng)我們讀取某個文件數(shù)據(jù)的時候,操作系統(tǒng)就需要知道這個文件存儲在哪個 block 上。文件的數(shù)據(jù)存放位置信息被存放到了 inode (索引節(jié)點)上。也就是說,在 Linux 下,文件由指針部分(inode)和數(shù)據(jù)部分(data)組成。
因此,執(zhí)行 rm xxx 命令刪除文件的時候,只是刪掉了inode數(shù)據(jù),而文件的實際數(shù)據(jù)部分在 inode 被清除掉之后,會被覆蓋并寫入新的內(nèi)容。但是如果文件在刪除的時候是被打開的(有一個進程正在使用該文件,文件被進程鎖定或者有進程一直在向這個文件寫數(shù)據(jù)等)狀態(tài),那么進程依舊可以讀取該文件,系統(tǒng)就會認(rèn)為該文件的磁盤空間一直被占用。
雖然刪除了文件,但是由于進程還在一直向這個文件寫入內(nèi)容,文件的 inode 并沒有清除掉,系統(tǒng)內(nèi)核認(rèn)為文件并未刪除,這才出現(xiàn)空間不釋放的情況。也就是說:當(dāng)一個進程持續(xù)的寫入一個文件的時候,直接刪除這個文件,磁盤空間并不會得到釋放。
那么我們就清楚了,是被占用導(dǎo)致表象刪除,所以我們可以重啟相關(guān)服務(wù),或者是直接殺死該進程
解決
lsof | grep deleted | grep docker
我是docker相關(guān)服務(wù)引發(fā)的,所以我檢索了docker,各位在不清楚的時候可以不用檢索,直接lsof | grep deleted

于是我將這個進程kill -9 進程號
df- h

這樣就正常了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Apache.POI中HSSFWorkbook導(dǎo)出到Excel的實現(xiàn)方法
這篇文章主要介紹了Java使用Apache.POI中HSSFWorkbook導(dǎo)出到Excel的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Linux下Mysql定時任務(wù)備份數(shù)據(jù)的實現(xiàn)方法
當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會啟動此任務(wù)調(diào)度命令。下面這篇文章主要給大家介紹了關(guān)于在Linux下Mysql定時任務(wù)備份數(shù)據(jù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11
Linux TCP隊列的實例解讀,提高網(wǎng)絡(luò)性能和穩(wěn)定性
這篇文章主要介紹了Linux TCP隊列的實例解讀,提高網(wǎng)絡(luò)性能和穩(wěn)定性,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
國產(chǎn)操作類linux系統(tǒng)vnc服務(wù)方式
該文章介紹了如何在銀河麒麟v10系統(tǒng)上配置和使用VNC(Virtual Network Console)虛擬網(wǎng)絡(luò)控制臺協(xié)議進行遠(yuǎn)程圖形化控制,包括查看可用軟件組、安裝VNC服務(wù)、配置VNC服務(wù)、啟動和停止VNC服務(wù)、VNC服務(wù)參數(shù)說明以及VNC服務(wù)其他說明2026-01-01
使用Samba在Linux服務(wù)器上搭建共享文件服務(wù)的方法
Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費軟件,由服務(wù)器及客戶端程序構(gòu)成。這篇文章主要介紹了使用Samba在Linux服務(wù)器上搭建共享文件服務(wù) ,需要的朋友可以參考下2019-05-05
ubuntu中swap(虛擬內(nèi)存)設(shè)置方法
這篇文章主要介紹了ubuntu中swap(虛擬內(nèi)存)設(shè)置方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Linux基礎(chǔ)學(xué)習(xí)之利用tcpdump抓包實例代碼
tcpdump是Linux下面的一個開源的抓包工具,和Windows下面的wireshark抓包工具一樣, 支持抓取指定網(wǎng)口、指定目的地址、指定源地址、指定端口、指定協(xié)議的數(shù)據(jù)。下面這篇文章主要給大家介紹了關(guān)于Linux基礎(chǔ)學(xué)習(xí)之利用tcpdump抓包的相關(guān)資料,需要的朋友可以參考下。2017-12-12
Linux查看有線網(wǎng)卡和無線網(wǎng)卡的方法詳解
在 Linux 中查看有線網(wǎng)卡狀態(tài)的命令與查看無線網(wǎng)卡的命令類似,但側(cè)重點有所不同,以下是幾個最常用和有效的命令,并有詳細(xì)的代碼供大家參考,感興趣的小伙伴跟著小編一起來看看吧2025-10-10

