StratoVirt设计

概述

StratoVirt是一种基于Linux内核的虚拟机(KVM)的开源轻量级虚拟化技术;
StratoVirt在保持传统虚拟化的隔离能力和安全能力的同时,降低了内存资源消耗,提高了虚拟机启动速度;
StratoVirt可以应用于微服务或函数计算等serverless场景;
StratoVirt保留了相应接口和设计,用于快速导入更多特性,直至支持标准虚拟化;

架构

StratoVirt的核心架构如下图所示,从上到下分为三层:

  • OCI兼容API: StratoVirt使用QMP协议与外部系统通信,兼容OCI;
  • BootLoader: StratoVirt使用简单的BootLoader加载内核镜像,而不像传统的繁琐的BIOS和Grub引导方式,实现快速启动;
  • 轻量化:为了提高性能和减少攻击面,StratoVirt最小化了用户态设备的模拟;使用KVM仿真设备和半虚拟化设备,如GIC、串行、RTC和virtio设备;

输入图片说明

特性

  • 基于硬件的高隔离能力;
  • 快速冷启动:得益于极简设计,StratoVirt可以在50ms内启动microVM;
  • 低内存开销: StratoVirt的内存占用低于4MB ;
  • IO增强: StratoVirt提供普通IO能力与极简IO设备仿真;
  • OCI兼容性:StratoVirt与isula和kata容器配合使用,可以完美融入Kubernetes生态系统;
  • 多平台支持:全面支持Intel和ARM平台;
  • 可扩展性:StratoVirt保留接口和设计,用于导入更多特性,甚至扩展到标准虚拟化支持;
  • 安全性:运行时系统调用数小于39;

实现

运行架构

  • StratoVirt虚拟机是Linux中一个独立的进程。进程有两种线程:主线程和VCPU线程;
  • 主线程是异步收集和处理来自外部模块(如VCPU线程)的事件的循环;
  • 每个VCPU都有一个线程处理本VCPU的trap事件;

约束

关注我们

StratoVirt 当前已经在 openEuler 社区(openEuler 是一个开源、免费的 Linux 发行版平台,将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系)开源。在未来的一段时间我们将开展一系列主题的分享,让大家更加详细的了解 StratoVirt 的实现,非常期待您的围观和加入!

项目地址:https://gitee.com/openeuler/stratovirt

项目 wiki:https://gitee.com/openeuler/stratovirt/wikis

项目交流:virt 邮件列表 或提交一个 issue。

virt 邮件列表:https://mailweb.openeuler.org/postorius/lists/virt.openeuler.org/
提交 issue:https://gitee.com/openeuler/stratovirt/issues

  • 仅支持Linux操作系统,推荐内核版本为4.19;
  • 客户端操作系统仅支持Linux,内核版本建议为4.19;
  • StratoVirt在openEuler进行了全面测试;
  • 最大支持254个CPU;
  • StratoVirt 未来

    StratoVirt 的发展路标为,通过一套代码架构分别提供轻量以及标准机型,支持 serverless、安全容器、标准虚机等多种应用场景:

  • 轻量虚拟机模式下,单虚机内存底噪小于 4MB,启动时间小于 50ms,且支持 ms 级时延的设备极速伸缩能力,当前已经开发完毕,2020 年 9 月已经在 openEuler 社区开源;

  • 标准虚拟机模式下,可支持完整的机器模型,启动标准内核镜像,可以达成 Qemu 的能力,同时在代码规模和安全性上有较大优势。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