Solaris 10 system full 100%系統無法開機

本次想記錄一下Solaris 10的維修過程。接獲叫修的問題是原本運作的中軟體在Solaris 10的作業系統中無法開啟,看到的畫面是點選軟體但一閃而過無法正常啟動。第一直覺就是系統有可能因為多人使用所以單一Client被鎖定,導致無法開啟。但事實上才是惡夢的開始…..

Solaris 10系統清除error file、message files

重開機後Reflection Desktop這個連線軟體無法連線,一直在嘗試連線中。就知道應該是Solaris X6-2 Server沒有正常啟動,秀出下面的一些錯誤訊息。

X6-2無法開機錯誤訊息
關鍵訊息為:

'Could not log for SVC:/system/sysevent:default:wirte(4) failed with No space left on device.'

系統只剩還可以進入Console mode去查找問題而已,所以進入後馬上下指令 df -h,查看各pool的硬碟容量使用狀況。

為了讓作業系統能夠勉強先運作可以先進到/var/crash、/var/core 兩目錄中去刪除一些crash及message files。命令參考如下:

#cd /var/crash
#ls -a
#rm unix.*
#rm vmcore.*

一般來說刪除這些檔案可以釋放出空間,讓系統rpool位置100%降下來後即可正常地進入作業系統了。

du command查看system file size

正常來說在rpool內所佔使用的空間大概只會到8%左右,鮮少會超過20%。如果發現此空間有一直增加的趨勢那應該是產生了core或者message的檔案了。但是哪一個位置產生了怪檔案,除非你很熟悉系統知道位置。有一個指令可以協助你查找檔案較大的目錄位置。該指令查找時會算出跟目錄下其他目錄的檔案容量總和。這時候你就可以進到相對較大的目錄中去查訊問題了。

#cd /
#du -sH

9.0M /bin  
11.2M /boot 
117k /dev 
99M /etc 
588k /home 
342M /lib 
177k /lost+found 
102k /media 

/var/spool/clientmqueue佔滿系統空間

本次的問題是cron在作怪。如果再linux中有開啟cron當成排程工作時,只要有輸出就會把相關內容發送給cron使用者。這時候就會在/var/spool/clientmqueue目錄中產生回報檔案。本次在遊民的系統中已經產生了近兩萬多個檔案,也導致系統完全無法開機的狀態。crontab是一般linux使用者可以設定排程工作的檔案,是Solairs工程師一定知道的檔案。同時存在本次發生的系統資訊檔案占滿空間位置的問題。

/var/spool/clientmqueue佔滿系統空間解決方法

不用多說就是刪除掉這一些檔案,然後就可以精準地釋放出空間。rm *指令當然可以。但如果你想嘗試在兩萬多個檔案中進行rm command。你試過就會知道後果沒有你想像中的簡單。因為既慢又有可能當掉。

#cd /var/spool/clientmqueue
#rm *

建議指令如下。快速又有效率。

# cd /var/spool/clientqueue
# ls | xargs rm -f

修正crontab相關位置

除了刪除相關回報檔案之外,為了避免之後crontab排程回報的資料再次灌爆我們的系統。建議只要你修改過crontab檔案時,在每一個排程後面都要加上下面的指令 > /dev/null 2亦即不管如何結果都會拋棄不去記錄成檔案。之後就不會有日益增加的回報資料讓你的系統炸開了。

0 1 * * * rsync -avzI dir_name remote_ip:dir_name > /dev/null 2>&1

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。