cs.cmu.eduのページ
出典: cs.cmu.edu

BeamFSはFTRFS案を引き継ぐ新提案

Linux向けの新しいファイルシステム「BeamFS」のRFC(意見募集を目的とする提案)が送付されました。単一のストレージデバイス上でデータの誤りを訂正する設計で、放射線の影響を受ける環境での利用を想定しています。

BeamFSは、今年4月にRFCとして提案されたFTRFSを起点としています。FTRFSは「Fault-Tolerant Radiation-Robust Filesystem」の略称で、耐障害性を備えたファイルシステムとして構想されていました。

BeamFSは、FTRFSとは異なるディスク上の形式を採用するファイルシステムとして提案されました。設計上の課題やカーネルへの統合に関する従来案へのフィードバックを踏まえ、Linuxカーネルへの採用を目指すRFCとして送付されています。

データとメタデータを読み出し時に復元

BeamFSは、データブロックを16個のインターリーブされたRS(255,239)符号語で構成します。読み出すたびに復号し、復号器が正しい内容だと判断できない場合は、誤ったデータを返さず「-EIO」エラーにします。

Reed-Solomon符号は、データに冗長な記号を加え、読み出し時に誤りの位置と大きさを特定して訂正する方式です。RS(n,k)では、n個の記号のうちk個がデータで、残りのn-k個が冗長部分になります。

RS(255,239)では冗長部分が16記号となり、8ビット記号を使う場合、1符号語あたり最大8記号、つまり8バイトの誤りを訂正できます。訂正可能な数を超えると、復号器は元のデータを復元できないと判定する場合があります。

管理情報にも訂正符号を適用

BeamFSはファイルのデータだけでなく、ディレクトリブロック、inode、割り当てビットマップ、スーパーブロックにもReed-Solomon符号による冗長情報を持たせます。間接ブロックには専用のパリティ領域を設けます。

標準の配置では、4,096バイトのうち288バイトを冗長情報に充て、オーバーヘッドは7%とされています。データブロック以外の管理情報も符号化の対象です。

Linuxカーネルには、Reed-Solomon符号の符号化、復号、誤り訂正を行う汎用ライブラリがあります。符号化ではデータからパリティを計算し、復号ではシンドロームを計算してデータの誤りを訂正します。訂正できない場合、ライブラリの復号関数は「-EBADMSG」を返します。

Btrfsの検査・修復との違い

Btrfsの「scrub」は、マウント中のファイルシステムからデータとメタデータのブロックを読み、チェックサムを検証します。破損したブロックは、正しいコピーが見つかった場合に自動修復します。

「btrfs check」は、ファイルシステムの構造的な整合性を検査し、指定があれば修復を試みます。データブロックのチェックサムも検証できますが、予備コピーから自動修復するオフラインscrubとは異なります。

BeamFSの提案は、別の正しいコピーを使って修復するBtrfsのscrubとは異なり、単一デバイス内の符号情報を使って読み出し時に誤りを訂正する方式です。

放射線環境で想定されるメモリーの誤り

宇宙機のメモリーでは、放射線による単一ビットの反転(SEU)や、複数ビットの誤り(MBU)が観測されています。MBUでは、隣接する複数のメモリーセルが影響を受ける場合があります。

NASAの技術報告では、誤り検出・訂正(EDAC)と継続的なスクラビングを組み合わせた対策が、放射線による単一イベントアップセットへの対応に使われてきたとされています。衛星のメモリーでReed-Solomon符号を使った例も挙げられています。

同報告は、誤りが短期間に集中する場合があるため、スクラビングの頻度は日平均の誤り率だけでなく、ピーク時の発生率に基づいて計算する必要があるとしています。BeamFSが想定する放射線環境と、単一デバイス内の符号化による訂正は、こうしたメモリー保護の課題に関連する設計です。