Linux

/var 分區上缺少空間?

  • August 19, 2009

我們的一位伺服器管理員讓我看看這個,我很難過 - 我們的 /var 分區已滿,但我似乎無法確定空間去了哪裡。

以下是 ‘du /var -ah’ 的輸出

...
202M    var/

‘df -h’ 但是返回

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/gza-root  268M  108M  147M  43% /
tmpfs                 2.0G     0  2.0G   0% /lib/init/rw
udev                   10M   68K   10M   1% /dev
tmpfs                 2.0G     0  2.0G   0% /dev/shm
/dev/sda1             236M   20M  204M   9% /boot
/dev/mapper/gza-home  115G   15G   95G  14% /home
/dev/mapper/gza-tmp   380M   11M  350M   3% /tmp
/dev/mapper/gza-usr   4.7G  3.9G  610M  87% /usr
/dev/mapper/gza-var   2.9G  2.7G   26M 100% /var

我似乎無法找到其他 2.5GB 的去向,有什麼想法或提示嗎?

嘗試重新啟動服務。當您刪除(rm unlink things, it)它時,有可能在 /var 上打開了一個文件。系統不會釋放空間,直到一切都關閉該文件的文件句柄。

您可能需要使用lsof來找出哪些程序仍然在 /var 中打開文件。

由於它是 /var,我猜想某些東西仍然打開了一個日誌文件。

有幾種可能的路徑:

  1. 您是否用盡了 inode 而不是可用塊(實際空間)?如果有很多小文件,它們可能會吃掉所有的 inode(實際上是文件分配表中的條目)。一旦所有的 inode 用完,即使有很多空閒塊,也無法添加新文件在分區中。這是一個萬用字元答案,用於檢查是否沒有明顯的確鑿證據。inode 耗盡是一種罕見的情況,但它仍然會發生(Blackboard 7.0 …)
  2. du -s /var/* | sort -rn應該讓您更好地了解 /var 中佔用空間的內容,就像 KDirStat 之類的圖形實用程序一樣。我不推薦 KDirStat 解決這個問題,因為您正在處理 /var。與 /home 的空間問題相比,/var 的問題往往會影響系統穩定性。此外,在專用伺服器的情況下,您不應該首先在盒子上執行 GUI,從而使使用(本地)GUI 工具的概念變得毫無意義。在不太緊急的情況下,KDirStat、WinDirStat 和 SequoiaView 等工具的平方樹圖輸出使問題辨識變得微不足道;樹形圖是視覺化磁碟使用的好方法。
  3. 某些服務是否失控並將大量垃圾記錄到 /var/log 中?如果您的組織文化接受它,那麼設置一個專用的日誌主機並讓所有機器通過網路將日誌寫入它可能會很有價值。至少,請確保根據您站點的日誌保留策略適當地輪換、壓縮和刪除每個日誌。logrotate 是你的朋友。
  4. 確實有日誌保留政策,對嗎?;) 說真的,如果你沒有,那就設置一個。它可以是一句話——“除非與服務所有者另行安排,否則我們會將日誌保留 7 天。以書面形式。”

引用自:https://serverfault.com/questions/16570