Cinder ボリュームがデタッチされない

何らかの理由で cinder で作成したボリュームがデタッチされない問題が発生しました。

デタッチしようとすると Invalid volume: already detached (既にデタッチされている) というエラーを吐きます。

どうすることもできず、結局、cinder データベースを直接修正し、意図的に attach_status='detached' のように関連ステータスを直接アップデートすることで対応しました。

事象の確認

ボリュームリストを確認してみると Status は、available なのに、Attached to には何故かインスタンス ID がセットされていて 明らかにおかしい状態になっています。

クレデンシャル読込み済み

・ 全ての作業は、コントロールノード上で実施しています。

・ 該当ユーザのクレデンシャルは、事前に読込み済みです。

ボリュームリスト確認
$ cinder list
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+
|                  ID                  |   Status  |  Name  | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+
| d976bfd6-70c2-4e10-b0eb-86c54fe33388 |   in-use  | vol-01 |  1   |    lvm-1    |  false   | 37ce9857-50d6-40ac-b77f-8e952d54aa79 |
| a662a1e6-c402-4a86-bcf0-2d8f1b368003 |   in-use  | vol-02 |  1   |    lvm-2    |  false   | 962c8012-ccff-4aa5-bbe3-bab419d6a04c |
| e89c45ad-86af-4690-b020-b59f697461d0 | available | vol-03 |  1   |    lvm-2    |  false   | 962c8012-ccff-4aa5-bbe3-bab419d6a04c |
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+

そして、このボリュームを使っている 962c8012-ほげほげ が誰か確認します。

該当ボリュームをつかんでいるインスタンス確認
$ nova list
+--------------------------------------+-------+--------+------------+-------------+----------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                               |
+--------------------------------------+-------+--------+------------+-------------+----------------------------------------+
| 37ce9857-50d6-40ac-b77f-8e952d54aa79 | vm-01 | ACTIVE | -          | Running     | demo-net=192.168.100.3, 10.222.44.103 |
| 962c8012-ccff-4aa5-bbe3-bab419d6a04c | vm-02 | ACTIVE | -          | Running     | demo-net=192.168.100.4, 10.222.44.104 |
+--------------------------------------+-------+--------+------------+-------------+----------------------------------------+

vm-02 にアタッチされているボリュームをデタッチしようとすると以下のように既にデタッチされていると怒られます。

デタッチしようとするとエラーになる
$ nova volume-detach vm-02 e89c45ad-86af-4690-b020-b59f697461d0
ERROR (BadRequest): Invalid volume: already detached (HTTP 400) (Request-ID: req-4d193481-cff9-4fd0-ac71-4690b81d5ff9)

Step 1. Cinder データベースを直接修正し、ボリュームのステータスを更新

仕方ないので、直接 cinder データベースを修正することで対応します。

  • Cinder データベースに接続
  • ボリュームテーブルが、どんなフィールド・レコードを持っているか確認
  • 問題となったボリューム ID を指定し、ステータス関連コラムの値を更新
  • 更新されているか確認
  • データベースから抜ける

作業を実施する前に

この作業を実施する前に、念のためデータベースをバックアップしてください。

また、該当インスタンスの中にログインし、ボリュームをマウントしているか確認してください。

私の場合には、インスタンスに ボリュームはマウントされていましたが、なぜかマウント先が読込み専用になっていてアンマウントもできない状態になっていたため、インスタンスを再起動しました。 そしたらマウントが解除されたので、その後、作業を実施しています。

Cinder ボリュームの DB ステータス更新
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3643
Server version: 5.5.40-MariaDB-0ubuntu0.14.10.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use cinder;
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

