*

OpenStack Cinder Multiple driver backends 機能を使ってみよう

公開日: 最終更新日:2014/07/25  |  By  |  Cinder, OpenStack

by Hiroki Ishikawa

OpenStack 担当、石川です。
Grizzly から Cinder のバックエンドドライバを複数選択できるようになりました。
今回はこれを試してみたいと思います。

DevStack を利用したインストール

まずは手軽に DevStack を使って試してみましょう。
DevStack を使用して、マルチバックエンドを試すには、localrc に「CINDER_MULTI_LVM_BACKEND =True」を設定し stack.sh を実行します。
このパラメータを定義すると、2つの Volume Group(stack-volumes, stack-volumes2) が作成され、それぞれを選択できるようになります。
$ git clone https://github.com/openstack-dev/devstack.git
$ cd devstack
$ vim localrc
$ ./stack.sh

※ master ブランチを使用しているため、タイミングによっては正しく動かない場合があります。

localrc のサンプルは以下の通りです。

HOST_IP=192.168.56.101                # 環境に合わせて設定を変更する
ADMIN_PASSWORD=o9i8u7OIU              # 環境に合わせて設定を変更する
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=99988777666             # 環境に合わせて設定を変更する
disable_service n-obj
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-lbaas
enable_service quantum

disable_service n-novnc
disable_service n-xvnc
enable_service n-spice

FIXED_RANGE=172.16.0.0/24
NETWORK_GATEWAY=172.16.0.1
FLOATING_RANGE=10.0.0.0/24
LOGFILE=stack.sh.log
SCREEN_LOGDIR=/opt/stack/logs

ENABLE_TENANT_TUNNELS=True
CINDER_MULTI_LVM_BACKEND=True # マルチバックエンドを有効化

EXTRA_OPTS=(
libvirt_inject_password=true
vnc_keymap=ja
)

CINDER_MULTI_LVM_BACKEND を指定すると2つの VG が作成されます。LV には何も作成されません。

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize  VFree
  stack-volumes    1   0   0 wz--n- 10.01g 10.01g
  stack-volumes2   1   0   0 wz--n- 10.01g 10.01g
  u1304-vg         1   2   0 wz--n- 15.76g  3.66g
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
root u1304-vg -wi-ao-- 8.11g
swap_1 u1304-vg -wi-ao-- 4.00g

後述するボリュームタイプ設定後、ボリューム作成をすると指定した領域にボリュームが作成されることが確認できます。

$ . ~/devstack/openrc admin
$ cinder type-create lvm1
$ cinder type-create lvm2
$ cinder type-key lvm1 set volume_backend_name=LVM_iSCSI
$ cinder type-key lvm2 set volume_backend_name=LVM_iSCSI_2
$ cinder create --volume-type lvm1 --display_name test_lvm 1
$ sudo lvs
  LV                                          VG            Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  volume-87432c6c-fec3-4fd4-9451-07f3071af689 stack-volumes -wi-ao-- 1.00g
  root                                        u1304-vg      -wi-ao-- 8.11g
  swap_1                                      u1304-vg      -wi-ao-- 4.00g
$ cinder create --volume-type lvm2 --display_name test_lvm2 1
$ sudo lvs
  LV                                          VG             Attr     LSize Pool Origin Data%  Move Log Copy%  Convert
  volume-87432c6c-fec3-4fd4-9451-07f3071af689 stack-volumes  -wi-ao-- 1.00g
  volume-972ecf2f-6b8d-4e84-bdea-5dad142d3a44 stack-volumes2 -wi-ao-- 1.00g
  root                                        u1304-vg       -wi-ao-- 8.11g
  swap_1                                      u1304-vg       -wi-ao-- 4.00g

この状態で、Horizon 「ボリュームの作成」画面を見ると、プルダウンメニューに2つのボリュームタイプが表示されます。

 

ボリュームタイプ定義の流れ

