虚拟机怎样分配物理机资源?

虚拟机通过虚拟化层将物理服务器的CPU、内存、存储和网络资源抽象化,动态分配给多个虚拟机独立运行

在当今的云计算和数据中心环境中,虚拟机(Virtual Machine, VM)已成为部署应用和服务的主流方式,其核心魅力在于能够将一台强大的物理服务器(宿主机)的硬件资源“化整为零”,高效地分配给多个独立的虚拟环境,这个神奇的“划分”过程究竟是如何实现的?背后的技术原理是什么?本文将深入浅出地为您解析虚拟机划分物理资源的关键机制。

虚拟机怎样分配物理机资源?

核心引擎:虚拟化层(Hypervisor)

虚拟机能够运行并获取资源,完全依赖于一个核心软件层——虚拟化层,通常称为Hypervisor(或虚拟机监控器 VMM),它直接运行在物理硬件之上(Type 1,如 VMware ESXi, Microsoft Hyper-V, KVM/Xen)或运行在宿主机操作系统之上(Type 2,如 VMware Workstation, Oracle VirtualBox),Hypervisor 扮演着“资源调度大师”和“交通警察”的双重角色,负责:

  1. 抽象物理资源: 将物理的 CPU、内存、存储、网络设备等硬件资源虚拟化,创建出统一的、逻辑上的资源池。
  2. 分配虚拟资源: 根据预设的策略和配置,从资源池中划分出相应的份额(CPU 核心、内存大小、磁盘空间、网络带宽)给每一个虚拟机。
  3. 调度与隔离: 管理所有虚拟机对物理资源的访问请求,确保它们能公平、高效地共享资源,同时严格隔离彼此,防止一个虚拟机的故障或高负载影响其他虚拟机或宿主机本身。

让我们具体看看各类物理资源是如何被划分的:

CPU(处理器)资源划分:时间片轮转与份额分配

物理 CPU 的核心(Cores)和线程(Threads, 如超线程技术)是宝贵的计算能力来源,Hypervisor 主要通过以下方式划分 CPU 资源:

  • 虚拟 CPU(vCPU)分配: 管理员为每个虚拟机配置一定数量的 vCPU,每个 vCPU 本质上代表的是虚拟机“认为”它拥有的一个处理器核心。
  • 时间片轮转调度: Hypervisor 的核心调度器采用类似操作系统调度进程的方式,它将物理 CPU 的时间划分为非常小的时间片(毫秒级),在每个时间片内,调度器选择一个 vCPU 的线程在物理 CPU 核心上执行,时间片用完或发生中断/阻塞时,调度器会切换到另一个 vCPU 的线程,通过快速轮转,多个 vCPU(即使数量超过物理核心数)都能获得执行时间,宏观上实现“并行”。
  • 份额(Shares)与预留(Reservation):
    • 份额: 定义虚拟机在 CPU 资源竞争时的相对优先级,VM A 份额为 1000,VM B 份额为 2000,当两者都需要 CPU 时,VM B 理论上能获得两倍于 VM A 的 CPU 时间,份额只在资源紧张时生效。
    • 预留: 保证虚拟机最低可获得的 CPU 资源量(1 GHz),即使宿主机负载很高,该虚拟机也能获得这部分保障的计算能力。
    • 上限(Limit): 限制虚拟机最多能使用的 CPU 资源量(4 GHz),防止单个 VM 耗尽所有 CPU。
  • 硬件辅助虚拟化(Intel VT-x / AMD-V): 现代 CPU 内置的虚拟化指令集极大提升了 Hypervisor 调度 vCPU 的效率,减少了传统软件模拟带来的性能开销,使 vCPU 的执行更接近物理 CPU 的性能。

内存(RAM)资源划分:映射、共享与回收

虚拟机怎样分配物理机资源?

