OpenStack Mitakaをインストールし、horizonダッシュボードのさまざまな機能を確認したいと思いました。たとえば、システム>ハイパーバイザー ダッシュボードのメニューには、さまざまなコンピューティングホストの概要、そのハイパーバイザータイプ、および使用法の詳細が表示されます。コンピューティングノードはKVMを使用するように構成されていますが、ハイパーバイザータイプがKVMではなくQEMUとして報告されているのを見て驚いた。 nova hypervisor-show
# nova hypervisor-show 1 |grep hypervisor_type | hypervisor_type | QEMU
nova.conf ファイルは、 libvirt_type =kvmを使用するように構成されています
[libvirt] libvirt_type=kvm compute_driver=libvirt.LibvirtDriver
私はこの問題をグーグルで検索し、OpenStackクライアントコマンドが nova.conf のlibvirt_type属性を使用する代わりに、libvirt接続タイプを使用してハイパーバイザータイプを決定することを理解しました。 。このバグの詳細なレポートは次のとおりです。
ただし、インスタンスがQEMUではなくKVMハイパーバイザーで開始されているかどうかを知りたいと思いました。幸い、これを行う方法はいくつかあります。
これらすべてのコマンドを計算ノードで実行しました。
KVMモジュールがロードされているかどうかを確認します
[compute_node]# lsmod |grep kvm kvm_intel 172032 9 kvm 536576 1 kvm_intel irqbypass 16384 7 kvm
/ dev/kvmが存在するかどうかを確認します
[compute_node]# ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 Jun 14 11:01 /dev/kvm
/ dev/kvmがQEMUにアクセス可能かどうかを確認します
[compute_node]# virt-host-validate |grep kvm QEMU: Checking if device /dev/kvm exists : PASS QEMU: Checking if device /dev/kvm is accessible
上記の出力は、QEMUがKVMアクセラレータを使用している可能性があることを意味します。
KVMアクセラレータがQEMUで使用されているかどうかを確認します
[compute_node]# ps -aef|grep kvm
出力例:
/usr/bin/qemu-system-x86_64 -name instance-00000021 -S -machine pc-i440fx-wily,accel=kvm,usb=off -cpu Nehalem
上記の出力では、アクセラレータkvmを使用したプロセスqemu-system-x86_64を確認できます。 。このページによると、計算ノードが qemuを実行している場合 KVMアクセラレータを使用して処理する場合、ハイパーバイザーはKVMを使用するQEMUです。
インスタンスのlibvirt.xmlを確認します
[compute_node]# cd /var/lib/nova/instances/<instance_id> [compute_node]# cd /var/lib/nova/instances/b127f332-c631-4bd0-bde0-e90626d8bc27 [compute_node]# grep type libvirt.xml
<domain type="kvm"> <nova:root type="image" uuid="2cfff576-95e8-45cf-814a-63b695cb32e5"/> <sysinfo type="smbios"> <type>hvm</type> <disk type="file" device="disk"> <driver name="qemu" type="qcow2" cache="none"/> <interface type="bridge"> <model type="virtio"/> <serial type="file"> <serial type="pty"/> <input type="tablet" bus="usb"/> <graphics type="vnc" autoport="yes" keymap="en-us" listen="0.0.0.0"/> <model type="cirrus"/>
libvirt.xml type =kvmのファイルルックアウト およびdriver=qemu 、これは、ハイパーバイザーがKVMを備えたQEMUであることを意味します。
インスタンスのconsole.logを確認します
[compute_node]# cd /var/lib/nova/instances/<instance_id> [compute_node]# cd /var/lib/nova/instances/b127f332-c631-4bd0-bde0-e90626d8bc27
[compute_node]# grep KVM console.log [ 0.000000] Booting paravirtualized kernel on KVM [ 0.000000] KVM setup async PF for cpu 0
インスタンスxmlをダンプしてハイパーバイザータイプを確認します
以下に示すようにvirshを起動します:
# virsh
インスタンスを一覧表示します:
virsh # list Id Name State ---------------------------------------------------- 4 instance-00000021 running 5 instance-00000023 running 6 instance-00000024 running
1つのインスタンスのIDをコピーします-「instance-00000021」と言い、以下に示すようにそのxmlをダンプします:
virsh # quit
インスタンスのXMLをダンプします:
# virsh dumpxml instance-00000021 | grep kvm <domain type='kvm' id='4'>
# virsh dumpxml instance-00000021 | grep driver <driver name='qemu' type='qcow2' cache='none'/>
# virsh dumpxml instance-00000021 | grep emulator <emulator>/usr/bin/qemu-system-x86_64</emulator>
上記の出力は、QEMUがKVMアクセラレーターを使用していることを確認します。
ボーナス…
また、任意のインスタンスにログインし、いくつかの仮想化検出手法を実行して、ここに示すように、基盤となるハイパーバイザーの種類を特定することもできます。 。
結論
OpenStackダッシュボードとクライアントコマンドはハイパーバイザータイプをQEMUとして報告しますが、実際にはQEMU(単なるソフトウェアエミュレーター)ではなく、KVMアクセラレーターを備えたQEMUです。したがって、結論として、KVMを使用したQEMUが有効になっている場合、ハイパーバイザータイプをQEMUとして報告するのは、OpenStackのバグである可能性があります。または、OpenStackが報告する方法と同じです。サポートされているハイパーバイザーの種類を明確に記載していないOpenStackドキュメントのバグであると主張するフォーラムはほとんどありません(OpenStackでサポートされているハイパーバイザーの種類を一覧表示するページが表示されますが、QEMUとKVMの違いを提供することはできません)。
>