Linux磁盤空間異常爆滿的排查和處理方式
問題現(xiàn)象
在服務(wù)器運(yùn)維過程中,我們時(shí)常會(huì)遇到這樣的情況,服務(wù)器磁盤空間使用率達(dá)到100%,業(yè)務(wù)出現(xiàn)異常。
問題定位
1.登錄服務(wù)器,通過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.查找占用空間大的目錄或文件
笨方法:在根目錄下,通過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: 無法訪問"proc/21212/task/21212/fd/3": 沒有那個(gè)文件或目錄 du: 無法訪問"proc/21212/task/21212/fdinfo/3": 沒有那個(gè)文件或目錄 du: 無法訪問"proc/21212/fd/3": 沒有那個(gè)文件或目錄 du: 無法訪問"proc/21212/fdinfo/3": 沒有那個(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)的方法是通過du的-d參數(shù),或--max-depth,設(shè)置查詢的目錄深度
du -h -d 2|grep [GT] |sort -nr du -h --max-depth=2|grep [GT] |sort -nr #通過這樣的方式,可以搜出以G或者T為單位的占用磁盤空間的大目錄,并排序 [root@k8s-master1 /]# du -h -d 1 / 194M /boot 0 /dev du: 無法訪問"/proc/24731/task/24731/fd/3": 沒有那個(gè)文件或目錄 du: 無法訪問"/proc/24731/task/24731/fdinfo/3": 沒有那個(gè)文件或目錄 du: 無法訪問"/proc/24731/fd/4": 沒有那個(gè)文件或目錄 du: 無法訪問"/proc/24731/fdinfo/4": 沒有那個(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的文件
遇到問題
操作刪除了一些備份文件和日志信息后,查看空間仍然不足,發(fā)現(xiàn)刪除的日志,空間并沒有釋放。
未釋放磁盤空間的原因:
在Linux或者Unix系統(tǒng)中,通過rm或者文件管理器刪除文件將會(huì)從文件系統(tǒng)的文件夾結(jié)構(gòu)上解除鏈接(unlink),然而假設(shè)文件是被打開的(有一個(gè)進(jìn)程正在使用),那么進(jìn)程將仍然能夠讀取該文件,磁盤空間也一直被占用。而我刪除的是nginx的訪問日志文件,在刪除的時(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)回收磁盤空間。
- 方法2:以后清理正在被讀寫的大日志文件時(shí),直接使用 echo "" > xxx.log 命令,即直接將文件置空,并不影響服務(wù)的使用,文件大小也被控制下來,磁盤空間也釋放了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
cloudstack下libvirtd服務(wù)無響應(yīng)問題
這篇文章主要介紹了cloudstack下libvirtd服務(wù)無響應(yīng)問題的相關(guān)資料,需要的朋友可以參考下2016-10-10ubuntu20.04 LTS系統(tǒng)默認(rèn)源sources.list文件的修改
這篇文章主要介紹了ubuntu20.04 LTS系統(tǒng)默認(rèn)源sources.list文件的修改,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Linux下監(jiān)視NVIDIA的GPU使用情況詳解
這篇文章主要介紹了Linux下監(jiān)視NVIDIA的GPU使用情況詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09解決CentOS 7升級(jí)Python到3.6.6后yum出錯(cuò)問題總結(jié)
這篇文章主要介紹了CentOS 7升級(jí)Python到3.6.6后yum出錯(cuò)問題解決總結(jié),本文給大家介紹的非常詳細(xì)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09詳解CentOS設(shè)置程序開機(jī)自啟動(dòng)的方法
本篇文章主要介紹CentOS設(shè)置程序開機(jī)自啟動(dòng)的方法 ,在CentOS系統(tǒng)下,主要有兩種方法設(shè)置自己安裝的程序開機(jī)啟動(dòng)。有興趣的可以了解一下,2016-12-12linux輸入yum后提示: -bash: /usr/bin/yum: No such file or director
在本篇文章里小編給大家整理的是關(guān)于linux輸入yum后提示: -bash: /usr/bin/yum: No such file or directory的解決方法,有需要的朋友們參考下。2019-11-11關(guān)于linux權(quán)限s權(quán)限和t權(quán)限詳解
本文介紹了linux系統(tǒng)內(nèi)的2個(gè)特殊權(quán)限s權(quán)限和t權(quán)限,簡單易懂,大家可以詳細(xì)看看2018-03-03