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)。