物理内存的划分更为复杂,目标是让每个虚拟机都认为自己拥有连续、独占的指定大小内存,同时高效利用物理 RAM。

  • 虚拟内存地址空间: 每个虚拟机拥有自己独立的、从 0 开始的连续虚拟内存地址空间(0 到 4GB)。
  • 物理内存映射: Hypervisor 维护一个映射表(通常借助硬件特性如 Intel EPT 或 AMD RVI/NPT),将虚拟机的虚拟内存地址(Guest Virtual Address, GVA)首先映射到虚拟机“认为”的物理地址(Guest Physical Address, GPA),然后再由 Hypervisor 映射到宿主机的真实物理内存地址(Host Physical Address, HPA),这个过程对虚拟机完全透明。
  • 内存超分(Overcommitment): Hypervisor 允许分配给所有虚拟机的内存总量超过宿主机的实际物理内存总量,这是基于并非所有虚拟机都会同时满负荷使用其所有内存的假设。
  • 内存回收技术(应对超分):
    • 空闲内存税/气球驱动(Balloon Driver): Hypervisor 在虚拟机内部署一个特殊的驱动程序(气球驱动),当宿主机物理内存紧张时,Hypervisor 通知气球驱动在虚拟机内部“膨胀”,即申请占用一部分该虚拟机“认为”空闲的内存,虚拟机操作系统会将这些内存页交换到其虚拟磁盘上(产生性能开销),Hypervisor 就可以安全地回收这些物理内存页给其他更需要的虚拟机使用。
    • 透明页共享(Transparent Page Sharing – TPS): Hypervisor 扫描所有虚拟机内存的内容,如果发现多个虚拟机拥有完全相同内容的内存页(相同的操作系统二进制文件、公共库),则只在物理内存中保留一份副本,并通过写时复制(Copy-on-Write)机制让所有需要该页的虚拟机映射到这一份物理页上,这大大节省了物理内存消耗。
    • 内存压缩: 将不常用的内存页在宿主机层面进行压缩存储,需要时再解压,减少对磁盘交换(Swap)的依赖。
  • 内存预留(Reservation)与上限(Limit): 类似于 CPU,可以设置虚拟机保证获得的最小物理内存(预留),以及最多能使用的物理内存上限(限制)。

存储(磁盘)资源划分:虚拟磁盘与存储池

物理存储设备(本地硬盘、SSD、SAN/NAS 存储)的容量被抽象和划分,为虚拟机提供虚拟磁盘。

  • 虚拟磁盘文件: 最常见的模式,虚拟机看到的“硬盘”实际上是一个或多个存储在宿主机文件系统(如 VMFS, NTFS, EXT4)或共享存储上的大文件(如 .vmdk, .vhd/.vhdx, .qcow2),Hypervisor 负责将这些文件的读写操作翻译成对底层物理存储设备的 I/O 请求。
  • 直通(Passthrough)/ RDM: 将整个物理磁盘或 LUN 直接分配给特定虚拟机,绕过 Hypervisor 的文件系统层,虚拟机操作系统直接控制该物理设备,性能通常更好,但牺牲了 Hypervisor 提供的存储高级功能(如快照、链接克隆)。
  • 存储池抽象: Hypervisor 通常将后端物理存储(本地磁盘、SAN LUN、NAS 共享)聚合成一个或多个逻辑的“存储池”或“数据存储”,管理员从这些池中分配空间来创建虚拟磁盘。
  • 存储分配策略:
    • 厚置备延迟置零(Thick Provision Lazy Zeroed): 创建虚拟磁盘时立即占用所需的全部物理空间,但只在首次写入数据块时才进行清零操作(安全擦除旧数据),分配快,首次写入稍慢。
    • 厚置备置零(Thick Provision Eager Zeroed): 创建时立即占用并清零所有空间,分配慢,但后续写入性能最好,通常用于需要高保障的场景(如 FT)。
    • 精简置备(Thin Provisioning): 仅在实际写入数据时才按需分配物理空间,极大提高存储利用率(可超分),但需要监控剩余物理空间,避免耗尽。
  • 存储 I/O 控制: Hypervisor 可以对虚拟磁盘的 I/O 操作进行优先级调度(份额 Shares)和限制(上限 Limits),确保关键虚拟机获得足够的存储带宽和 IOPS(每秒输入输出操作数),并防止某个虚拟机过度占用存储资源。

