本节中介绍的 Cinder 部署适用于在 Oracle Solaris 11.3 SRU 2 或更高发行版上运行的 Juno 设置。
在不支持 SAN 的以前的 OpenStack 发行版中,如果使用 ZFS iSCSI 驱动程序,必须将 Cinder 卷服务配置为在目标主机上运行。
借助 Cinder 中存储区域网络 (storage area network, 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)。在这些主机中,一台是本地的 (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 的一个后端上创建新卷 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 初始化和设置访问控制列表 (Access Control List, 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