Linux磁盤空間異常爆滿的排查和處理方式
問題現(xiàn)象
在服務(wù)器運(yùn)維過程中,我們時(shí)常會遇到這樣的情況,服務(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
相對高效一點(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或者文件管理器刪除文件將會從文件系統(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)自己主動回收磁盤空間。
- 方法2:以后清理正在被讀寫的大日志文件時(shí),直接使用 echo "" > xxx.log 命令,即直接將文件置空,并不影響服務(wù)的使用,文件大小也被控制下來,磁盤空間也釋放了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
htaccess 將所有請求重定向到某個(gè)URL地址的規(guī)則
htaccess 將所有請求重定向到某個(gè)URL地址的規(guī)則,需要的朋友可以參考下。2011-04-04
linux下安裝openssl、swoole等擴(kuò)展的詳細(xì)步驟
本文給大家詳細(xì)介紹了linux下安裝openssl、swoole等擴(kuò)展的,本文涉及到編譯安裝和yum安裝的知識點(diǎn),本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2016-10-10
Linux操作系統(tǒng)安裝圖文配置教程詳細(xì)版
這篇文章主要為大家詳細(xì)介紹了Linux操作系統(tǒng)安裝圖文配置教程,幫助大家順利的安裝Linux操作系統(tǒng),感興趣的小伙伴們可以參考一下2016-09-09
Ubuntu報(bào)“無法解析域名cn.archive.ubuntu.com“問題解決辦法
在Ubuntu系統(tǒng)上使用sudo?apt?update命令更新時(shí)可能遇到“無法解析域名cn.archive.ubuntu.com”的問題,這通常是因?yàn)閏n.archive.ubuntu.com的鏡像資源不穩(wěn)定,為解決此問題,可以更換為穩(wěn)定性好、速度快的鏡像源,需要的朋友可以參考下2024-11-11
Ubuntu 16.04/18.04 安裝Pycharm及Ipython的教程
這篇文章主要介紹了Ubuntu 16.04/18.04 安裝Pycharm及Ipython的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10

