WSL2磁盘读写性能优化

2022-04-14

wsl

总所周知,wsl2下读写windows分区的文件,性能低一直是个问题,以往都是直接用/mnt/d/这样的方式访问windows下的文件,最近git操作都有点不顺畅,决定好好优化一下这个问题。

在计算机管理->磁盘管理中创建一共vhdx文件,然后通过DiskGenius5.4等工具,把虚拟磁盘格式化成ext4文件系统。在PowerShell,输入wmic diskdrive list brief,找到刚才创建的”Microsoft 虚拟磁盘“的DeviceID,例如\\.\PHYSICALDRIVE2,然后输入wsl –mount \\.\PHYSICALDRIVE1 –partition 1,这个命令可以直接把第一个分区mount到wsl里,在wsl里可以看到:

/dev/sdf1 on /mnt/wsl/PHYSICALDRIVE2p1 type ext4 (rw,relatime)

如果想mount到指定的目录,可以执行

wsl --mount \.\PHYSICALDRIVE2 --bare

这样只会将磁盘连接到 WSL2,但不装载,在wsl下可以看到新的磁盘然后在wsl中执行

$mkdir ~/work
$sudo mount /dev/sdf1 ~/work

为了能自动加载,可以修改/etc/fatab文件

LABEL=work /home/alex/work ext4 defaults 0 0

之前创建vhdx的时候我们可以指定一个label,这样可以简单的通过label自动mount。执行mount -a可以立即执行mount配置。

可以试一下,现在wsl中访问装载的分区会很快,比之前访问windows分区文件快很多。但是在windows下访问文件的方式需要做改变,可以通过\wsl.localhost\Ubuntu\home\alex\work这样的方式去访问,也可以在vscode中通过Remote-WSL插件远程打开wsl里的文件和目录,后者对于开发来说更为便捷。

 
阅读