Stratovirt安装及使用

文章目录

安装

硬件要求

处理器架构:仅支持AArch64和x86_64处理器架构。AArch64需要ARMv8及更高版本且支持虚拟化扩展;x86_64支持VT-x。

软件要求

操作系统:openEuler 20.09及更高版本

我当前安装的stratovirt版本是2.1.0,不同版本的命令可能有些许改动,但是流程都一样

bash 复制代码
yum install stratovirt
# 安装nmap
yum install -y nmap
yum install rust
yum install cargo
# 检查设备是否存在
ls /dev/vhost-vsock
# 如果不存在,加载内核模块
modprobe vhost_vsock
# 安装qemu和libvirt
yum install -y qemu libvirt

创建虚拟机

使用Stratovirt创建一个openEuler-21.03的虚拟机,并且网络模式设置为桥接模式

1、宿主机配置网络桥接模式

bash 复制代码
# 配置网络桥接模式,安装网桥管理工具
yum install -y bridge-utils iproute
# 创建网桥
brctl addbr qbr0
# 将宿主机的物理网卡(如 eth18)加入网桥
# 注意:这会断开当前 SSH 连接,建议通过 console 操作或提前配置
brctl addif qbr0 ens18
# 成功如下图
bash 复制代码
# 启动网桥和tap设备
ip link set qbr0 up
ip tuntap add tap0 mode tap
brctl addif qbr0 tap0
ip link set tap0 up
bash 复制代码
# 这个时候宿主机原来的网卡就不能用了,已经被当成网桥设备了,所以要重新配置
# 1、清除ens18上的ip
ip addr flush dev ens18
# 2. 将 IP 配置到 qbr0 网桥
sudo ip addr add 192.168.101.99/24 dev qbr0
# 3. 添加默认网关(如果原来有)
sudo ip route add default via 192.168.101.1

永久配置网桥

bash 复制代码
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens18
# 写入如下内容
DEVICE=ens18
TYPE=Ethernet
ONBOOT=yes
BRIDGE=qbr0
bash 复制代码
sudo vi /etc/sysconfig/network-scripts/ifcfg-qbr0
# 写入如下内容
DEVICE=qbr0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.101.99
NETMASK=255.255.255.0
GATEWAY=192.168.101.1
DNS1=8.8.8.8
DNS2=114.114.114.114
bash 复制代码
# 重启网络服务
sudo systemctl restart NetworkManager

2、启动虚拟机

bash 复制代码
# 宿主机创建虚拟机文件存放地址
mkdir /var/lib/stratovirt & cd /var/lib/stratovirt
# 获取欧拉官网的rootfs镜像和linux内核镜像
wget https://archives.openeuler.openatom.cn/openEuler-21.03/stratovirt_img/x86_64/vmlinux.bin   # linux内核镜像
wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/openEuler-21.03-stratovirt-x86_64.img.xz												# rootfs镜像
# 解压内核镜像
xz -d openEuler-21.03-stratovirt-x86_64.img.xz
# 扩容到20G
yum install qemu-img
qemu-img resize /var/lib/stratovirt_euler_vm/openEuler-21.03-stratovirt-x86_64.img 20G

# 清理可能存在的 socket 文件
rm -f /tmp/stratovirt.socket
# 用stratovirt启动虚拟机,启动就用这个命令,停止就查询stratovirt进程,杀死就行,重启就继续这个命令
/usr/bin/stratovirt \
    -machine microvm \
    -kernel /var/lib/stratovirt/vmlinux.bin \
    -append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
    -smp cpus=2 \
    -m 4G \
    -drive file=/var/lib/stratovirt/openEuler-21.03-stratovirt-x86_64.img,id=rootfs,readonly=off,direct=off \
    -device virtio-blk-device,drive=rootfs,id=rootfs \
    -netdev tap,id=net0,ifname=tap0 \
    -device virtio-net-device,netdev=net0 \
    -qmp unix:/tmp/stratovirt.socket,server,nowait \
    -serial stdio
# 默认密码是root,openEuler12#$

启动参数说明

参数 说明
-kernel 内核镜像路径
-machine microvm 轻量级虚拟机模式,使用 MMIO 总线
-initrd initramfs 镜像路径
-append 内核启动参数,root=/dev/vda3 需根据实际分区调整
-drive file=...img,id=rootfs,readonly=off,direct=off 磁盘后端:指定镜像文件,id 供 device 引用,direct=off 使用缓存模式
-netdev tap,id=net0,ifname=tap0 网络后端:使用宿主机 tap0 网卡,id 供 device 引用
-device virtio-net-device,netdev=net0 创建 virtio 网卡,挂载到 MMIO 总线,虚拟机内看到的是 eth0
-qmp unix:/tmp/stratovirt.socket,server,nowait 开启 QMP 管理接口,通过 socket 控制虚拟机生命周期
-serial stdio 表示创建完虚拟机立刻就进入虚拟机控制台

4、虚拟机配置ip地址

bash 复制代码
# 查看网卡名称(我这里是eth0)
ip addr

# 配置静态 IP(选一个和宿主机同网段的空闲 IP)
ip addr add 192.168.101.100/24 dev eth0
ip link set eth0 up
ip route add default via 192.168.101.1

# 配置 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf

# 测试网络
ping 192.168.101.1

永久配置

bash 复制代码
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF'
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.101.100
NETMASK=255.255.255.0
GATEWAY=192.168.101.1
DNS1=8.8.8.8
EOF

systemctl restart network

虚拟机配置虚拟机yum源,21.03版本yum源不可用

bash 复制代码
# 备份原有源
mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak

# 换成归档源
cat > /etc/yum.repos.d/openEuler.repo << 'EOF'
[OS]
name=OS
baseurl=https://archives.openeuler.openatom.cn/openEuler-21.03/OS/x86_64/
enabled=1
gpgcheck=0

[everything]
name=everything
baseurl=https://archives.openeuler.openatom.cn/openEuler-21.03/everything/x86_64/
enabled=1
gpgcheck=0
EOF

# 清理缓存并测试
yum clean all
yum makecache

为虚拟机扩容

bash 复制代码
lsblk
fdisk -l /dev/vda
resize2fs /dev/vda

虚拟机安装ssh服务,scp_clinet

bash 复制代码
yum install -y openssh-server
systemctl start sshd
systemctl enable sshd
yum install -y openssh-clients

然后就可以正常使用了

相关推荐
dapeng-大鹏1 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
乐维_lwops1 小时前
案例解读|运维监控助力某大型卷烟厂构建高效运维监控体系
运维·运维案例
JiaWen技术圈1 小时前
网站用户注册行为验证码方案
运维·安全
仙柒4152 小时前
Docker存储原理
运维·docker·容器
DolphinDB2 小时前
漫长人工,耗费存储?用 BackupRestore 模块一站式解决跨环境数据同步难题
运维·后端·架构
神奇椰子4 小时前
[特殊字符] 服务器搭建网站完整教程
运维·服务器
慧都小妮子4 小时前
告别看图抓数据:DeviceXPlorer OPC Server 助力数据自动化管理
运维·物联网·自动化·takebishi·dxpserver·opc server
Wpa.wk4 小时前
APP自动化-Appium环境安装
运维·appium·自动化
快乐的哈士奇5 小时前
LangFuse 自托管实战:选型理由、Docker 部署与常用配置全解析
运维·人工智能·docker·容器
数智化管理手记5 小时前
精益生产3步实操,让现场从混乱变标杆
大数据·运维·网络·人工智能·精益工程