!
也想出现在这里? 联系我们
广告位

Virsh 迁移虚拟机后无法启动,cpu错误解决

原来的香港服务器因为硬盘故障,机房换了台机器,需要把虚拟机转移到新的机器上,转移数据搞了一天,今天启动的时候还报错了

error: Failed to start domain 'win10x86'
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: fma, movbe, fsgsbase, bmi1, avx2, smep, bmi2, erms, invpcid

因为旧机器和新机器 cpu硬件不一样了,导致虚拟机出现了启动故障。现在想想如何操作。

遇到 Failed to start domain 'win10x86-103.143.12.239' 以及类似错误提示,如 "Host CPU does not provide required features: fma, movbe, fsgsbase, bmi1, avx2, smep, bmi2, erms, invpcid",通常是因为虚拟机的配置要求使用的 CPU 特性与主机硬件不兼容或被禁用。

解决方案

  1. 检查主机的 CPU 是否支持这些特性

    错误信息中提到的特性,如 fmamovbeavx2 等,表示虚拟机要求的某些 CPU 指令集特性在主机的 CPU 上不可用。你可以通过以下命令检查主机 CPU 是否支持这些特性:

    lscpu
    

    这将列出主机 CPU 的所有特性,检查是否包含缺少的特性(比如 avx2fmabmi1 等)。

    • 如果你的硬件本身不支持这些指令集,那么你将无法运行需要这些特性支持的虚拟机。
    • 如果你的硬件支持这些特性,但出于某些原因它们被禁用,你需要检查 BIOS/UEFI 设置。
  2. 启用虚拟化相关功能(在 BIOS/UEFI 中)

    某些 CPU 特性(如 SMEPAVX2FMA 等)可能被禁用在 BIOS/UEFI 设置中。进入 BIOS 设置,确保启用了以下选项:

    • Intel VT-x / AMD-V(虚拟化技术)
    • Intel EPT / AMD RVI(扩展页表)
    • SMEP(Supervisor Mode Execution Prevention) — 在部分 Intel CPU 中启用。
    • AVX2 和 FMA — 如果支持,确保启用。

    重启主机并进入 BIOS 设置,通常是按 DELF2 或 Esc 键(视主板品牌而定)。在 BIOS 中,查找关于 CPU 或虚拟化相关的设置,确保虚拟化功能已启用。

  3. 检查 KVM 模块是否正确加载

    如果主机的 CPU 支持虚拟化,但由于配置或 KVM 模块没有正确加载,可能导致无法启用所需的 CPU 特性。你可以通过以下命令确认 KVM 模块是否已加载:

    lsmod | grep kvm
    

    如果没有看到类似 kvm 或 kvm_intel / kvm_amd 的输出,说明 KVM 模块没有加载。你可以尝试手动加载它:

    sudo modprobe kvm
    sudo modprobe kvm_intel  # 对于 Intel CPU
    sudo modprobe kvm_amd    # 对于 AMD CPU
    

    然后再尝试启动虚拟机。

  4. 修改虚拟机的 CPU 配置

    如果你的主机 CPU 确实不支持这些特性,但你仍然希望启动虚拟机,可以尝试通过修改虚拟机的 XML 配置文件来禁用虚拟机要求的特性。

    你可以编辑虚拟机的 XML 配置文件,禁用这些特性。首先,使用 virsh 命令导出虚拟机的配置:

    virsh dumpxml win10x86-103.143.12.239 > vm_config.xml
    

    然后编辑 vm_config.xml 文件,找到 <cpu> 部分,添加或修改 mode 和 features 标签。例如,禁用特性:

    <cpu mode='host-passthrough'>
      <features>
        <feature name='fma' policy='disable'/>
        <feature name='movbe' policy='disable'/>
        <feature name='fsgsbase' policy='disable'/>
        <feature name='bmi1' policy='disable'/>
        <feature name='avx2' policy='disable'/>
        <feature name='smep' policy='disable'/>
        <feature name='bmi2' policy='disable'/>
        <feature name='erms' policy='disable'/>
    <feature name="svm" policy="disable"/>
      <feature name='invpcid' policy='disable'/> </features> </cpu>

    你可以根据需要禁用不同的 CPU 特性。然后保存并关闭文件。

    重新定义虚拟机配置:

    virsh define vm_config.xml
    

    然后尝试再次启动虚拟机:

    virsh start win10x86-103.143.12.239
    

    这会让虚拟机不依赖于主机的特性,而是在兼容模式下运行。

  5. 检查虚拟机配置的兼容性

    如果你的虚拟机镜像要求的 CPU 特性与主机的硬件不匹配,可以考虑更改虚拟机的 CPU 类型。在 virsh 中,你可以选择一个兼容的 CPU 模型。

    例如,编辑虚拟机的 XML 配置文件,修改 <cpu> 部分中的 model 属性为一个通用的模型(比如 qemu64):

    <cpu mode='custom' match='none'>
      <model fallback='allow'>qemu64</model>
    </cpu>
    

    保存配置并重新启动虚拟机。

总结

  • 硬件支持:确保主机 CPU 支持虚拟化所需的特性(如 AVX2FMA 等),并确保在 BIOS 中启用了相关设置。
  • KVM 模块:确保 KVM 模块已加载,且 CPU 虚拟化特性可用。
  • 修改虚拟机配置:如果硬件不支持这些特性,可以在虚拟机配置中禁用或调整 CPU 特性,或者使用更通用的 CPU 模型。

如果这些步骤仍然无法解决问题,或者你需要进一步帮助,请告诉我!

给TA打赏
共{{data.count}}人
人已打赏
投稿专用

ubuntun22.04 安装virsh并配置网络 创建一台win10系统的虚拟机

2024-11-25 10:39:20

投稿专用

ubuntun22.04 虚拟机配置网桥

2024-11-25 11:29:35

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索