如何使用 smartctl 檢查 Linux 上的磁碟健康狀況
12 分鐘閱讀 - 2026年5月18日

使用 smartctl 和 smartd 監控磁碟機健康狀況、執行 SMART 測試,並在 Linux 伺服器上設定自動警示。 標籤:smartctl、smartmontools、SMART、磁碟健康、Linux、伺服器監控、smartd、NVMe、SSD、HDD。
如何在 Linux 上使用 smartctl 檢查磁碟健康狀態
smartctl 是一款用於監控 Linux 系統中儲存裝置健康狀態的命令列工具。它會從 HDD、SSD 和 NVMe 硬碟讀取 S.M.A.R.T.(自我監控、分析與報告技術)資料,追蹤重新分配區塊、溫度及錯誤次數等指標。若硬碟即將發生故障, smartctl smartctl 會在您資料遺失前發出警示。本指南涵蓋安裝步驟、執行健康檢查與自檢、解讀關鍵 SMART 屬性,以及透過 smartd.
安裝 smartmontools
smartctl 是 smartmontools 套件的一部分。您需要 root 或 sudo 權限才能安裝它,並執行大多數 smartctl 命令,因為這些操作需要直接存取硬體。
| 發行版 | 發行版指令 |
|---|---|
| Debian / Ubuntu / Linux Mint | sudo apt update && sudo apt install smartmontools -y |
| CentOS / RHEL / Rocky / Alma (8+) | sudo dnf install smartmontools -y |
| CentOS / RHEL 7 及更早版本 | sudo yum install smartmontools -y |
| Arch Linux / Manjaro | sudo pacman -S smartmontools |
| Fedora | sudo dnf install smartmontools |
請使用以下指令確認安裝 smartctl --version.
識別硬碟並啟用 SMART
在進行任何檢查之前,您需要先了解伺服器內有哪些磁碟,以及它們是否支援 SMART。
列出所有區塊裝置:
lsblk掃描支援 SMART 的硬碟:
sudo smartctl --scan此操作會回傳裝置名稱、類型及通訊協定(ATA、SCSI、NVMe)。SATA 與 SAS 硬碟會顯示為 /dev/sda, /dev/sdb等形式顯示。NVMe 磁碟則顯示為 /dev/nvme0n1, /dev/nvme1n1.
檢查特定磁碟機是否具備 SMART 功能且已啟用:
sudo smartctl -i /dev/sda請在輸出結果中尋找「SMART 支援狀態:可用」及「SMART 支援狀態:已啟用」。若支援但未啟用,請啟用它:
sudo smartctl -s on /dev/sda此設定會於重新開機後保留。
對於位於 RAID 控制器後方的磁碟,請使用 -d 標誌來指定控制器類型。針對 MegaRAID: -d megaraid,N。針對 HP Smart Array: -d cciss,N。若未指定此參數, smartctl 將無法偵測到個別的實體磁碟。
在 VPS 環境中的虛擬磁碟或大多數 USB 隨身碟上,無法進行 SMART 監控。虛擬化層或 USB 外接盒會阻擋對硬體遙測資料的存取。
執行狀態檢查與自我測試
快速健康檢查會查詢硬碟韌體以檢測關鍵故障:
sudo smartctl -H /dev/sda若結果顯示「通過 (PASSED)」,表示該硬碟尚未觸發其內部故障閾值。若結果顯示「失敗 (FAILED)」,表示該硬碟預計將立即發生故障。請立即備份您的資料。
若需完整的 SMART 資料(包含所有屬性與錯誤日誌):
sudo smartctl -a /dev/sda自我測試
smartctl 可執行三種自檢,所有測試均在背景進行,系統運作不受影響:
- 短測試(1-5 分鐘):檢查電氣與機械元件。
sudo smartctl -t short /dev/sda - 長測試(數小時):掃描硬碟上的每個磁區。
sudo smartctl -t long /dev/sda - 運輸測試(約 5 分鐘):檢測運輸過程中的物理損壞。
sudo smartctl -t conveyance /dev/sda
開始執行長效測試前,請先確認預估完成時間:
sudo smartctl -c /dev/sda檢視測試結果:
sudo smartctl -l selftest /dev/sda您應看到「已完成且無錯誤」。若測試失敗,輸出結果將包含 LBA_of_first_error,該訊息會精確指出磁碟上的損壞位置。
需關注的關鍵 SMART 屬性
健康檢查的「通過/未通過」結果雖具參考價值,但仍有限制。即使個別屬性呈現惡化趨勢,硬碟仍可能顯示「通過」。以下屬性最為關鍵:
- 重新分配扇區數 (ID 5):硬碟已替換為備用扇區的壞扇區。任何非零值皆表示物理性磨損。舊硬碟上出現單一重新分配扇區未必急需處理,但數量持續增加則是明確的警示。
- 當前待處理扇區數 (ID 197):硬碟無法讀取或寫入、正等待重新映射的扇區。若此數值持續攀升,表示硬碟狀態正在惡化。
- 離線無法修正錯誤 (ID 198):在背景掃描中發現的無法修正錯誤。表示磁碟表面受損。
- UDMA CRC 錯誤計數 (ID 199):資料傳輸錯誤。這通常指向 SATA 傳輸線故障或連接器鬆動,而非硬碟故障。請先檢查您的傳輸線。
對於 SSD 和 NVMe 硬碟,請改為關注「可用備用區」和「使用百分比」。當「使用百分比」接近 100% 時,表示硬碟已達到其寫入耐用度極限。
溫度也是關鍵因素。HDD 在 50°C 以上會變得不可靠。SSD 雖能承受更高溫度,但應保持在 70°C 以下。使用 smartctl -A /dev/sda,或透過 smartctl -l error /dev/sda.
使用 smartd 實現監控自動化
手動檢查磁碟僅適用於一次性診斷。若需持續監控,請使用 smartdsmartd(smartmontools 套件中的守護程式)。該程式預設每 30 分鐘輪詢一次您的磁碟,並將屬性變更記錄至 syslog。
編輯位於 /etc/smartd.conf (或 /etc/smartmontools/smartd.conf 在 RHEL/CentOS 上)。與其依賴 DEVICESCAN 來自動偵測所有裝置,請明確列出您的硬碟。這可避免因不相容裝置導致系統卡死。
配置範例:
/dev/sda -a -m [email protected] -s (S/../.././02|L/../../6/03) -W 4,45,55
/dev/sdb -a -m [email protected] -n standby,q各參數旗標的功能:
-a: 監控所有 SMART 屬性-m: 發生故障時發送電子郵件警示-s: 排程每日凌晨 2:00 執行短時測試,每週六凌晨 3:00 執行長時測試-W 4,45,55: 記錄 4°C 的溫度變化,45°C 時發出警告,55°C 時發出嚴重警報-n standby,q: 跳過對處於待機模式的硬碟進行輪詢,以避免不必要的硬碟啟動
對於位於 RAID 控制器後方的硬碟,請針對每顆硬碟指定類型:
/dev/sda -d megaraid,0 -a -m [email protected]
/dev/sda -d megaraid,1 -a -m [email protected]啟用並啟動服務:
sudo systemctl enable --now smartd在基於 Debian 的系統上,還需取消註解 start_smartd=yes 中的 /etc/default/smartmontools.
若要測試電子郵件警示,請將 -M test 至配置行中,重新啟動 smartd,然後移除該設定。若要不重新啟動服務即可載入設定變更,請使用 killall -HUP smartd.
每日進行的簡短測試約需 1 至 2 分鐘,即可偵測到多數表面層級的缺陷。每週進行的完整測試則會涵蓋每個區塊。結合電子郵件警示功能,這能讓您在硬碟完全故障前獲得可靠的早期預警。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
Linux 伺服器加固清單
15 分鐘閱讀 - 2026年5月8日