MariaDB [cinder]> select * from volumes;
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
| created_at          | updated_at          | deleted_at          | deleted | id                                   | ec2_id | user_id                          | project_id                       | host                           | size | availability_zone | instance_uuid                        | mountpoint | attach_time                | status    | attach_status | scheduled_at        | launched_at         | terminated_at       | display_name  | display_description | provider_location                                                                           | provider_auth                              | snapshot_id | volume_type_id                       | source_volid | bootable | attached_host | provider_geometry | _name_id | encryption_key_id | migration_status | replication_status | replication_extended_status | replication_driver_data | consistencygroup_id |
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
| 2015-04-16 08:27:31 | 2015-04-16 08:28:35 | NULL                |       0 | a662a1e6-c402-4a86-bcf0-2d8f1b368003 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder02#LVM_iSCSI_2 |    1 | nova              | 962c8012-ccff-4aa5-bbe3-bab419d6a04c | /dev/vdb   | 2015-04-16T08:28:34.971412 | in-use    | attached      | 2015-04-16 08:27:32 | 2015-04-16 08:27:32 | NULL                | vol-02        | NULL                | 10.222.33.12:3260,1 iqn.2010-10.org.openstack:volume-a662a1e6-c402-4a86-bcf0-2d8f1b368003 1 | CHAP KmigrccC2Lh5aJ2vaXeq E6WVv3U3CsFoyGqd | NULL        | a0e0accc-e1a9-4d0c-bc41-4ac79dfce362 | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
| 2015-04-16 07:22:40 | 2015-04-16 07:50:08 | NULL                |       0 | d976bfd6-70c2-4e10-b0eb-86c54fe33388 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder01#LVM_iSCSI_1 |    1 | nova              | 37ce9857-50d6-40ac-b77f-8e952d54aa79 | /dev/vdb   | 2015-04-16T07:50:08.599911 | in-use    | attached      | 2015-04-16 07:22:41 | 2015-04-16 07:22:41 | NULL                | vol-01        | NULL                | 10.222.33.11:3260,1 iqn.2010-10.org.openstack:volume-d976bfd6-70c2-4e10-b0eb-86c54fe33388 1 | CHAP QGBbXAtbz2U7UaKBW9YM eDxi7UxjtpGoi7EJ | NULL        | e196302d-f2e8-42e8-869b-87991b17e05c | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
| 2015-04-23 02:55:28 | 2015-04-23 05:02:08 | NULL                |       0 | e89c45ad-86af-4690-b020-b59f697461d0 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder02#LVM_iSCSI_2 |    1 | nova              | 962c8012-ccff-4aa5-bbe3-bab419d6a04c | /dev/vdc   | 2015-04-23T04:53:27.855102 | available | attached      | 2015-04-23 02:55:28 | 2015-04-23 02:55:29 | NULL                | vol-03        | NULL                | 10.222.33.12:3260,2 iqn.2010-10.org.openstack:volume-e89c45ad-86af-4690-b020-b59f697461d0 1 | CHAP DHFTipza9ALp6xhg6M5H bA5TkxZtbYQxoRoG | NULL        | a0e0accc-e1a9-4d0c-bc41-4ac79dfce362 | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
40 rows in set (0.00 sec)

MariaDB [cinder]> UPDATE volumes SET attach_status='detached', instance_uuid=NULL, \
-> attach_time=NULL, status="available" WHERE id='e89c45ad-86af-4690-b020-b59f697461d0';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [cinder]> select * from volumes;
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
| created_at          | updated_at          | deleted_at          | deleted | id                                   | ec2_id | user_id                          | project_id                       | host                           | size | availability_zone | instance_uuid                        | mountpoint | attach_time                | status    | attach_status | scheduled_at        | launched_at         | terminated_at       | display_name  | display_description | provider_location                                                                           | provider_auth                              | snapshot_id | volume_type_id                       | source_volid | bootable | attached_host | provider_geometry | _name_id | encryption_key_id | migration_status | replication_status | replication_extended_status | replication_driver_data | consistencygroup_id |
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
| 2015-04-16 08:27:31 | 2015-04-16 08:28:35 | NULL                |       0 | a662a1e6-c402-4a86-bcf0-2d8f1b368003 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder02#LVM_iSCSI_2 |    1 | nova              | 962c8012-ccff-4aa5-bbe3-bab419d6a04c | /dev/vdb   | 2015-04-16T08:28:34.971412 | in-use    | attached      | 2015-04-16 08:27:32 | 2015-04-16 08:27:32 | NULL                | vol-02        | NULL                | 10.222.33.12:3260,1 iqn.2010-10.org.openstack:volume-a662a1e6-c402-4a86-bcf0-2d8f1b368003 1 | CHAP KmigrccC2Lh5aJ2vaXeq E6WVv3U3CsFoyGqd | NULL        | a0e0accc-e1a9-4d0c-bc41-4ac79dfce362 | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
| 2015-04-16 07:22:40 | 2015-04-16 07:50:08 | NULL                |       0 | d976bfd6-70c2-4e10-b0eb-86c54fe33388 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder01#LVM_iSCSI_1 |    1 | nova              | 37ce9857-50d6-40ac-b77f-8e952d54aa79 | /dev/vdb   | 2015-04-16T07:50:08.599911 | in-use    | attached      | 2015-04-16 07:22:41 | 2015-04-16 07:22:41 | NULL                | vol-01        | NULL                | 10.222.33.11:3260,1 iqn.2010-10.org.openstack:volume-d976bfd6-70c2-4e10-b0eb-86c54fe33388 1 | CHAP QGBbXAtbz2U7UaKBW9YM eDxi7UxjtpGoi7EJ | NULL        | e196302d-f2e8-42e8-869b-87991b17e05c | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
| 2015-04-23 02:55:28 | 2015-04-23 05:24:49 | NULL                |       0 | e89c45ad-86af-4690-b020-b59f697461d0 | NULL   | 0f9bd3f9bac54399928b81530fecff01 | 111f5d2dce1b4ab79e5ab14746aae23a | openstack-cinder02#LVM_iSCSI_2 |    1 | nova              | NULL                                 | /dev/vdc   | NULL                       | available | detached      | 2015-04-23 02:55:28 | 2015-04-23 02:55:29 | 2015-04-23 05:24:49 | vol-03        | NULL                | 10.222.33.12:3260,2 iqn.2010-10.org.openstack:volume-e89c45ad-86af-4690-b020-b59f697461d0 1 | CHAP DHFTipza9ALp6xhg6M5H bA5TkxZtbYQxoRoG | NULL        | a0e0accc-e1a9-4d0c-bc41-4ac79dfce362 | NULL         |        0 | NULL          | NULL              | NULL     | NULL              | NULL             | disabled           | NULL                        | NULL                    | NULL                |
+---------------------+---------------------+---------------------+---------+--------------------------------------+--------+----------------------------------+----------------------------------+--------------------------------+------+-------------------+--------------------------------------+------------+----------------------------+-----------+---------------+---------------------+---------------------+---------------------+---------------+---------------------+---------------------------------------------------------------------------------------------+--------------------------------------------+-------------+--------------------------------------+--------------+----------+---------------+-------------------+----------+-------------------+------------------+--------------------+-----------------------------+-------------------------+---------------------+
40 rows in set (0.00 sec)

