このセクションで説明されている Cinder 配備は、Oracle Solaris 11.3 SRU 2 以降のリリースを実行している Juno 設定に適用されます。
SAN のサポートのない以前の OpenStack リリースでは、Cinder ボリュームサービスは、ZFS iSCSI ドライバが使用されている場合はターゲットホスト上で動作するように構成する必要がありました。
Cinder でのストレージエリアネットワーク (SAN) のサポートにより、SSH を使用して複数のストレージホストバックエンドを構成したり、これらのホストのボリュームタイプを定義してそれらがどのように使用されるかを決定したりできます。このタイプの配備では、Cinder パッケージやすべての Cinder サービスは、イニシエータホスト (多くの場合、コンピュートノードとしても機能するホスト) にのみインストールされます。
リモートのターゲットホストに OpenStack パッケージをインストールする必要はありません。これらのホストは、COMSTAR に基づいてイニシエータホストに LUN ディスクを提供するだけです。
ストレージのためのリモートシステムの正しい配備には、次の要件があります。
/etc/cinder/cinder.conf ファイルの構成。
指定されたユーザーへの適切な権利プロファイルの付与。
追加パッケージの手動インストール。
以降のセクションでは、これらの要件について詳細に説明します。
イニシエータホストに Cinder パッケージをインストールしたあと、/etc/cinder/cinder.conf ファイルの [DEFAULT] セクションを編集します。
構成ファイル内の定義を理解するためのガイドとして、次の例を参照してください。
[DEFAULT] my_ip = localhost osapi_volume_workers = 1 auth_strategy = keystone #num_volume_device_scan_tries = 6 os-volume-api-version = 2 scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler enabled_backends=zfsdriver-1, zfsdriver-2, zfsdriver-3, zfsdriver-4, zfsdriver-5 [zfsdriver-1] volume_group=zvolumes-1 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSVolumeDriver volume_backend_name=ZFS_LOCAL zfs_volume_base = rpool/cinder san_is_local = True debug=true verbose=true [zfsdriver-2] volume_group=zvolumes-2 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/cinder san_ip = 10.134.13.38 san_login = jdoe san_password = password debug=true verbose=true [zfsdriver-3] volume_group=zvolumes-3 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSFCDriver volume_backend_name=ZFS_REMOTE_FC zfs_volume_base = rpool/fc san_ip = 10.134.13.38 san_login = jdoe san_password = password debug=true verbose=true [zfsdriver-4] volume_group=zvolumes-4 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/cinder/zq san_ip = 10.134.13.38 san_login = jdoe san_password = password debug=true verbose=true [zfsdriver-5] volume_group=zvolumes-5 volume_driver=cinder.volume.drivers.solaris.zfs.ZFSISCSIDriver volume_backend_name=ZFS_REMOTE zfs_volume_base = rpool/zq san_ip = 10.134.63.182 san_login = jdoe san_password = password debug=true verbose=true
有効になっているバックエンドホストをリストします。この例では、5 つのバックエンドホストが定義されています。
これらのバックエンドホストは、3 つのホスト上で 3 つの ZFS ドライバ (ZFSVolumeDriver、ZFSISCSIDriver、ZFSFCDriver) を使用します。これらのホストのうち、1 つはローカル (localhost) であり、その他はリモート (10.134.13.38 および 10.134.63.182) です。
ボリュームタイプを指定された名前で定義します。次のサンプルコマンドは、それぞれ次のアクションを実行します。
# cinder type-create type-remote # cinder type-key type-remote set volume_backend_name=ZFS_REMOTE # cinder create --display-name t1 --volume-type type-remote
前の例で、各コマンドは次のアクションを実行します。
新しいボリュームタイプを作成します。
新しいボリュームタイプにバックエンド名を割り当てます。
新しいボリュームタイプに基づいて新しいボリュームを作成します。
最後のコマンドを実行すると、フィルタリング規則に基づいて、ZFS_REMOTE という名前を持つバックエンドの 1 つに新しいボリューム t1 が作成されます。
各ボリュームバックエンド上の新しい ZFS ボリュームの基本データセットを指定します。
ZFS ドライバはすべて SAN ドライバに基づいているため、san_* パラメータを設定する必要があります。
各コマンドは、バックエンドホスト上でローカルに、または SSH を使用してリモートで実行されます。そのため、バックエンドごとに san_is_local = True を設定するか、または san_ip* パラメータを構成しますが、この両方は行いません。
デバッグのためのオプションパラメータ。これらのパラメータの構成は省略できます。
Cinder を正しく構成したあとにサービスを一覧表示すると、各サービスの状態が表示されます。
# cinder service-list +------------+--------------+------+---------+-------+--------------------+----------+ | Binary | Host | Zone | Status | State | Updated_at | Disabled | | | | | | | | Reason | +------------+--------------+------+---------+-------+--------------------+----------+ | cinder- | | | | | 2015-10-13 | | | backup | host-2 | nova | enabled | up | T19:22:45.000000 | None | | | | | | | | | | cinder- | | | | | 2015-10-13 | | | scheduler | host-2 | nova | enabled | up | T19:22:43.000000 | None | | | | | | | | | | cinder- | | | | | 2015-10-13 | | | volume | host-2 | nova | enabled | down | T18:31:41.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-1 | nova | enabled | up | T19:22:46.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-2 | nova | enabled | up | T19:22:47.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-3 | nova | enabled | up | T19:22:48.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-4 | nova | enabled | up | T19:22:47.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-5 | nova | enabled | up | T19:22:48.000000 | None | | | | | | | | | | cinder- | host-2 | | | | 2015-10-13 | | | volume | @zfsdriver-6 | nova | enabled | down | T18:32:55.000000 | None | +------------+--------------+------+---------+-------+--------------------+----------+
san_login によって定義されたユーザーがリモートのターゲットを使用できるようにするには、そのユーザーに適切な権利プロファイルを付与する必要があります。次の例は、ユーザーの権利プロファイルを作成する方法を示しています。
# useradd -s /usr/bin/pfbash -m jdoe # passwd jdoe password # profiles -p "Cinder Storage management" profiles:Cinder Storage management> set desc="Cinder Storage management on target host" profiles:Cinder Storage management> add profiles="File System Management" profiles:Cinder Storage management> add auths="solaris.smf.modify.stmf" profiles:Cinder Storage management> add cmd=/usr/sbin/itadm profiles:Cinder Storage management:itadm> set euid=0 profiles:Cinder Storage management:itadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/stmfadm profiles:Cinder Storage management:stmfadm> set euid=0 profiles:Cinder Storage management:stmfadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/zfs profiles:Cinder Storage management:zfs> set priv=sys_config,sys_mount profiles:Cinder Storage management:zfs> end profiles:Cinder Storage management> exit # usermod -P "Cinder Storage management" jdoe
プロファイルと権利の詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護を参照してください。
リモートホストをターゲットとして有効にするには、リモートホスト上で次の手順を実行します。
リモートホストにパッケージ group/feature/storage-server をインストールします。
# pkg install storage-server
ホスト上で次のサービスを有効にします。
svc:/system/stmf:default
svc:/network/iscsi/target:default
例:
remote-host# svcadm enable stmf remote-host# svcadm enable -r svc:/network/iscsi/target:default
定義された zfs_volume_base のアクセス制御リスト (ACL) を初期化および設定します。
たとえば、構成ファイル内に zfs_volume_base=rpool/fc という定義が含まれているとします。その場合は、次のコマンドを実行する必要があります。
# chmod A+user:cinder:add_subdirectory:allow /rpool/fc # zfs allow cinder clone,create,destroy,mount,snapshot rpool/fc