Live Migrationが、同じCPUモデルのホスト間でしかできなくなるので注意。
nova-compute.ini
[libvirt]
cpu_mode = host-passthrough
QEMU/KVMでOpenStack Novaを使っている場合、デフォルトではドメイン定義時に/usr/share/libvirt/cpu_map.xml
を見て、最もそれっぽいCPUモデルがlibvirtのドメインXMLに書き込まれる。
ps
などでQEMUの引数を見ると、CPUのモデルと機能が長々と指定されているのが分かる。
/usr/bin/qemu-system-x86_64
-name instance-000000ea
-S
-machine pc-i440fx-trusty,accel=kvm,usb=off
-cpu Westmere,+rdtscp,+pdpe1gb,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pclmuldq,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme
-m 4096
-realtime mlock=off
-smp 1,sockets=1,cores=1,threads=1
(snip. 余談だけどQEMUの引数ってめっちゃ長いよね)
パススルーを設定すると、
/usr/bin/qemu-system-x86_64
-name instance-000000eb
-S
-machine pc-i440fx-trusty,accel=kvm,usb=off
-cpu host
-m 4096
-realtime mlock=off
-smp 1,sockets=1,cores=1,threads=1
(snip.)
-cpu
オプションが変わる。
ゲスト内からは、/proc/cpuinfo
なんかを見るとCPUのCapabilitiesが変わったりキャッシュサイズが増えたりしていることが確認できると思う。
ところでNested VMXのおかげでvmx
なんかもExportされるから、OpenStack on OpenStack on OpenStack ... とかできるんじゃないだろうか。