You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过启动脚本修改virsh多网卡模型类型,重启后恢复原状的问题

解决虚拟机网卡模型重启后重置为virtio的问题

问题分析

你之前执行的EDITOR='sed -i "s/virtio/vmxnet3/g"' virsh net-default命令有误,因为virsh net-default是操作libvirt全局网络配置的指令,而你的网卡配置直接定义在虚拟机域的XML文件中,需要针对具体虚拟机实例进行修改。

解决方案

1. 确认目标虚拟机名称

先列出所有虚拟机,找到需要修改的实例名称:

virsh list --all

2. 编写自动修改脚本

创建脚本(比如fix-vm-network-model.sh),内容如下:

#!/bin/bash
# 替换为你的虚拟机名称
VM_NAME="your-vm-name"

# 非交互式修改虚拟机XML,将所有virtio网卡模型替换为vmxnet3
EDITOR='sed -i "s/<model type='\''virtio'\''\/>/<model type='\''vmxnet3'\''\/>/g"' virsh edit $VM_NAME

# 重启虚拟机使修改生效
virsh reboot $VM_NAME

给脚本添加执行权限:

chmod +x fix-vm-network-model.sh

3. 设置开机自动执行

通过systemd服务让脚本在系统启动后自动运行:

  1. 创建服务文件/etc/systemd/system/vm-network-fix.service:
[Unit]
Description=Set VM network card model to vmxnet3
After=libvirtd.service

[Service]
Type=oneshot
ExecStart=/path/to/fix-vm-network-model.sh

[Install]
WantedBy=multi-user.target
  1. 启用并启动服务:
systemctl daemon-reload
systemctl enable vm-network-fix.service

4. 验证修改效果

执行脚本后,检查虚拟机XML中的网卡模型:

virsh dumpxml $VM_NAME | grep -A1 -B1 "model type"

重启系统后再次执行上述命令,确认模型保持为vmxnet3。


内容的提问来源于stack exchange,提问作者Ashley Mark Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:05:36