如何在 Linux 上優化儲存空間

15 分鐘閱讀 - 2026年5月22日

hero section cover
目錄
  • 如何在 Linux 上優化儲存空間
  • 找出佔用您磁碟空間的項目
  • 清除套件快取、日誌及重複檔案
  • 檔案系統層級的優化
  • 儲存維護的自動化
  • 讓每一個ギガバイト都物盡其用
分享

在 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

一旦確定哪些檔案系統承受壓力,請使用 duncdu。若需快速檢查或編寫腳本, du 是合適的工具:

du -h --max-depth=1 /var

在從根目錄掃描時,加入 -x ,即可在從根目錄掃描時保持在單一檔案系統內,並跳過如 /proc。若要在遠端伺服器上進行互動式探索, ncdu 將提供可導航的文字介面,讓您能依大小排序並直接刪除檔案。

功能duncdu
介面靜態命令列輸出具方向鍵導航功能的互動式 TUI
最適用於腳本編寫與快速檢查在遠端伺服器上手動探索
排序需透過管道傳送至 sort內建(依大小、名稱等)
檔案刪除獨立 rm 命令內建(按下 d)

清除套件快取、日誌及重複檔案

有三個領域始終佔據了最多可回收的空間:套件快取、日誌檔案,以及大型或重複的檔案。

套件快取與孤立的依賴項

每次安裝或更新都會留下套件快取檔案。隨著時間推移,這些檔案會悄然累積。請根據您的發行版進行清理:

任務Debian/Ubuntu (APT)Fedora/RHEL (DNF)Arch (Pacman)
清除快取sudo apt cleansudo dnf clean allsudo paccache -r
移除孤立檔案sudo apt autoremovesudo dnf autoremovepacman -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

若卷包含快照或引用連結,請謹慎操作。碎片整理會破壞「寫入時複製」的關聯性,實際上可能增加磁碟使用率。

XFS 和 Btrfs 均支援 reflinks,此機制會建立共享實體區塊的檔案副本,直到其中一個副本被修改為止。這對於克隆虛擬機器磁碟映像或容器層級非常有用,且不會使儲存空間消耗加倍:

cp --reflink=always source.img clone.img

LVM 薄配置

LVM 薄配置可讓您分配超過實體磁碟空間的邏輯空間,僅在寫入資料時才佔用實際磁碟空間。當運行多個虛擬機器或容器時,此功能尤為實用,因為每個虛擬機器或容器雖需各自的邏輯卷,但不會同時填滿所有空間。

為防止精簡儲存池空間耗盡,請在 /etc/lvm/lvm.conf 中啟用自動擴展,設定 thin_pool_autoextend_thresholdthin_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-sizemax-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 的專用伺服器正是為此而打造。

博客

本周特色

更多文章
為什麼擁有強大且不計費的 VPS 是很重要的?

為什麼擁有強大且不計費的 VPS 是很重要的?

需要可靠的效能和無限的流量?功能強大的非計費 VPS 可提供您所需的速度、擴充性和頻寬,而無需擔心使用限制。

3 分鐘閱讀 - 2025年5月9日

如何在 Linux 上優化儲存空間

15 分鐘閱讀 - 2026年5月22日

更多文章