StratoVirt 是计算产业中面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器、Serverless 三种场景。StratoVirt 在轻量低噪、软硬协同、Rust 语言级安全等方面具备关键技术竞争优势。
StratoVirt 在保留传统虚拟化的隔离能力和安全能力的同时,降低了内存资源消耗,提高了虚拟机的启动速度。StratoVirt 可应用于微服务或无服务器场景,如函数计算。
StratoVirt 预留了接口和设计来支持更多特性,未来甚至向标准虚拟化演进。
特性:
- 基于硬件的高度隔离。
- 快速冷启动:得益于极简设计,StratoVirt可以在50ms内启动microVM。
- 低内存开销。StratoVirt 的内存占用只有 3MB。
- IO 增强:StratoVirt 通过最小化的IO设备模拟提供正常的IO能力。
- OCI兼容性:StratoVirt可与isula和kata容器一起使用,并且可以完美地集成到Kubernetes生态系统中。
- 多平台支持:全面支持Intel和Arm平台。
- 可扩展性:StratoVirt 为导入更多的功能保留了接口和设计,甚至扩展到标准的虚拟化支持。
架构
下图显示了 StratoVirt 的核心架构,从上到下共有三层。
- OCI compatibility API:StratoVirt使用QMP协议与外部系统通信,并与OCI兼容。
- BootLoader:StratoVirt 采用简单的 BootLoader 加载内核镜像,而不是传统繁琐的BIOS和Grub启动模式,实现快速启动。
- 轻量化:为了提高性能,减少攻击面,StratoVirt尽量减少用户模式设备的模拟。采用KVM模拟设备和准虚拟化设备,如GIC、串口、RTC和virtio设备。
运行架构
StratoVirt 虚拟机是 Linux 中的一个独立进程,该进程有两种类型的线程:主线程和VCPU线程。主线程是一个循环,用于异步收集和处理来自外部模块的事件,比如VCPU线程。每个VCPU都有一个线程来处理这个VCPU的陷阱事件。
限制条件
- 仅支持 Linux 操作系统。推荐的内核版本是4.19。
- 仅支持 Linux 作为客户端操作系统,建议的内核版本为4.19。
- 最多支持254个CPU。
https://gitee.com/openeuler/stratovirt