DSM 7.2 無法顯示第三方 NVMe SSD 的 SMART 健康資料
我隨便寫了個腳本,可記錄 NVMe SMART 到文字檔 (後續有更新的話,一樣是用這個網址)
https://www.mediafire.com/file/lalggvfoezk11or/ssd_smart_log.zip
把解開後的 ssd_smart_log.sh 存放在 NAS 裡,權限設為可執行。
DSM 新增一個排程,執行身分 root,定期執行即可。參數是要保存的 log 檔案路徑
指令內容
/腳本路徑/ssd_smart_log.sh /記錄檔路徑/nvme_log.txt
若是指令後面不指定檔名路徑,就不會寫入檔案
腳本目前有設定幾個條件,會觸發錯誤警告
可勾選 DSM 的 [透過電子郵件傳送執行細節/僅在指令碼異常終止時傳送執行細節],這樣會在 SMART 數值達成以下任意條件時自動發出 email 通知
- 🟡 壽命剩餘 55% 以下
- 🟠 溫度超過 75°C
- 🔴 備用區塊低於安全閥值
- 🔴 出現媒體錯誤(0E error)
log 輸出的內容像這樣
2025-01-22
nvme0 - Brand New SSD (2.05 TB)
嚴重警告: 0
檢測溫度: 31°C
備援區塊: 100%
備援閥值: 10%
剩餘壽命: 100%
總讀取量: 7.79 TB
總寫入量: 3.16 TB
通電時數: 1年 130天 22時
意外關機: 10
媒體錯誤: 0
nvme1 - Brand New SSD (2.05 TB)
嚴重警告: 0
檢測溫度: 30°C
備援區塊: 100%
備援閥值: 10%
剩餘壽命: 100%
總讀取量: 16.9 TB
總寫入量: 16.4 TB
通電時數: 1年 131天 8時
意外關機: 11
媒體錯誤: 0
每次輸出 log 就會不斷累加到同一份文字檔,方便日後查看歷史痕跡
SMART內容項目很多,這裡我只有挑幾個想看的來記錄,要增加其它欄位可以自行修改腳本內容
可分開設定兩個排程.
例如: 一個是每週跑一次輸出到 log。另一個不記錄 log,可每15分鐘跑一次單純用來檢查健康值;萬一出問題就會觸發警告,可儘早得知
2026-2-1 更新
新增功能,自動刪除 log 內的舊記錄,只保留最近6個月的紀錄
因為我昨天打開 log 檔一看,內容已經長得很大了,所以特別增加這功能
2025-6-21 更新
修正未安裝任何 NVMe SSD 時的判別錯誤問題
另外,如果只想在異常時觸發警報,而不想記錄歷史數據,那單獨執行 ssd_smart_log.sh 即可,後面不加檔案參數
沒指定輸出檔案時,預設直接輸出到 stdout
2025-5-5 更新
累積寫入量的 TB 換算,原本採用 1024^4 的 TiB,現更改為 1000^4 的 TB。重新換算的 TB 數字會是原先的 1.1 倍左右
因為廠商保固也是以 TB 來算,而不是 Windows 用的 TiB