wsl1升级到wsl2跨 OS 文件系统的性能是降低的,也就是在子系统中操作父windows系统上的文件,wsl2是较wsl1慢的。
原因很简单,wsl2使用了VM来运行Linux内核,在wsl2上面操作windows上的文件需要在windows文件系统、VM上绕一圈。
大家知道运行在VM上的系统是无法直接与宿主系统进行跨系统通信的,这两者之间的通信需要依赖于网络,尽管他们是运行在同一台电脑之上。wsl2子系统与父windows系统之间的文件互通也是依靠网络端口的,这也就是wsl2跨OS文件操作慢的根本原因。
既然知道了原因,那么问题就很好解决了。
跨系统直接操纵文件需要经过网络,速度自然很慢,所以要尽量避免跨系统直接操作对方系统上的文件。
在需要跨系统使用文件的时候,我们可以提前在当前系统上将文件拷贝到目标系统上。例如:
我们需要在子系统上访问windows系统上的某个文件时,可以先在windows文件资源管理器上,将文件拷贝到子系统上的目标位置,然后再子系统上直接访问,这样可以节省在两个系统之间做磁盘映射的时间。
父windows系统访问子linux系统的文件:
直接在文件资源管理器输入\\wsl$
就可以访问到wsl子系统的文件系统:
或者WIN+R输入\\wsl$
:
linux子系统访问父windows系统的文件:
直接cd /mnt
就可以看到c/、d/两个文件夹,对应的就是电脑上的C盘、D盘,cd进去就可以访问对应windows上的文件: