StratoVirt是一种基于Linux内核虚拟化(KVM)的开源轻量级虚拟化技术,在保持传统虚拟化的隔离能力和安全能力的同时,降低了内存资源消耗,提高了虚拟机启动速度。StratoVirt可以应用于微服务或函数计算等Serverless场景,保留了相应接口和设计,用于快速导入更多特性,直至支持通用虚拟化。
StratoVirt的核心架构如图1所示,从上到下分为三层。
图1 StratoVirt
- 外部API:StratoVirt使用QMP协议与外部系统通信,兼容OCI,同时支持对接libvirt。
- bootloader:轻量化场景下使用简单的bootloader加载内核镜像实现快速启动,而不像传统的繁琐的BIOS和Grub引导方式;在通用虚拟化场景下,支持UEFI启动。
- 模拟主板microvm:为了提高性能和减少攻击面,StratoVirt最小化了用户态设备的模拟。模拟实现了KVM仿真设备和半虚拟化设备,如GIC、串行、RTC和virtio-mmio设备。
- 通用机型:提供ACPI表实现UEFI启动,支持添加virtio-pci以及VFIO直通设备等,极大提高虚拟机的I/O性能。
StratoVirt配合iSulad容器引擎和Kubernetes编排引擎可形成完整的容器解决方案,支持Serverless负载高效运行。