Kvm-Virtualization
KVM/libvirt:如何在具有不同 CPU 的 2 台主機之間遷移
我試圖將我的 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
並:
- 只保留
<cpu>....</cpu>
部分- 從這些部分中刪除與
<vendor>....</vendor>
最後執行這個:
$ virsh cpu-baseline /tmp/both-cpus.xml
如果您收到此錯誤*“XML 錯誤:缺少 CPU 架構”*
<arch>x86_64</arch>
,請在兩個<cpu>...</cpu>
部分中添加。當然x86_64
適用於現代 AMD 和 Intel CPU,如果您使用其他架構進行適當調整(感謝harald提供的這個技巧)。上述命令的輸出必須在來賓的 xml 定義中使用。
參考