web-dev-qa-db-ja.com

KVM / libvirt:CPUが異なる2つのホスト間で移行する方法

KVMホストをAMD cpuを搭載したホストからIntel CPUを搭載したホストに移行しようとしましたが、virsh start guest_name取得しましたerror: unsupported configuration: CPU model ... is not supported by hypervisor

KVMがこのような移行をサポートしていることを知っています(FAQでは、64ビットAMD/Intel CPU間のライブマイグレーションについても話します)。どうすればよいですか?

5
ndemou

ゲストの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

その他はすべて2番目のホストで発生します

$ 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定義内で使用する必要があります。

参考文献

7
ndemou