誰吃掉了伺服器的硬碟空間
雖然說 Jira 和 Confluence 都很佔磁區空間,但是 16GB 的雲端硬碟竟然瞬間瀕臨爆棚破表!這到底是什麼鬼!
百分比 91 的硬碟使用率
今天從監看面板中,阿柴發現自己租用的一部 EC2 Ubuntu 系統的主機,其磁區的使用空間竟然來到了令人髪指的九成。這不可思議的使用率實在是讓阿柴心頭滿滿的問號。畢竟沒有印象曾經用過該伺服器來處理過大型的檔案。所以只好花了點時間,查查看到底是哪些檔案把儲存空間給消耗掉。
檢查佔走磁區空間的檔案
當然不可能一個一個目錄人工手動來找,所以可以透過命令列工具指令。從大處磁區調查著眼。無論是雲端或是本地實體硬碟,其實都是由數個磁區構成的。而每個磁區有著大大小小不同功能和用途的目錄及檔案。因此要找出佔走磁區空間的檔案,阿柴習慣上會使用到的指令和過程大致如下:
# 1. 首先觀察硬碟空間的使用狀況,先讓自己對於個別磁區容量的占比有個概念。
df -h
# 2. 接著找出磁區中,最耗空間的幾個檔案。然後將紀錄存放至伺服器的暫存目錄中。
du -ax / | sort -rn > /var/tmp/du-root-$(date --iso).log
# 3. 透過文字編輯程式來查閱紀錄。並且觀察了解,看看佔用磁區的大檔案分別位在哪些地方。
less /var/tmp/du-root-$(date --iso).log
# 4. 如果有鎖定特定的目錄,可以將檔案以空間大小降冪的方式來排序顯示。例如指令中 /usr/src 的部分,是可以指定的目錄位置。
du -h -d1 /usr/src/ | sort -hr
結果發現大部分都跟 apt-get 的使用有關
實際分析判斷的結果,其中光是 /usr/src
就佔掉了 2G 多。所以根據路徑和路徑下的檔案來判斷,可以知道問題是出在 apt 套件在升級與安裝過程中產生的檔案所致。其對應的空間清理方式可以分為自動與手動兩個方面。
# 一般來說,使用 apt 內建的清理功能即可。autoclean 是清除快取。
sudo apt autoclean
# autoremove 則會連不需要的套件也自動移除掉。
sudo apt autoremove
# 如果還有一些檔案存於其中,像是 linux-aws-headers-x.xx.x-xxxx 這一類的,可以透過 purge 參數來手動刪除。
sudo apt purge linux-aws-headers-4.15.0-1051
用 rm 不是更快
是的,表面來看似乎 rm -r /usr/src
一行指令就夠了。但是因為是 apt 套件,所以會有什麼樣的後果難以預料。阿柴建議還是保守一點,多一分謹慎有時候可以省下不少的煩惱。