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 = user-name 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 = user-name 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 = user-name 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 = user-name 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 vol-type # cinder type-key vol-type set volume_backend_name=backend-name # cinder create --display-name display --volume-type vol-type
これらのコマンドはそれぞれ次のアクションを実行します。
新しいボリュームタイプを作成します。
新しいボリュームタイプにバックエンド名を割り当てます。
新しいボリュームタイプに従って新しいボリュームを作成します。
前のサンプル Cinder 構成ファイルに基づいて、次のコマンドを入力します。
# 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_LOCAL および ZFS_REMOTE_FC のボリュームタイプを作成します。
各ボリュームバックエンド上の新しい ZFS ボリュームの基本データセットを指定します。
すべての ZFS ドライバの基となる SAN ドライバのパラメータ。これらのパラメータは、バックエンドホスト上で、SSH を使用してローカルまたはリモートでコマンドを発行できるようにするために設定する必要があります。
バックエンドごとに、次の 2 つの方法のいずれかで SAN パラメータを設定します。
san_is_local = True のみを設定します
san_ip、san_login、および san_password を一緒に設定します。
4 つすべての SAN パラメータを設定しないでください。
デバッグのためのオプションパラメータ。これらのパラメータの構成は省略できます。
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/fcadm profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices profiles:Cinder Storage management:itadm> end profiles:Cinder Storage management> add cmd=/usr/sbin/fcinfo profiles:Cinder Storage management:itadm> set privs=file_dac_read,sys_devices 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/lib/rad/module/mod_zfsmgr.so.1 profiles:Cinder Storage management:mod_zfsmgr.so.1> set privs={zone}:/system/volatile/*, \ sys_config,sys_mount profiles:Cinder Storage management:mod_zfsmgr.so.1> 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 バージョンのライブラリにある『Oracle Solaris でのユーザーとプロセスのセキュリティー保護』を参照してください。
リモートホストをターゲットとして有効にするには、次の手順を実行します。
リモートホストにパッケージ group/feature/storage-server をインストールします。
# pkg install storage-server
イニシエータとリモートホストの両方で次のサービスを有効にします。
svc:/system/stmf:default
svc:/network/iscsi/target:default
svc:/system/rad:remote
例:
remote-host# svcadm enable stmf remote-host# svcadm enable -r svc:/network/iscsi/target:default remote-host# svcadm enable rad
定義された 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