首頁  >  文章  >  系統教程  >  Linux 磁碟空間異常爆滿,該怎麼查?

Linux 磁碟空間異常爆滿,該怎麼查?

WBOY
WBOY轉載
2024-02-11 20:57:14852瀏覽

在伺服器維運過程中,我們時常會遇到這樣的情況,收到伺服器磁碟空間警告:<br>

Linux 磁盘空间异常爆满,该怎么查?

登入伺服器,透過df -Hl查看

Linux 磁盘空间异常爆满,该怎么查?

和警告訊息一致,接著我們就是要找到導致磁碟空間滿的目錄或檔案。

如何找到佔用空間大的目錄或檔案?

比較笨的方法是,在根目錄下,透過du -hs指令,列出各目錄所佔空間大小

Linux 磁盘空间异常爆满,该怎么查?

之後再用同樣的方法繼續到對應目錄下去找

再相對高效一點的方法是透過du的-d參數,或–max-depth,設定查詢的目錄深度,目錄深度增加,所查詢的目錄,展示出來會很多,這個時候可以透過grep進行過濾。

du -h -d 2|grep [GT] |sort -nr  
du -h --max-depth=2|grep [GT] |sort -nr  

透過這樣的方式,可以搜出以G或T為單位的佔用磁碟空間的大目錄,並排序

或可以透過find來查詢

find / -type f -size +1G -exec du -h {} \;  

從效率上來說,find要比du更快速、更靈活。

透過這兩種方法,我們可以快速找到佔用磁碟空間的罪魁禍首。

你以為這麼簡單?很多時候,你會發現,透過find或du查半天,發現所有加起來的佔用空間,和df看到的磁碟空間佔用,相差很大,就像我上面的兩張圖。

透過df查看,磁碟使用37G,但是在根目錄下透過du -hs 查看,總共加起來差不多10G,沒有隱藏目錄,那空間被誰吃了?

很明顯,有空間被刪除檔案佔用,檔案刪除了,但是資源沒釋放。

之前介紹過一個很好用的指令:lsof,我們可以透過以下指令去查看

lsof +L1  
Linux 磁盘空间异常爆满,该怎么查?

從結果可以看出,有一個28G左右的大日誌文件,刪除了,但是空間沒釋放,這是很常見的一種情況。

對應的解決方法就是,重啟tomcat應用,釋放空間

磁碟空間莫名被吃?

還有一種常有人問的問題,就是,透過df查看到的磁碟

Linux 磁盘空间异常爆满,该怎么查?

會發現,Used和Avail加起來不夠Size,莫名被吃掉一部分

其實這是Linux檔案系統的安全策略,它預設會為root使用者保留5%的磁碟空間,留作緊急情況使用。這樣能確保有些關鍵應用(例如資料庫)在硬碟滿的時候有點餘地,不致於馬上就 crash

我們可以透過tune2fs修改預留空間的比例

tune2fs -m 1 /dev/vda1  

透過下圖可以看到前後對比

Linux 磁盘空间异常爆满,该怎么查?

這樣被吃掉的空間,就釋放出來了!

以上是Linux 磁碟空間異常爆滿,該怎麼查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lxlinux.net。如有侵權,請聯絡admin@php.cn刪除