今日もφ(..)メモメモ
◆ Zone を消したいのに消せない!
Zoneを消すときには、まずホストを削除して、次にストレージ、Pod、ネットワーク、最後に Zone …と順を追って消す必要があります。が、なぜかエラーが出て消せない場合が。そんな場合は、CloudStack のデータベースを直接操作して、無理矢理消すことができます。
消せない時に、一番多いのは、おそらく primary storage だと思います。うっかりボリュームを残していると、あるいは気がつかずにいると、結構ハマリますよね。
これがもし、 primary storage であれば、/var/log/cloud/management/management-server.log を tail で追いかければ、”どこぞのボリュームが残ったままですよ”と丁寧にメッセージが出ます。
ところが、なぜか物理ネットワークが削除できない現象が発生してしまいました。ホストや Pod を全て削除したり、何をどうやっても『 The Physical Network is not deletable because there are networks associated to this physical network 』とエラーが出続けます。
こうなたったら仕方が無いので、管理サーバ(management server) のMySQL データベースを直接操作します。なお、作業前には必ずdump等、バックアップをお取り下さい。
# mysql -u root -p Enter password:
ここは、セットアップ時に指定した MySQL サーバのパスワードを入力します。次に use cloud を実行します。
mysql> use cloud; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
次に、消したいネットワークを特定するため、
mysql> select * from cloud.physical_network;
この1行を実行します。そうすると、次のように物理ネットワークの一覧が表示されます。
+----+--------------------------------------+----------------------------+----------------+ | id | uuid | name | data_center_id | +----+--------------------------------------+----------------------------+----------------+ | 7 | bf2b2891-df69-43a9-8291-667dd6311799 | PhysicalNetworkInBasicZone | 6 | +----+--------------------------------------+----------------------------+----------------+ 7 rows in set (0.00 sec)
※結果は一部削っています。
ネットワークの名前は表示されませんが、作成日(created)あたりが参考になると思います。基本的に、作成した順番で ID がふられるようです。
さて、これで削除したい ID が分かれば delete & commit で削除します。
mysql> delete from cloud.physical_network where id='7'; Query OK, 1 row affected (0.06 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec)
この状態で UI にアクセスすると、あれだけ消えなかった物理ネットワークがキレイに消えています。たぶん正規の方法ではなく、バグの可能性もありますが、とにかく消したいときには役に立つんじゃないかなと思います。
参考URL:
Unable to remove a zone
http://www.cloudstack.org/forum/6-general-discussion/9401-unable-to-remove-a-zone.html
こんな感じで、暫くTipsのようなものを、ちまちま書いていこうと思っています。