Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
  • Linux 概述
  • Linux-Centos
  • Linux-Ubuntu
  • Linux-Debian
  • VM 概述
  • VM- Hyper-V
  • VM-VMware
  • VM-WSL
  • Docker
  • Kubernetes

VM 概述

一、虚拟机的发展

虚拟机的发展经历了从最初在大型机上实现资源隔离,到现代云计算时代作为基础设施核心支撑的演进过程。大致可分为以下几个阶段:

1. 初始阶段(1960s-1970s):大型机虚拟化

虚拟化最早起源于 IBM 在 1960 年代开发的 CP/CMS 系统,用于在大型机上运行多个用户会话。它的目的是提高计算资源的利用率和多任务处理能力。

  • 代表技术:IBM VM/370
  • 核心目标:资源隔离、多任务处理
  • 主要特点:硬件模拟、时间分片、用户空间隔离

2. 停滞与过渡阶段(1980s-1990s):微机兴起,虚拟化冷淡

随着微型计算机和个人电脑的普及,硬件成本下降,虚拟化技术一度热度降低。这一时期,更多关注操作系统本身的发展,如 UNIX、Windows 等。

  • 主要趋势:硬件廉价导致“一机一系统”模式流行
  • 虚拟化应用:主要用于软件调试(如 DOSBox、Bochs)

3. 复兴阶段(2000s):x86 虚拟化崛起

2000 年后,随着服务器数量激增与资源浪费问题加剧,x86 架构虚拟化成为研究和商业热点。VMware、Microsoft、Xen 等相继推出虚拟化方案。

  • 代表产品:VMware Workstation/ESX、Xen、VirtualBox

  • 核心技术突破:

    • 二进制翻译(Binary Translation)
    • 半虚拟化(Paravirtualization)
    • 硬件辅助虚拟化(Intel VT-x、AMD-V)

4. 成熟阶段(2010s):云计算与容器化共存

虚拟机技术已广泛应用于数据中心和云计算平台,成为 IaaS 层的基础。而与此同时,容器(如 Docker)的轻量级隔离方式也逐渐兴起,与虚拟机并行发展。

  • 云平台依赖:AWS EC2、Microsoft Azure、阿里云 ECS 等

  • 关键趋势:

    • 虚拟化与容器化融合(Kata Containers)
    • 虚拟化性能优化(如 SR-IOV、NUMA 支持)

5. 现代阶段(2020s 至今):轻量虚拟化与边缘计算

随着边缘计算、物联网的发展,对启动速度快、资源占用小的轻量虚拟机(如 Firecracker、Wasmtime)需求提升。同时,WebAssembly 等技术也提供了更细粒度的沙箱化运行环境。

  • 代表技术:Firecracker(用于 AWS Lambda)、gVisor、WebAssembly VM

  • 发展方向:

    • 微服务化架构支持
    • 更强的安全隔离
    • 快速启动与冷启动优化

二、虚拟机的分类

虚拟机(Virtual Machine,VM)是一种对计算机系统资源的抽象和模拟,根据不同的维度可以将虚拟机分为多种类型,主要包括以下几类:

1. 系统虚拟机(System Virtual Machine)

系统虚拟机模拟的是一整套完整的计算机硬件系统,它允许在其上运行完整的操作系统。其主要用途是提供多个独立的操作系统环境。

  • 代表产品:VMware ESXi、Microsoft Hyper-V、KVM、Xen
  • 特点:每个虚拟机都可以运行不同的操作系统;高度隔离;资源开销较大。
  • 使用场景:服务器虚拟化、云计算基础设施。

2. 进程虚拟机(Process Virtual Machine)

进程虚拟机是为了支持单个进程的运行而设计的,它为该进程提供一个运行时的抽象平台,屏蔽底层操作系统的差异。

  • 代表产品:Java 虚拟机(JVM)、.NET CLR、Python 虚拟机(PVM)
  • 特点:跨平台;启动快;通常用于语言运行时。
  • 使用场景:软件开发与跨平台运行。

