如何在 Linux 上優化儲存空間
15 分鐘閱讀 - 2026年5月22日

在 Linux 伺服器上回收和最佳化磁碟空間的實用技術,從套件快取清理到檔案系統調整和自動化維護。
如何在 Linux 上優化儲存空間
多年來,面對磁碟空間已滿的狀況,標準解決方案很簡單:增加儲存空間。當時儲存設備價格低廉。但如今情況已然不同。自 2025 年底以來,受 AI 基礎設施需求消耗全球產能的影響,NAND 快閃記憶體價格已大幅飆升。 僅在 2026 年第一季,企業級 SSD 的合約價格就上漲了 85% 至 90%;消費級 NVMe 硬碟的市價也大約翻了一倍;而新的 NAND 生產能力預計要到 2027 年才會投入運作。
結果就是:伺服器上的每GB儲存空間成本都比一年前更高,這使得優化現有資源,遠比透過購買新設備來解決問題更為划算。本文將介紹如何找出佔用磁碟空間的元兇、進行清理,並設定檔案系統以更有效率地利用儲存空間。
找出佔用您磁碟空間的項目
首先執行 df -h 以獲取每個已掛載檔案系統的快照,包括總大小、已用空間及使用百分比。任何使用率超過 90% 的分割區都需要特別關注。如有需要,請個別檢查特定分割區:
df -h /
df -h /boot請勿忽略 inodes。檔案系統可能仍有可用空間,但若 inodes 已用罄,仍會導致相同的問題。請使用 df -i.
若 df 顯示使用率為 100%,但各項數字加總後卻不符,您很可能有「幽靈檔案」。這些是已被刪除,但仍被執行中的程序佔用的檔案。除非該程序釋放檔案句柄,否則空間將無法被回收。請使用以下指令找出它們:
sudo lsof / | grep deleted一旦確定哪些檔案系統承受壓力,請使用 du 或 ncdu。若需快速檢查或編寫腳本, du 是合適的工具:
du -h --max-depth=1 /var在從根目錄掃描時,加入 -x ,即可在從根目錄掃描時保持在單一檔案系統內,並跳過如 /proc。若要在遠端伺服器上進行互動式探索, ncdu 將提供可導航的文字介面,讓您能依大小排序並直接刪除檔案。
| 功能 | du | ncdu |
|---|---|---|
| 介面 | 靜態命令列輸出 | 具方向鍵導航功能的互動式 TUI |
| 最適用於 | 腳本編寫與快速檢查 | 在遠端伺服器上手動探索 |
| 排序 | 需透過管道傳送至 sort | 內建(依大小、名稱等) |
| 檔案刪除 | 獨立 rm 命令 | 內建(按下 d) |
清除套件快取、日誌及重複檔案
有三個領域始終佔據了最多可回收的空間:套件快取、日誌檔案,以及大型或重複的檔案。
套件快取與孤立的依賴項
每次安裝或更新都會留下套件快取檔案。隨著時間推移,這些檔案會悄然累積。請根據您的發行版進行清理:
| 任務 | Debian/Ubuntu (APT) | Fedora/RHEL (DNF) | Arch (Pacman) |
|---|---|---|---|
| 清除快取 | sudo apt clean | sudo dnf clean all | sudo paccache -r |
| 移除孤立檔案 | sudo apt autoremove | sudo dnf autoremove | pacman -Rs $(pacman -Qdtq) |
| 清除殘留的設定檔 | sudo apt autoremove --purge | 由 autoremove 處理 | 不適用 |
請先使用 sudo apt autoremove --dry-run。舊版核心在 Ubuntu 系統上可能佔用 1.5GB 或更多空間。移除舊版本前,請務必保留當前運行中的核心以及一個備份版本。
若您使用 Snap 或 Flatpak,這些套件也會累積修訂版本與執行時檔案:
sudo snap set system refresh.retain=2
flatpak uninstall --unused位於 /var/log 的日誌檔案
日誌檔案是最常見的隱形磁碟空間佔用者。請先找出過大的日誌檔案:
du -xhd1 /var/log | sort -h
find /var/log -type f -size +100M對於 systemd 日誌,請使用內建的 vacuum 工具,而非手動刪除檔案:
sudo journalctl --vacuum-size=500M若要設定永久上限,請編輯 /etc/systemd/journald.conf:
SystemMaxUse=500M
MaxRetentionSec=14day對於仍被服務保持開啟的活躍日誌檔案,請勿使用 rm。只要程序仍持有檔案描述符,空間就無法釋放。請改用 truncate:
sudo truncate -s 0 /var/log/syslog大型與重複檔案
在整個系統中搜尋大於 500MB 的檔案:
sudo find / -type f -size +500M -exec ls -lh {} +針對重複檔案, rmlint 會使用基於雜湊值的比對來偵測重複檔案、空目錄及損壞的符號連結。在刪除任何內容之前,請仔細檢視其輸出結果,特別是在同一檔案可能扮演不同角色的伺服器上。
檔案系統層級的優化
清理檔案後,您可以透過調整檔案系統,從相同的硬體中榨取更多可用空間。
減少 ext4 保留空間
預設情況下,ext4 會為根目錄保留 5% 的檔案系統空間。在 2TB 的資料分割區中,這意味著有 100GB 的空間閒置。若在專用伺服器上,且資料分割區並非根檔案系統,您可以安全地將此比例降低:
sudo tune2fs -m 1 /dev/sdXn此設定將保留空間調整為 1%,對於大多數使用情境已足夠。請使用 tune2fs -l /dev/sdXn.
Btrfs 透明壓縮
Btrfs 支援透明檔案壓縮,這是 ext4 和 XFS 所不具備的功能。請使用 compress=zstd 即可在寫入時自動壓縮資料。ZSTD 能在速度與壓縮率之間取得良好平衡。對於混合檔案的工作負載, compress-force=zstd 可透過壓縮通常會被啟發式演算法跳過的檔案,額外節省 10-20% 的空間。
若要壓縮 Btrfs 卷上的現有資料:
btrfs filesystem defragment -czstd /path/to/dir若卷包含快照或引用連結,請謹慎操作。碎片整理會破壞「寫入時複製」的關聯性,實際上可能增加磁碟使用率。
用於即時副本的 reflinks
XFS 和 Btrfs 均支援 reflinks,此機制會建立共享實體區塊的檔案副本,直到其中一個副本被修改為止。這對於克隆虛擬機器磁碟映像或容器層級非常有用,且不會使儲存空間消耗加倍:
cp --reflink=always source.img clone.imgLVM 薄配置
LVM 薄配置可讓您分配超過實體磁碟空間的邏輯空間,僅在寫入資料時才佔用實際磁碟空間。當運行多個虛擬機器或容器時,此功能尤為實用,因為每個虛擬機器或容器雖需各自的邏輯卷,但不會同時填滿所有空間。
為防止精簡儲存池空間耗盡,請在 /etc/lvm/lvm.conf 中啟用自動擴展,設定 thin_pool_autoextend_threshold 並 thin_pool_autoextend_percent.
儲存維護的自動化
手動清理僅能解決當下問題。自動化維護則能確保您的磁碟在下次登入前始終保持良好狀態。請使用 systemd 定時器 cron 。它們會將輸出記錄至 journalctl ,並 Persistent=true 並會在重新開機後補上錯過的執行任務。
| 工具 | 工具 | 頻率 |
|---|---|---|
| 日誌輪替 | logrotate | 每日或每週 |
| 日誌清理 | journalctl --vacuum-time | 每週 |
| 套件快取清理 | apt clean / dnf clean all | 每月 |
| 清除暫存檔 | systemd-tmpfiles | 每日 |
| Docker 清理 | docker system prune | 每週 |
| 磁碟使用量監控 | 自訂腳本 + systemd 定時器 | 每 15-30 分鐘 |
Docker 值得特別關注。容器日誌可能會在毫無預警的情況下不斷增長。請透過編輯 /etc/docker/daemon.json。設定 max-size 並 max-file 設定 log-opts 設定,以防止個別容器佔滿您的磁碟空間。
若要進行主動監控,請建立兩級警報系統:磁碟使用率達 80% 時發出警告,達 90% 時發出嚴重警報。每小時記錄磁碟使用量,以便追蹤增長趨勢並預測分區何時會達到容量上限:
0 * * * * df --output=source,size,used,pcent >> /var/log/disk_usage.csv另一項防護措施:掛載 /var, /tmp,並 /home 分別掛載於不同的分割區。此舉可防止失控的日誌或使用者資料佔用根檔案系統,進而導致整個系統當機。
讓每一個ギガバイト都物盡其用
隨著儲存價格持續攀升,且預計要等到 2027 年新 NAND 產能上線前都難以緩解,因此優化現有資源不僅是良好的做法,更能實際節省開支。方法很簡單:
- 使用
df,du,並ncdu在進行任何變更前, - 清除套件快取、輪替日誌檔並移除重複資料,以立即釋放空間。
- 調整您的檔案系統。減少 ext4 的保留區塊、啟用 Btrfs 壓縮,或使用 LVM 薄配置,以從現有硬體中獲取更多效能。
- 透過 systemd 定時器自動化維護作業,確保磁碟在兩次檢查之間保持整潔。
- 監控使用趨勢,並在 80% 和 90% 時設定警示,以便及早發現問題。
若您需要配備高效能 NVMe 儲存裝置的專用伺服器基礎架構,FDC 的專用伺服器正是為此而打造。
如何在 Linux 上優化儲存空間
15 分鐘閱讀 - 2026年5月22日