許多 Linux 使用者認為 ext2/ext3/ext4 等檔案系統不會產生碎片,這是一個常見的迷思。事實上,所有檔案系統隨著時間推移都會產生碎片,Linux 只是透過區塊分配策略減輕了碎片化程度。對於單用戶工作站可能影響不大,但在高負載的伺服器環境中,碎片累積會明顯降低磁碟 I/O 效能,進而影響整體系統效能。
釋放磁碟空間是最直接有效的優化手段:
充足的可用空間讓檔案系統能更有效地分配連續區塊,減少碎片產生。
與 Windows 的線上碎片整理不同,Linux 最徹底的碎片整理方式是離線操作:
此法耗時與 Windows 伺服器碎片整理相當,對於頻繁變動的分區(如 /home)效果顯著,對較少變動的 /usr 則可能不必要。
IDE 控制器需佔用 CPU 週期處理 I/O,高負載時會拖慢系統。SCSI/SAS 控制器具備獨立 I/O 處理能力,可大幅降低 CPU 負載。
單一控制器連接多顆硬碟會形成 I/O 瓶頸。為每顆關鍵硬碟配置獨立控制器(或使用多通道 RAID 卡),可實現真正的並行存取,特別適合資料庫、虛擬化等高併發場景。
警告: 錯誤參數可能導致資料損毀,操作前請完整備份。
# 啟用 32 位 I/O
hdparm -c3 /dev/sda
# 啟用多區塊傳輸(視硬碟支援度設定 16/32,Western Digital 建議 8)
hdparm -m16 /dev/sda
# 測試效能
hdparm -Tt /dev/sda
啟用多區塊傳輸可降低 30%–50% CPU 負載,並提升 50% 以上傳輸速率。參數不持久,需寫入啟動腳本(如 /etc/rc.local 或 systemd 服務)。
Linux 核心內建 mdadm 支援 RAID 0/1/4/5/6/10,無需昂貴硬體 RAID 卡。
| 等級 | 特性 | 適用場景 |
|---|---|---|
| RAID 0 | 條帶化,最高效能,無容錯 | 暫存、快取、可重建資料 |
| RAID 1 | 鏡像,最高容錯,成本高 | 關鍵系統盤、資料庫日誌 |
| RAID 5 | 分散式奇偶校驗,平衡效能與容錯 | 通用資料存儲、檔案伺服器 |
| RAID 10 | 鏡像+條帶,高效能高容錯 | 高負載資料庫、虛擬化存儲 |
軟體 RAID 0 透過並行存取多顆硬碟,讀寫速度遠超單顆硬碟,且支援混合 IDE/SATA/SCSI 裝置。
調整 /proc/sys/vm/freepages 三個閾值(min/low/high)可影響交換行為:
# 查看目前值
cat /proc/sys/vm/freepages
# 輸出範例:128 256 384(單位:頁,每頁 4KB)
# 臨時調整 high watermark 至 1MB(256 頁)
echo "128 256 1024" > /proc/sys/vm/freepages
提高 high 值可延遲交換啟動,減少磁碟 I/O 抖動,但會佔用更多記憶體作為緩衝。建議在測試機驗證後再套用至生產環境,並持久化至 /etc/sysctl.conf。
Linux 硬碟優化是系統工程,需由軟體(檔案系統、核心參數)、硬體(控制器、硬碟、RAID)、操作流程(備份、監控)三面綜合施策。定期監控 iostat、iotop、smartctl 指標,建立基準線,才能在效能下降前預防性維護。