3. 全虚拟化 vs 半虚拟化

  • 全虚拟化(Full Virtualization) 客户操作系统无需修改,虚拟机完全模拟底层硬件。 代表:VMware Workstation、QEMU(带硬件支持)

  • 半虚拟化(Paravirtualization) 客户操作系统需做一定修改,以便与虚拟机监控器更高效地通信。 代表:Xen(早期版本)


4. 宿主式 vs 裸金属式

  • 宿主式虚拟机(Hosted VM) 依赖已有的主操作系统,在其上运行虚拟机软件(如 VMware Workstation、VirtualBox)。

  • 裸金属虚拟机(Bare-metal VM) 虚拟机监控器直接运行在硬件之上,不依赖宿主操作系统(如 VMware ESXi、KVM)。


5. 高性能虚拟机 vs 轻量级虚拟机

  • 高性能虚拟机:追求接近原生性能的模拟,如用于大型服务器或数据库环境。
  • 轻量级虚拟机:如 WebAssembly VM、GraalVM,用于快速、安全地运行嵌入式或浏览器代码。

三、常用的虚拟机介绍

1、基本概念与关系

技术全称类型简介
WSLWindows Subsystem for Linux子系统 / 轻量虚拟机Windows 上运行 Linux 的兼容层(WSL 2 底层基于 Hyper-V)
Hyper-V无缩写,全称就是 Hyper-V裸金属虚拟化微软原生的 Type 1 虚拟机监控器(Hypervisor),运行完整虚拟机
VMware如 VMware Workstation / ESXi虚拟机平台非微软公司开发的虚拟化方案,主流商用虚拟化工具之一
  • WSL 2 的内核虚拟化底层依赖 Hyper-V 技术。
  • Hyper-V 和 VMware 都是系统级虚拟机管理器,二者具有相似功能但彼此不兼容。

2、架构对比

项目WSL 1WSL 2Hyper-VVMware
虚拟化方式系统调用转发(非虚拟机)基于轻量 Hyper-V 虚拟机Type 1 虚拟化(裸金属)Hosted 或 Type 1(取决于产品)
是否真正虚拟机否是(轻量)是是
是否使用 Hypervisor否是(Hyper-V)是否(自己实现)
启动速度极快快慢(完整启动)慢(完整启动)
文件访问与 Windows 共用文件系统虚拟磁盘 + 可挂载独立虚拟硬盘独立虚拟硬盘
Linux 支持非完整(无内核)完整 Linux 内核完整系统完整系统

3、使用场景对比

场景推荐技术原因
开发者想在 Windows 下运行 Linux 命令/工具WSL 2启动快、集成好、支持原生 Linux
部署测试多系统环境(如 Windows + Linux)Hyper-V / VMware完整虚拟机,更接近真实环境
需要高性能服务器虚拟化Hyper-V(Server)或 VMware ESXi提供企业级稳定性与性能
在个人电脑上跑多个操作系统并行使用VMware Workstation / Hyper-V桌面级多系统测试环境

4、兼容性与冲突问题

  • VMware 和 Hyper-V 有冲突: 因为 VMware 需要自己管理硬件虚拟化,但如果 Hyper-V 已启动,会占用 VT-x / AMD-V 资源,VMware 可能启动失败。

  • WSL 2 依赖 Hyper-V: 开启 WSL 2 时,其实就是运行一个轻量 Hyper-V 虚拟机。

  • 解决办法: 如果你想同时使用 VMware 和 WSL,可以选择:

    • 使用 WSL 1(但功能受限)
    • 使用 VMware 的兼容 Hyper-V 模式(较新版本支持)
    • 或者在 BIOS 中切换开启 / 关闭虚拟化功能(麻烦)

5、总结一句话:

WSL 是为开发者服务的轻量 Linux 环境,底层基于 Hyper-V;
Hyper-V 是微软官方的企业级虚拟化平台;
VMware 是跨平台、高兼容性的第三方虚拟化解决方案。

Last Updated:
Contributors: Clarence, hanchen
Prev
Linux-Debian
Next
VM- Hyper-V