亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

操作篇:Linux磁盤空間釋放解決步驟

問(wèn)題說(shuō)明

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

[root@linux-node1 ~]# df -h
Filesystem            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)中,通過(guò)rm或者文件管理器刪除文件,只是將它會(huì)從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink),也就是說(shuō)只是刪除了文件和系統(tǒng)目錄結(jié)構(gòu)的鏈接;如果文件在刪除時(shí)是被打開(kāi)的(有一個(gè)進(jìn)程正在使用該文件,文件被進(jìn)程鎖定或者有進(jìn)程一直在向這個(gè)文件寫(xiě)數(shù)據(jù)等)狀態(tài),那么進(jìn)程將仍然可以讀取該文件,也就是說(shuō)沒(méi)有刪除掉文件在讀取的狀態(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ù)部分占用的空間就可以被覆蓋并寫(xiě)入新的內(nèi)容,之所以出現(xiàn)刪除文件后,空間還沒(méi)釋放,就是因?yàn)橛羞M(jìn)程還在一直向這個(gè)文件寫(xiě)入內(nèi)容,導(dǎo)致雖然刪除了文件,但文件對(duì)應(yīng)的指針部分由于進(jìn)程鎖定,并未從meta-data中清除,而由于指針并未被刪除,那么系統(tǒng)內(nèi)核就認(rèn)為文件并未被刪除,因此通過(guò)df命令查詢空間并未釋放也就不足為奇了。

解決措施有以下幾種

1,通過(guò)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)程是通過(guò)截?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ù)知的問(wèn)題。

2,或停掉或重啟使用這個(gè)所刪除文件的應(yīng)用,讓OS自動(dòng)回收磁盤空間。

3,也可以重啟操作系統(tǒng),不過(guò)這并不是最好的方法

4,對(duì)待這種進(jìn)程不停對(duì)文件寫(xiě)日志的操作,要釋放文件占用的磁盤空間,最好的方法是在線清空這個(gè)文件。通過(guò)這種方法,磁盤空間不但可以馬上釋放,也可保障進(jìn)程繼續(xù)向文件寫(xiě)入日志。

在線清空文件(比如/home/wangshibo.log)的方式:

a)# echo " " > /home/wangshibo.log
b)# cat /dev/null > /home/wangshibo.log
c)# > /home/wangshibo.log

還有一種磁盤空間使用問(wèn)題的現(xiàn)象:明明使用df -h命令查看磁盤空間使用率不算高,還有很多空余空間,但是創(chuàng)建文件或?qū)懭霐?shù)據(jù)時(shí)一直報(bào)錯(cuò)磁盤寫(xiě)滿:" no space left on device"!

一般這種問(wèn)題都是由于分區(qū)目錄下deleted刪除后的資源空間沒(méi)有真正釋放出來(lái)導(dǎo)致的, 具體處理流程如下:

1.先df -lh查看一下磁盤使用狀況, 發(fā)現(xiàn)/data分區(qū)下的Used已用空間很大, 但是實(shí)際查看并沒(méi)有占用那么大的空間!

2.找到被刪除文件所在的分區(qū), 比如/data分區(qū)

3.查看被刪除了的所有文件:lsof -n /data |grep deleted

4.殺死這些文件的delete進(jìn)程, 釋放空間: lsof -n /data |grep deleted|awk '{print $2}'|xargs kill -9

5.接著再運(yùn)行l(wèi)sof -n /data |grep delete,應(yīng)該就沒(méi)有結(jié)果了。

6.注意: 剛殺死deleted進(jìn)程時(shí), df -h查看/data 分區(qū), Used已用空間可能時(shí)瞬間顯示過(guò)大, 但隨著deleted進(jìn)程殺死, 資源逐漸釋放, /data分區(qū)下的Used已用空間會(huì)逐漸變小, Avail可用空間會(huì)逐漸變大)

大多數(shù)文件系統(tǒng)都會(huì)保留一部分空間留作緊急情況時(shí)用(比如硬盤空間滿了),這樣能保證有些關(guān)鍵應(yīng)用(比如數(shù)據(jù)庫(kù))在硬盤滿的時(shí)候有點(diǎn)余地,不致于馬上就 crash,給監(jiān)控系統(tǒng)和管理員一點(diǎn)時(shí)間去察覺(jué)。不過(guò)有時(shí)候這部分預(yù)留的硬盤空間不用的話有點(diǎn)浪費(fèi)。

在Linux系統(tǒng)中,ext2、ext3、ext4文件系統(tǒng)上通常會(huì)默認(rèn)預(yù)留5%的磁盤空間,比如磁盤如果是2TB,這就意味著有100GB的空間會(huì)被預(yù)留下來(lái),這樣的話會(huì)不會(huì)顯得有點(diǎn)浪費(fèi)了。可以通過(guò)"tune2fs"命令來(lái)改變5%的默認(rèn)設(shè)置,比如只預(yù)留2%的空間。但是不建議設(shè)成0%,現(xiàn)實(shí)環(huán)境中這樣做不安全。


[root@ss-server ~]# df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda1      ext4      41151808 4962148  34076228  13% /
devtmpfs       devtmpfs   1931468       0   1931468   0% /dev
tmpfs          tmpfs      1941204       0   1941204   0% /dev/shm
tmpfs          tmpfs      1941204     652   1940552   1% /run
tmpfs          tmpfs      1941204       0   1941204   0% /sys/fs/cgroup
tmpfs          tmpfs       388244       0    388244   0% /run/user/0

[root@ss-server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  4.8G   33G  13% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  620K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           380M     0  380M   0% /run/user/0

比如上面"/"分區(qū)是ext4文件系統(tǒng),默認(rèn)系統(tǒng)預(yù)留了5%也就是2G的空間。現(xiàn)在可以通過(guò)"tune2fs"命令將系統(tǒng)預(yù)留空間改為2%。

[root@ss-server ~]# tune2fs -m 2 /dev/vda1
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 2% (209704 blocks)

執(zhí)行后,發(fā)現(xiàn)"/"分區(qū)騰出了1G的空間,這時(shí)系統(tǒng)預(yù)留空間也就是2%了。

[root@ss-server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  4.8G   34G  13% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  620K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           380M     0  380M   0% /run/user/0

注意:Linux下只有ext2、ext3、ext4文件系統(tǒng)時(shí),系統(tǒng)才會(huì)默認(rèn)預(yù)留5%的磁盤空間。如果文件系統(tǒng)是xfs、tmpfs、devtmpfs、overlay等,則系統(tǒng)默認(rèn)不會(huì)預(yù)留磁盤空間。

好啦!今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!