以下のつづき。
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の構造破損もそれとなくどうにかなりそう。これでまた暫く使ってみよう。