電源断対策の必要性

近年、産業機器におけるメモリー製品の採用増加に伴い、システムとしてのデータ保全対策が重要視されています。特に、組込みシステムの電源断対策は必要不可欠となっています。

不揮発性メモリーはデータを保存することに適していますが、ブート用として利用するとメモリー内部のデータや管理するファイルシステムに何らかの問題が発生した場合にリンク切れ(リンク先のファイルが存在しないこと)などの障害を引き起こすリスクがあります。
このようなリスクを想定して、メモリーのハードウェアでの対策に加えてファイルシステムによるソフトウェアでの対策も必要不可欠です。ファイルシステムはオペレーティングシステム(OS)が持つ機能の一つです。記憶装置に保存されたデータを管理し、操作するために必要な機能を活用することにより、データを整理して管理することができます。

本記事では、ファイルシステムでの電源断の対策を検討している方に向けて2つの対処法の解説と、オススメのファイルシステムをご紹介します。

※メモリーでの対策(e.MMC)についてはこちらの記事をご参照ください。

ファイルシステムを用いた対処法

対処法1:ジャーナリングファイルシステム

ファイルシステムを用いた電源断対策としては、一般的にジャーナリングファイルシステムが用いられています。ジャーナリングファイルシステムとは、定期的にファイルシステムの状態を保存しておくことを指します。予期せぬ電源断時には、ジャーナルを元の状態に復元することができるので、少し前の正常な状態にファイルシステムを復元することができます。

図1. ジャーナリング概要
図1. ジャーナリング概要

Linuxシステムの標準的なジャーナリングファイルシステムは、ext3、ext4ファイルシステムになります。

図2はSDカード MMCインターフェースを想定した場合のプロトコルです。ファイルの作成から、ファイルのopen処理、及びwriteを実行した際のプロトコル概略になります。

図2. MMCインターフェースを想定した場合のプロトコル事例(ジャーナリング)
図2. MMCインターフェースを想定した場合のプロトコル事例(ジャーナリング)

FS_writeにてopen処理を実行したファイルIDに対して書き込みを実行し、MMCインターフェース上ではmultiple write(CMD25)、Stop CMD(CMD12)により処理され、ファイルデータがNANDフラッシュ内部に書き込まれ、その後にジャーナルが更新されます。

 

万が一、電源断によってデータの更新処理が中断しても、次回起動時にジャーナルの情報を使って処理を再開できる仕組みになっています。ext3、ext4ファイルシステムで破損を避けるためには、ジャーナリングのモードを設定する必要があります。以下にジャーナリングのモードを示します。

ジャーナリングモード

保護されるデータ

説明

writeback

メタデータ*3

・メタデータだけをジャーナリングで保護する動作モード

・XFSやJFSなど他のジャーナリングファイルシステムと同等の動作

ordered

メタデータ

・処理順序を保証:ファイルデータの変更が完了→メタデータを変更

・メタデータが不正なデータを指し示すことがないようにする

※ただしデータはジャーナリングで保護されていないので、処理中断による破損があり得る

journal

メタデータ、データ

・メタデータもデータもジャーナリングで保護する動作モード

・すべてのデータがストレージに2回書き込まれることになるので入出力速度は一番遅い

*3 メタデータ:データに関するリンク情報が記載されたデータ

上記に記載のある通り、予期せぬ電源断に対して耐性はありますが、ファイルシステム破損してしまう可能性があります。

対処法2:Copy on Write

ジャーナリングとは異なり、元データのコピーを作成しコピーを更新する方法をCopy on Writeと言います。コピーに対して更新するためどのフェーズで処理が中断しても、データは元の状態、もしくは変更後の状態に保たれます。そのため、中途半端な書き換えによるデータ破損が生じません。

図3. Copy on Write概要
図3. Copy on Write概要

ジャーナリング同様に、以下でSDカード MMCインターフェースを想定した場合のプロトコルを考えてみます。

図4. MMCインターフェースを想定した場合のプロトコル事例(Copy on Write)
図4. MMCインターフェースを想定した場合のプロトコル事例(Copy on Write)

ファイル①’の更新処理が中断した場合は、ファイル①’はメタデータ上更新されないため、正常なファイル①のオリジナルのファイルがリンク付けされている処理になります。

メタデータが壊れるという概念がなく、データの保全性が保たれます。さらに、一般的に電源断後に走る復旧動作がないため、マウント時間が一定に保たれる仕組みになっています。

まとめ

ジャーナリングとCopy on Writeを表にまとめました。

一貫性

書き込み速度

電源断耐性

ファイルチェック

マウント時間

サポートされている

OS、ファイルシステム

ジャーナリング

ログを書く時間が二重に掛かるため、性能はやや劣る

メタデータの破損の可能性あり

ファイルチェックを要する

電断発生時ばらつきがある可能性あり

Ext3、ext4JFSXFS

Copy on Write

(CoW)

性能がよい

メタデータの破損はない

ファイルチェックが

原理的に不要

一定に保たれる

Reliance Nitro(Tuxera File System)

Tuxera社の高信頼性ファイルシステム

システム上やメモリー内部で重要なデータを扱う場合は、電源断によってデータの保全性・マウント時間の遅延などを懸念事項として考慮する必要があります。
本記事で解説したMMCインターフェースや外付けメモリーには、高信頼性のファイルシステムを利用することで、これらの懸念を解消できる可能性があります。
当社ではCopy on WriteのTuxera社ファイルシステムをお勧めしています。

以下ページより詳細をご覧いただけます。

ファイルシステム・デバイスドライバー GravityCS、Reliance、FlashFX Tera 

お問い合わせ

不明点や質問がございましたら以下よりお問い合わせください。

当社製品担当者より回答させていただきます。

関連ページ