OpenStackの新機能、Cinderを使う 4ページ

Cinderの稼働テスト

 最後に、Cinderの設定が正しく完了しているかどうかをcinderコマンドでテストしておこう。まず、以下のようにテスト実行用のユーザー名やパスワード、テナント名などを環境変数に設定しておく。

export OS_USERNAME=<管理権限を持つユーザー名>
export OS_PASSWORD=<パスワード>
export OS_TENANT_NAME=<テナント名>
export OS_AUTH_URL=http://<keystoneが稼働しているホストのホスト名>:5000/v2.0/
export OS_REGION_NAME=<リージョン名>

 この状態で、cinder listコマンドを実行してエラーが出ないことを確認しておく。

# cinder list

 続いて、cinder createコマンドで1GBのボリューム作成を実行する。

$ cinder create --display_name test 1
+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|      created_at     |      2013-02-12T10:57:15.107881      |
| display_description |                 None                 |
|     display_name    |                 test                 |
|          id         | 892d3d1d-8c65-4226-8ce9-3767464a9979 |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

 もし正しく設定が完了していれば、cinder listコマンドで作成したボリュームが表示されるはずだ。

$ cinder list
+--------------------------------------+-----------+--------------+------+-------------+-------------+
|                  ID                  |   Status  | Display Name | Size | Volume Type | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| 892d3d1d-8c65-4226-8ce9-3767464a9979 | available |     test     |  1   |     None    |             |
+--------------------------------------+-----------+--------------+------+-------------+-------------+

 ここで作成されたボリュームはLVMの論理ボリュームとして確保される。たとえばこの例の場合、lvscanコマンドを実行すると以下のように対応するボリュームのIDが付けられた論理ボリュームが作成されていることが確認できる。

# lvscan
  ACTIVE            '/dev/cinder-volumes/volume-892d3d1d-8c65-4226-8ce9-3767464a9979' [1.00 GiB] inherit

 作成したボリュームは、cinder deleteコマンドで削除できる。

# cinder delete test

 また、管理用ノードとして利用するホストからnova volume-createコマンドでストレージの作成や削除ができることも確認しておこう。

# nova volume-create --display-name test02 1
+---------------------+--------------------------------------+
| Property            | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| created_at          | 2013-02-13T10:09:21.966693           |
| display_description | None                                 |
| display_name        | test02                               |
| id                  | 6f3778f1-21e8-4d9e-82e5-644c73a6f4e2 |
| metadata            | {}                                   |
| size                | 1                                    |
| snapshot_id         | None                                 |
| status              | creating                             |
| volume_type         | None                                 |
+---------------------+--------------------------------------+
# nova volume-list
+--------------------------------------+-----------+--------------+------+-------------+--------------------------------------+
| ID                                   | Status    | Display Name | Size | Volume Type | Attached to                          |
+--------------------------------------+-----------+--------------+------+-------------+--------------------------------------+
| 6f3778f1-21e8-4d9e-82e5-644c73a6f4e2 | available | test02       | 1    | None        |                                      |
+--------------------------------------+-----------+--------------+------+-------------+--------------------------------------+
# nova volume-delete test02
# nova volume-list

Cinderが提供するブロックストレージを仮想マシンインスタンスに接続する

 作成したボリュームは、nova volume-attachコマンドで仮想マシンインスタンスに接続できる。nova volume-attachコマンドは以下のような引数を取る。

nova volume-attach <接続先インスタンス名もしくはID> <接続するボリュームのID> <接続先デバイス>

 接続先デバイスにはインスタンス内のデバイス名(「/dev/vdc」など)を指定する。「auto」を指定して、自動的に接続先を決定させることも可能だ。たとえば1GBのボリュームを作成し、「test01」というインスタンスに接続するには以下のようにする。

↓新たにボリュームを作成する
# nova volume-create --display-name test01 1
+---------------------+--------------------------------------+
| Property            | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| created_at          | 2013-02-12T15:26:57.808624           |
| display_description | None                                 |
| display_name        | test01                               |
| id                  | 1ac5b7ee-116a-4352-8536-3b538bc2d1ed |
| metadata            | {}                                   |
| size                | 1                                    |
| snapshot_id         | None                                 |
| status              | creating                             |
| volume_type         | None                                 |
+---------------------+--------------------------------------+

