使用虚拟磁盘提升wsl2中的文件IO性能

5,893 阅读2分钟

最近笔记本换成了 windows,作为开发wsl2 + ubuntu + docker全家桶顺手就搭建了(windows11的安装非常顺畅),使用了一段时间,发现对于我这种需要调试js的前端切图仔的体验确实不好,每次保存文件有一个很明显的卡顿感。目前的解决方案是直接在linux环境用类原生的磁盘,为了不真的去买个硬盘,于是使用VHDX(虚拟磁盘)的方式。使用windows直接创建一个虚拟磁盘,将虚拟磁盘挂载到wsl中使用,因为文件系统直接模拟了ext4格式,所以整个性能有巨大的提升。

创建VHDX文件

按 Win + R 组合键,打开运行,在运行窗口中输入:compmgmt.msc 命令,确定或回车,打开磁盘管理器:

image.png

在存储中找到磁盘管理,点击右键,点击创建VHD

image.png

因为VHDX实际上是一个特殊格式的文件,因此我们只需要选择将文件存储在什么位置就行,设置好虚拟硬盘大小和格式就好,为了更好的性能可以直接选择固定大小,点击确定即可快速创建出一个 vhdx 文件。

格式化虚拟磁盘

刚创建出来的虚拟磁盘就像我们新买的硬盘一样,需要经过格式化才能使用,格式化当然首选磁盘界的老大哥DiskGenius5.4,安装完成之后,直接在操作界面找到我们新创建的VHDX磁盘,点击右键,点击快速分区,直接分成一个区就好了,格式选择EXT4格式,点击格式化,一路滚动条,滚完磁盘就准备好了。

image.png

image.png

挂载磁盘到wsl

打开PowerShell,输入wmic diskdrive list brief,找到刚才创建的Microsoft 虚拟磁盘的DeviceID,我的是\\.\PHYSICALDRIVE1

image.png

通过 wsl --mount \\.\PHYSICALDRIVE1 --partition 1 命令直接挂载到 wsl,挂载成功之后,登录 wsl 中可以在 /mnt/wsl 中看到 /mnt/wsl/PHYSICALDRIVE1,将项目文件挪到该目录下,通过 VsCode 内置的 wsl 插件可以快速连入到 wsl 中,通过进入到项目根目录 code . 打开之后,就可以通过 vscode 很方便的修改文件了,卡顿感消失。

在linux中通过mnt的方式虽然能去访问windows的文件,一般使用还是很好的,但是需要频繁的修改,还是建议不要跨系统去使用,中间的转换成本比较高。