Windows 10 WSL:掛載建立 9p 檔案系統而不是 drvfs

Windows 10 WSL:掛載建立 9p 檔案系統而不是 drvfs

我想將 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)

正如您所看到的,類型是 9p 而不是指定的 drvfs。

答案1

是的,當您在 WSL 版本 2 中安裝 Windows 磁碟機時,它會使用 9P 協定。與使用 drvfs 的版本 1 相比,這是一個很大的變化。 WSL 主機執行 WSL 實例連接到的 9P 伺服器。

有相當多的網站在討論這個問題,但恕我直言,用搜尋引擎找到它們有點困難,因為關於 9P 的「更大」新聞是每個 WSL實例(無論是 WSL1 還是 WSL2)也託管自己的 9P 伺服器,Windows/WSL 主機隨後可以作為客戶端連接到該伺服器,並提供對路徑中 WSL 檔案的存取\\wsl$\<distroname>

這是更好的之一我在 r/bashonubuntuonwindows 上找到的討論。請注意 WSL 開發人員之一 u/benhelioz 的引用(現在,我相信是團隊負責人):

很棒的文章。當我這麼說時,我想非常明確地表明 - 我們對 Windows 磁碟機檔案存取效能絕對不滿意。這是我們投資最大的領域之一,並正在努力提高性能。我要強調的一件事是我們的 9p 具有一些 Samba 和 SMB 所沒有的優點。它更加安全,支援管理員/非管理員,並且與人們在 WSL1 中使用 DrvFs 的任何內容完全相容。

您的問題明顯未回答的部分是為什麼不能直接將磁碟機安裝為 drvfs。這是因為 WSL 實例無法直接存取硬體。它們依賴 WSL (LxssManager) 服務介面來提供對 Windows 元素的 API 存取。因此,我們依賴 WSL 提供存取的方法,對於 WSL2 和 NTFS 驅動器,該方法為 9P。

相關內容