怎么在Linux系統(tǒng)中釋放磁盤空間?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)擁有10年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),對于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、成都app軟件開發(fā)公司、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名與空間等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。IDC里的一臺服務(wù)器的/分區(qū)使用率爆滿了!已達(dá)到100%!經(jīng)查看發(fā)現(xiàn)有個文件過大(80G),于是在跟有關(guān)同事確認(rèn)后rm -f果斷刪除該文件。但是發(fā)現(xiàn)刪除該文件后,/分區(qū)的磁盤空間壓根沒有釋放出來,使用率還是100%!這是為什么呢??
[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系統(tǒng)中,通過rm或者文件管理器刪除文件,只是將它會從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink),也就是說只是刪除了文件和系統(tǒng)目錄結(jié)構(gòu)的鏈接;如果文件在刪除時是被打開的(有一個進(jìn)程正在使用該文件,文件被進(jìn)程鎖定或者有進(jìn)程一直在向這個文件寫數(shù)據(jù)等)狀態(tài),那么進(jìn)程將仍然可以讀取該文件,也就是說沒有刪除掉文件在讀取的狀態(tài),所以磁盤空間也就會一直被占用。
一個文件在文件系統(tǒng)中的存放分為兩個部分:數(shù)據(jù)部分和指針部分,指針位于文件系統(tǒng)的meta-data中,數(shù)據(jù)被刪除后,這個指針就從meta-data中清除了,而數(shù)據(jù)部分存儲在磁盤中,數(shù)據(jù)對應(yīng)的指針從meta-data中清除后,文件數(shù)據(jù)部分占用的空間就可以被覆蓋并寫入新的內(nèi)容,之所以出現(xiàn)刪除文件后,空間還沒釋放,就是因?yàn)橛羞M(jìn)程還在一直向這個文件寫入內(nèi)容,導(dǎo)致雖然刪除了文件,但文件對應(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)險也比較大。因?yàn)閗ill進(jìn)程是通過截?cái)鄍roc文件系統(tǒng)中的文件可以強(qiáng)制要求系統(tǒng)回收分配給正在使用的的文件。必須要確定不會對運(yùn)行中的進(jìn)程造成影響時才能使用,應(yīng)用程序?qū)@種方式支持的并不好,當(dāng)一個正在使用的文件被截?cái)嗫赡軙l(fā)不可預(yù)知的問題。
2.或停掉或重啟使用這個所刪除文件的應(yīng)用,讓OS自動回收磁盤空間。
3.也可以重啟操作系統(tǒng),不過這并不是好的方法4.對待這種進(jìn)程不停對文件寫日志的操作,要釋放文件占用的磁盤空間,好的方法是在線清空這個文件。通過這種方法,磁盤空間不但可以馬上釋放,也可保障進(jìn)程繼續(xù)向文件寫入日志。
在線清空文件(比如/home/wangshibo.log)的方式:
# echo " " > /home/wangshibo.logb)# cat /dev/null > /home/wangshibo.logc)# > /home/wangshibo.log
還有一種磁盤空間使用問題的現(xiàn)象:明明使用df -h命令查看磁盤空間使用率不算高,還有很多空余空間,但是創(chuàng)建文件或?qū)懭霐?shù)據(jù)時一直報(bào)錯磁盤寫滿:" no space left on device"!
一般這種問題都是由于分區(qū)目錄下deleted刪除后的資源空間沒有真正釋放出來導(dǎo)致的, 具體處理流程如下:
1.先df -lh查看一下磁盤使用狀況, 發(fā)現(xiàn)/data分區(qū)下的Used已用空間很大, 但是實(shí)際查看并沒有占用那么大的空間!2.找到被刪除文件所在的分區(qū), 比如/data分區(qū)3.查看被刪除了的所有文件:lsof -n /data |grep deleted4.殺死這些文件的delete進(jìn)程, 釋放空間: lsof -n /data |grep deleted|awk '{print $2}'|xargs kill -95.接著再運(yùn)行l(wèi)sof -n /data |grep delete,應(yīng)該就沒有結(jié)果了。6.注意: 剛殺死deleted進(jìn)程時, df -h查看/data 分區(qū), Used已用空間可能時瞬間顯示過大, 但隨著deleted進(jìn)程殺死, 資源逐漸釋放, /data分區(qū)下的Used已用空間會逐漸變小, Avail可用空間會逐漸變大)
大多數(shù)文件系統(tǒng)都會保留一部分空間留作緊急情況時用(比如硬盤空間滿了),這樣能保證有些關(guān)鍵應(yīng)用(比如數(shù)據(jù)庫)在硬盤滿的時候有點(diǎn)余地,不致于馬上就 crash,給監(jiān)控系統(tǒng)和管理員一點(diǎn)時間去察覺。不過有時候這部分預(yù)留的硬盤空間不用的話有點(diǎn)浪費(fèi)。
在Linux系統(tǒng)中,ext2、ext3、ext4文件系統(tǒng)上通常會默認(rèn)預(yù)留5%的磁盤空間,比如磁盤如果是2TB,這就意味著有100GB的空間會被預(yù)留下來,這樣的話會不會顯得有點(diǎn)浪費(fèi)了??梢酝ㄟ^"tune2fs"命令來改變5%的默認(rèn)設(shè)置,比如只預(yù)留2%的空間。但是不建議設(shè)成0%,現(xiàn)實(shí)環(huán)境中這樣做不安全。
# df -TFilesystem Type 1K-blocks Used Available Use% Mounted on/dev/vda1 ext4 41151808 4962148 34076228 13% /devtmpfs devtmpfs 1931468 0 1931468 0% /devtmpfs tmpfs 1941204 0 1941204 0% /dev/shmtmpfs tmpfs 1941204 652 1940552 1% /runtmpfs tmpfs 1941204 0 1941204 0% /sys/fs/cgrouptmpfs tmpfs 388244 0 388244 0% /run/user/0[root@ss-server ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 4.8G 33G 13% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 620K 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgrouptmpfs 380M 0 380M 0% /run/user/0
比如上面"/"分區(qū)是ext4文件系統(tǒng),默認(rèn)系統(tǒng)預(yù)留了5%也就是2G的空間?,F(xiàn)在可以通過"tune2fs"命令將系統(tǒng)預(yù)留空間改為2%。
# tune2fs -m 2 /dev/vda1tune2fs 1.42.9 (28-Dec-2013)Setting reserved blocks percentage to 2% (209704 blocks)
執(zhí)行后,發(fā)現(xiàn)"/"分區(qū)騰出了1G的空間,這時系統(tǒng)預(yù)留空間也就是2%了。
[root@ss-server ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 4.8G 34G 13% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 620K 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgrouptmpfs 380M 0 380M 0% /run/user/0
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。