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或管理域,只需增加相应的服务模块。
图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协同开销,将虚拟机管理能力集成到底座内部。
图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服务路径和管理边界更加明确。
图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通过模块化服务内置,在保持虚拟化核心精简的同时提供可组合的服务能力,形成面向嵌入式实时虚拟化场景的一体化系统软件底座。