StratoVirt是计算产业中面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器、Serverless三种场景。StratoVirt在轻量低噪、软硬协同、Rust语言级安全等方面具备关键技术竞争优势。
StratoVirt预留了接口和设计来支持更多特性,未来甚至向标准虚拟化演进。
编译stratovirt之前需要确保已经安装了Rust语言环境以及Cargo软件
$ yum install rust
$ yum install cargo
当然,你也可以参考以下链接进行安装:
https://www.rust-lang.org/tools/install
运行StratoVirt需要具备如下环境:
查看设备是否存在
$ ls /dev/vhost-vsock
若该设备不存在,请执行如下命令生成/dev/vhost-vsock设备。
$ modprobe vhost_vsock
为了能够使用QMP命令,需要安装nmap工具,在配置yum源的前提下,可执行如下命令安装nmap。
# yum install nmap
为了快速上手StratoVirt,需要准备
可以通过以下链接获取官网的linux内核镜像和rootfs镜像:https://repo.openeuler.org/openEuler-21.03/stratovirt_img/
如果你是x86_64位机用户的话,可以尝试以下提供的命令直接进行镜像资源获取
$ wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/openEuler-21.03-stratovirt-x86_64.img.xz //rootfs镜像
$ wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/vmlinux.bin //kernel镜像
首先,将stratovirt仓库克隆到本地;然后执行编译命令
$ git clone https://gitee.com/openeuler/stratovirt.git
$ cd stratovirt
$ cargo build --release
可以在target/release/stratovirt路径下找到生成的二进制文件
将事先准备好的Kernel镜像和rootfs镜像所在的路径作为参数填入对应的位置,命令如下:
# 如果-api-channel的socket文件已经存在,请先删除它
$ ./target/release/stratovirt \
-kernel /path/to/kernel \
-append console=ttyS0 root=/dev/vda reboot=k panic=1 \
-drive file=/path/to/rootfs,id=rootfs,readonly=off \
-api-channel unix:/path/to/socket \
-serial stdio
至此,就能够成功运行stratovirt了。
https://gitee.com/zhulingda/stratovirt/blob/master/README.ch.md
https://docs.openeuler.org/zh/docs/21.03/docs/StratoVirt/StratoVirtGuide.html