Linux 檔案系統 (ext4/xfs/btrfs) 雖較 NTFS/FAT32 耐碎片,但長期高負載仍會效能下降。系統性優化策略:
# 找出佔用大戶
du -h --max-depth=1 / | sort -hr | head -20
# 清理對象:
# /var/log/*.gz (舊日誌) → logrotate 保留 30 天
# /tmp, /var/tmp (臨時檔) → systemd-tmpfiles 自動清理
# /root/.cache, /home/*/.cache (快取)
# Docker: docker system prune -a --volumes
# 套件快取: apt clean / dnf clean all / pacman -Sc
# 核心舊模組: /lib/modules/$(uname -r)-old (確認新核心穩定後刪除)
保留 ≥ 20% 可用空間,避免分配器效能崩潰。
| 檔案系統 | 線上整理工具 | 離線整理 | 特性 |
|---|---|---|---|
| ext4 | e4defrag /mount/point (需 kernel 2.6.28+、e2fsprogs 1.42+) | 備份 → mkfs.ext4 → 還原 (最徹底) | Extent-based,碎片較少,e4defrag 即時可用 |
| xfs | xfs_fsr /mount/point (線上重組) | 同上 | B+Tree,碎片極少,xfs_fsr 低負載下執行 |
| btrfs | btrfs filesystem defragment -r /mount/point | 同上 | COW,快照多時碎片明顯,定期 defrag 必做 |
注意:SSD/NVMe **不需**傳統碎片整理,TRIM/Discard (fstrim.timer 每週執行) 即可維持效能。
| 排程器 | 適用裝置 | 特性 | 設定方式 |
|---|---|---|---|
| mq-deadline | SSD/NVMe | 低延遲、請求合併、截止時間保證 | echo mq-deadline > /sys/block/nvme0n1/queue/scheduler |
| kyber | 高佇列 NVMe | 雙佇列 (讀/寫)、Token Bucket 限流 | echo kyber > /sys/block/nvme0n1/queue/scheduler |
| bfq | HDD/桌面互動 | 公平佇列、低延遲保證、適合多媒體 | echo bfq > /sys/block/sda/queue/scheduler |
| none | 企業級 RAID/HBA (自帶排程) | 繞過核心排程,直接下發硬體 | echo none > /sys/block/sda/queue/scheduler |
永久生效:/etc/udev/rules.d/60-ioscheduler.rules 或 kernel 參數 scsi_mod.use_blk_mq=1。
bcache / dm-cache / lvmcache:SSD 做 HDD 讀寫快取dm-writecache:持久化寫入快取 (需 PLP SSD)bcachefs (實驗性)、ZFS L2ARC/SLOG# ext4 掛載選項 (/etc/fstab)
UUID=xxx /data ext4 defaults,noatime,discard,commit=60,data=ordered 0 2
# noatime: 不更新 atime
# discard: 傳送 TRIM 指令 (SSD)
# commit=60: 日誌提交間隔 60 秒 (平衡效能/資料安全)
# data=ordered: 標準日誌模式 (data=writeback 效能更高但風險稍大)
# xfs 掛載選項
UUID=yyy /data xfs defaults,noatime,discard,logbufs=8,logbsize=256k 0 2
# logbufs/logbsize: 增加日誌緩衝,減少日誌 I/O 競爭
iostat -xmt 1 # 每秒裝置統計:%util, await, svctm, r/s, w/s, rMB/s, wMB/s
fio --name=randrw --rw=randrw --bs=4k --size=4G --numjobs=4 --iodepth=32 --runtime=60 --time_based --group_reporting
# 關鍵指標:IOPS (4k randread/randwrite)、BW (128k seqread/seqwrite)、Latency (P99)
從清理、排程器、檔案系統參數、硬體升級、快取層多維度優化,讓 Linux 存儲效能釋放極致。