WSL 1 与 WSL 2 有什么区别?到底哪个更适合你

随着 windows 2004 更新即将推送,许多新的功能和特性也即将与大家见面。其中的 WSL 2 可以说是作为软件从业人员较为关注的一个新特性。WSL 1 于 2016 首次发布,在 windows 系统中带来令人惊叹 linux 体验,也被当做是微软拥抱开源的标志性举动。如今,对于一般的桌面程序的开发工作,WSL 1 已完全能够胜任,那么 WSL 2 又有哪些改进。

WSL 2 改变了什么

对于 WSL 1 来说,主要的缺点有:

  • 文件 I/O 慢,尤其是在大量IO操作时,例如使用 git 克隆仓库;
  • 不支持内核程序;

WSL 2 针对以上两个缺点进行了修正:

  • 相比较于 WSL 1 使用翻译层将 linux 系统调用转化成 windows 系统调用,WSL 2 使用了一个轻量级的、无需维护的虚拟机,并在这个虚拟机中运行了一个完整的 linux 内核。
  • WSL 2 使用一个 VHD 虚拟磁盘文件作为 linux 发行版的根目录,其中使用 ext4文件系统格式,极大提升了IO性能。

在这里插入图片描述WSL 1 与 WSL 2 的架构
特性比较
在这里插入图片描述
说明如下:

  • WSL1 和 WSL2 都可以实现在 windows 中带来 linux 操作体验;
  • 启动速度都不慢;
  • 内存消耗都比较小;
  • WSL 1 没有使用的 VM,WSL 2 使用了一个自动维护的 VM;
  • WSL 1 不支持,WSL2 支持可以运行例如 Docker 等程序;
  • WSL 2 支持完整的 linux 内核调用,而 WSL 1 不行;
  • 由于 WSL 2 使用了 Hyper-V,由于兼容性原不用同时运行 WSL 2 与 VMWare或VirtualBox,WSL 1 不存在此问题;
  • WSL 2 不能与 windows 跨操作系统文件操作(Windows 访问 WSL2 的方法为进行 WSL2 环境键入 “cd ~” 进入主目录后,再键入"explorer.exe ."可在windows 文件管理器中访问 WSL 2 文件,此外还可以通过虚拟机的方法互通文件,如网络,文件共享等),而 WSL 1 则与 windows 在同一文件系统中。

什么情况下不适合使用 WSL 2

WSL 2 带来最大的改变就是提升文件IO性能,但这个提升仅限于WSL2根文件系统中(VHD中),并且,微软文档指出,跨操作系统文件操作时 WSL1 要快于 WSL2。因此,在以下情况是仍然建议使用 WSL 1:

你的文件必须存储在 windows 文件系统中。
• 从 WSL 中访问 windows 中的文件时,仍然是 WSL 1 快
当你的项目文件同时需要被 WSL 和 Windows 访问时(如交叉编译同一份源码)
• 从 Windows 访问 WSL 中的文件时, 仍然是 WSL 1 快

WSL 2 的其他说明

由于 WSL 1 与 WSL 2 的实现方式不同,在其他方面 WSL 2 也有与 WSL 1 不同的表现。

在 WSL 2 中任务管理器中不再现在 WSL 中的进程;
WSL 2 网络访问方面,微软会做一定优化,但本质上还是虚拟机的方法;

总结

如何选择 WSL 1 还是 WSL 2:

  • 如果你看中 WSL 与 windows 文件互通和互操作性,还是 WSL 1 更适合;
  • 如果你常在 VM 里开发,工作环境基本都在 Linux 中,那么 WSL 2 会带来更加完美的体验;
  • 如果你需要内核功能,那只能是 WSL 2 了;
  • 网络,与其他软件兼容性等方面考虑;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