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

标签 virtualization hyper-v windows-subsystem-for-linux

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

最佳答案

长话短说

最大的变化是从 WSL 中用于 Windows 内核的虚拟化 Linux 系统调用解释器转变为 WSL2 中提供的完整 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.

这与当前(撰写时)的方式背道而驰,后者未使用适当的 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 服务为 native Linux 系统调用运行某种解释器,并运行其自己的 VolFs 和 DriveFs 操作以提供 WSL 和 Windows 10 之间的文件访问,这基本上执行传统 VM 的翻译层等角色VirtualBox 的。

WSL components chart

引用:MSDN Blog

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

Timestamp: 29:58

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

Timestamp: 41:11

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

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

关于virtualization - WSL2 技术堆栈中讨论的 "lightweight vm"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674916/

相关文章:

windows - Hyper-V 导致错误 "sorry, this application cannot run under a virtual machine"

azure - 我可以在使用 Azure VM 时针对 Windows Phone 8 进行开发吗?

bash - 从 Windows 的某个目录中启动 bash

performance - Docker会给RAM额外的里程吗?

centos - 无法更改 vagrant 主文件夹中文件夹的权限

azure - Windows Server 版本 1803 中未激活 Hyper-V 隔离

c - 带有 WSL 的 NCurses 显示框不正确

linux - 网络数据在同一物理主机上的两个 LXC 容器之间走什么路径?

android-emulator - Intel HAXM 安装错误 - 此计算机不支持 Intel 虚拟化技术 (VT-x)

php - Nginx 不会在 WSL 上执行 php 文件。我怎样才能解决这个问题?