一、stratovirt的简介
StratoVirt是计算产业中面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器、Serverless三种场景。StratoVirt在轻量低噪、软硬协同、Rust语言级安全等方面具备关键技术竞争优势。
StratoVirt预留了接口和设计来支持更多特性,未来甚至向标准虚拟化演进。
二、安装stratovirt的软硬件要求
1、最低硬件要求
- 处理器架构:仅支持AArch64和x86_64处理器架构。AArch64需要ARMv8及更高版本且支持虚拟化扩展;x86_64支持VT-x
- 2核CPU
- 4GiB内存
- 16GiB可用磁盘空间
2、软件要求
- openEuler 21.03
三、详细操作
1、环境准备
1.1编译环境准备
编译stratovirt之前需要确保已经安装了Rust语言环境以及Cargo软件
$ yum install rust
$ yum install cargo
当然,你也可以参考以下链接进行安装:
https://www.rust-lang.org/tools/install
1.2 运行环境准备
运行StratoVirt需要具备如下环境:
- /dev/vhost-vsock设备(用于实现mmio)
- nmap工具
- Kernel(内核)镜像和rootfs(文件系统)镜像
1.2.1 /dev/vhost-vsock设备
查看设备是否存在
$ ls /dev/vhost-vsock
若该设备不存在,请执行如下命令生成/dev/vhost-vsock设备。
$ modprobe vhost_vsock
1.2.2 nmap工具
为了能够使用QMP命令,需要安装nmap工具,在配置yum源的前提下,可执行如下命令安装nmap。
# yum install nmap
1.2.3 Kernel镜像和rootfs镜像
为了快速上手StratoVirt,需要准备
- PE格式或bzImage格式(仅x86_64)的Linux内核镜像
- ext4文件系统,raw格式rootfs的镜像
可以通过以下链接获取官网的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镜像
2、编译软件
首先,将stratovirt仓库克隆到本地;然后执行编译命令
$ git clone https://gitee.com/openeuler/stratovirt.git
$ cd stratovirt
$ cargo build --release
可以在target/release/stratovirt路径下找到生成的二进制文件
3、运行软件
将事先准备好的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