マルチバックエンドを設定する場合は以下の流れでボリュームタイプを定義します。
  1. Cinder の基本的な構築をする
  2. バックエンドで指定するボリュームを用意する
  3. cinder.conf に enabled_backends を定義する
  4. 定義したバックエンド名をグループとして、各種設定を行う
  5. cinder コマンドでボリュームタイプを定義する
  6. cinder コマンドでボリュームタイプとバックエンド名を紐付ける

Cinder の基本的な構築をする

Grizzly 以降の Cinder をインストールします。
設定ファイルを作成し、正しく動作することを確認してください。

Cinder インストール手順は公式ドキュメント等をご覧ください。

 

バックエンドで指定するボリュームを用意する

バックエンドとして指定するボリュームを2つ以上用意します。
ここでは LVM と GlusterFS を使用しています。
※ GlusterFS は用意が楽だったので使っています。

cinder.conf に enabled_backends を定義する

enabled_backends に使用するバックエンド名(任意の名前)をリスト形式で指定します。
ここで指定した名前は、[CONFIG]グループとして利用します。
例: enabled_backends = lvmdriver,glusterfs

定義したバックエンド名をグループとして、各種設定を行う

各グループにそれぞれのドライバ設定を行います。
volume_backend_name は任意の名前を指定可能です。あとで、ボリュームタイプと紐付けます。
default_volume_type=lvm
enabled_backends=lvmdriver,gluster

# LVM ドライバ用の設定
[lvmdriver]
volume_group=stack-volume
volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name=LVM_iSCSI

# GlusterFS ドライバ用の設定
[gluster]
volume_driver=cinder.volume.drivers.glusterfs.GlusterfsDriver
glusterfs_shares_config=/etc/cinder/shares.conf
glusterfs_mount_point_base=/var/lib/cinder/volumes
volume_backend_name=GlusterFS

cinder コマンドでボリュームタイプを定義する

ボリュームタイプを指定します。
ここで作成するボリュームタイプはユーザに直接見えるものになります。
# 「ioDrive」や「SSD」などとして運用してもいいですね。
ボリュームタイプ「lvm」を作成します。コマンド実行には admin 権限が必要です。
$ cinder type-create lvm
+--------------------------------------+------+
|                  ID                  | Name |
+--------------------------------------+------+
| ce3cd677-a140-4eb4-b4b2-e8947e126f30 | lvm  |
+--------------------------------------+------+
ボリュームタイプ「glusterfs」を作成します。コマンド実行には admin 権限が必要です。
$ cinder type-create glusterfs
+--------------------------------------+-----------+
|                  ID                  |    Name   |
+--------------------------------------+-----------+
| 32809eec-521a-444a-9ac9-1ab17c21774f | glusterfs |
+--------------------------------------+-----------+
ボリュームタイプリストを表示します。
$ cinder type-list
+--------------------------------------+-----------+
|                  ID                  |    Name   |
+--------------------------------------+-----------+
| 32809eec-521a-444a-9ac9-1ab17c21774f | glusterfs |
| ce3cd677-a140-4eb4-b4b2-e8947e126f30 |    lvm    |
+--------------------------------------+-----------+

cinder コマンドでボリュームタイプとバックエンド名を紐付ける

ボリュームタイプを作成しただけではどのボリュームを使うのかが分かりません。
そこで、ボリュームタイプ と volume_backend_name を紐付ける必要があります。
volume_backend_name は先ほど cinder.conf で定義したものを指定します。
コマンド実行には admin 権限が必要です。
$ cinder type-key lvm set volume_backend_name=LVM_iSCSI
$ cinder type-key glusterfs set volume_backend_name=GlusterFS
$ cinder extra-specs-list
+--------------------------------------+-----------+----------------------------------------+
|                  ID                  |    Name   |              extra_specs               |
+--------------------------------------+-----------+----------------------------------------+
| 32809eec-521a-444a-9ac9-1ab17c21774f | glusterfs | {u'volume_backend_name': u'GlusterFS'} |
| ce3cd677-a140-4eb4-b4b2-e8947e126f30 |    lvm    | {u'volume_backend_name': u'LVM_iSCSI'} |
+--------------------------------------+-----------+----------------------------------------+

