Kvm-Virtualization

KVM/libvirt:如何在具有不同 CPU 的 2 台主機之間遷移

  • July 4, 2018

我試圖將我的 KVM 主機從帶有 AMD cpu 的主機遷移到帶有 Intel CPU 的主機,但是當我執行時virsh start guest_name我得到了error: unsupported configuration: CPU model ... is not supported by hypervisor.

我知道 KVM 支持這樣的遷移(在常見問題解答中,他們甚至談到了 64 位 AMD/Intel CPU 之間的實時遷移)。我該怎麼辦?

您應該編輯來賓的 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,如果您使用其他架構進行適當調整(感謝harald提供的這個技巧)。

上述命令的輸出必須在來賓的 xml 定義中使用。

參考

引用自:https://serverfault.com/questions/919072