日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

删除文件后,磁盘空间没有释放的处理记录

發(fā)布時(shí)間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 删除文件后,磁盘空间没有释放的处理记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題說明:IDC里的一臺(tái)服務(wù)器的/分區(qū)使用率爆滿了!已達(dá)到100%!經(jīng)查看發(fā)現(xiàn)有個(gè)文件過大(80G),于是在跟有關(guān)同事確認(rèn)后rm -f果斷刪除該文件。但是發(fā)現(xiàn)刪除該文件后,/分區(qū)的磁盤空間壓根沒有釋放出來,使用率還是100%!這是為什么呢??

123456[root@linux-node1 ~]# df -hFilesystem??????????? Size? Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00???????????????????????58G? 7.8G?? 47G? 100% /tmpfs???????????????? 1.9G???? 0? 1.9G?? 0%?/dev/shm/dev/vda1?????????????190M?? 72M? 108M? 40%?/boot

原因分析:
在Linux或者Unix系統(tǒng)中,通過rm或者文件管理器刪除文件,只是將它會(huì)從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink),也就是說只是刪除了文件和系統(tǒng)目錄結(jié)構(gòu)的鏈接;如果文件在刪除時(shí)是被打開的(有一個(gè)進(jìn)程正在使用該文件,文件被進(jìn)程鎖定或者有進(jìn)程一直在向這個(gè)文件寫數(shù)據(jù)等)狀態(tài),那么進(jìn)程將仍然可以讀取該文件,也就是說沒有刪除掉文件在讀取的狀態(tài),所以磁盤空間也就會(huì)一直被占用。

一個(gè)文件在文件系統(tǒng)中的存放分為兩個(gè)部分:數(shù)據(jù)部分和指針部分,指針位于文件系統(tǒng)的meta-data中,數(shù)據(jù)被刪除后,這個(gè)指針就從meta-data中清除了,而數(shù)據(jù)部分存儲(chǔ)在磁盤中,數(shù)據(jù)對(duì)應(yīng)的指針從meta-data中清除后,文件數(shù)據(jù)部分占用的空間就可以被覆蓋并寫入新的內(nèi)容,之所以出現(xiàn)刪除文件后,空間還沒釋放,就是因?yàn)橛羞M(jìn)程還在一直向這個(gè)文件寫入內(nèi)容,導(dǎo)致雖然刪除了文件,但文件對(duì)應(yīng)的指針部分由于進(jìn)程鎖定,并未從meta-data中清除,而由于指針并未被刪除,那么系統(tǒng)內(nèi)核就認(rèn)為文件并未被刪除,因此通過df命令查詢空間并未釋放也就不足為奇了。

解決措施有以下幾種:
1)通過lsof|grep deleted命令獲取到已經(jīng)被刪除但是仍然被應(yīng)用程序占用的文件列表,然后kill掉還在占用所刪除文件的進(jìn)程。需要注意的是:如果有很多進(jìn)程都在使用所刪除文件,那么采用第1種方式kill進(jìn)程就有點(diǎn)麻煩了,而且風(fēng)險(xiǎn)也比較大。因?yàn)閗ill進(jìn)程是通過截?cái)鄍roc文件系統(tǒng)中的文件可以強(qiáng)制要求系統(tǒng)回收分配給正在使用的的文件。必須要確定不會(huì)對(duì)運(yùn)行中的進(jìn)程造成影響時(shí)才能使用,應(yīng)用程序?qū)@種方式支持的并不好,當(dāng)一個(gè)正在使用的文件被截?cái)嗫赡軙?huì)引發(fā)不可預(yù)知的問題。
2)或停掉或重啟使用這個(gè)所刪除文件的應(yīng)用,讓OS自動(dòng)回收磁盤空間。
3)也可以重啟操作系統(tǒng),不過這并不是最好的方法
4)對(duì)待這種進(jìn)程不停對(duì)文件寫日志的操作,要釋放文件占用的磁盤空間,最好的方法是在線清空這個(gè)文件。通過這種方法,磁盤空間不但可以馬上釋放,也可保障進(jìn)程繼續(xù)向文件寫入日志。
在線清空文件(比如/home/wangshibo.log)的方式:

123a)# echo " " > /home/wangshibo.logb)# cat /dev/null > /home/wangshibo.logc)# > /home/wangshibo.log

還有一種磁盤空間使用問題的現(xiàn)象:明明使用df -h命令查看磁盤空間使用率不算高,還有很多空余空間,但是創(chuàng)建文件或?qū)懭霐?shù)據(jù)時(shí)一直報(bào)錯(cuò)磁盤寫滿:“no space left on device”!
這個(gè)參考:由索引節(jié)點(diǎn)(inode)爆滿引發(fā)的問題

總結(jié)

以上是生活随笔為你收集整理的删除文件后,磁盘空间没有释放的处理记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。