以下の内容はhttps://error-daizenn.hatenablog.com/entry/2026/01/16/220828より取得しました。


WSLとQEMUに残る9Pの役割と影響範囲(2026年1月確認)


本記事の対象となる事象は、Plan 9由来のファイルプロトコル「9P(Plan 9 Filesystem Protocol)」が、現行のWindows環境(Windows Subsystem for Linux)や仮想化基盤(QEMU)で実利用されている点です。OSnewsは2026年1月15日付で、WSLのLinux VM内ファイルへWindowsがアクセスする機構や、QEMUのホスト・ゲスト間共有に9Pが使われる事実を整理しています。(osnews.com)
そのため本記事では、9Pの前提となる設計、WSLとQEMUでの実装上の位置づけ、そして実務上の確認点を、因果関係と条件差を軸にまとめます。

Plan 9と9Pの設計位置づけ:資源を「ファイル」として扱う前提

9Pは、Plan 9の分散設計において、各種資源をファイル操作として統一するための通信規約です。(9p.io)

Plan 9は、UNIXの考え方を踏まえつつ、資源アクセスをファイル階層に集約する設計で知られます。具体的には、プロセスやネットワーク接続などを含む多くの対象をファイルとして表現し、読み書きなどの共通操作で扱えるようにします。これを成立させるために、クライアントとサーバー間の要求・応答を定義したのが9Pです。(ウィキペディア)

この点から、9Pは「共有フォルダ」や「リモート資源」を追加する場面で採用されやすい構造を持ちます。言い換えると、別系統のAPIを増やす代わりに、ファイル操作へ寄せることで、接続方式が異なっても実装の骨格を揃えやすい、という整理になります。なお、9PはPlan 9第4版に向けた改訂として9P2000が言及されることがあり、互換性やメタデータ扱いの前提が変わり得る点は確認材料になります。(ウィキペディア)

以上を踏まえると、9Pが「過去の研究OSの要素」に留まらず、実務的な統合部品として使われる余地が残る理由が整理できます。次章では、この統合がWindowsのWSLでどのように具体化しているかを扱います。(osnews.com)

WindowsのWSLが9Pを使う構造:WindowsからLinux VM内へ届く経路

WSLでは、Linux側で9Pサーバーを起動し、Windows側のサービスとドライバーがクライアントとして通信する構成が示されています。(Microsoft for Developers)

WSL2はLinuxカーネルを仮想マシン上で動作させるため、WindowsとLinuxのファイル系統が分かれます。ここで課題になるのが、Windows側からLinux側ファイルにアクセスする経路です。MicrosoftのDev Blogsでは、WSLのinitデーモンを改修して9Pサーバーを起動し、Windows側のサービスとドライバーがその9Pサーバーへ接続する、と説明しています。また通信にはAF_UNIXソケットが使われる旨も明記されています。(Microsoft for Developers)

この結果、Windows上で \\wsl$ を通じてWSLのファイルへ到達する経路は、単純なネットワーク共有(SMBなど)とは異なる性質を持ちます。実務上の確認点となるのは、「9Pが開始できない」場合にWindowsからWSLへアクセスできない、という障害形です。Microsoftのトラブルシューティング文書(日本語版を含む)では、\\wsl$ へアクセスできない事象の原因として9P起動失敗の可能性を挙げ、Linux側ログで9P関連の起動記録を確認する方法が記載されています。(Microsoft Learn)

つまり、WSLにおける9Pは「WindowsとLinuxをまたぐファイル要求を中継する層」であり、稼働状態の確認が障害切り分けの前提になります。次章では、同じ9PがQEMU側でどのように位置づけられているかを整理します。(osnews.com)

QEMUのVirtFSとvirtio-9p:ホスト共有をネットワーク化せず成立させる方法

QEMUではVirtFS(virtio-9p)として9Pを提供し、ホストのディレクトリ共有をゲスト側のファイルシステムとして扱えるようにします。(wiki.qemu.org)

QEMUの公式Wikiでは、VirtFSが「virtio経由でPlan 9のフォルダ共有(9P)」を行う仕組みとして整理され、設定の概念や手順がドキュメント化されています。(wiki.qemu.org) ここでの要点は、共有がネットワークファイルシステムの構築(NFS/SMBなど)を前提にせず、仮想デバイスとして9Pエクスポートを提示し、ゲスト側がそれをマウントして利用する、という構造です。

ゲスト側(特にLinux)では、9P用のドライバー群(例:9pnet_virtio)が存在し、virtioデバイスとして提示された共有を認識します。Linuxカーネル文書では、9Pエクスポートがvirtioデバイスとして見えることや、マウントタグ(mount_tag)といった識別情報の扱いが説明されています。(kernel.org)