MariaDB [cinder]> exit
Bye

Step 2. ボリュームのステータス確認

後は、ボリュームリストを確認して問題となったボリュームのステータスがデタッチ状態 (空欄) になっていることを確認します。

ボリュームのステータス確認
$ cinder list
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+
|                  ID                  |   Status  |  Name  | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+
| d976bfd6-70c2-4e10-b0eb-86c54fe33388 |   in-use  | vol-01 |  1   |    lvm-1    |  false   | 37ce9857-50d6-40ac-b77f-8e952d54aa79 |
| a662a1e6-c402-4a86-bcf0-2d8f1b368003 |   in-use  | vol-02 |  1   |    lvm-2    |  false   | 962c8012-ccff-4aa5-bbe3-bab419d6a04c |
| e89c45ad-86af-4690-b020-b59f697461d0 | available | vol-03 |  1   |    lvm-2    |  false   |                                      |
+--------------------------------------+-----------+--------+------+-------------+----------+--------------------------------------+

Step 3. ボリュームを削除してみる

これで直ってるように見えますが、もしステータスが正常になってるように見えるだけで、削除できなかったりすると困るので、一回削除してみます。

ボリューム削除
$ cinder delete e89c45ad-86af-4690-b020-b59f697461d0

$ cinder list
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+
|                  ID                  |  Status  |  Name  | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+
| d976bfd6-70c2-4e10-b0eb-86c54fe33388 |  in-use  | vol-01 |  1   |    lvm-1    |  false   | 37ce9857-50d6-40ac-b77f-8e952d54aa79 |
| a662a1e6-c402-4a86-bcf0-2d8f1b368003 |  in-use  | vol-02 |  1   |    lvm-2    |  false   | 962c8012-ccff-4aa5-bbe3-bab419d6a04c |
| e89c45ad-86af-4690-b020-b59f697461d0 | deleting | vol-03 |  1   |    lvm-2    |  false   |                                      |
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+

$ cinder list
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+
|                  ID                  |  Status  |  Name  | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+
| d976bfd6-70c2-4e10-b0eb-86c54fe33388 |  in-use  | vol-01 |  1   |    lvm-1    |  false   | 37ce9857-50d6-40ac-b77f-8e952d54aa79 |
| a662a1e6-c402-4a86-bcf0-2d8f1b368003 |  in-use  | vol-02 |  1   |    lvm-2    |  false   | 962c8012-ccff-4aa5-bbe3-bab419d6a04c |
+--------------------------------------+----------+--------+------+-------------+----------+--------------------------------------+

問題ありませんでした。

今度また、同じ問題が起きた時には、削除せずに使い回しても良いということになりますね。

Cinder ログ確認

作業が終わったら Cinder ログを確認し、警告・エラーメッセージを吐いてないか必ず確認してください。

終わりに

原因ははっきり分かりませんが、検証のため色々やってるうちに起きた事象なので、本番環境を触るときには十分に気をつけないと行けないなと思いました。

以上、OpenStack : Cinder ボリュームがデタッチされない でした。