シスコ、Linux カーネル用の PuzzleFS ファイル システムを導入

シスコは、Rust で書かれた Linux カーネルのモジュールとして実装される新しいファイル システム PuzzleFS を提案しました。 ファイル システムは、分離されたコンテナをホストするために使用されるように設計されており、Atomfs ファイル システムで提案されたアイデアを開発し続けています。 この実装はまだプロトタイプの段階にあり、rust-next Linux カーネル ブランチでのビルドをサポートしており、Apache 2.0 および MIT ライセンスの下でオープンです。

このプロジェクトは、OCI (Open Container Initiative) 形式のコンテナー イメージを使用するときに発生する制限を回避することを目的としています。 PuzzleFS は、重複データの効率的な保存、直接マウント機能、反復可能なイメージの構築、メモリのセキュリティなどの問題を解決します。

異なるコンテナーで繰り返されるデータを重複排除するには、FastCDC (Fast Content-Defined Chunking) アルゴリズムが使用されます。このアルゴリズムは、データを任意のサイズのフラグメントに分割し、処理されたフラグメントのハッシュでインデックスを維持することによって機能します。 繰り返しフラグメントは一度保存され、ファイル システムのすべての層に対して共同でインデックス付けされます。 重複排除はさまざまなマウント ポイントをカバーできます (既存の FS レイヤーに基づいて新しい FS レイヤーを起動し、重複排除中にそこに含まれるデータ フラグメントを使用できます)。

コンテナ イメージの繰り返しアセンブリは、コンテナ イメージ形式の正規表現を定義することによって実現されます。 ダイレクトマウントを使用すると、コンテナマニフェストのコンテンツのハッシュを識別子として使用して、最初に解凍せずにグローバル共有ストレージからOCIコンテナイメージをマウントできます。 共有ストレージを使用するときにデータの整合性を検証するには、ファイルにアクセスするときにバイナリ インデックスで指定されたハッシュと実際のコンテンツの対応をチェックする fs-verity メカニズムを使用できます。

Rust 言語が選択された理由は、生成されるコードの高いパフォーマンスと、メモリを安全に操作するための機能を兼ね備えているためです。これにより、解放後のメモリ領域へのアクセスやバッファ境界のオーバーフローなどの問題によって引き起こされる脆弱性のリスクが軽減されます。 カーネル モジュールに Rust を使用すると、カーネル コンポーネントとユーザー空間コンポーネントの間でコードを共有して、単一の安全な実装を作成することも可能になりました。

プロジェクトのその他の目標には、イメージの非常に高速なビルドとマウント、イメージの正規化にオプションの中間ステージを使用できる機能、マルチレイヤー構造を使用する場合の完全な mtree スタイルのファイル ツリー パスのオプション、casync スタイルの面付けが含まれます。多くの変更と実装が簡単なアーキテクチャ。

出所: オープンネット.ru

コメントを追加します