searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

stratovirt使用vhost-user-blk作为云硬盘

2023-05-26 05:37:04
103
0

stratovirt使用vhost-user设备

openEuler22.03版本及stratovirt2.2版本以上可以支持使用vhost-user-blk设备

 通过源码构建StratoVirt

 

1. 检查Rust构建环境
为了构建StratoVirt,需保证已经安装了Rust语言环境和Cargo软件。
rustc的推荐版本为1.51.0及其之后的版本, 否则编译可能失败。
 
$ rustc --version
rustc 1.51.0

 

如果你想部署rust环境,下面的链接可以帮助你:
<https://www.rust-lang.org/tools/install>
 
2. 使用glibc构建
使用glibc构建则StratoVirt为动态链接二进制。它是StratoVirt的默认构建方式。
# 添加gnu工具链,如果已安装,请跳过
$ arch=`uname -m`
$ rustup target add ${arch}-unknown-linux-gnu

#构建StratoVirt
$ cargo build --release --target ${arch}-unknown-linux-gnu
现在你可找到StratoVirt二进制的路径在 target/${arch}-unknown-linux-gnu/release/stratovirt.

 

stratovirt使用vhost-user设备

目前stratovirt仅支持标准型虚拟机挂载vhost-user-blk设备,所以此处所有配置都是针对标准型虚机,挂载总线为vhost-user-blk
stratovirt使用rootfs+kernel方式`暂时未启动成功,下面是以raw格式镜像启动虚机并挂载vhost-user-blk盘的方法
0. 前置准备
StratoVirt运行需要实现mmio设备,所以运行之前确保存在设备/dev/vhost-vsock
查看该设备是否存在:
 
ls /dev/vhost-vsock
 
若该设备不存在,请执行如下命令生成/dev/vhost-vsock设备
 
modprobe vhost_vsock
 
为了能够使用QMP命令,需要安装nmap工具,在配置yum源的前提下,可执行如下命令安装nmap
 
yum install nmap
 
1. 安装标准启动固件
直接安装EDK2
在x86_64平台, 运行
 
yum install -y edk2-ovmf

 

安装edk2之后,在x86_64平台, OVMF_CODE.fd 和 OVMF_VARS.fd`文件存在于
/usr/share/edk2/ovmf 目录下。
2. 准备raw格式镜像
qemu-img convert -f qcow2 -O raw openEuler-21.03-x86_64.qcow2 openEuler-21.03-x86_64.raw
3. 启动标准型虚机
# 先按上文方法启动vhost,并创建vhost-user-blk设备,然后启动
stratovirt \
-machine q35,mem-share=on \
-smp 1 \
-mem-path /dev/hugepages \
-m 512M \
-append "console=ttyS0 reboot=k panic=1 root=/dev/vda rw" \
-drive file=/usr/share/edk2/ovmf/OVMF_CODE.fd,if=pflash,unit=0,readonly=true \
-drive file=/usr/share/edk2/ovmf/OVMF_VARS.fd,if=pflash,unit=1 \
-drive file=/root/openEuler-22.03-LTS-x86_64.raw,id=raw_image,readonly=off,direct=off \
-device virtio-blk-pci,drive=raw_image,id=blk0,bus=pcie.0,addr=0x2,bootindex=0 \
-chardev socket,id=spdk_vhost_blk0,path=/var/tmp/vhost.0 \
-device vhost-user-blk-pci,id=blk1,chardev=spdk_vhost_blk0,bus=pcie.0,addr=0x3 \
-qmp unix:/tmp/stratovirt.socket,server,nowait \
-serial stdio -D /root/virt.log
 
4. 虚拟机管理
通过qmp管理虚机
 
ncat -U /tmp/stratovirt.socket
 
0条评论
0 / 1000