はじめに
NASだったりメールサーバだったりをLinuxで立てると、いくらRaidとはいえ、壊れた時に気づいて交換しないと意味がありません。そこで、HDDが壊れたらメールで送ってもらうことにします。
メールのセットアップ
1. mailutilsのインストールsudo apt install mailutils
2. 動作確認echo <本文> | mail -s <タイトル> <送信先メールアドレス>
これだけでメールが送れます。
-s <タイトル> : タイトルを指定
-r <送り主メールアドレス> : 送り主メールアドレスを指定
-c <Ccメールアドレス> : Ccで送りたい人を指定
-b <Bccメールアドレス> : Bccで送りたい人を指定
Smartctlのセットアップ
1. smartctlをインストールsudo apt install smartmontools
基本情報の表示sudo smartctl -i /dev/sd<x>
健康状態の表示sudo smartctl -H /dev/sd<x>
詳細情報の表示sudo smartctl -a /dev/sd<x>
エラーの表示sudo smartctl -l error /dev/sd<x>
で確認できます。
2. メールの送信テスト/etc/smartd.conf
のDEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
を#でコメントアウトして、DEVICESCAN -m <メールアドレス> -M test
を書き加え、sudo systemctl restart smartd.service
で再起動すると、テストのメールが送られてきます。
3. 本格的なスキャンの設定/etc/smartd.conf
の先ほどの部分をDEVICESCAN -a -n standby,q -m <メールアドレス>
とかに変更します。
30分に一度(smartdで決まっている)スキャンを行い異常が見つかったらメールを送信するといった感じのものです。温度も気にしたいのであれば-W 4,35,40(4度以上変化or35度以上でログ、40度以上でメール)とかを追加すると良いと思います。
オプション
-a : 全ての属性を監視
-o on : 自動オンラインデータ収集を有効化
-S on : 自動属性保存を有効化
-n standby,q : ディスクが待機中の時チェックを実行せず、ディスクアクセスが発生しないようにログに書き込まない。
standby,10,q
のように表記すると、10回スキップし、11回目はディスクが待機中であってもチェックを実施する。
-s : スケジュールを指定
-s T/MM/DD/d/HH
・T/L : ロングセルフテスト
・S : ショートセルフテスト
・MM : 月
・DD : 日
・d : 曜日
・HH : 時間
-W : 温度の監視。-W 4,35,40(4度以上変化or35度以上でログ、40度以上でメール)
-m : メールの送信先
-M : 追加で実行するスクリプトの指定
参考文献
[1] Qiita-@shuntaro_tamura(田村 俊太郎)「[mailコマンド]Linuxからメールを送る」
[2] Zenn-ひで「SMART機能とsmartctlコマンド」