Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 磁碟效能優化實戰:清理、碎片整理 (ext4/xfs)、I/O 排程器、SCSI/NVMe 升級、RAID、LVM、快取

編輯:系統常見問題解答

Linux 檔案系統 (ext4/xfs/btrfs) 雖較 NTFS/FAT32 耐碎片,但長期高負載仍會效能下降。系統性優化策略:

1. 釋放空間 — 效能基礎

# 找出佔用大戶
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% 可用空間,避免分配器效能崩潰。

2. 碎片整理 — ext4/xfs 差異

檔案系統線上整理工具離線整理特性
ext4e4defrag /mount/point (需 kernel 2.6.28+、e2fsprogs 1.42+)備份 → mkfs.ext4 → 還原 (最徹底)Extent-based,碎片較少,e4defrag 即時可用
xfsxfs_fsr /mount/point (線上重組)同上B+Tree,碎片極少,xfs_fsr 低負載下執行
btrfsbtrfs filesystem defragment -r /mount/point同上COW,快照多時碎片明顯,定期 defrag 必做

注意:SSD/NVMe **不需**傳統碎片整理,TRIM/Discard (fstrim.timer 每週執行) 即可維持效能。

3. I/O 排程器選擇

排程器適用裝置特性設定方式
mq-deadlineSSD/NVMe低延遲、請求合併、截止時間保證echo mq-deadline > /sys/block/nvme0n1/queue/scheduler
kyber高佇列 NVMe雙佇列 (讀/寫)、Token Bucket 限流echo kyber > /sys/block/nvme0n1/queue/scheduler
bfqHDD/桌面互動公平佇列、低延遲保證、適合多媒體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。

4. 硬體升級路徑

  • HDD → SATA SSD:IOPS 提升 100x、延遲降低 10x、無機械故障。
  • SATA SSD → NVMe (PCIe 3.0/4.0/5.0):頻寬 3.5/7/14 GB/s、延遲 < 20μs、平行度極高。
  • 單顆 → RAID 0/1/5/6/10:
    • RAID 0:效能最大化、無冗餘 (暫存/快取專用)
    • RAID 1/10:高可用、寫入效能佳 (資料庫、OS)
    • RAID 5/6:容量效率高、寫入懲罰大 (歸檔、備份)
    • 硬體 RAID 卡 (BBU/FBWC) > 軟體 RAID (mdadm) > 偽 RAID (晶片組)
  • 快取層:
    • bcache / dm-cache / lvmcache:SSD 做 HDD 讀寫快取
    • dm-writecache:持久化寫入快取 (需 PLP SSD)
    • 檔案系統層:bcachefs (實驗性)、ZFS L2ARC/SLOG

5. 檔案系統調校參數

# 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 競爭

6. 監控指標與基準測試

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 存儲效能釋放極致。

Copyright © Windows教程網 All Rights Reserved