お茶漬けぶろぐ

NASの仕上げ(監視とか)

以下のつづき。
btrfsでNASを組む - お茶漬けぶろぐ
NASにHDDを追加した - お茶漬けぶろぐ
現在はただ組んだだけなので、メンテナンスも無ければ監視も無い。

というわけで、まずは定期scrubから。
scrubというのは、全てのデータを読み込んで、整合性チェックを行う操作。破損があった場合には修復も行ってくれるらしい。Arch Linuxでは月イチ実行のtimerがあるのでこれを利用しよう。パス指定はsystemd-escapeによってエスケープしたものを指定する。

$ systemd-escape -p /tank/nas
tank-nas
$ sudo systemctl enable btrfs-scrub@tank-nas.timer
Created symlink /etc/systemd/system/timers.target.wants/btrfs-scrub@tank-nas.timer → /usr/lib/systemd/system/btrfs-scrub@.timer.

btrfs-scrub@.serviceはstartすればscrubをsystemdを通して実施できそう。ログがsystemdのjournalに残せるみたい。

つぎ、S.M.A.R.T.のテスト。こちらは手軽に実行できるので手でもやってみよう。

$ sudo pacman -S smartmontools
$ sudo smartctl -t short /dev/sdc
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.7.9-arch1-1] (local build)                                               
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org           
                                                                                                                       
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===                                                               
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".                                 
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.                                         
Please wait 2 minutes for test to complete.    
Test will complete after Tue Sep  8 22:22:53 2020 JST                                                                  
Use smartctl -X to abort test.

〜完了してから〜
$ sudo smartctl -l selftest /dev/sdc
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.7.9-arch1-1] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       893         -

エラー無く完了したっぽいことがわかる。

単発手動実行したが、本当は自動でチェックして欲しい。というわけでsmartdの出番。こいつは指定したタイミングでテストを実施して、問題がありそうであればメールで通知してくれるらしい。

$ sudo cat /etc/smartd.conf
DEVICESCAN -S on -s (S/../.././02|L/../../6/03) -W 4,45,50 -m root@hoge.com
/dev/sdc -a
/dev/sdd -a
/dev/sde -a
/dev/sdf -a
$ sudo systemctl enable --now smartd

HDDがスタンバイだった時のためのオプション(-n standby,q)があったが、journalを見てみたところ、使っている全てのHDDがサポートしてなさそうな事を言われてしまったので断念。

Device: /dev/sdc [SAT], no ATA CHECK POWER STATUS support, ignoring -n Directive

smartd.confに-M testを書いておくと、メール送信のテストができる。root宛以外はMTAやMUAが必要だそうだ。今回環境ではroot宛を別のアドレスに転送するようにしていたので、root宛で問題無い。テストを行うと以下のような文面のメールが届いた。

This message was generated by the smartd daemon running on:

   host name:  cerulean-blue
   DNS domain: [Empty]

The following warning/error was logged by the smartd daemon:

TEST EMAIL from smartd for device: /dev/sdf [SAT]

Device info:
WDC WD20EZRX-00D8PB0, S/N:WD-xxxxxxxxxxxx, WWN:x-xxxxxx-xxxxxxxxx, FW:xx.xxxxx, 2.00 TB

For details see host's SYSLOG.

これで、HDDに異常が生じて、これをS.M.A.R.T.を利用して発見できた場合には、通知がくるようになった。scrubも実行しているので、btrfsの構造破損もそれとなくどうにかなりそう。これでまた暫く使ってみよう。

< 自宅サーバのメールがOCNでリレーしてもらえなくなった

NASにHDDを追加した >