网络资源划分:虚拟交换机与带宽管理

物理服务器的网络接口卡(NIC)需要被多个虚拟机共享以连接外部网络。

  • 虚拟网络适配器(vNIC): 每个虚拟机被配置一个或多个虚拟网卡。
  • 虚拟交换机(vSwitch): Hypervisor 内部创建一个软件实现的交换机,虚拟机的 vNIC 连接到这个虚拟交换机的端口上,虚拟交换机再通过物理 NIC(或 NIC 组合)上行连接到物理网络。
  • 网络隔离与分段: 虚拟交换机支持 VLAN 标记、私有网络(仅虚拟机间通信)、防火墙规则等,实现虚拟机网络流量的隔离和安全策略控制。
  • 带宽管理:
    • 份额(Shares): 定义虚拟机在带宽竞争时的相对优先级。
    • 预留(Reservation): 保证虚拟机可获得的最小带宽。
    • 上限(Limit): 限制虚拟机最大可用的带宽(入站和/或出站)。
  • SR-IOV(单根 I/O 虚拟化): 一种硬件辅助技术,允许物理 NIC 将其资源划分为多个虚拟功能(VF),每个 VF 可以直接分配给一个虚拟机,绕过 Hypervisor 的虚拟交换机层,这能提供接近物理网卡的极低延迟和高吞吐量性能,常用于高性能计算和低延迟网络场景。

高效、隔离与弹性的基石

虚拟机怎样分配物理机资源?

虚拟机对物理资源的划分,是 Hypervisor 通过精密的抽象、映射、调度和管理机制实现的,其核心目标在于:

  • 高效利用: 通过超分、共享(如 TPS)、按需分配(如精简置备)等技术,最大化物理资源的利用率,降低成本。
  • 严格隔离: 确保每个虚拟机在 CPU、内存、存储、网络等资源的使用上相互独立,一个虚拟机的活动(甚至崩溃)不会影响其他虚拟机和宿主机。
  • 灵活弹性: 允许管理员根据需求动态调整分配给虚拟机的资源(如 CPU 核心数、内存大小、磁盘空间),实现资源的快速部署和伸缩。
  • 性能保障: 通过预留、份额、上限等 QoS(服务质量)机制,为关键业务虚拟机提供资源保障,防止资源争抢导致的性能下降。

理解这些划分机制,有助于管理员更合理地规划资源、优化虚拟机性能、保障业务稳定运行,并充分利用虚拟化技术带来的巨大优势,虚拟化资源管理是一个持续优化和平衡的过程,需要结合监控工具和业务需求进行精细调整。


引用说明:

  • 本文阐述的虚拟机资源划分原理,核心思想基于业界主流的虚拟化架构(如 VMware vSphere, Microsoft Hyper-V, KVM/Xen, Citrix Hypervisor)的通用实现方式。
  • 具体技术细节(如 EPT/RVI, TPS, Balloon Driver, SR-IOV, 存储置备类型)参考了 VMware 官方文档 (kb.vmware.com)、Microsoft Learn (learn.microsoft.com) Hyper-V 的内容、Red Hat KVM 的文档 (access.redhat.com) 以及 Intel 和 AMD 关于其硬件虚拟化技术的白皮书。
  • 资源调度概念(时间片轮转、份额、预留、上限)是操作系统和虚拟化领域的基础理论,可在《操作系统概念》、《虚拟化技术原理与实现》等经典教材中找到详细论述。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/35626.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月22日 20:42
下一篇 2025年6月22日 20:46

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN