返回首页

ZVM技术解读·架构篇③|无管理域服务下沉

01 什么是无管理域服务下沉

传统虚拟化中,Hypervisor通常只负责核心虚拟化功能,而系统管理、设备驱动和虚拟I/O等服务则由Xen的Domain 0、KVM的Host Linux以及Jailhouse的Root Cell等外部执行环境承担。这种设计有利于保持Hypervisor轻量,但完整虚拟化功能需多个执行环境协同完成,也由此引入跨环境交互、共享状态以及故障传播等问题。

ZVM的无管理域服务下沉从系统组织方式上解决该问题:不设置独立特权OS,而是依托RTOS底座,将虚拟机管理、虚拟I/O后端和通信等公共服务以模块化服务形式组织在统一底座内部。其变化不在于简单“删除一个Domain”,而在于将“Hypervisor + 外部管理域提供服务”的模式重组为“RTOS统一底座 + 模块化虚拟化服务”的模式。

02 主流虚拟化方案服务组织方式对比

四种架构最核心的差异,在于虚拟化公共服务的部署位置,以及Guest获取完整服务时需要跨越的软件边界。如表1所示,Xen由Domain 0承担Toolstack和虚拟设备后端;KVM是Linux内核中的虚拟化机制,通常与QEMU等用户态虚拟化组件协同工作;Jailhouse以静态资源分区为主,由Linux所在的Root Cell释放资源并创建其他Cell,不提供资源超分、通用虚拟机调度以及通用设备仿真等传统虚拟机功能。其运行时服务链路较短,但虚拟化功能也相对有限。

ZVM采用不同的服务组织方式:既不设置独立管理域,又保留完整虚拟化系统所需的公共服务,并以模块化内置方式实现服务扩展。与单纯追求轻量的Hypervisor相比,“无管理域服务下沉”关注的是服务承载方式的削减与重组,而不是削减服务本身。

表1:主流虚拟化方案服务组织方式对比

架构 服务组织方式 管理和I/O服务依赖 主要耦合特点
Xen Hypervisor+Domain 0 Domain 0提供 Guest—Xen—Domain 0跨域协作
KVM Linux内核KVM + 用户态组件 QEMU、vhost及Host驱动 内核态—用户态—Host OS服务链
Jailhouse Hypervisor+ Linux Root Cell 不提供 运行时简单,配置依赖Root Cell
ZVM RTOS底座+内置模块化服务 由内置模块提供 底座内部受控协作

03 ZVM:模块化系统服务

ZVM将传统管理域承担的管理、I/O、通信等公共能力重新划分,并以服务模块(Service Module)作为基本组织单元,根据功能职责形成模块化服务体系,具体分类如表2所示。

表2:ZVM服务下沉后的模块化服务类别

服务类别 典型功能
虚拟机管理服务 Guest创建、启动、停止、资源配置
资源管理服务 CPU、内存、中断、设备资源分配
虚拟I/O服务 VirtIO-Net、VirtIO-Block、VirtIO-GPU等后端
设备服务 物理设备管理、直通、SR-IOV资源管理
通信服务 Guest间共享内存、消息通知、Zshm等
系统支撑服务 日志、监控、状态管理、故障检测
扩展服务 TSN、GPU、多媒体以及面向行业的专用服务

ZVM的“服务下沉”将处理器、内存、中断和隔离等必要机制保留在虚拟化核心,VirtIO后端、设备服务、网络服务和系统管理等功能则作为独立服务模块存在,并按照具体平台和应用需求进行配置。

ZVM“无管理域服务下沉”采用“核心机制稳定 + 服务模块化 + 功能按需组合”的组织方式,不将所有功能固定编入单一内核。ZVM的内置服务可分为两个逻辑层次(如图1所示):第一层是稳定的虚拟化核心,主要负责CPU虚拟化、内存隔离、中断虚拟化、Guest运行控制和基础资源隔离,构成稳定、精简的核心执行路径。第二层是可扩展的虚拟化服务,根据具体产品需求选择VirtIO-Net、VirtIO-Block、VirtIO-GPU、SR-IOV管理、Zshm共享内存、TSN服务、文件系统服务、GPU服务、监控与日志、故障检测及行业专用设备服务等,各项服务以独立模块组织,并通过标准化接口接入底座。在ZVM中新增服务时,无需增加新的特权OS或管理域,只需增加相应的服务模块。

ZVM可扩展服务体系

图1:ZVM可扩展服务体系

04 示例一 Guest管理路径差异对比

以创建Guest并配置CPU、内存和设备资源为例,四种架构的管理路径如图2所示。Xen通过Dom0中的Toolstack(xl/libxl)发起Hypercall,经Xen完成资源配置;KVM由QEMU等用户态组件通过/dev/kvm ioctl调用KVM,依托Host Linux资源体系创建虚拟机;Jailhouse由Linux Root Cell通过配置接口划分CPU和设备资源创建其他Cell。上述架构均依赖独立管理域完成虚拟机管理,创建过程涉及管理工具栈、系统调用及跨域接口。

ZVM将Guest创建能力集成为RTOS底座中的虚拟机管理服务模块,通过“ZVM管理服务→CPU/内存/中断/设备资源管理→Guest”的内部调用路径完成资源配置,减少独立管理执行环境及跨OS协同开销,将虚拟机管理能力集成到底座内部。

不同架构中Guest创建与资源配置路径对比

图2:不同架构中Guest创建与资源配置路径对比

05 虚拟网卡服务路径差异对比

以Linux Guest通过VirtIO网卡发送数据包为例,Xen依赖Domain 0中的PV后端完成网络服务,链路涉及Guest、Hypervisor和Domain 0;KVM由QEMU、vhost及Host Linux驱动等组件协同实现,涉及Host Linux用户态与内核态多个软件层次;Jailhouse采用静态硬件资源分区,I/O虚拟化能力相对有限。

ZVM将VirtIO后端集成为底座服务模块,形成“Guest VirtIO前端→ZVM VirtIO接口→后端服务模块→设备驱动→物理设备”的调用路径,并将传统“Guest→Hypervisor→管理域/Host OS→后端”链路收敛为底座内部模块调用,减少跨执行环境交互,使虚拟I/O服务路径和管理边界更加明确。

Guest虚拟网卡服务路径对比

图3:Guest虚拟网卡服务路径对比

06 无管理域服务下沉带来的收益

ZVM通过无管理域服务下沉架构,将传统管理域承载的虚拟化服务下沉为RTOS底座内的模块化服务,其收益主要体现在以下两方面:

  • (1) 降低跨域耦合,增强系统可控性
    各服务运行于统一RTOS底座,通过CPU核、内存权限和访问接口实现隔离,保持独立执行上下文。ZVM将原由管理域承载的虚拟化服务下沉为底座模块,将跨OS域协同转化为底座内部受控模块调用,减少跨域依赖,并使接口关系和故障边界更加明确,提升系统可控性。
  • (2) 提升服务组合与扩展灵活性
    ZVM以Service Module作为虚拟化功能扩展单元,形成“ZVM Core + VirtIO-Net Service + VirtIO-Block Service + GPU Service + SR-IOV Service + TSN Service + Zshm Service + …”的模块化架构。服务模块可根据应用场景按需组合,在保持底座核心稳定的同时灵活扩展虚拟化能力。

07 小结

ZVM的“无管理域服务下沉”架构将虚拟化公共能力拆分为独立服务模块,并集成于统一RTOS底座,实现虚拟化服务与管理域解耦。该架构减少独立执行域和跨域接口依赖,将传统跨OS服务协同转化为底座内部模块协同,同时以Service Module作为能力扩展单元,支持虚拟化功能按需组合、裁剪和扩展。

相比依赖Domain 0、Host Linux或Root Cell承载管理与服务的传统架构,ZVM通过模块化服务内置,在保持虚拟化核心精简的同时提供可组合的服务能力,形成面向嵌入式实时虚拟化场景的一体化系统软件底座。