ホスト名を変更すると嘘みたいに全部消えます。(http://osdir.com/ml/openstack-dev/2015-02/msg02240.html)
# virsh list --all
Id Name State
----------------------------------------------------
空!何か理由があるんだとは思うが、あまりに強力な手法すぎやせんか…。Novaから見えるVMの状態もACTIVE
のまま、更新されていない様子。
undefineされるだけでディスクイメージは/var/lib
に残っているのでまずは落ち着く。どうせVMはシャットダウン状態だし、いまさら慌ててもしょうがないよねうんしょうがない。ホスト障害みたいなもんだよ。
まず古いホスト名を持つVMを探して作業対象を洗い出す。
$ nova list --host old-host
+--------------------------------------+-----------------------------------------+--------+--------------+-------------+---------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+-----------------------------------------+--------+--------------+-------------+---------------------------------+
...snip...
MySQLに入ってメタデータを直接編集する。
UPDATE instances SET
host = 'new-host',
launched_on = 'new-host',
node = 'new-host'
WHERE uuid IN (
'1a3c18e3-104e-48e2-a817-cbb5f1c7cfe9',
'3a7ccd6f-4f25-45e1-9160-1a271d32ff53',
'a657d7f1-e0f5-4a34-8f4b-bd683bea14db',
'36e45292-d2cf-466f-9f0b-4b344bdb539b',
'ad0bf0a6-4bef-4c19-8aa7-ff400796581e',
'c1ad367c-43fc-4967-8827-c50db2e064c1',
'4b323cc6-6aaf-45f3-aed4-2d1e1d2ff826',
'ffb0b8e1-a8ac-44cc-996d-6bb0262b8019'
);
うおおおおUPDATE
こえぇぇぇぇぇ!3回ぐらい同じIN
句でSELECT
打ちましたね。
undefineされているのでdefineしなおし
virsh define --file /var/lib/nova/instances/1a3c18e3-104e-48e2-a817-cbb5f1c7cfe9/libvirt.xml
VMのstateを再設定する
nova reset-state --active 1a3c18e3-104e-48e2-a817-cbb5f1c7cfe9
起動する
nova reboot 1a3c18e3-104e-48e2-a817-cbb5f1c7cfe9
状態によっては代わりにnova start
する必要があるかもしれない。
まとめると、
- AMQPのキュー名にホスト名が含まれているので、ホスト名が変わると違うキューを見にいってしまう
- ホスト名を変更するとそのホストのdomainは全部undefineされる
- 落ち着けデータは消えていない。素数を数えろ。
NeutronポートやCinderボリュームの紐付けも問題なかった。ホスト名を変更しただけなので、紐付けは壊れなかったようだ。