VMware 属于 Type‑2 虚拟化(宿主型虚拟机),运行在 Windows/macOS/Linux 主机操作系统之上,不是直接裸跑硬件;核心是把一台物理计算机的CPU、内存、磁盘、网卡等硬件,抽象虚拟出一套完整虚拟硬件,让客户机操作系统(虚拟机里的系统)以为自己在操作真实硬件。

一、核心组件

  1. VMware Workstation(上层应用)
    用户交互界面,负责创建虚拟机、配置硬件、读写vmx配置文件,调度VMware内核驱动。
  2. VMware 内核驱动(vmmon、vmnet)
    Windows下是内核驱动,Linux是内核模块,这是虚拟化真正核心,直接访问物理硬件资源,脱离宿主应用层,完成CPU虚拟化、内存虚拟化、IO虚拟化。
  3. VMX 文件:虚拟机配置,记录虚拟CPU、内存、磁盘、网卡参数。
  4. VMDK 文件:虚拟机虚拟磁盘,本质主机上的一个/多个文件,虚拟机硬盘全部存在这里。
  5. 客户操作系统(Guest OS):虚拟机内部的Windows/Linux,完全独立,不知道自己运行在虚拟机。
  6. VMware Tools:虚拟机内部驱动套件,优化显卡、鼠标、剪贴板共享、文件拖拽、时间同步。

二、四大资源虚拟化原理

1.CPU虚拟化

  • 现代CPU支持 Intel‑VT‑x / AMD‑V 硬件虚拟化扩展(必须开启BIOS虚拟化开关)。
  • VMware 创建多个虚拟CPU(vCPU),把物理CPU时间片切分,多个vCPU轮流调度跑在物理CPU核心。
  • GuestOS的指令不会直接跑在硬件,通过CPU虚拟化扩展做特权指令捕获翻译;没有硬件虚拟化时使用二进制翻译(老版本,性能很差)。

注意:vCPU不是独占物理核心,是分时复用,虚拟机开太多会卡顿。

2.内存虚拟化(最容易踩坑)

三层内存:

  1. 物理主机物理内存(HW‑RAM)
  2. 宿主操作系统虚拟内存
  3. 虚拟机客户机虚拟内存

VMware引入影子页表/EPT(Intel) NPT(AMD)
虚拟机OS以为自己拥有一整块完整内存;VMware维护映射,把虚拟机的虚拟内存地址映射到主机真实内存。

重要:给虚拟机分配的内存,主机物理内存必须尽量够用。如果主机内存不足,会使用主机交换分区,虚拟机性能暴跌。

3.磁盘虚拟化

虚拟机看到的硬盘,就是主机上的.vmdk文件。

  • 动态增长磁盘:vmdk初始很小,虚拟机往硬盘写数据,文件才慢慢变大,最大上限是你设置的磁盘大小。
  • 预分配磁盘:直接一次性占用全部主机磁盘空间,IO性能更好。
    IO请求:虚拟机发起读写虚拟磁盘 → VMware驱动拦截请求 → 转换为主机对vmdk文件读写。

4.网络虚拟化(vmnet虚拟交换机)

VMware自带虚拟交换机vmnet0/vmnet1/vmnet8

  1. 桥接模式(vmnet0):虚拟网卡和物理网卡桥接,虚拟机同局域网独立IP,如同局域网一台真实电脑。
  2. 仅主机模式(vmnet1):只有主机和虚拟机互相访问,不能访问外网。
  3. NAT模式(vmnet8 默认):虚拟机通过主机IP做地址转换上网,虚拟机内部独立网段,外部不能主动访问虚拟机。

三、Type‑2 和 Type‑1 的区别

  • Type‑2(VMware Workstation/VirtualBox):跑在普通操作系统上,适合个人学习,有一层宿主OS开销。
  • Type‑1(VMware ESXi、KVM裸金属):直接安装在物理硬件上,没有宿主系统,服务器虚拟化,性能更高。

补充:KVM属于内核集成的Type‑1/2混合虚拟化;VMware workstation底层也是用硬件VT‑x,和KVM原理相近,只是封装在宿主应用。

四、关键特点

  1. 隔离性:虚拟机之间、虚拟机和主机完全隔离,虚拟机中毒不会直接感染主机。
  2. 可迁移:整套虚拟机就是vmx+vmdk文件,可以拷贝到另一台电脑直接打开运行。
  3. 快照:保存vmdk状态,可以随时回滚到过去状态,原理是写时复制COW,变更的数据写入新差分文件。

五、性能损耗来源

  1. 内存交换(主机内存不够用)
  2. 磁盘IO:vmdk文件在机械硬盘上
  3. vCPU分配过多,超过物理核心,大量CPU调度切换
  4. 没有安装VMware‑Tools,使用通用兼容驱动
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