この点から、QEMUにおける9Pは「ホスト・ゲスト間の共有フォルダ」を成立させるための標準化された通路として評価できます。ただし、9Pはメタデータや整合性、キャッシュ方針の取り扱いが環境差の影響を受けやすく、実装や利用条件によって性能・互換の論点が残ります。なお、OSnewsは「VirtFSでホストとVM間共有をする場合も9Pを使う」と明示しており、本記事の対象テーマと直結します。(osnews.com)

次章では、9PがWSLとQEMU以外にも現れる条件を整理し、どの種類の統合問題に適用されがちかを比較します。

9Pが採用されやすい条件:仮想化・隔離環境の「共有」を成立させる

9Pは、隔離された実行環境とホストの間で、共有をネットワーク設定から切り離したい局面で採用されやすい構造です。(osnews.com)

OSnewsは、WSLとQEMUに加えて、NixOSやGNU GuixがVM内ビルド時の共有に9Pを使う例に触れています。(osnews.com) Nix系では、テストやビルドでホスト側のストアをVMへ渡すために9Pを使う、という議論がメーリングリストで整理されています。(releases.nixos.org) またChromeOSのCrostiniでも、ホスト側ディレクトリをLinux側へ共有する仕組みが9Pモデルで説明される事例が確認できます。(GitHub)

同様に、FreeBSD側でもvirtio-9p(p9fs)実装の追加が開発コミットとして記録されており、bhyveなどの仮想化文脈で9P共有が扱われています。(lists.freebsd.org) これにより、「ホストとゲストのディレクトリ共有」という課題に対し、9Pが選択肢として横断的に現れる条件が見えます。これによりい、利用者側が「同じ共有機能でも実体は9Pである」可能性を前提に、性能や権限の論点を整理できます。

整理のため、代表的な利用場面を比較します。

利用場面 9Pの役割 共有の向き 代表的な論点
WSL(Windows↔Linux VM) WindowsがLinux側FSへアクセス Windows→Linux 起動失敗で \\wsl$ 不可(Microsoft Learn)
QEMU VirtFS ホストDirをゲストFSとして提示 Host→Guest メタデータ/性能差(wiki.qemu.org)
ChromeOS Crostini ホスト側共有を隔離環境へ橋渡し Host→Container/VM 9Pモデルでの共有扱い(GitHub)
FreeBSD bhyve virtio-9pでDir共有 Host→Guest p9fs追加と運用差(lists.freebsd.org)

要点を整理すると、9Pは「共有したいが、ネットワーク共有として見せたくない」条件と相性がよい一方で、I/Oパターンやメタデータ互換が実装差になり得ます。次章では、実務上の確認点を性能・権限・障害切り分けの観点でまとめます。

実務上の確認点:性能・権限・障害切り分けを同じ軸で見る

9Pが介在する共有では、性能とメタデータ互換、そして起動可否が主要な確認軸になります。(Microsoft for Developers)

まず性能面では、9Pが「ファイル要求をメッセージとして往復させる」性質を持つ以上、アクセスの粒度が細かい作業(多数の小ファイル、頻繁なstat取得など)で負荷が出やすい条件が残ります。WSLについては、9P経由アクセスの遅さを課題として扱うIssueが公開されており、SMB等の代替と比較した論点が記録されています。(GitHub) UbuntuのWSL関連ドキュメントでも、Windowsファイルシステムへのアクセスが9Pで行われ、ネイティブより遅くなる可能性がある旨を警告として整理しています。(documentation.ubuntu.com)

次に権限・メタデータです。MicrosoftのDev Blogsは、9PサーバーがLinuxメタデータ(権限を含む)を支えるプロトコルを含む、と説明しており、単なるバイト列転送以上の役割を担う点が重要です。(Microsoft for Developers) ただし、どこまでが完全に一致するかは実装差が生じる可能性があるため、運用上は「どの側の意味論が優先されるか」を前提条件として持つ必要があります。

最後に障害切り分けです。WSLでは \\wsl$ に到達できない事象が、9P開始失敗と結びつく形で公式文書に明示されています。ログ上では9P関連モジュールの初期化記録が示されるため、切り分け材料として重要です。(Microsoft Learn) QEMU側では、VirtFS/9Pの設定が共有成立の前提となるため、設定要素(共有タグやエクスポート方式)を先に固定し、ゲスト側の9Pドライバー認識と合わせて検証する構図になります。(wiki.qemu.org)

以上を踏まえると、9Pは「Plan 9の遺産」という説明だけでは不足し、WSLやQEMUにおける具体的な統合点として、性能・メタデータ・起動可否の3点を同じ軸で整理することが判断材料になります。(osnews.com)




以上の内容はhttps://error-daizenn.hatenablog.com/entry/2026/01/16/220828より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14