このセクションでは、Block Storage サービスのストレージノードをインストールして設定する方法について説明します。簡単のため、この設定では例として未使用のローカルブロックストレージデバイスがある 1 台のストレージノードを使用します。この説明では /dev/sdb を使用しますが、お使いのノードに合わせて別の値に置き換えることができます。
Block Storage サービスは、 LVM ドライバーを使用して、このデバイス上に論理ボリュームを構成し、 iSCSI 経由でこれらをインスタンスに提供します。これらの手順を少し変更するだけで、お使いの環境に追加のストレージノードを追加し、水平にスケールさせることができます。
ストレージノードに Block Storage サービスをインストールして設定する前に、ストレージデバイスを準備する必要があります。
注釈
ストレージノードにおいて以下の手順を実行します。
補助ユーティリティーパッケージをインストールします。
LVM パッケージをインストールします。
# zypper install lvm2
(オプション) QCOW2 や VMDK などの raw 以外のイメージ形式を使用したい場合、QEMU パッケージをインストールします。
# zypper install qemu
注釈
いくつかのディストリビューションは、デフォルトで LVM が含まれています。
LVM 物理ボリューム /dev/sdb を作成します。
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
LVM ボリュームグループ cinder-volumes を作成します。
# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created
Block Storage のサービスが、このボリュームグループ内に論理ボリュームを作成します。
インスタンスのみが Block Storage のボリュームにアクセスできますが、ボリュームに関連付けられたデバイスを管理するのはベースのオペレーティングシステムです。デフォルトでは、LVM ボリュームのスキャンツールが、ボリュームを含むブロックストレージデバイス用の /dev ディレクトリーをスキャンします。プロジェクトがボリューム上で LVM を使用している場合、スキャンツールがこれらのボリュームを検知し、それらをキャッシュしようとします。これにより、ベースのオペレーティングシステムとプロジェクトボリュームの両方にさまざまな問題を引き起こす可能性があります。cinder-volume ボリュームグループを含むデバイスのみをスキャンするように、LVM を再設定する必要があります。/etc/lvm/lvm.conf ファイルを編集し、以下の作業をすべて行います。
devices セクションに、/dev/sdb デバイスを受け付け、他のデバイスをすべて拒否するフィルターを追加します。
devices {
...
filter = [ "a/sdb/", "r/.*/"]
フィルター配列の各項目は、許可 を意味する a か 拒否 を意味する r から始まり、デバイス名にマッチする正規表現を含みます。他のすべてのデバイスを拒否させるために、この配列は r/.*/ で終わる必要があります。vgs -vvvv コマンドを使用して、フィルターをテストできます。
警告
ストレージノードがオペレーティングシステムのディスクで LVM を使用している場合、関連するデバイスをフィルターに追加する必要があります。例えば、/dev/sda デバイスにオペレーティングシステムが含まれる場合、次のようにします。
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
同様に、コンピュートノードがオペレーティングシステムのディスクで LVM を使用している場合、それらのノードにおいて /etc/lvm/lvm.conf ファイルにあるフィルターも変更して、オペレーティングシステムのディスクのみが含まれるようにする必要があります。例えば、/dev/sda デバイスにオペレーティングシステムが含まれる場合、次のようにします。
filter = [ "a/sda/", "r/.*/"]
パッケージをインストールします。
# zypper install openstack-cinder-volume tgt python-PyMySQL
/etc/cinder/cinder.conf ファイルを編集し、以下の作業をすべて行います。
[database] セクションで、データベースのアクセス方法を設定します。
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
CINDER_DBPASS を Block Storage データベース用に選択したパスワードで置き換えます。
[DEFAULT] と [oslo_messaging_rabbit] セクションに、RabbitMQ メッセージキューのアクセス方法を設定します。
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
RABBIT_PASS を RabbitMQ の openstack アカウント用に選択したパスワードで置き換えます。
[DEFAULT] セクションと [keystone_authtoken] セクションに、Identity サービスへのアクセス方法を設定します。
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = CINDER_PASS
CINDER_PASS を Identity サービスで cinder ユーザー用に選択したパスワードで置き換えます。
注釈
[keystone_authtoken] セクションにある他のオプションは、コメントアウトまたは削除します。
[DEFAULT] セクションに my_ip オプションを設定します。
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
MANAGEMENT_INTERFACE_IP_ADDRESS をストレージノードの管理ネットワークインターフェースの IP アドレスに置き換えます。通常は、アーキテクチャー例 にある 1 番目のノードは 10.0.0.41 です。
[lvm] セクションに、LVM ドライバー、cinder-volumes ボリュームグループ、iSCSI プロトコル、適切な iSCSI サービスを指定し、LVM バックエンドを設定します。
[lvm]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm
[DEFAULT] セクションで LVM バックエンドを有効にします。
[DEFAULT]
...
enabled_backends = lvm
注釈
バックエンドの名前は任意です。このガイドは、例としてバックエンドの名前にドライバー名を使用します。
[DEFAULT] セクションで、Image service の場所を設定します。
[DEFAULT]
...
glance_host = controller
[oslo_concurrency] セクションにロックパスを設定します。
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp
(オプション) トラブルシューティングしやすくするために、冗長ロギングを [DEFAULT] セクションで有効にします。
[DEFAULT]
...
verbose = True
Block Storage ボリュームサービスと関連サービスを起動し、システム起動時に自動的に起動するよう設定します。
# systemctl enable openstack-cinder-volume.service tgtd.service
# systemctl start openstack-cinder-volume.service tgtd.service
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.