在不支持 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 = 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)。在这些主机中,一台是本地的 (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 的一个后端上创建新卷 t1。
请发出一组相同的命令为 ZFS_LOCAL 和 ZFS_REMOTE_FC 创建卷类型。
在每个卷后端上为新的 ZFS 卷指定基础数据集。
所有 ZFS 驱动程序所基于的 SAN 驱动程序的参数。需要设置这些参数才能通过 SSH 以本地或远程方式在后端主机上发出命令。
对于每个后端,按以下两种方式之一设置 SAN 参数:
仅设置 san_is_local = True
一起设置 san_ip、san_login 和 san_password。
不要设置全部四个 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
有关配置文件和权限的更多信息,请参阅 Operating Systems Documentation(操作系统文档)中您 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 初始化和设置访问控制列表 (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