はじめに
本ドキュメントで紹介する内容は CVIM 3.2.1および3.2.2 に基づいています。その他のバージョンでは内容が異なる場合があります。
Cisco VIM (CVIM) では、libvirt によって管理される Kernel-based Virtual Machine(KVM)を使用しています。ここでは KVM や Qemu などの仮想化レイヤーのトラブルシューティングに有効ないくつかの情報収集の方法について紹介しています。
仮想マシンインスタンスの設定情報を参照する
KVM の仮想マシン(ドメイン)の設定は、対象の Compute ノードの /etc/libvirt/qemu ディレクトリの中にXMLファイルとして作成されます。このXMLファイルには仮想マシンの設定情報が記述されています。
# ls -l /etc/libvirt/qemu/
total 24
-rw-------. 1 root root 5624 Oct 30 18:16 instance-00000008.xml
-rw-------. 1 root root 5625 Nov 6 14:59 instance-0000000b.xml
-rw-------. 1 root root 4678 Apr 12 11:24 instance-00000020.xml
[root@jcvim-aio1 ~]#
[root@jcvim-aio1 ~]# head -n 30 /etc/libvirt/qemu/instance-00000020.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit instance-00000020
or other application using the libvirt API.
-->
<domain type='kvm'>
<name>instance-00000020</name>
<uuid>9ac84f74-2100-49ce-9ee9-d63ab2f3e099</uuid>
<metadata>
<nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
<nova:package version="17.0.9-9.cisco.2.el7"/>
<nova:name>shanazon_test</nova:name>
<nova:creationTime>2021-04-12 02:23:52</nova:creationTime>
<nova:flavor name="m1.xlarge">
<nova:memory>8192</nova:memory>
<nova:disk>10</nova:disk>
<nova:swap>0</nova:swap>
<nova:ephemeral>0</nova:ephemeral>
<nova:vcpus>8</nova:vcpus>
</nova:flavor>
<nova:owner>
<nova:user uuid="70d9f19869ee4ae190faafb8bfbc0c9f">admin</nova:user>
<nova:project uuid="05c884f73b7440488ec504b00dad652b">admin</nova:project>
</nova:owner>
</nova:instance>
</metadata>
<memory unit='KiB'>8388608</memory>
<currentMemory unit='KiB'>8388608</currentMemory>
#
また、同様の内容は libvirt docker コンテナに入り、virsh dumpxml コマンドでも表示することができます。
# libvirt
novalibvirt_20784 [root@jcvim-aio1 /]# virsh list
Id Name State
----------------------------------------------------
1 instance-00000020 running
novalibvirt_20784 [root@jcvim-aio1 /]#
novalibvirt_20784 [root@jcvim-aio1 /]# virsh dumpxml instance-00000020
<domain type='kvm' id='1'>
<name>instance-00000020</name>
<uuid>9ac84f74-2100-49ce-9ee9-d63ab2f3e099</uuid>
<metadata>
<nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
<nova:package version="17.0.9-9.cisco.2.el7"/>
<nova:name>shanazon_test</nova:name>
<nova:creationTime>2021-04-12 02:23:52</nova:creationTime>
<nova:flavor name="m1.xlarge">
<nova:memory>8192</nova:memory>
<nova:disk>10</nova:disk>
<nova:swap>0</nova:swap>
<nova:ephemeral>0</nova:ephemeral>
<nova:vcpus>8</nova:vcpus>
</nova:flavor>
<nova:owner>
<nova:user uuid="70d9f19869ee4ae190faafb8bfbc0c9f">admin</nova:user>
<nova:project uuid="05c884f73b7440488ec504b00dad652b">admin</nova:project>
</nova:owner>
</nova:instance>
</metadata>
<memory unit='KiB'>8388608</memory>
<currentMemory unit='KiB'>8388608</currentMemory>
<vcpu placement='static' cpuset='2-15,18-31,34-47,50-63'>8</vcpu>
... <SNIP>...
ログファイルを参照する
nova-compute
ハイパーバイザーの管理やインスタンスのリソース管理を行います。CVIM では Compute ノード上で novacompute docker コンテナとして稼働しています。ログファイルには仮想マシンインスタンスのライフサイクルに関するイベントが記録されます。
ログファイル |
nova-compute-ovs.log |
場所 |
[host] /var/log/nova/ [tech-support] host-docker/fluentd_XXXXX/var/log/nova/ |
nova-libvirt
libvirtを実行します。CVIMでは Compute ノード上で nova_libvirt コンテナとして稼働しています。ログファイルには libvirtに関するイベントが記録されます。
ログファイル |
nova-libvirt.log |
場所 |
[host] /var/log/nova/ [tech-support] host-docker/fluentd_XXXXX/var/log/nova/ |
仮想マシンインスタンスのコンソール
仮想マシンインスタンス上のOS起動メッセージが記録されています。
ログファイル |
console.log |
場所 |
[host]
/var/lib/nova/instances/VMのUUID/
[tech-support]
含まれない
|
仮想マシンインスタンスのコンソールログについては以下の article をご参照下さい。
[CVIM] VM インスタンスのコンソールログの場所について
https://community.cisco.com/t5/-/-//ta-p/4172296
仮想マシンインスタンス
libvirt や QEMU のエラーなど、仮想マシンインスタンスに関するイベントが記録されます。
このファイルの参照には libvirt docker コンテナに入る必要があります。
ログファイル |
instance-xxxx.log |
場所 |
[host]
/var/log/libvirt/qemu/
[tech-support]
含まれない
|
尚、QEMU や libvirt の扱う 仮想マシンインスタンス名(domain)と OpenStack の扱う 仮想マシンインスタンス名の照合は openstack server show コマンドで表示されるフィールドの OS-EXT-SRV-ATTR:instance_name で確認することができます。
仮想マシンインスタンスのコンソールに接続する
virsh console コマンドを経由して 仮想マシンインスタンスのコンソールにアクセスすることができます。
以下の例では Compute ノードで libvirt dockerコンテナに入り、virsh connect で稼働している仮想マシンインスタンス instance-00000020 のコンソールにアクセスしています。
[root@jcvim-aio1 ~]# libvirt
novalibvirt_20784 [root@jcvim-aio1 /]# virsh list
Id Name State
----------------------------------------------------
1 instance-00000020 running
novalibvirt_20784 [root@jcvim-aio1 /]#
novalibvirt_20784 [root@jcvim-aio1 /]# virsh console instance-00000020
Connected to domain instance-00000020
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-229.7.2.el7.x86_64 on an x86_64
centosvm-test login:
キーボードから Ctrl + ] を入力すると仮想マシンインスタンスのコンソールから抜けることができます。