Windows 10 WSL: マウントすると drvfs ではなく 9p ファイルシステムが作成される

Windows 10 WSL: マウントすると drvfs ではなく 9p ファイルシステムが作成される

Windows C: ドライブを WSL の /mnt/c に drvfs ファイル システムとしてマウントしたいのですが、ファイル システム タイプとして drvfs を指定すると、代わりに 9p ファイル システムになります。

次のコマンドを入力しました:

$ sudo umount /mnt/c
$ sudo mount -t drvfs C: /mnt/c/
$ mount -l
...
C: on /mnt/c type 9p (rw,relatime,dirsync,aname=drvfs;path=C:;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=3,wfd=3)

ご覧のとおり、type は指定された drvfs ではなく 9p です。

答え1

はい、WSL バージョン 2 で Windows ドライブをマウントすると、9P プロトコルが使用されます。これは、drvfs を使用していたバージョン 1 からの大きな変更点です。WSL ホストは 9P サーバーを実行し、WSL インスタンスはこれに接続します。

これについて議論しているサイトはたくさんあるが、検索エンジンで見つけるのは少し難しいと思う。なぜなら、9Pに関する「より大きな」ニュースは、各WSL実例(WSL1 または WSL2 のいずれの場合も) 独自の 9P サーバーもホストしており、Windows/WSL ホストはクライアントとしてそのサーバーに接続し、\\wsl$\<distroname>パスにある WSL ファイルへのアクセスを提供できます。

ここに良い例を挙げますr/bashonubuntuonwindowsで見つけた議論WSL 開発者の 1 人 (現在はチーム リーダーだと思います) である u/benhelioz の引用に注目してください。

素晴らしい記事です。はっきり申し上げておきたいのは、Windows Drive のファイル アクセス パフォーマンスにはまったく満足していないということです。これは、私たちが投資している最大の領域の 1 つであり、パフォーマンスの向上に懸命に取り組んでいます。強調しておきたいのは、9p には Samba や SMB にはない利点がいくつかあるということです。はるかに安全で、管理者/非管理者をサポートし、WSL1 で DrvFs を使用していたすべての機能と完全に互換性があります。

質問の中で明らかに答えられていない部分は、なぜドライブを drvfs として直接マウントできないのかということです。これは、WSL インスタンスがハードウェアに直接アクセスできないためです。WSL (LxssManager) サービス インターフェイスに依存して、Windows 要素への API アクセスを提供します。そのため、WSL のアクセス提供方法に依存しており、WSL2 および NTFS ドライブの場合は 9P です。

関連情報