9P

Plan 9ファイルシステムプロトコル(9P)の概要



Plan 9ファイルシステムプロトコル、別名9P(またはPlan 9 Filesystem Protocol、Styx)は、Plan 9 from Bell Labs(Plan 9)分散オペレーティングシステムのために開発されたネットワークプロトコルです。このプロトコルは、Plan 9システムを構成する様々な要素を効果的に接続する手段として設計されました。

Plan 9においてファイルは中心的な役割を果たします。ウィンドウ、ネットワーク接続、プロセスといったオペレーティングシステムのリソースの大部分は、ファイルとして表現されます。この設計により、システム内のあらゆる要素に対して統一的なインターフェースを提供し、システムのモジュール性と柔軟性を高めています。

9P2000と進化



Plan 9の第4版では、9Pは大幅な改良を加えられ、9P2000として生まれ変わりました。この改良には、ファイル名の制限の緩和、ディレクトリの最終更新者情報の追加、ファイルの認証機能の強化などが含まれます。Infernoオペレーティングシステムも9P2000を採用しており、そのファイルプロトコルは元々はStyxと呼ばれていましたが、本質的には常に9Pの派生形でした。

様々なオペレーティングシステムへの実装も進められており、Unix向けのu9fs、macOS向けのMac9P、そしてLinux向けのv9fsといったクライアント実装が存在します。さらに、組み込みシステム環境での利用も進んでおり、Styx on a Brick projectのような事例も見られます。

9Pサーバアプリケーションの例



多くのPlan 9アプリケーションは、9Pファイルサーバとして機能します。代表的な例として以下が挙げられます。

Acme: プログラマー向けのユーザインターフェース
rio: Plan 9のウィンドウマネージャー
plumber: プロセス間通信ツール
ftpfs: リモートFTPサーバ上のファイルをローカルファイルシステムのように扱うクライアント
wikifs: リモートWikiをローカルファイルシステムのように扱う編集ツール
webfs: URLからデータを取得し、その内容をローカルファイルシステムに表示するサーバ

Plan 9以外のシステムにおける9Pの利用



Plan 9以外のシステムでも、軽量なリモートファイルシステムが必要な場合に9Pは活用されています。具体的な例を以下に示します。

NixOS: 純粋関数型で宣言的なLinuxディストリビューション。バーチャルマシン内で自身を再構築する際に、ホストのパッケージストアディレクトリをマウントするために9Pを使用します。
Windows Subsystem for Linux (WSL): Windows 10 version 1903以降、WSLは9Pをサーバとして実装し、Windowsがクライアントとして動作することで、LinuxとWindows間のファイル共有を可能にしています。
Crostini: Linux仮想マシン(VM)から外部ファイルへのアクセスを提供するために、カスタム9Pサーバが使用されます。
QEMU: VirtFSデバイスは9Pを通じてファイルシステムの共有を可能にします。カーネルドライバと共有メモリによる高速化も特徴です。
DIOD (分散I/Oデーモン): 9Pファイルサーバとして機能します。

9Pプロトコルのメッセージ



9Pは、クライアントとサーバ間で様々なメッセージをやり取りします。これらのメッセージは、Plan 9の仮想ファイルシステム(vfs)レイヤーのエントリーポイントに対応しており、すべての9Pサーバが実装する必要があります。主なメッセージは以下の通りです。

version: プロトコルバージョンのネゴシエーション
error: エラーの返答
flush: メッセージの打ち切り
auth, attach: 接続の確立
walk: ディレクトリ階層のトラバース
create, open: ファイルのI/Oのためのファイル記述子の作成
read, write: ファイルへのデータの読み書き
clunk: ファイル記述子の解放
remove: サーバからのファイル削除
stat, wstat: ファイル属性の取得・変更

関連情報



IL Protocol: 9P向けのローカルエリアネットワーク用トランスポートプロトコル
* 分散ファイルシステム

9Pに関するより詳細な情報は、関連するドキュメントやオンラインリソースを参照してください。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。