RAIDストレージのバックアップ実行前にソフトウェアRAID状態をチェック

投稿者: | 2021年1月12日

以前組んだ、遠隔地にあるRaspberry PiによるソフトウェアRAID6ストレージをオフサイトバックアップする仕組みを永らく運用していますが、このRAIDがコケていることに数日経ってようやく気付き、バックアップを確認すると見事に空っぽ(RAIDボリュームのマウントに失敗した空状態を健気にコピー)。幸い機器再起動でRAIDは復活しましたが、かなり肝を冷やしたのでバックアップ実行前にRAID状態をチェックする仕組みを織り込みます。

遠隔地にあるそのRaspberry Piは週に一度、システムディスクであるSDカードのイメージをRAIDストレージへ出力しています。このタスクの吐き出したエラーメッセージで気付きました。

実際にはこの2日前にRAID喪失が発生していたことが、毎晩実行されるオフサイトバックアップの当日のログから読み取れます。

バックアップからの復元は諦め、RAID復活の可能性を探るべく、まずはRaspberry Piのコンソールで状況を確認。

このRaspberry Piは24時間稼働ですが、毎週末再起動するようスケジューリングされており、uptimeはそこからの稼働時間値を示しています。この再起動後ほどなくその夜のオフサイトバックアップでストレージ空っぽ状態が記録されていることから、当日のSyslogをトレースしてみます。

何らかの理由で起動時にRAIDボリュームをマウント出来ずに、そのまま稼働していたようです。幸い、Raspberry Piを手動で再起動させると今度はRAIDも問題無く立ち上がり、ストレージの中身も復帰しました。ちなみに正常時のログは以下の通り。

 

特に物理的、論理的な欠損は見当たらないので原因究明はここまでとして、今後に備えて以下の2つの対策を講じます。

 

RAID状態のレポートを毎日発信する

遠隔地のRaspberryPiから定期的に受け取るレポートは、vnstatによる日刊のネットワーク使用量に関する事項のみで、このメールの有無が死活監視になっている程度です。RAIDの健康状態も毎日メールで受け取れるようにしてみます。RAID状態の確認に使うのは普段より使っているこのmdadmコマンドです。更に障害発見時の切り分け用にストレージやUSBデバイス情報も付属しておきます。

これを毎朝実行してメール本文に貼り付け送信するタスクをcronに登録します(mdadm使うので実行者はrootにて)。

尚、このRaspberry Piには以前のRAID障害対策の一環でsSMTPを導入済なので、これだけでメールを送信することが出来ます。

 

オフサイトバックアップスクリプトの改善

オフサイトバックアップを担うSynology DS-212jのタスク設定にもメールによる報告がありますが、情報過多を嫌って異常時にのみメール発信としていました(今回のように空っぽを同期すること自体は正常終了なので、異常に該当せず)。大切なストレージなのでこのオプションを外し、正常終了時もメールによる報告を受け取るよう変更しました。

図1.タスクの設定にあるEメール通知機能

図1.タスクの設定にあるEメール通知機能

尚、タスクはメール報告に渡す標準出力とログファイルへの追記、双方へのストリームを維持するために、teeコマンドを使っています。

タスクが実行されると、日本語でかしこまったメールが届きます。

 

さらにRAIDストレージのマウントポイントが空かどうかチェックして空の場合はバッチ終了させるようにします。ssh越しにリモートのパスが空であるかどうかは、次のように得られます。

これを元にオフサイトバックアップスクリプトを次のように改善しました。

 

少しくどい感じもしますが、これでしばらく運用してみて、情報の過不足を調整したいと思います。

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA