このセクションでは、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-volumes
ボリュームグループを含むデバイスのみをスキャンするように、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
/etc/cinder/cinder.conf
ファイルを編集し、以下の作業をすべて行います。
[database]
セクションで、データベースのアクセス方法を設定します。
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
CINDER_DBPASS
を Block Storage データベース用に選択したパスワードで置き換えます。
[DEFAULT]
セクションに、RabbitMQ
メッセージキューのアクセス方法を設定します。
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
RABBIT_PASS
を RabbitMQ
の openstack
アカウント用に選択したパスワードで置き換えます。
[DEFAULT]
セクションと [keystone_authtoken]
セクションに、Identity サービスへのアクセス方法を設定します。
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = 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 サービス API の場所を設定します。
[DEFAULT]
...
glance_api_servers = http://controller:9292
[oslo_concurrency]
セクションにロックパスを設定します。
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp
/etc/tgt/conf.d/cinder.conf
を以下の内容で作成します。
include /var/lib/cinder/volumes/*
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.