![KVM/libvirt:如何在具有不同 CPU 的两台主机之间迁移](https://linux22.com/image/723934/KVM%2Flibvirt%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%20CPU%20%E7%9A%84%E4%B8%A4%E5%8F%B0%E4%B8%BB%E6%9C%BA%E4%B9%8B%E9%97%B4%E8%BF%81%E7%A7%BB.png)
我尝试将我的 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
并:
- 仅保留
<cpu>....</cpu>
部分 - 从这些部分中删除
<vendor>....</vendor>
最后运行这个:
$ virsh cpu-baseline /tmp/both-cpus.xml
如果您收到此错误“XML 错误:缺少 CPU 架构”添加<arch>x86_64</arch>
两个<cpu>...</cpu>
部分。当然,x86_64
这是针对现代 AMD 和 Intel CPU 的,如果你使用其他架构,请适当调整(感谢哈拉尔德请参阅此提示)。
上述命令的输出必须在客户的 xml 定义中使用。