Linux 磁碟空間不足排查教學:df、du、log、cache、備份檔怎麼清

VPS 磁碟滿了會造成網站無法寫入、資料庫異常、服務啟動失敗。本文教你用 df -h、du、journalctl、logrotate、apt clean 找出大檔與常見清理方向,避免亂刪系統檔。

Linux磁碟空間dfdulogcachejournalctllogrotateVPS伺服器排錯No space left on device備份檔

VPS 磁碟空間滿了,網站可能無法上傳圖片、資料庫無法寫入、Docker 不能啟動,甚至 SSH 登入後很多指令都怪怪的。這時候最怕的不是磁碟滿,而是你不知道哪些檔案可以刪、哪些不能動。

這篇教你用 dfdujournalctl 和基本清理觀念找出問題。重點是先定位,再清理,不要一開始就亂刪系統目錄。

Linux 磁碟空間排查示意圖

你會先搞懂這幾件事

  • df -h 看哪個分割區滿了。
  • du -h --max-depth=1 找哪個目錄最大。
  • 常見爆量來源是 log、cache、備份檔、Docker image / volume。
  • 不要亂刪 /usr/lib/bin/etc
  • 清理前先確認檔案用途與備份狀態。

先看哪裡滿了:df -h

df -h

你會看到類似:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   47G  1.2G  98% /

重點看:

  • Mounted on:哪個掛載點滿了。
  • Use%:使用率。
  • Avail:剩餘空間。

如果 / 滿了,整台主機都可能受影響。先不要重開服務,先找出大檔來源。

找大目錄:du

從根目錄開始看:

sudo du -h --max-depth=1 / 2>/dev/null | sort -h

如果看到 /var 很大,再往下查:

sudo du -h --max-depth=1 /var 2>/dev/null | sort -h
sudo du -h --max-depth=1 /var/log 2>/dev/null | sort -h

常見大目錄:

目錄常見內容
/var/log系統與服務日誌
/var/lib/dockerDocker image、container、volume
/var/www網站檔案與上傳內容
/home使用者檔案與備份
/tmp暫存檔

清理 apt 快取

Ubuntu / Debian 可以先清理套件快取:

sudo apt clean
sudo apt autoremove

apt clean 通常安全性較高;autoremove 會移除不再需要的套件,但正式主機仍要看清楚它打算移除什麼。

清理 systemd journal

查看 journal 佔用:

journalctl --disk-usage

限制保留大小:

sudo journalctl --vacuum-size=500M

或限制保留時間:

sudo journalctl --vacuum-time=14d

不要直接刪 /var/log/journal。用 journalctl 提供的方式比較安全。

日誌檔太大怎麼辦

先找大檔:

sudo find /var/log -type f -size +100M -exec ls -lh {} \;

如果某個 log 持續爆量,要先找原因,不要只清空:

  • 網站是否被大量掃描。
  • 程式是否一直噴錯。
  • Nginx / PHP-FPM 是否設定錯。
  • 磁碟滿是否導致服務反覆失敗。

可以看:

sudo tail -100 /var/log/nginx/error.log
sudo journalctl -p err -n 100

備份檔爆量

很多 VPS 磁碟滿,是因為備份檔一直留在同一台主機:

find /home -type f \\( -name "*.zip" -o -name "*.tar.gz" -o -name "*.sql" \\) -exec ls -lh {} \;

備份不是不能放本機,而是不能只放本機,也不能無限累積。建議:

  • 設定保留天數。
  • 重要備份放到不同主機或不同儲存空間。
  • 定期測試還原。
  • 刪除前確認不是唯一備份。

Docker 空間怎麼看

如果你有使用 Docker:

docker system df

清理前要小心,不要刪掉仍需要的 volume。新手不要直接亂跑所有 prune 指令,至少先確認目前 container:

docker ps -a
docker volume ls

如果不確定 volume 裡是不是資料庫或上傳檔,不要刪。

不要亂刪這些地方

不要為了清空間隨便刪:

  • /etc
  • /usr
  • /bin
  • /sbin
  • /lib
  • /var/lib/mysql
  • Docker volume
  • 不確定用途的網站 uploads 或資料庫備份

刪錯可能比磁碟滿更難救。

下一步

如果你的正式網站已經因為磁碟滿導致資料庫、Email 或網站異常,可以先保留 df -hdu 與錯誤日誌,再到 聯絡我們 取得協助。

需要 VPS 來實作?

侃瑞科技提供 VPS 方案,適合 Docker、API、開發環境與自架服務。

查看 VPS 方案 →