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、基本概念与关系
技术 | 全称 | 类型 | 简介 |
---|---|---|---|
WSL | Windows 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 1 | WSL 2 | Hyper-V | VMware |
---|---|---|---|---|
虚拟化方式 | 系统调用转发(非虚拟机) | 基于轻量 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 是跨平台、高兼容性的第三方虚拟化解决方案。