如何在 Linux 上優化 SSD 效能
隨著固態硬碟(SSD)逐漸成為 Linux 桌面與伺服器的主流儲存媒體,許多使用者發現,僅僅將資料從傳統硬碟(HDD)複製到 SSD 上,並無法完全發揮其高速讀寫的潛力。Linux 核心雖然對 SSD 有相當程度的支援,但預設的設定往往偏向通用性而非極致效能。對於中階使用者而言,透過幾個關鍵的系統層級調整,即可顯著提升系統的響應速度與資料存取的穩定性。本文將帶領你一步步完成這些優化設定。
確認硬碟類型與支援功能
在進行任何優化之前,首要之務是確認你的儲存設備確實為 SSD,並確認其支援的指令集。最簡單的方式是使用 lsblk 指令搭配 --output 參數來檢視硬碟的模型與傳輸模式。
lsblk -d -o NAME,MODEL,TRAN,ROTA
請注意 ROTA(Rotation Rate)欄位。若數值為 0,代表該裝置為非旋轉式儲存媒體,即為 SSD;若為 1,則為傳統硬碟。若你確定使用的是 SSD,接下來我們需要檢查它是否支援 TRIM 指令。TRIM 允許作業系統通知 SSD 哪些資料區塊已不再使用,讓 SSD 內部進行垃圾回收(Garbage Collection),這是維持 SSD 長期效能的關鍵。
你可以使用 fstrim 指令手動觸發一次 TRIM 操作,並觀察是否有錯誤訊息:
sudo fstrim -v /
若指令執行成功並顯示已釋放的位元組數,表示你的檔案系統與 SSD 均支援 TRIM。
啟用自動 TRIM 服務
手動執行 fstrim 並不實際,我們需要讓系統定期自動執行。在現代 Linux 發行版(如 Ubuntu 22.04 或 Debian 12)中,這通常透過 systemd 的定時器來完成。
首先,啟用 fstrim.timer 服務。這個定時器預設每週執行一次 TRIM 操作,足以應對一般使用者的需求:
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
你可以透過以下指令檢查定時器是否正在運作:
systemctl status fstrim.timer
若輸出顯示 Active: active (waiting),則表示自動 TRIM 已正確設定。對於伺服器環境或高負載系統,你可能需要調整此頻率,但對於一般使用者而言,預設設定已足夠且安全。
調整 I/O 排程器
I/O 排程器負責決定磁碟讀寫的順序。對於 HDD,deadline 或 cfq 排程器較為合適,因為它們能減少磁頭移動。然而,SSD 沒有機械結構,因此使用 none(在較新核心中稱為 noop 或 mq-deadline)排程器可以避免不必要的延遲,讓請求直接送往儲存控制器。
檢查目前使用的排程器:
cat /sys/block/sda/queue/scheduler
輸出可能類似 [none] mq-deadline kyber bfq,方括號內表示當前活躍的排程器。若你使用的是 NVMe SSD,核心通常會自動選擇最合適的排程器,無需手動變更。但若你使用的是 SATA SSD,且發現系統響應偶爾有微小延遲,可以手動切換至 none 或 mq-deadline。
要建立永久設定,請編輯或建立 /etc/udev/rules.d/60-scheduler.rules 檔案,加入以下內容(假設你的 SSD 裝置名稱為 sda):
ACTION=="add|change", KERNEL=="sda", ATTR{queue/scheduler}="none"
若你有多顆硬碟,建議使用 lsblk 確認裝置名稱後,針對非 SSD 裝置排除設定,以免影響 HDD 效能。
調整檔案系統掛載選項
最後一步是調整檔案系統的掛載參數。對於使用 ext4 或 btrfs 檔案系統的使用者,noatime 是一個重要的優化選項。預設情況下,Linux 會在每次讀取檔案時更新其「存取時間」(atime),這會導致額外的寫入操作,加速 SSD 的磨損並降低效能。
編輯 /etc/fstab 檔案,在相關分割區的掛載選項中加入 noatime。例如:
UUID=your-uuid-here / ext4 defaults,noatime 0 1
若你希望更進一步減少寫入量,可以考慮使用 nodiratime,這僅停止目錄的存取時間更新,對某些應用程式的相容性更佳。
常見問題與疑難排解
Q1: 啟用 TRIM 後,SSD 的效能沒有明顯提升? 這可能是因為現代 SSD 的內部控制器已經具備強大的垃圾回收機制,且 Linux 核心的預設優化已相當完善。TRIM 的主要目的在於「長期維持效能穩定」與「延長壽命」,而非直接提升峰值讀寫速度。若你感覺系統遲緩,建議優先檢查記憶體使用狀況或 CPU 溫度,而非僅歸咎於 SSD。
Q2: 如何確認 TRIM 是否真的生效?
你可以查看 fstrim 的執行日誌。在 Ubuntu/Debian 中,日誌通常位於 /var/log/syslog 或透過 journalctl 查詢:
journalctl -u fstrim.service
若看到類似 "Trim operation completed" 的訊息,即表示 TRIM 運作正常。若出現錯誤,請檢查 /etc/fstab 中的檔案系統類型是否正確,以及 SSD 韌體是否支援 TRIM。
小結
優化 Linux 上的 SSD 效能並非需要深入核心程式碼的複雜工程,而是透過幾個簡單的設定即可達成。確認 TRIM 支援、啟用自動 TRIM 定時器、選擇合適的 I/O 排程器,以及調整 noatime 掛載選項,這四步驟足以讓你的 SSD 在 Linux 環境下發揮最佳狀態。記住,硬體效能的極限往往取決於軟體設定的細節,適時的優化能讓你的系統更加流暢響應。