WSL2 技术堆栈中讨论的 "lightweight vm" 是什么意思?

What is meant by a "lightweight vm" as discussed in the technology stack for WSL2?

我的理解是,Windows 上的 Docker 目前在后台使用 "regular VM"。 WSL2 (and Docker) 将切换到使用轻量级 VM。但这实际上意味着什么?它只是使用较小的初始内存占用空间和一些内存直通技术,还是还有更多?

TL;DR

最大的变化是从 WSL 中 Windows 内核的虚拟化 Linux 系统调用解释器转移到 WSL2 中提供的 full-on Linux 内核。此举大大减少了虚拟化开销。

有趣的细节

直接来自 DevBlogs Post on the announcement of WSL2:

Microsoft will be shipping a Linux kernel with Windows ... This kernel has been specially tuned for WSL 2. It has been optimized for size and performance to give an amazing Linux experience on Windows.

这与当前(写作时)WSL 的方式不同,它没有使用适当的 Linux 内核,在original WSL overview from 2016.

WSL executes unmodified Linux ELF64 binaries by virtualizing a Linux kernel interface on top of the Windows NT kernel.

WSL LXCore 服务为本机 Linux 系统调用以及 运行 它自己的 VolFs 和 DriveFs 操作运行某种解释器,以提供 WSL 和 Windows 10 之间的文件访问,它本质上扮演着传统 VM 翻译层的角色,例如 VirtualBox。

引用:MSDN Blog

目前对于 WSL2 使用的确切系统知之甚少,我们所知道的是 Build2019 WSL2 talk。帮助回答有关文件系统更改和轻型 VM 的问题:

在这里,我们看到 Linux 内核与 NT 内核一起运行,而不是作为其之上的虚拟化环境。 (作为 Windows 服务)。轻量级 VM 可能会在促进两个内核之间必要的交互方面发挥作用。

这可以让您一窥该互操作层的内部工作原理。在 Build2019 演讲中口头讨论过,这两个内核通过本地托管的文件服务器相互提供文件(无法通过 WSL2 以外的方式访问 Windows 用户空间)。

同样,由于在撰写本文时我们目前可获得的详细信息有限,从我们用户的角度来看,还有很多悬而未决的问题。