treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

続・mdadmでエラーメッセージを受信する

ちょっと前の話ではあるのですが、<mdadmでエラーメッセージを受信する - treedown’s Report>で実施した対処に追加の対処が必要になった(と思う)のでご報告です。

前回の復習

Raspberry PiのCron Daemonからメールが届いていた、というのが発端です。

件名:
Cron <root@%hostname%> if [ -x /usr/share/mdadm/checkarray ] && [ $(date +%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi

というアラートを受信しました。本文には
--------------------------------------------------------------
checkarray: E: MD subsystem not loaded, or /proc unavailable.
--------------------------------------------------------------
とシンプルな内容が記載されています。

この経緯と環境

このRaspberry Piでは、

RaspberryPiの外付けHDDでソフトウェアRAID1 - treedown’s Report

で構築したmdadmを使ったソフトウェアRAIDで構成した外付けHDDを接続していましたが、筐体故障によってUSB外付けHDDを撤去して別のUSB外付けHDDを接続して復旧していました。

機器交換のタイミングでmdadmは使わなくなったので、OS側のmdadmで監視する対象のアレイがなくなったと言う状態でした。

そこでmdadmをapt removeして監視しないようにした、と言うのが前回までの手順です。

mdadmでエラーメッセージを受信する - treedown’s Report

ここから再開です。

不定期にくるcheckarrayメール

mdadmを削除して存在しない監視対象アレイを監視しなくなったのでもうアラートメールも来ないだろう…と思っていたら、再度アラートを受け取ることになったため、他にも要因があるということのようです。

ただし、mdadmで監視するRAIDアレイや、それを発行するmdadm自体が存在していないため、何か残存しているんだろうと予想。

そこで探してみたところ、</etc/cron.d/mdadm>にそれらしいエントリが。

--------------------------------------------------------------
$ ls -la /etc/cron.d/mdadm
-rw-r--r-- 1 root root 589  1月 24  2016 /etc/cron.d/mdadm
--------------------------------------------------------------

このファイルの中身には

--------------------------------------------------------------

 $ cat /etc/cron.d/mdadm
#
# cron.d/mdadm -- schedules periodic redundancy checks of MD devices
#
# Copyright © martin f. krafft <madduck@madduck.net>
# distributed under the terms of the Artistic Licence 2.0
#

# By default, run at 00:57 on every Sunday, but do nothing unless the day of
# the month is less than or equal to 7. Thus, only run on the first Sunday of
# each month. crontab(5) sucks, unfortunately, in this regard; therefore this
# hack (see #380425).
57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi

--------------------------------------------------------------

メールの表題となる命令行がcronの書式で記載されていて、定期実行されているようでした。

このcron.dのエントリがあるから、mdadm失敗でアラートメールが発行されている、ということのようです。

選択肢

もうRAIDアレイもmdadmも使用していないので、以下のどれかでいいだろうと思いました。

  • 単純にファイル/etc/cron.d/mdadmを削除する
  • /etc/cron.d/mdadmのファイル内の記述から文末「root if [ -x /usr/share/mdadm/checkarray ~」とある行をコメントアウトしてcron実行でも何もせず終了となるようにする
  • /etc/cron.d/mdadmのファイルをバックアップフォルダに移動(mv)する

結局のところ/etc/cron.d/mdadmのファイルをcronディレクトリから取り除く、もしくは/etc/cron.d/mdadmを空っぽファイルと同じ状態にする、という考え方です。

--------------------------------------------------------------
57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
--------------------------------------------------------------

この行を

--------------------------------------------------------------
#57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
--------------------------------------------------------------

先頭に「#」を追記してコメントアウト。

あるいは、

--------------------------------------------------------------

mv /etc/cron.d/mdadm /home/backup/archive/

--------------------------------------------------------------
※「/home/backup/archive/」は適宜バックアップ先のディレクトリを指定

ひとまずこれのどちらかを実施して経過観察です。