↓作成したボリュームを確認する
# nova volume-list
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| ID                                   | Status    | Display Name | Size | Volume Type | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| 1ac5b7ee-116a-4352-8536-3b538bc2d1ed | available | test01       | 1    | None        |             |
+--------------------------------------+-----------+--------------+------+-------------+-------------+

↓稼働しているインスタンスを確認する
# nova list
+--------------------------------------+--------+--------+---------------------+
| ID                                   | Name   | Status | Networks            |
+--------------------------------------+--------+--------+---------------------+
| 65b24d9e-bf84-4808-b382-07249a98d2fd | test01 | ACTIVE | priv_net01=10.0.1.3 |
+--------------------------------------+--------+--------+---------------------+

↓インスタンスにボリュームを接続する
# nova volume-attach test01 1ac5b7ee-116a-4352-8536-3b538bc2d1ed auto
+----------+--------------------------------------+
| Property | Value                                |
+----------+--------------------------------------+
| device   | /dev/vdc                             |
| id       | 1ac5b7ee-116a-4352-8536-3b538bc2d1ed |
| serverId | 65b24d9e-bf84-4808-b382-07249a98d2fd |
| volumeId | 1ac5b7ee-116a-4352-8536-3b538bc2d1ed |
+----------+--------------------------------------+

↓接続されているボリュームは「Status」が「in-use」になる
# nova volume-list
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+
| ID                                   | Status | Display Name | Size | Volume Type | Attached to                          |
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+
| 1ac5b7ee-116a-4352-8536-3b538bc2d1ed | in-use | test01       | 1    | None        | 65b24d9e-bf84-4808-b382-07249a98d2fd |
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+

 なお、接続先デバイスとして「auto」を指定した場合、その接続先はnova volume-showコマンドで確認できる。

# nova volume-show test01
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Property            | Value                                                                                                                                                                                    |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| attachments         | [{u'device': u'/dev/vdc', u'server_id': u'65b24d9e-bf84-4808-b382-07249a98d2fd', u'id': u'1ac5b7ee-116a-4352-8536-3b538bc2d1ed', u'volume_id': u'1ac5b7ee-116a-4352-8536-3b538bc2d1ed'}] |
| availability_zone   | nova                                                                                                                                                                                     |
| created_at          | 2013-02-12T15:26:57.000000                                                                                                                                                               |
| display_description | None                                                                                                                                                                                     |
| display_name        | test01                                                                                                                                                                                   |
| id                  | 1ac5b7ee-116a-4352-8536-3b538bc2d1ed                                                                                                                                                     |
| metadata            | {}                                                                                                                                                                                       |
| size                | 1                                                                                                                                                                                        |
| snapshot_id         | None                                                                                                                                                                                     |
| status              | in-use                                                                                                                                                                                   |
| volume_type         | None                                                                                                                                                                                     |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

 この場合、接続したボリュームは接続先インスタンスからは/dev/vdcというデバイスファイルを通じてアクセスできる。

$ ls /dev/vd*
/dev/vda   /dev/vda1  /dev/vdb   /dev/vdc

 接続したボリュームをインスタンスから取り外すには、nova volume-detachコマンドを使用する。コマンドに与える引数は次のとおりだ。

nova volume-attach <接続先インスタンス名もしくはID> <取り外すボリュームのID>

 たとえば先の例の場合、以下のようにする。

# nova volume-detach test01 1ac5b7ee-116a-4352-8536-3b538bc2d1ed

 また、Webブラウザ経由でアクセスできるGUI管理コンソール「OpenStack Dashboard(horizon)からの操作も可能だ。この場合、「プロジェクト」タブの「ボリューム」画面でボリュームの一覧表示や作成、削除といった操作を行える(図1)。

図1 ボリュームの管理はOpenStack Dashboardからも実行できる図1 ボリュームの管理はOpenStack Dashboardからも実行できる