LUCKVM / CLOUD INFRASTRUCTURE

探索 LuckVM

首頁 全球加速 網域註冊 支援中心 訊息中心 關於我們

VPS 硬碟爆滿空間不足?2026 年 7 步完整排查清理指南,從新手到老手都適用

很多人用 VPS 掛網站、開 Minecraft 私服、跑 Discord Bot、跑 Docker 程式,本來一切正常,某一天突然間 SSH 連線變超慢、網站跳出 502 Bad Gateway、MySQL 無故停止,重開機沒多久又掛,用盡各種方法排查最後才發現——硬碟 100% 滿了。

硬碟爆滿是 VPS 最常見也最容易被忽略的問題之一,和記憶體不足、CPU 滿載不同,硬碟滿了不會在負載監控上立刻顯示異常,卻會導致幾乎所有服務都無法正常運作。這篇教學從台港用戶最常遇到的真實場景出發,教你用最快的方式找到問題、釋放空間、並設定好預防機制,從此不用怕硬碟無預警爆滿。

結論先講:90% 的硬碟爆滿問題,都可以透過 df -h 確認哪個分割區滿了 → du -sh /* 找到大目錄 → 清理日誌或 Docker 殘留 這三步在 10 分鐘內解決。

先確認:硬碟滿了的 8 種常見症狀

很多時候症狀不會直接告訴你「硬碟滿了」,而是表現成各種奇怪的服務異常,容易讓人誤判是記憶體不夠、程式壞掉、或是網路問題。如果你遇到以下症狀,先打 SSH 打 df -h 看一眼,八成就是硬碟滿了:

VPS硬碟空間不足常見症狀對照表

最經典的誤判場景:網站跳出 502,你以為是 Nginx 或 PHP 壞了,重開服務後好五分鐘又掛,最後才發現是硬碟滿了 PHP 根本寫不進 socket 檔,怎麼重開都沒用。

7 步排查流程總覽

我們按照「從快到慢、從常見到少見」的順序整理了完整排查流程,照著順序做,九成以上的問題都能在 10 分鐘內找到原因:

VPS硬碟爆滿7步排查流程圖

第一步:用 df -h 確認哪個分割區真的滿了

首先不要亂刪東西,先確認是不是真的硬碟滿了、以及滿的是哪個分割區。SSH 連進 VPS 之後輸入:

df -h

正常的輸出會長這樣,我們直接看範例:

df -h 與 du -sh 指令輸出範例解說
重點看哪邊?
  • 絕大多數 VPS 只有一顆虛擬硬碟,掛載在根目錄 /,就是 /dev/vda1 那一行
  • 如果 Use% 顯示 100% 或是 95% 以上,就是硬碟滿了
  • 如果是額外掛載的數據碟滿了(例如掛在 /home 或 /data),後續就從那個目錄往下找
  • tmpfs 是記憶體虛擬碟,滿了不會影響硬碟,不用管它
常見迷思:很多人以為硬碟滿了是網站檔案太多,實際上根據我們統計台港用戶的真實案例,超過 60% 的狀況是「日誌檔」和「Docker 殘留」佔掉空間,真正的網站程式檔案通常只佔幾百 MB 而已。

第二步:用 du 指令逐層找到佔空間的大兇手

確認是根目錄滿了之後,接下來從根目錄開始,逐層往下找哪個目錄佔了最大空間。輸入:

du -sh /* 2>/dev/null | sort -hr

這個指令會把根目錄下一層所有資料夾的大小算出來,從大到小排序。通常你會看到 /var 或 /home 是最大的,例如上面範例 /var 就佔了 28G。

接著繼續往大目錄裡面鑽,例如 /var 最大就接著打:

du -sh /var/* 2>/dev/null | sort -hr

就這樣一層一層往下找,很快就能找到真正佔空間的大檔案或大資料夾。

重要提醒:不要看到大檔案就直接 rm -rf!先確認那個檔案是不是正在被程式使用中,例如正在寫入的資料庫檔案、正在運行的容器數據,亂刪會導致資料遺失或服務壞掉。

根據我們的統計,台港用戶 VPS 硬碟空間的佔用分布大致如下,你可以按照這個優先順序排查:

VPS硬碟空間常見佔用分布統計

第三步:最常見!清理 /var/log 爆炸的系統日誌

第一名佔空間的兇手就是系統日誌,尤其是長期運行沒有重開過的 VPS,journalctl 系統日誌、Nginx 存取日誌、MySQL 錯誤日誌累積下來動輒十幾 G 非常常見。

3.1 清理 systemd journal 日誌(最常見)

絕大多數 Linux 發行版(Ubuntu 18.04+、Debian 10+、CentOS 7+)都用 systemd,預設沒有開啟日誌輪替,跑久了 journal 日誌可以佔掉 10G 以上空間,一鍵清理指令:

# 只保留最近 200MB 的日誌
journalctl --vacuum-size=200M

# 或是只保留最近7天的日誌
journalctl --vacuum-time=7d

打完之後直接就會釋放空間,而且不會影響系統運作。

3.2 清理 Nginx / Apache 網站日誌

如果你的網站流量不小,Nginx 的 access.log 存取日誌一個月長到好幾 G 很正常,不要直接刪檔案(正在寫入的話刪了空間不會釋放),正確做法是截斷:

# 清空所有 Nginx 日誌(不會刪檔案,只清空內容)
truncate -s 0 /var/log/nginx/*.log

# Apache 的話是
truncate -s 0 /var/log/apache2/*.log

3.3 順便清理 apt 快取與舊核心

如果你用 Debian/Ubuntu,跑了很多次 apt install/update 之後,快取和舊版核心也會佔不少空間:

apt clean
apt autoremove --purge -y

第四步:清理 Docker 殘留的鏡像、容器與日誌

第二名是 Docker,很多人用 Docker 跑網站、跑 Discord Bot、跑 Minecraft,測試了一堆鏡像和容器之後沒刪乾淨,加上每個容器的日誌預設無上限,很容易就佔掉十幾二十 G。

4.1 一鍵清理 Docker 所有沒在使用的資源

如果你確定不需要保留離線的容器、沒用到的鏡像和無用的 volume:

docker system prune -a --volumes
注意:這個指令會刪除「所有停止的容器」、「所有沒有被容器使用的鏡像」和「沒被使用的 volume」。如果你的容器都是正常運行中就不用怕,只會清理沒在用到的殘留;如果你有離線但未來要開的容器,先不要加 --volumes 避免資料被刪。

4.2 限制 Docker 容器日誌大小(治本)

如果不做設定,每個 Docker 容器的日誌預設可以無限長大,跑幾個月就好幾 G。編輯或建立 /etc/docker/daemon.json,加入:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

存檔之後重啟 Docker 服務就會生效:

systemctl restart docker

這樣每個容器最多只會保留 3 個日誌檔、每個最多 10MB,總共 30MB,從此不會再被 Docker 日誌塞爆硬碟。

第五步:清理網站、遊戲備份與各種快取檔

第三名是各種手動備份忘記刪,這也是台港用戶非常常見的狀況:

  • 用外掛自動備份 WordPress 網站,備份檔存在同一台 VPS 的 web 目錄裡,累積了十幾份
  • 手動打包 Minecraft 世界存檔備份,打完就忘記刪
  • Nextcloud 開了版本控制,舊版本檔案保留了好幾個月
  • PT 種子下載完的檔案忘記搬走,長期佔在硬碟裡
  • PHP、Redis、各種程式的 session 暫存檔無限累積

實用指令:找所有超過 500MB 的大檔案

find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null | awk '{ print $5 ": " $9 }'

這個指令會把全機所有超過 500MB 的檔案列出來,你可以一眼看到哪些大檔案是忘記刪的備份、安裝包、舊影片、舊地圖檔。

自動刪除超過 30 天的舊備份(建議排程)

如果你有固定把備份放在 /backup 目錄的習慣,可以手動先清一次:

find /backup -name "*.tar.gz" -mtime +30 -delete

後面我們會教你怎麼設定排程自動做,不用每次手動打。

第六步:刪除遺忘的大檔案與隱藏的資源回收桶

有幾個很容易被忽略的隱藏空間殺手,怎麼找都找不到的時候可以檢查:

  1. 已被刪除但還被程式佔用的檔案:你刪了一個正在被程式寫入的大日誌檔,檔案從資料夾裡消失了,但作業系統因為程式還開著它,不會釋放空間。用下面指令找:
    lsof | grep deleted | grep -v tmpfs

    找到之後重開對應的服務(例如 Nginx、MySQL),空間就會釋放出來。

  2. 資源回收桶:如果你有用桌面環境、或用 sFTP 刪檔案,有時候檔案會被丟進 ~/.local/share/Trash/ 資源回收桶,沒真的刪掉。
  3. Linux 預留保留空間:ext4 檔案系統預設會預留 5% 的硬碟空間給 root 使用者,硬碟大的話這 5% 可能就是好幾 G,如果是數據碟可以手動調低成 1%:
    # 例如把 /dev/vda1 的保留空間調成1%
    tune2fs -m 1 /dev/vda1
  4. 使用者家目錄的隱藏檔:很多人會把東西下載到 /root 或自己的家目錄,久了就忘記,記得 du -sh /root/* 也檢查一下。

第七步:擴容?或設定自動清理避免復發

如果該清的都清了還是空間不夠,那就是你這台 VPS 的硬碟本來就不敷使用了,LuckVM 後台支援一鍵擴容,不用重開機也不會遺失資料,幾分鐘就可以把硬碟升級到更大的容量。

不過大部分狀況其實不需要擴容,只要做好下面幾個自動清理設定,從此就不會再遇到硬碟無預警爆滿的狀況:

VPS硬碟爆滿預防措施勾選清單

最推薦做的三個治本設定

1. 永久設定 journalctl 日誌上限

編輯 /etc/systemd/journald.conf,找到下面兩行取消註解並修改:

SystemMaxUse=200M
SystemMaxFileSize=50M

存檔後重啟 journald 就永久生效:systemctl restart systemd-journald

2. 設定每週自動清理舊備份與快取

編輯 crontab:crontab -e,加入下面這行,每週一凌晨三點自動刪除超過30天的備份和暫存:

0 3 * * 1 find /backup -name "*.tar.gz" -mtime +30 -delete && journalctl --vacuum-size=200M && docker system prune -f

3. 開啟硬碟用量告警

你可以在 LuckVM 後台開啟磁碟用量通知,當硬碟使用率超過 80% 就會自動發 Email / Telegram 通知你,不用自己手動檢查,就可以在硬碟滿之前提前處理。

原則:永遠不要把硬碟用到 100% 資料庫(尤其是 MySQL/PostgreSQL)和很多程式運作時都需要額外的暫存空間,硬碟使用率超過 90% 之後效能就會開始下降,建議至少保留 10~15% 的剩餘空間,不要塞好塞滿。

下面整理了常見場景的一鍵清理指令對照表,你可以收藏起來備用:

常見場景一鍵清理指令對照表

需要更大硬碟或更穩定的 VPS?

LuckVM 香港、日本、韓國、新加坡節點全線 SSD 雲端硬碟,後台一鍵擴容不用重開機,3分鐘完成升級,不怕硬碟突然爆滿。新用戶輸入優惠碼 BLOG2026 享首購 85 折優惠。

立即查看 VPS 方案

常見問題 FAQ

VPS硬碟滿了會有什麼症狀?

常見症狀包含 SSH 連線異常變慢、輸入指令有延遲、網站出現 502/503 Bad Gateway、MySQL/MariaDB 無故自動停止、Docker 容器一直重啟、Minecraft 伺服器突然閃退、無法安裝套件或執行系統更新、甚至完全無法 SSH 連進去。重開機後可能會暫時恢復正常,但很快又會掛掉。

用什麼指令快速確認 VPS 是不是硬碟滿了?

SSH 連進去之後直接打 df -h,看根目錄 / 對應的 Use% 欄位,如果顯示 95% 以上或 100% 就是硬碟滿了。這個指令一秒就有結果,遇到服務異常時先打這個指令確認,可以省掉非常多排查時間。

VPS硬碟空間最常見是被什麼東西佔用?

根據台港用戶真實案例統計:第一名是系統與服務日誌(/var/log,含 journalctl、Nginx、MySQL 日誌,約 32%),第二名是 Docker 殘留的舊鏡像、容器與日誌(約 28%),第三名是未清理的手動/自動備份檔(約 20%),真正的網站程式本身通常只佔幾百 MB 而已。

為什麼我明明刪了大檔案,df 還是顯示 100%?

這是非常經典的狀況:你刪除的檔案目前還被某個正在運行的程式開著(例如正在寫入的 Nginx 日誌、MySQL 日誌),Linux 作業系統會等到程式關閉檔案之後才真正釋放空間。解法是用 lsof | grep deleted 找到佔用檔案的程式,重啟該服務就會釋放空間;日誌檔建議用 truncate -s 0 檔名 清空而不是 rm 刪除。

怎麼預防 VPS 硬碟無預警爆滿?

最簡單的三步:1) 設定 journalctl 和 Docker 日誌大小上限,從根源避免日誌無限長大;2) 開啟 LuckVM 後台的硬碟 80% 用量告警,滿了就提前通知你;3) 每月花 10 秒打一次 df -h 看使用率。養成這三個習慣,幾乎永遠不會遇到硬碟突然爆滿掛台的狀況。

相關服務

比較相關 LuckVM 產品的方案、線路與資源;實際庫存與價格以訂購頁為準。 雲端伺服器購買_極速NVMe VPS主機租用與即時擴充