Hard-Disk

隨著時間的推移,是否有任何工具可用於儲存 SMART 數據?

  • June 7, 2021

我想隨著時間的推移開始儲存 SMART 數據並查看基於磁碟 ID/序列號的任何趨勢。可以讓我每天一次從磁碟中獲取智能資訊並將其放入數據庫的東西。Linux 中是否已經有用於此的工具,還是我必須自己動手?

已經有工具可以做到這一點,通常作為更通用的監控工具的一部分。我覺得有用的是Munin,它有一個SMART 外掛來跟踪可用屬性:

顯示 SMART 屬性隨時間變化的圖表

Munin 在許多發行版中都可用。

smartmontools本身包含一個可以定期記錄屬性的工具,smartd. 你可能會發現這就是你所需要的。

“自己動手”很容易。smartctl -A drive-specifier每天通過 AWK 腳本執行(以 root 身份),並輸出到文件。

gnuplot非常適合繪製此文件的圖形。

稍微擴展一下,舉個例子:-

  1. 放置一個條目以在其中執行以下腳本/etc/cron.daily
#!/bin/sh

# SMART DISK PROCESSING
# =====================
tmpfile=$(mktemp -q)
today=$(date -u +%d-%m-%Y)

smartctl -A /dev/disk/by-id/ata-Samsung_SSD_870_QVO_1TB_S5SVNG0NB22319L > $tmpfile

# Output log as a single line - note "Unknown_Attribute" is "POR_Recovery_Count" [unexpected shutdown]
echo -n $today ', ' >> /var/log/disk-monitor.d/sdb-errors.csv
awk 'NR>=8 && NR<=21 {print $1,",",$2,",",$10,",";}' $tmpfile | tr -d '\n' | sed 's/Unknown_Attribute/POR_Recovery_Count/;s/\,$/\n/' >> /var/log/disk-monitor.d/sdb-errors.csv

exit 0

AWK “NR>=8 && NR<=21” 挑出正確的行號,列印語句挑出合適的列;tr刪除換行符;sed修復了 SMART 屬性問題並添加了一個換行符。

因此,在某個日期的每一天,一條記錄都會寫入 CSV 日誌文件,

$$ attribute-id, attribute-name, attribute-value $$*N 格式。 07-06-2021 , 5 , Reallocated_Sector_Ct , 0 ,9 , Power_On_Hours , 2900 , ...

  1. 我選擇繪製選定的值$$ the ones that would ideally be zero $$按需…我使用的腳本gnuplot script-name如下,
set title "SDA Errors which should be ZERO"
set xdata time
set timefmt "%d-%m-%Y"
set format x "%d/%m"
set datafile separator ","

set colorsequence default

set ytics 2 nomirror tc lt 2
set ylabel 'POR' tc lt 2
set yrange [0:30&lt;*]  
set y2tics 1 nomirror tc lt 1
set y2label 'Errors' tc lt 1
set y2range [-1:10]

set key left top 

set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
plot "/var/log/disk-monitor.d/sda-errors.csv" using 1:4 title "Reallocated Sector Count" with lines axes x1y2, '' using 1:13 title "Wear Levelling Count" with lines  axes x1y2, '' using 1:16 title "Used Rsvd Blk Cnt Total" with lines  axes x1y2, '' using 1:19 title "Program Fail Cnt Total" with lines  axes x1y2, '' using 1:22 title "Erase Fail Count Total" with lines  axes x1y2, '' using 1:25 title "Runtime Bad Block" with lines   axes x1y2, '' using 1:28 title "Reported Uncorrect" with lines  axes x1y2, '' using 1:34 title "Hardware ECC Recovered" with lines dt 3  axes x1y2, '' using 1:40 title "POR Recovery Count" with lines dt 1 linetype rgb "green" axes x1y1

pause -1 "Hit any key to continue"

我確信有更好的腳本可用!

引用自:https://unix.stackexchange.com/questions/653128