Skip to main content
QUICK REVIEW

[論文レビュー] Binary-Compatible Verification of Filesystems with ACL2

Mehta, Mihir Parang, Cook, William R.|arXiv (Cornell University)|Oct 5, 2018
Advanced Data Storage Technologies参考文献 15被引用数 7
ひとこと要約

本稿では、fsync() コールの後にクラッシュを発生させるように、ファイル操作のバウンデッドワークロードを体系的に生成することで、ファイルシステムのクラッシュ整合性を検証する新手法である Bounded Black-Box Crash Testing (B3) を紹介する。この手法は CRASHMONKEY および ACE のツールを用いて実装されており、26 件の既知のクラッシュ整合性バグのうち 24 件を特定し、広く使われている Linux ファイルシステムに、データ損失やアトミシティ違反を含む 10 件の新しい深刻なバグを発見した。これは形式的検証済みのファイルシステム、FSCQ に対しても同様に適用可能である。

ABSTRACT

Filesystems are an essential component of most computer systems. Work on the verification of filesystem functionality has been focused on constructing new filesystems in a manner which simplifies the process of verifying them against specifications. This leaves open the question of whether filesystems already in use are correct at the binary level. This paper introduces LoFAT, a model of the FAT32 filesystem which efficiently implements a subset of the POSIX filesystem operations, and HiFAT, a more abstract model of FAT32 which is simpler to reason about. LoFAT is proved to be correct in terms of refinement of HiFAT, and made executable by enabling the state of the model to be written to and read from FAT32 disk images. EqFAT, an equivalence relation for disk images, considers whether two disk images contain the same directory tree modulo reordering of files and implementation-level details regarding cluster allocation. A suite of co-simulation tests uses EqFAT to compare the operation of existing FAT32 implementations to LoFAT and check the correctness of existing implementations of FAT32 such as the mtools suite of programs and the Linux FAT32 implementation. All models and proofs are formalized and mechanically verified in ACL2.

研究の動機と目的

  • ext4 や xfs、btrfs、F2FS といった広く使われている Linux ファイルシステムにおいて、前向きなクラッシュ整合性テストの欠如に対処すること。
  • 過去 5 年間に報告されたクラッシュ整合性バグの背後にある体系的なパターンを特定し、自動化されたバウンデッドテストを可能にする。
  • ソースコードの変更や形式的検証を必要としない、スケーラブルなブラックボックステストフレームワークを設計・実装すること。
  • 成熟したプロダクショングレードのファイルシステム、特に形式的検証済みのファイルシステムにおいて、以前に未知であったクラッシュ整合性バグを発見すること。

提案手法

  • B3 は、ファイル操作の数、fsync()、fdatasync()、または sync のみを永続化ポイントとして使用し、初期状態を新規の空のファイルシステムに制限することで、無限に及ぶ可能性のあるワークロード空間をバウンデッドに制限する。
  • CRASHMONKEY は、各永続化ポイントの後に電源断クラッシュをシミュレートするために I/O 操作を再実行し、クラッシュ時の状態をキャプチャする。その後、復旧後に永続化されたデータが生存し、正しく保たれているかを検証する。
  • ACE は、ユーザーが指定したバウンズ内でのすべての有効なワークロードを自動的に生成する。これには、引数を伴うファイル操作、永続化ポイント、依存関係を保持するシーケンスが含まれる。
  • CRASHMONKEY では、ターゲットファイルシステムを変更せずに、復旧後のファイルおよびメタデータの整合性を細かく検証するチェックを実装する。
  • このアプローチは、ext4、xfs、btrfs、F2FS、FSCQ に適用され、ツールは既存のバグおよび新しいバグの両方をテストするために展開された。

実験結果

リサーチクエスチョン

  • RQ1過去 5 年間にわたり、広く使われている Linux ファイルシステムにおけるクラッシュ整合性バグの背後にある共通のパターンは何か?
  • RQ2最小限の仮定で、バウンデッドでブラックボックスなテストを用いてクラッシュ整合性バグを体系的に発見できるか?
  • RQ3このアプローチに基づく自動化ツールは、成熟したファイルシステムにおいて、既知のバグと未知のバグの両方を発見できるか?
  • RQ4この手法は、形式的検証済みのファイルシステムにおいてどの程度のバグを検出できるか。これは、検証スタック内の潜在的な欠陥を示唆するか?

主な発見

  • CRASHMONKEY と ACE は、7 つのカーネルバージョンと 3 つのファイルシステム(ext4、xfs、btrfs)において、26 件の既知のクラッシュ整合性バグのうち 24 件を正常に再現した。
  • これらのツールは、広く使われている Linux ファイルシステムに、再起動時のアトミック性破綻や fsync() 後のデータ損失を含む、10 件の新しいクラッシュ整合性バグを発見した。
  • btrfs と F2FS の 10 件の新しいバグのうち 7 つは 2014 年からカーネルに存在していたことから、長期間にわたり検出されなかった欠陥であることが判明した。
  • ツールは形式的検証済みファイルシステム FSCQ にもデータ損失バグを発見し、コンponents の検証ギャップが正しさを損なう可能性があることを示した。
  • 10 件の新しいバグのうち 5 つはすでに開発者によってパッチ適用済みであり、残りの 7 つは現在修正開発中であった。
  • 本研究では、96% のクラッシュ整合性バグ(25/26)が、新規に作成されたファイルシステム上で 3 つの操作以内のワークロードで、fsync() コール直後にクラッシュを発生させることでトリガー可能であることが明らかになった。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。