ボリューム作成

ボリュームタイプ「lvm」を指定して作成します。
$ cinder create --display_name LVM --volume-type lvm 1
ボリュームタイプ「glusterfs」を指定して作成します。
$ cinder create --display_name GLUSTER --volume-type glusterfs 1
作成したボリュームを確認すると指定したボリュームタイプでそれぞれのボリュームが作成されていることがわかります。
$ cinder list
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
|                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
| 43a981cb-67a5-447d-a9e0-9e5b85aae1e4 | available |   GLUSTER    |  1   |  glusterfs  |  False   |             |
| 71e7a97c-89e4-4187-9616-7b835c1bba03 | available |     LVM      |  1   |     lvm     |  False   |             |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
–volume-type を指定しない場合は default_volume_type で指定した lvm が選択されます。
$ cinder create --display_name NONE 1
$ cinder list
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
|                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
| 43a981cb-67a5-447d-a9e0-9e5b85aae1e4 | available |   GLUSTER    |  1   |  glusterfs  |  False   |             |
| 71e7a97c-89e4-4187-9616-7b835c1bba03 | available |     LVM      |  1   |     lvm     |  False   |             |
| b7de87a7-90e8-4491-a327-6ad450c43f7d | available |     NONE     |  1   |     lvm     |  False   |             |
+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+
DevStack を利用した構築では default_volume_type オプションが設定されないため、–volume-type を指定しないと Type が None になってしまいます。

実際に構築する場合は default_volume_type を指定し、デフォルトのボリュームタイプを指定するか、ボリュームタイプを指定しないとエラーにするなどの対応をしましょう。

この機能を使うことで「速いディスク」「遅いが大容量のディスク」「実験的サポートのボリューム」などを選択することが容易になります。是非活用してみてください。

関連記事

519RhQeJZML._SL500_AA300_

OpenStack Swift 書籍の出版のお知らせ

by You Yamagata 2014.04.02山縣です。 この度、インプレスR&D社よ

記事を読む

no image

Keystone認証の利用 ~ Swiftによるオブジェクトストレージシステムの構築(9)

by You Yamagata 2013.05.13 (Last updated 2013

記事を読む

no image

LVM上にインスタンスを作成する

OpenStack 担当 石川です。 実際に自分が使うか使わないかは置いておき、気になったオプ

記事を読む

Rally-benchmark-results-in-both-tabular-and-graphic-displays

コマンドラインからRallyを使いこなす

RallyはOpenStackのベンチマークツールです。概要については以前書いた記事で紹介しています

記事を読む

image

OpenStack Summit Portland Quick レポート

by hasegawa 2013.04.172013年4月15日〜18日にかけて米国のオレゴン州ポー

記事を読む

検証構成

RDOを使用したOpenStack Juno環境の構築

ビットアイル総合研究所 田波です。 今回はRDOを使用してOpenStack Juno環境を構築し

記事を読む

ODT2015logo

OpenStack Days Tokyo 2015

来る2月3日,4日にはOpenStack Days Tokyo 2015が開催されます。 日本国内

記事を読む

01.all

CentOS7 RDO Juno with Ceph

ご無沙汰しています。 先日のブログではCentOS7/RDOで OpenStack Juno環境を

記事を読む

no image

サーバ1台でのクラスタの構築 ~ Swiftによるオブジェクトストレージシステムの構築(2)

by yamagata 2013/1/21(Swift関連の記事の一覧はこちらをご覧ください)(1/

記事を読む

openstack-figure1-2x

COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCephが採用されているケースが多

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