虚拟机是运行应用程序和客户机操作系统的逻辑容器。在设计上,所有的 VMware 虚拟机均互相隔离。通过此隔离,多个虚拟机可以在共享硬件的同时安全地运行,既确保能够访问硬件,又保证运行不受干扰。

如果未获得 ESXi 系统管理员明确授予的特权,即便是在虚拟机的客户机操作系统上具有系统管理员特权的用户,也无法突破该隔离层来访问另一个虚拟机。如果某个虚拟机上运行的客户机操作系统发生故障,虚拟机隔离将确保同一台主机上的其他虚拟机可以继续运行。用户仍可以访问其他虚拟机,并且其他虚拟机的性能不会受到影响。

同一硬件上运行的虚拟机互相隔离。虽然虚拟机共享诸如 CPU、内存及 I/O 设备等物理资源,但单个虚拟机上的客户机操作系统只能检测到可供其使用的虚拟设备。

图 1. 虚拟机隔离
虚拟机隔离

VMkernel 可调配所有物理资源。通过 VMkernel 可进行所有物理硬件访问,且虚拟机无法规避此隔离级别。

如同物理机通过网卡与网络中其他计算机进行通信一样,虚拟机也可以通过虚拟交换机与同一主机上运行的其他虚拟机进行通信。而且,虚拟机可通过物理网络适配器与物理网络(包括其他 ESXi 主机上的虚拟机)进行通信。

图 2. 通过虚拟交换机进行虚拟网络连接
通过 ESXi 的虚拟交换机进行虚拟网络连接

虚拟网络连接也会受虚拟机隔离影响。

  • 如果某个虚拟机未与任何其他虚拟机共享虚拟交换机,则该虚拟机与主机中的虚拟机完全隔离。
  • 如果没有为虚拟机配置任何物理网络适配器,则会完全隔离该虚拟机,包括与任何物理或虚拟网络隔离。
  • 如果使用防火墙和防毒软件等保护网络中的虚拟机,该虚拟机则与物理机一样安全。

在主机上设置资源预留和限制,可进一步保护虚拟机。例如,您可以利用资源分配来配置虚拟机,以便其接收到的主机 CPU 资源始终不少于 10%,但也决不超过 20%。

资源预留和限制可防止虚拟机的性能因其他虚拟机消耗过多的共享硬件资源而降低。例如,如果主机上的一台虚拟机由于受到拒绝服务 (DoS) 攻击而出现故障,该虚拟机上的资源限制就会阻止该攻击占据太多硬件资源,以免其他虚拟机受到影响。与此相似,每台虚拟机上的资源预留可在受到 DoS 攻击的虚拟机需要较多资源的情况下确保所有其他虚拟机具有足够的资源可供使用。

默认情况下,ESXi 通过应用分布式算法强制实施某种资源预留,该分布算法将可用主机资源均匀分布于虚拟机之间,同时保留一定百分比的资源供其他系统组件使用。此默认行为在一定程度上为防止 DoS 和分布式拒绝服务 (DDoS) 攻击提供了自然保护。要自定义默认行为,以避免在虚拟机配置中均匀分布资源预留和限制,可逐一指定资源预留和限制。