Howto

瞬断、停電に対して備えておきたいこと

このHowtoでは、Armadillo-IoT G3/G3L/A6,Armadillo-X1,Armadillo-640/610(以下Armadilloと記載)を使用する際、瞬断,停電に対して備えておきたいことをご紹介します。

概要

組み込みシステムを運用中、何らかの要因で瞬断や停電が発生することがあります。
本Howtoでは参考として、瞬断,停電発生時に起こる被害例と対策案をご紹介します。

問題発生時に起こる被害例

以下に瞬断,停電発生時に起こる被害例を記載します。

被害例 説明
システム停止 停電中、お客様のシステム自体が停止してしまうこと
データ欠落 動作中の電源断で、保存したはずのデータが保存できていないこと
破壊 動作中の電源断で、ファイルシステムが破損し使用できなくなること

上記例以外にも予期せぬ問題が発生する場合もあるため、充分な注意と対策が必要です。

被害例に対する対策案

参考例として、問題発生時に起こる被害例 で記載した内容を回避するための対策案をご紹介します。
すべての対策において上記被害を完全に防ぐことは不可能なため、発生してしまった場合の対策も合わせてご紹介します。

overlayfsの有効化

Armadilloでは、overlayfsの機能を有効化することでストレージへの書き込みを抑えることができます。
これによりストレージ書き込み中の電源断による領域破損がなくなるため、破壊を防ぐことができます。

overlayfsの有効化はArmadilloマニュアルに記載されています。
お使いのArmadillo製品に対応したマニュアルを参考に、overlayfsを有効化することをお勧めします。
例:G3製品マニュアル 22.2. ルートファイルシステムへの書き込みと電源断からの保護機能

UPS等を用いたバッテリーバックアップ

UPS等の外部バッテリーをArmadilloに接続することで、システム停止,データ欠落,破壊に対応できます。

UPSを用いる場合、USBやシリアル通信でバッテリー駆動開始をArmadilloに通知することができます。
この通知をトリガーとして、シャットダウン,mail等での通知,必要最低限機能のみ動作させるなどのシステムを設計することができます。

ただし、UPSの購入などコストがかかる点には注意が必要です。
ブログ記事「Armadillo-IoTゲートウェイ, Armadillo-X1をバッテリーバックアップして停電・瞬低に備える」を参考にするなどで実装し、事前に十分な検討および試験を実施してください。

ファイルシステムの特性を利用した保護

USBフラッシュメモリやSDカードを利用する場合、ジャーナリングファイルシステム搭載のファイルシステムでフォーマットすることでデータ欠落の可能性を減らすことができます。
Linuxでのジャーナリングファイルシステムは以下の通りです。

  • ext3,ext4
  • JFS
  • ReiserFS
  • XFS
  • VxFS
  • NTFS

設計したシステムでファイルシステムに指定がない場合は、上記を利用することをお勧めします。
各ファイルシステムの特徴を充分に精査し、選定してください。

ファイル作成後のsync/unmount

手動またはシステムでファイル作成を行う場合、コピーしただけではすぐにeMMCに設置されるとは限りません。
ファイル作成後、sync/unmountを行うことである程度の「データ欠落」を防ぐことができます。
それぞれ役割は以下の通りです。

  • sync : メモリにバッファされたデータをディスクに書き込む
  • unmount : デバイスファイルをツリーから切り離す

syncについての詳細はsync manページをご確認ください。
unmountについての詳細はunmount manページをご確認ください。

vintriggerによる電源監視

vintriggerコマンドを利用することで、電源電圧が指定した電圧になった場合に任意のコマンドを実行させることができます。
これにより、電力が足りなくなる前にファイルの保存やシャットダウンの対策が可能です。

お使いのArmadillo製品に対応したマニュアルを参考に、vintriggerを設定してください。
例:G3製品マニュアル 6.8.2. 電源電圧を監視する

ブートシステムの二重化

問題発生によってブート領域が破損してしまった場合、通常では起動することができなくなってしまいます。
予め起動できるブートシステムをもう一つ用意しておくことで、Armadilloの復旧を行うことができます。
ブートシステムの二重化は、node-eyeの機能であるリカバリーイメージを利用することで実現可能です。

リカバリーイメージの実装方法はマニュアル「5.2. リカバリーイメージを使って Armadillo を復旧する」を参考にしてください。

死活監視

Armadilloが通信不可になったことを通知する死活監視機能がnode-eyeに実装されています。
これによりブラウザ上からArmadilloの状態を監視し、異常があった場合にいち早く知ることができます。
詳細はマニュアル「4.3.1. 死活監視機能」を確認してください。