KVM远程迁移启动报错

直接拷贝镜像和配置文件的迁移方式,因宿主环境因素可能有一些报错,我这次迁移就遇到如下问题。

一、启动报错内容

# virsh start vmbase7 
error: Failed to start domain vmbase7
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: md-clear, ssbd

二、原因

这是因为两台宿主机的CPU(实际也是从I7 9700下面生成的镜像文件拷贝到I5 7500机器下)类型不一致导致的,解决方法也很简单,直接去掉关于上面的配置

三、处理方式

  • 修改配置
# 直接从配置中删掉关于上面报错的两行
# virsh edit vmbase7
......
    <feature policy='require' name='md-clear'/>
    ......
    <feature policy='require' name='ssbd'/>
......

  • 重新注册并启动虚拟机
# cp /etc/libvirt/qemu/vmbase7.xml /tmp/vmbase7.xml_20210331
# virsh undefine vmbase7            // 执行这个命令配置文件就没了
Domain vmbase7 has been undefined
# virsh define /tmp/vmbase7.xml_20210331
Domain vmbase7 defined from /tmp/vmbase7.xml_20210331
# virsh start vmbase7

四、其他报错

  • 报错内容
virsh start mycentos
error: Failed to start domain mycentos
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: fma, x2apic, movbe, aes, fsgsbase, bmi1, avx2, smep, bmi2, erms, invpcid
  • 原因也是两台宿主机的CPU类型不一致导致的,解决方法就是将xml文件中的CPU类型改为与当前宿主机一致即可。
# 查看宿主机的CPU类型
# virsh capabilities
<capabilities>

  <host>
    <uuid>54d8c261-2738-a5df-d9aa-a85e456aa738</uuid>
    <cpu>
      <arch>x86_64</arch>
      <model>Skylake-Client-IBRS</model>           // 宿主机当前CPU类型
      <vendor>Intel</vendor>
      <microcode version='214'/>
      <counter name='tsc' frequency='2999995000' scaling='no'/>
      <topology sockets='1' cores='8' threads='1'/>
      <feature name='ds'/>
......

# 修改虚拟机XML配置
# virsh edit vmbase7
......
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='allow'>Skylake-Client-IBRS</model>    // 改成跟当前宿主机一样
  </cpu>
......

# 重新按上面方式注册启动即可

总结:

       一般来说在KVM服务端版本变化不大外,虚拟机迁移后出现启动问题,都可以通过修改配置的方式来处理,在运用上面两个方式处理无效外,可以把目的宿主下的xml配置文件和迁移过来机器的xml文件进行对比,然后以当前宿主机下的虚拟机xml配置文件为基准,修改迁移过来的xml配置文件,修改后尝试重新注册启动。 


相关内容参阅

KVM服务搭建及虚拟机安装
KVM虚拟机扩容硬盘 
KVM虚拟机硬盘压缩 
KVM创建快照 
KVM磁盘格式浅析


版权声明:本文为qq_25854057原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>