WSL&Hyper-v

WSL2&Hyper-V

本人在Windows上下载 Docker Desktop for Windows时,遇到了要开启 Hyper-V 和 WSL2

本人产生了浓厚的兴趣,并且想尝试研究学习一下

WSL2

1.1 什么是 WSL2

官方介绍:

Windows Subsystem for Linux Documentation | Microsoft Learn

WSL 全称 : Windows Subsystem for Linux Documentation

概述:WSL 是微软在 Windows 10 中引入的一个兼容层,允许用户在不需要虚拟机或双启动的情况下运行 Linux 二进制可执行文件(ELF 格式)。

架构:WSL 通过将 Linux 的系统调用翻译成 Windows 内核的系统调用来工作,因此 Linux 程序能够在 Windows 上直接运行。WSL 不是真正的 Linux 内核,而是一个兼容层。

性能:由于没有完整的 Linux 内核,WSL 的性能在某些 I/O 密集型任务中可能会受到限制,但对于大多数开发任务已经足够。

WSL2

概述:WSL2 是 WSL 的升级版本,旨在解决 WSL 的一些性能和兼容性问题。

架构:WSL2 引入了一个完整的 Linux 内核,运行在一个轻量级的虚拟机(Hyper-V)中。这意味着 WSL2 提供了与真实 Linux 环境更高的兼容性。

性能:由于使用了真正的 Linux 内核,WSL2 的 I/O 性能和整体兼容性显著提升,尤其是在处理文件系统和网络操作时。WSL2 的文件访问速度比 WSL 快得多,尤其是对大量小文件的操作。

存储:WSL2 使用虚拟硬盘(VHD)来存储文件,而不是直接在 Windows 文件系统上操作文件,这有助于提高性能和兼容性。

1.2 有什么不同?

WSL2 的技术是基于Hyper-v,并且Hyper-v是微软Windows专业版/旗舰版自带的

开启WSL2虚拟化技术后,直接变成虚拟机了

image-20240831212628317

  1. 优点: Linux可以直连显卡,可以使用CUDA

  2. 有了这个可以在Windows下使用docker了

  3. 可以直接在终端启动虚拟机bash,非常非常方便

  4. 在Linux下使用windows软件,在windows上享受Linux库,比如深度学习的一些库

1.3 如何下载?

官方文档:

Install WSL | Microsoft Learn

wsl --install

1.4 常用命令

参考链接:

Hyper-V

1. 什么是Hyper-V?

维基百科介绍:

Hyper-V - 维基百科,自由的百科全书 (wikipedia.org)

旧称 Windows Server Virtualization, 是Microsoft的本地虚拟机管理程序,它可以在运行x86-64位的Windows上创建 虚拟机。

官方文档:

Introduction to Hyper-V on Windows | Microsoft Learn

2 如何下载/开启 Hyper-v

官方文档:

Enable Hyper-V on Windows | Microsoft Learn

官方中文文档:

在 Windows 上启用 Hyper-V | Microsoft Learn

by PowerShell

  1. 以管理员身份打开PowerShell.
  2. 允许以下代码
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

3 为什么选择Hyper-v

3.1 现有产品比较

参考视频:

为什么它是Windows最好的虚拟机? hyper-v虚拟机详细安装教程,虚拟机优劣对比,下载纯净版windows安装镜像_哔哩哔哩_bilibili

image-20240831204514179

  • VMware
    • 使用成本: 高
    • 稳定性: 中
    • 性能: 中
  • Virtual Box
    • 使用成本:free
    • 稳定性: 低
    • 性能: 低
  • Hyper-V
    • 使用成本:低 / windows专业版【旗舰款】 、
    • 稳定性: 高
    • 性能: 高 / 并且支持GPU虚拟化技术

注意: 最新的VMware已经支持Hyper-V技术

第一类和第二类Hypervisor解释

参考博客:

Hyper-V与VMware Workstation对比 - 知乎 (zhihu.com)

image-20240831205011453

Type-1 Hypervisor

Type-1 Hypervisor本身就是一个基本的操作系统,我们在其上运行虚拟机。因此,运行此类Hypervisor的物理机只能用于虚拟化目的,不能用于其他目的。

优点:

  • 性能出色:不受操作系统固有限制的约束,故可以提供出色的性能。
  • 高度安全:由于直接在没有任何底层操作系统的物理硬件上运行,因此不会受到操作系统通常特有的缺陷和漏洞的影响。同时可以最大程度上确保每个虚拟机都与任何恶意软件活动隔离开来。

Type-1 Hypervisor 有

VMware vSphere with ESX/ESXi、Microsoft Hyper-V、Citrix Hypervisor (Xen Server)。

Type-2 Hypervisor

这类Hypervisor托管在操作系统上,并且是作为一个软件运行在系统层上以启用虚拟化。

优势

  • 管理简单:本质上也是管理控制台,无需安装单独的软件包来管理在type-2 hypervisor上运行的虚拟机。
  • 方便测试:便于测试新软件或研究项目,可以简单易行地运行具有不同操作系统的多个实例,来测试软件在各个环境中的工作方式。

Type-2 Hypervisor有:

VMware Workstation Pro/ VMware Fusion、Oracle VirtualBox

3.2 Hyper-v对性能的影响

参考视频:

hyper-v对性能的影响_哔哩哔哩_bilibili

结论: 开启 Hyper-v 虚拟化 CPU性能 损失大约在 **5%**左右

为什么Windows 下使用 Docker需要WSL2和Hyper-V

有了 WSL2 , Windows内核和Linux内核 “平级”, 即弄一个虚拟机

image-20240831212751507

这样发明 在Linux 上的 Docker 技术 可以使用在 Windows电脑上

参考博客:

Docker Desktop for WSL2 容器化開發環境 (samkuo.me)

VS Code 的 Remote development 套件让 VS Code 可以使用容器方式來管理开发环境

用docker来管理开发环境,非常非常nice

怎么玩呢?

1. 使用 Hyper-v 替换 VMware Workstation

亲自测试: Hyper-v的GUI不知道为什么有明显的卡顿感,使用体验不如 VMware

需要亲自调教一段时间才能得出最佳实践

github