KVM/libvirt:如何在具有不同 CPU 的两台主机之间迁移

KVM/libvirt:如何在具有不同 CPU 的两台主机之间迁移

我尝试将我的 KVM 主机从具有 AMD CPU 的主机迁移到具有 Intel CPU 的主机,但是当我运行时,virsh start guest_name我得到了error: unsupported configuration: CPU model ... is not supported by hypervisor

我知道 KVM 支持这样的迁移(在常见问题解答中,他们甚至谈到了 64 位 AMD/Intel CPU 之间的实时迁移)。我应该怎么做?

答案1

您应该编辑客户机的 xml 定义部分,使其包含两个 CPU(Intel 和 AMD)中都存在的 CPU 功能子集。您可以使用 来virsh查找此子集。方法如下:

在第一主机

$ virsh capabilities | virsh cpu-baseline /dev/stdin > /tmp/host1.xml

# copy this file to Host#2 -- e.g.:
$ scp /tmp/host1.xml $HOST2:/tmp/host1.xml

其余一切都发生在第二台主机上

$ virsh capabilities | virsh cpu-baseline /dev/stdin > /tmp/host2.xml
$ cat /tmp/host1.xml /tmp/host2.xml > /tmp/both-cpus.xml

现在编辑both-cpus.xml并:

  1. 仅保留<cpu>....</cpu>部分
  2. 从这些部分中删除<vendor>....</vendor>

最后运行这个:

$ virsh cpu-baseline /tmp/both-cpus.xml

如果您收到此错误“XML 错误:缺少 CPU 架构”添加<arch>x86_64</arch>两个<cpu>...</cpu>部分。当然,x86_64这是针对现代 AMD 和 Intel CPU 的,如果你使用其他架构,请适当调整(感谢哈拉尔德请参阅此提示)。

上述命令的输出必须在客户的 xml 定义中使用。

参考

相关内容