虚拟机(Virtual Machine,缩写VM)
定义
虚拟机(Virtual Machine,缩写VM)是基于计算机架构,通过软件对计算机系统进行虚拟化,从而提供跟实体计算机相同功能的计算机系统。它能在完全隔离的环境下,利用软件模拟硬件系统功能,还可实现与物理主机的资源同步 。
分类
- 系统虚拟机:被视为实体计算机高效且独立的副本,是严密隔离、内含操作系统和应用的软件容器。多个虚拟机可置于一台计算机,实现在单个物理服务器(主机)上运行多个操作系统和应用 。比如在一台物理服务器上同时运行Windows和Linux系统的虚拟机,分别提供不同服务。
- 进程虚拟机:支持单一进程,虚拟化软件位于ABI接口、操作系统和硬件组合之上,仿真用户级指令和操作系统调用 。像Java虚拟机(JVM ),支持Java程序运行,消除了Java程序与机器平台的依赖关系。
关键组件
- 虚拟机监视器(Hypervisor):也叫Virtual Machine Monitor ,是运行在物理服务器和操作系统间的中间软件层,允许多个操作系统和应用共享一套基础物理硬件,可协调访问服务器上的物理设备和虚拟机,是虚拟化技术核心 。比如在数据中心,Hypervisor可让多个虚拟机共享服务器的CPU、内存、存储等资源。
- 虚拟机管理器(VMM):用于管理相互独立运行的虚拟机,在逻辑上分离虚拟机,为其分配底层计算能力、内存和存储分片,防止虚拟机相互干扰 。
实现原理
通过软件模拟硬件功能,包括CPU、内存、硬盘、网卡等设备 。以VMware虚拟机为例,安装后创建虚拟机时需指定操作系统类型、分配CPU核心数、内存大小、硬盘容量等资源。创建完成启动虚拟机,其内部操作系统会认为自己在真实硬件上运行。 运行时,Hypervisor负责将虚拟机的硬件访问请求转换为对物理硬件的实际操作,同时管理虚拟机的资源分配和调度 。
优点
- 分区:在一台物理机上运行多个虚拟机,每个虚拟机相互隔离,可同时运行不同操作系统及应用程序,提高硬件利用率,降低成本 。如企业用一台服务器部署多个虚拟机,分别运行数据库、Web服务等。
- 封装:虚拟机及其应用、配置等可封装成文件,便于复制、迁移和备份 。例如可快速复制虚拟机部署新环境,或迁移到其他物理服务器。
- 隔离:虚拟机间相互隔离,一个虚拟机故障或受攻击,不影响其他虚拟机,保障系统稳定性和安全性 。
- 兼容性:能在不兼容的硬件上运行特定操作系统或软件 。比如在新电脑运行老旧软件,可通过虚拟机模拟其兼容的运行环境。
缺点
- 性能损失:运行在宿主操作系统之上,虚拟机性能受物理机性能和虚拟化开销影响,比直接在物理机运行程序性能低 。
- 资源竞争:多个虚拟机共享物理机资源,资源分配不合理会导致资源竞争,影响性能 。如多个虚拟机同时大量占用CPU或内存。
- 软件兼容性问题:部分软件在虚拟机中运行可能出现兼容性问题 。如一些对硬件直接访问要求高的软件。
应用场景
- 开发测试:开发人员可创建多个不同操作系统和环境的虚拟机,测试软件兼容性、稳定性 。如开发跨平台软件,在Windows、Linux、macOS虚拟机分别测试。
- 服务器整合:企业数据中心用虚拟机整合服务器,将多个应用部署在一台物理服务器的不同虚拟机,提高资源利用率,降低能耗和管理成本 。
- 多操作系统体验:用户可在一台计算机体验多个操作系统,无需更换硬件 。如在Windows主机安装Linux虚拟机。
- 软件演示和培训:制作包含特定软件和数据的虚拟机文件,方便软件演示和培训,保证环境一致性 。
- 安全隔离:用于隔离危险或不可信程序,防止对主机系统造成损害 。如运行来源不明软件或进行安全测试。
两类实现
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在Host OS之上,依赖于Host OS为其分配物理资源 |
资源分配方式 | 在安装Guest OS时,VMM在原本的硬盘上自行分配存储空间,类似“外核”分配方式,分配未经抽象的物理硬件 | Guest OS拥有自己的虚拟磁盘(本质是Host OS文件系统中的大文件),分配到的内存是虚拟内存 |
性能 | 性能更好 | 性能更差,需Host OS作为“中介” |
可支持的虚拟机数量 | 更多,无需与Host OS竞争资源,相同硬件资源可支持更多虚拟机 | 更少,Host OS及之上运行的其他进程需占用物理资源,限制虚拟机数量 |
虚拟机的可迁移性 | 更差 | 更好,只需导出虚拟机镜像文件即可迁移到另一台Host OS上,商业化应用更广泛 |
运行模式 | 运行在最高特权级(Ring 0),可执行最高特权指令 | 部分运行在用户态、部分运行在内核态。Guest OS系统调用被VMM截获,转化为VMM对Host OS的系统调用 |