一. StratoVirt是什么?
StratoVirt是华为openEuler系统中引入的虚拟化技术,
作用与Qemu大体相同,
用Rust语言编写实现,
一套架构统一支持虚拟机、容器、Serverless三种场景,
号称在轻量低噪、软硬协同、Rust语言级安全等方面有优势。
另外StratoVirt也是开源的
show me the code:
https://gitee.com/openeuler/stratovirt
二. 为什么会有StratoVirt?
已经有Qemu了,为什么要重复造轮子?大抵有如下原因:
1.目前 qemu已经有157万代码,而且其中又有很大一部分代码是用来支持legacy特性或者设备的,功能和设备严重耦合在一起,导致无法轻装上阵。
2.QEMU的CVE问题,其中有将近一半是因为内存问题导致的,StratoVirt社区系统通过Rust,来避免CVE。
3.容器轻量,但不够安全;虚拟机安全,但不够轻量;StratoVirt系统能够即构建出轻量虚拟机又能构建出标准虚拟机。
StratoVirt 功能主要支持轻量虚拟机和标准虚拟机两种模式:
轻量虚拟机模式下,单虚机内存底噪能够小于 4MB,启动时间小于 50ms,且支持毫秒级时延的设备极速伸缩能力;
标准虚拟机模式下可支持完整的机器模型,启动标准内核,可以取代 Qemu 的作用,同时在代码规模和安全性上却有较大提升。
三. StratoVirt和qemu有什么区别?
在整体架构上来说,StratoVirt和qemu区别不大,向下基于KVM提供的硬件辅助虚拟化来保证性能。向上可以对接Libvirt来提供虚拟机管理,也可以对接iSula和Docker来提供容器管理。
StratoVirt内部架构上来讲,组件化是其最大的特点,例如在StratoVirt中引入了device model的概念,基于此实现了CPU、扁平内存、堆叠内存、virtio设备PCI设备等多种公共组件。
针对轻量化场景,可以选用轻量机型主板并在此基础上增加CPU、扁平内存、Virtio设备等必要组件。
针对标准化场景,可以选用标准机型主板并增加CPU、堆叠内存模型、PCI系统、Virtio设备等组件,这样便可以灵活应对各种场景的需求。
最后总结:
docker太重了?因此有了isula。qemu也太重了?因此有了stratovirt。