欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux磁盤(pán)空間異常爆滿的排查和處理方式

 更新時(shí)間:2024年12月18日 14:34:10   作者:忍冬行者  
在服務(wù)器運(yùn)維過(guò)程中,磁盤(pán)空間不足會(huì)導(dǎo)致業(yè)務(wù)異常,定位問(wèn)題時(shí),可以使用df-Hl、du-hs、du-d參數(shù)或find命令查看空間,刪除備份文件和日志信息后,空間未釋放的原因是文件被打開(kāi),進(jìn)程仍在使用

問(wèn)題現(xiàn)象

在服務(wù)器運(yùn)維過(guò)程中,我們時(shí)常會(huì)遇到這樣的情況,服務(wù)器磁盤(pán)空間使用率達(dá)到100%,業(yè)務(wù)出現(xiàn)異常。

問(wèn)題定位

1.登錄服務(wù)器,通過(guò)df -Hl查看

[root@k8s-master1 ~]# df -Hl
文件系統(tǒng)                 容量  已用  可用 已用% 掛載點(diǎn)
devtmpfs                 8.4G     0  8.4G    0% /dev
tmpfs                    8.5G     0  8.5G    0% /dev/shm
tmpfs                    8.5G  774M  7.7G   10% /run
tmpfs                    8.5G     0  8.5G    0% /sys/fs/cgroup
/dev/mapper/centos-root  136G   68G   68G   51% /
/dev/sda1                1.1G  238M  827M   23% /boot

2.查找占用空間大的目錄或文件

笨方法:在根目錄下,通過(guò)du -hs命令,列出各目錄所占空間大小

[root@k8s-master1 /]# du -hs *
0	bin
194M	boot
1012K	core.580
0	dev
37M	etc
21M	home
7.7G	kuboard-data
0	lib
0	lib64
0	media
0	mnt
135M	opt
du: 無(wú)法訪問(wèn)"proc/21212/task/21212/fd/3": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"proc/21212/task/21212/fdinfo/3": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"proc/21212/fd/3": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"proc/21212/fdinfo/3": 沒(méi)有那個(gè)文件或目錄
0	proc
1.6G	root
738M	run
0	sbin
0	src
0	srv
0	sys
6.2M	tmp
3.2G	usr
51G	var

相對(duì)高效一點(diǎn)的方法是通過(guò)du的-d參數(shù),或--max-depth,設(shè)置查詢的目錄深度

du -h -d 2|grep [GT] |sort -nr  
du -h --max-depth=2|grep [GT] |sort -nr  
#通過(guò)這樣的方式,可以搜出以G或者T為單位的占用磁盤(pán)空間的大目錄,并排序

[root@k8s-master1 /]# du -h -d 1 /
194M	/boot
0	/dev
du: 無(wú)法訪問(wèn)"/proc/24731/task/24731/fd/3": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"/proc/24731/task/24731/fdinfo/3": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"/proc/24731/fd/4": 沒(méi)有那個(gè)文件或目錄
du: 無(wú)法訪問(wèn)"/proc/24731/fdinfo/4": 沒(méi)有那個(gè)文件或目錄
0	/proc
738M	/run
0	/sys
37M	/etc
1.6G	/root
51G	/var
6.2M	/tmp
3.2G	/usr
21M	/home
0	/media
0	/mnt
135M	/opt
0	/srv
0	/src
7.7G	/kuboard-data
64G	/

效率高的方法,使用find進(jìn)行查找,比使用du效率要高

find / -type f -size +1G -exec du -h {} \;  #查找文件大于10G的文件

遇到問(wèn)題

操作刪除了一些備份文件和日志信息后,查看空間仍然不足,發(fā)現(xiàn)刪除的日志,空間并沒(méi)有釋放。

未釋放磁盤(pán)空間的原因:

在Linux或者Unix系統(tǒng)中,通過(guò)rm或者文件管理器刪除文件將會(huì)從文件系統(tǒng)的文件夾結(jié)構(gòu)上解除鏈接(unlink),然而假設(shè)文件是被打開(kāi)的(有一個(gè)進(jìn)程正在使用),那么進(jìn)程將仍然能夠讀取該文件,磁盤(pán)空間也一直被占用。而我刪除的是nginx的訪問(wèn)日志文件,在刪除的時(shí)候該文件正在被使用。

處理辦法

[root@local ~]# lsof |grep deleted
nginx      4399      root   38w      REG              253,0   19304448   10835682 /var/nginx/logs/t-access.log (deleted)
nginx      4399      root   39w      REG              253,0    3502080   10835684 /var/nginx/logs/t-error.log (deleted)
nginx      4401    nobody   38w      REG              253,0   19304448   10835682 /var/nginx/logs/t-access.log (deleted)
nginx      4401    nobody   39w      REG              253,0    3502080   10835684 /var/nginx/logs/t-error.log (deleted)

從輸出的結(jié)果可以看到 /var/nginx/logs/t-access.log 和 t-error.log 還在被使用中,所以導(dǎo)致未釋放空間。

那么如何讓進(jìn)程釋放呢?

  • 方法1:直接 kill 掉相應(yīng)的進(jìn)程,或者停掉使用這個(gè)文件的應(yīng)用,讓操作系統(tǒng)自己主動(dòng)回收磁盤(pán)空間。
  • 方法2:以后清理正在被讀寫(xiě)的大日志文件時(shí),直接使用 echo "" > xxx.log 命令,即直接將文件置空,并不影響服務(wù)的使用,文件大小也被控制下來(lái),磁盤(pán)空間也釋放了

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論