OpenStackでインスタンスを起動しようとすると、nova-compute.logに次のエラーが表示されます。
(nova.rpc): TRACE: libvirtError: operation failed: domain 'instance-0000000a' already exists with uuid 5f81a7d2-1b0f-8c72-4e1e-377c275e9289
ただし、virshはドメインを表示しません。
$ Sudo virsh list
Id Name State
----------------------------------
そのドメインが存在する場合、なぜそのドメインがvirshに表示されないのですか?
ドメインがシャットダウンされている可能性があります。実行virsh list --all
すべてのドメインを表示します。
OpenStackにはまだ精通していませんが、通常の古いlibvirtでは、このエラーは通常、RUNNINGインスタンスがあることを意味するのではなく、DEFINEDインスタンスがあることを意味します。 「virshlist」には、定義されているすべてのVMではなく、現在アクティブなVMのみが表示されます。試してみてください:
virsh edit instance-0000000a
それが開いているvimをポップし、そこに大量のXMLがある場合、定義済みの「instance-0000000a」VMがすでにあります。必要ないと100%確信している場合は、エディターを終了して次を使用します。
virsh undefine instance-0000000a
そして、OpenStackにもう一度やり直してもらい、うまくいくはずです。
ちなみに、そこにあるものが必要な場合は、次のように開始できます。
virsh start instance-0000000a
しかし、繰り返しになりますが、OpenStackに慣れていないため、あなたがそうするのが好きではないかもしれません。
シナリオ1:
コマンドラインのvirsh
がOpenStackコントローラーと同じハイパーバイザーと通信していることを確認しますか?これは、virsh
が実行中のインスタンスを表示しない2つの理由として最も簡単な説明になります。
シナリオ2:
ps
を使用する場合、実行中のqemu-kvm
インスタンスはありますか?試してみてください:
ps -fe | grep qemu-kvm
qemu-kvm
インスタンスが実行されている場合、それらにはvirsh
で使用されている名前と一致する必要がある-name
パラメーターがあります。とにかく死んでいると思われる場合は、これらのプロセスをkill -9
することができます。
私の問題は名前解決でした。ホスト名がシステムのIPに解決されなかったため、サービスlibvirtdは正しく開始されませんでした。
ローカルシステム名とIPのエントリを/ etc/hostsに追加すると、VM guest)に接続できます。