close

案發時間: 2017

現場(環境):CentOS 7

被害人(套件名稱): Linux 系統、Apache

鑑識工具: du 、lsof

 

筆錄(錯誤原因):

某天因為伺服器中的LOG存放空間不足,所以打算將全部的 LOG 都抓出來再來研究一下。

但在將LOG全數移出後,仍然發現空間並沒有因為我們LOG移出後就釋放出來。

 

詳細狀況(錯誤訊息):

硬體內目前使用狀況,opt已經使用了39G

[root@www ~]# df -Th

Filesystem              Type      Size  Used Avail Use% Mounted on

/dev/sdb1               ext4       50G   39G   11G   79% /opt

但是透過du這個指令去查詢整體使用狀況發現大小不符合

[root@www ~]# du -shc /opt

1.1G    /opt

1.1G    total

 

那我們中間的38G跑到哪裡去了???


#發現資料量大小完全不對。

#因為/opt下有另外開立存放log的位置(EX: apache_log)

#猜測是因為移除log時沒有重啟服務,造成雖然log資訊已經移除,但卻因程序的問題卡在系統當中

 

#接下來要使用lsof 來協助我們查證使用狀況。

#CentOS7中預設未含有lsof指令;如需安裝可使用下列兩個指令。

#查詢哪個套件包中包含lsof指令。

這個指令可以學起來,當你要在套件包中找你要的指令時,是很實用的(provides)

安裝lsof 套件

[root@www ~]# yum provides lsof

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

 * base: centos.cs.nctu.edu.tw

 * epel: mirror01.idc.hinet.net

 * extras: centos.cs.nctu.edu.tw

 * updates: centos.cs.nctu.edu.tw

lsof-4.87-4.el7.x86_64 : A utility which lists open files on a Linux/UNIX system

Repo        : base

lsof-4.87-4.el7.x86_64 : A utility which lists open files on a Linux/UNIX system

Repo        : @base

#安裝自己所需版本。

[root@www ~]# yum install lsof-4.87-4.el7.x86_64


#檢查被刪除掉的檔案是否仍有因為程序的問題卡在空間內。

[root@www ~]# lsof | grep deleted

COMMAND     PID   TID     USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

httpd      1363           root    2w      REG               8,17 37279654328    1572874 /opt/log/httpd/error_log (deleted)

httpd      1363           root    9w      REG               8,17  1001326331    1572871 /opt/log/httpd/access_log (deleted)

.....

#發現有大量Apache_log 雖然移出了,但因為程序而將原先已移出的log站存於硬碟之中。

#此時將Apache服務重新啟用 ; 釋放掉那些因程序而卡在暫存內的資源。

[root@www ~]# systemctl restart httpd

#再次檢查使用狀況。

[root@www ~]# df -Th

Filesystem              Type      Size  Used Avail Use% Mounted on

/dev/sdb1               ext4       50G  1.1G   46G   3% /opt

#可以看到使用空間大幅下降。

#證明因為程序未停止,所以即便你已經先刪除了占用空間的程序日誌,日誌所占存的空間仍然存在。


解決方法:
 

  1. 日誌檔定期備份至log Server或者其他備份伺服器。
  2. 注意服務的運作狀況,看是否有特殊的日誌檔增長狀況發生。(EX : Apache、tomcat...等等)
  3. df  -Th du -shc lsof | grep deleted 等方式查證是否有確實降低空間的佔用。

 

最重要的一點,當你要對運作中的服務做任何異動,都建議先將其服務停止再動作。

否則很容易跟這個事件發現一樣空間消失的狀況。

 

(案件結案)

 
arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()