萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> Linux服務器磁盤占滿問題解決

Linux服務器磁盤占滿問題解決

   今天下班某電商技術部leader發現個問題,說他們服務器硬盤滿了。把日志文件都刪掉了,可硬盤空間依舊滿。於是df -h查看了下各個掛載點的狀況(如下圖)。

Linux服務器磁盤占滿問題解決 三聯

  /dev/sda3占用了100%,那麼我們du -s -h ./*看下目錄的占用情況(如下圖)。

  linux磁盤掛載點目錄占用情況(圖)

  掛載點下的目錄之和遠小於4.5G,那麼是什麼占用了硬盤呢?

  以下為該問題的解答:

  在apache/tomcat服務在運行狀態下,清空了運行服務的日志,從而導致了/dev/sda3 滿了的問題。一般情況下,大多數服務(包括腳本)在運行時,是不能刪除當前正在寫入的日志文件的。

  原理分析:

  1. 當前access.log日志正在被apache進程占用。

  2. 通過rm命令刪除access.log,實際只刪除了文件名(該日志文件應用記數不為0,因此空間不會被釋放)。

  3. 通過rm命令刪除了access.log後,apache依然寫日志到access.log中,當開啟apache進程時,已經通過access.log定位到該文件的inode了,就是說再寫日志是不通過access.log,因此即使刪除了access.log,apache依然寫日志到access.log所在的inode節點,所以導致硬盤空間增加。

  4. 因為刪除了access.log,所以我們就找不到該文件了,du也查不到,就會出現硬盤滿了但看不到究竟是哪些文件占用的。

  (寫的不甚詳細,不明白的大家再google下。)

  解決方法:

  重啟該日志文件的相關服務或程序,如:為apache日志文件則重啟apache(如下圖,重啟後才硬盤空間占用正常)。

磁盤占用恢復正常(圖)
copyright © 萬盛學電腦網 all rights reserved