請問各位大大 , 若分割給/var全部空間都用完的話,會嚴重影響到網站主機的運作嗎 ? 也就是說Avail值為0 , Use%值為100% , 若我重開機的話 , var的Use%值是不是會變動 , 例如 , Use%值會降低於100% , Avail值則昇高呢 ? 還是說 , 要用其它什麼方法處理比較恰當 ? 大感恩 !
一定會影響主機運作,
但要看一些服務,其檔案若是放在 /var 的 partition 中,
就一定受影響,
若早就是指到其他 partition 的話,
就不受影響。
例如:
/var/log 裡的 log 檔沒得記錄,到時這一段時間則無記錄可尋。
/var/lock 或 /var/run 裡面的檔案不能產生,某些服務就無法啟動。
套件安裝是用 /var 的空間,則會無法進行安裝的動作。
會用到 /var/spool 裡的服務也受影響。
怎麼解決?
清掉 log 檔。
把會一直累積檔案的服務,將其目錄改到其他 partition,
再掛回來,或者用 symbol link 指過去。
例如:若沒有其他新的 partition,
而 /var/spool/mail 的內容一直成長,
擬移到較大的 home partition,
就將 /var/spool/mail 的內容 移到 /home/mail,
然後在 /var/spool 裡 ln -s /home/mail 做 symbol link。
自己規畫 partition , /var 大約畫 2G 左右,
至少在安裝套件時所要用的暫時空間,
都相當夠用。
如果要用特別做什麼服務、量又大的的話,
就把所會用到的目錄,
改放在額外的分割,再從 /var 裡 mount 過來。
若沒有額外的分割區可放,
就只好改移到其他分割區的目錄,
再指過去。
若/var磁碟空間己滿,如果有資料要寫到/var時會有影響
可以將/var目錄下需要磁碟空間的目錄link到其他目錄
*nix系統的log檔通常放在/var下,如果/var滿了最明顯的後果就是須要扒糞時找不到標的物可以扒,治標的方式是直接把那堆log檔清掉(但一旦須要扒糞時就老天保佑了),治本的辦法是透過logrotate等工具定期把log檔分段以方便後續的壓縮/搬移等工作....
如果你的網路主機使用的 temp 空間是建立在 /var的目錄底下,就會有很大的影響,
可以找出 /var底下哪一個目錄使用最多, 然後將 主機內有空餘的空間如:/usr 或
其他空間。
樓上幾位先進對如何有效、且有效率的使用 /var 的空間提出各自的經驗。
追蹤真正造成 file system full 的原因,適當的採取對應的措施才能避免問題再次發生。
/var 底下通常最容易累積檔案(或是出現超大檔案)的目錄是 /var/log 以及 /var/spool/mail。twtw 大大所說的方式可以從檔案系統管理的角度很好的解決未來可能再發生的機率,尤其是對於 mail server 來說。
如果只是單純出現在 /var/log,比如說:一個繁忙的 apache server。
logrotate 可以設定以檔案大小或是定時的方式更新所有的 log 檔(或是可以針對異常增長的 log 作處理),並且將備份的檔案再作壓縮,以得到更有效率的儲存方式。同時也可以在 crontab 裡排程定時將檔案移到另外的 file system。
這裡也提供一點自己的經驗:
FreeBSD: 當 file system 空間被塞滿,出現 Use% 100% (甚至超過 100%。不用懷疑,真的會!),除了把檔案移除或移走,還必須將造成 file sysetm 滿溢的 daemon 或是 process shutdown 才能更新 Use% 的狀態。(重新開機已經達到了這個目的,只要檔案已經被刪除,file system usage 就會被更新)否則 syslog 會持續產生 file system full 的訊息,這樣又會持續重複要寫入到 /var 的動作,成為一個惡性循環。
Linux:移除過度佔用 file system 的檔案後,通常會很快由系統自行更新狀態,不一定需要重新啟動 daemon 或是 process(也可以執行 updatedb 即時更新系統的狀態),也沒有一定要重新開機的必需性。