Windows 10 WSL: монтирование создает файловую систему 9p вместо drvfs

Windows 10 WSL: монтирование создает файловую систему 9p вместо drvfs

Я хочу смонтировать свой диск Windows C: в /mnt/c в WSL как файловую систему 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

Да, когда вы монтируете диск Windows в WSL версии 2, он использует протокол 9P. Это большое изменение по сравнению с версией 1, которая использовала drvfs. Хост WSL запускает сервер 9P, к которому подключается экземпляр WSL.

Есть довольно много сайтов, где это обсуждается, но, на мой взгляд, их немного сложно найти с помощью поисковой системы, поскольку «большая» новость относительно 9P заключалась в том, что каждый WSLпример(WSL1 или WSL2) также размещает свой собственный сервер 9P, к которому хост Windows/WSL затем может подключиться как клиент и предоставить доступ к файлам WSL по указанному \\wsl$\<distroname>пути.

Вот один из лучшихобсуждения, которые я нашел на r/bashonubuntuonwindows. Обратите внимание на цитату u/benhelioz, одного из разработчиков WSL (теперь, как я полагаю, руководителя группы):

Отличная статья. Я хочу быть предельно ясным, когда говорю это: мы абсолютно не удовлетворены производительностью доступа к файлам Windows Drive. Это одна из самых больших областей, в которые мы инвестируем и усердно работаем над улучшением производительности. Я хочу подчеркнуть, что у нашего 9p есть некоторые преимущества, которых нет у Samba и SMB. Он намного более безопасен, поддерживает администратора/не администратора и полностью совместим со всем, для чего люди использовали DrvFs в WSL1.

Очевидная часть вашего вопроса без ответа — почему вы не можете напрямую смонтировать диск как drvfs. Это потому, что экземпляры WSL не имеют прямого доступа к оборудованию. Они полагаются на интерфейс службы WSL (LxssManager) для предоставления доступа API к элементам Windows. Поэтому мы зависим от методов WSL по предоставлению доступа, которые в случае дисков WSL2 и NTFS — 9P.

Связанный контент