在 Oracle® Solaris 中安装和配置 OpenStack (Kilo)

退出打印视图

更新时间: 2016 年 6 月
 
 

部署用于存储的远程系统

在不支持 SAN 的以前的 OpenStack 发行版中,如果使用 ZFS iSCSI 驱动程序,必须将 Cinder 卷服务配置为在目标主机上运行。

借助对 Cinder 中存储区域网络 (storage area network, SAN) 的支持,您可以使用 SSH 配置多个存储主机后端以及定义其卷类型。在此类型部署中,Cinder 软件包以及所有 Cinder 服务都将仅安装在启动器主机上,该主机通常还用作计算节点。

不需要在远程目标主机上安装 OpenStack 软件包。这些主机仅向基于 COMSTAR 的启动器主机提供 LUN 磁盘。

正确部署用于存储的远程系统包含以下要求:

  • 配置 /etc/cinder/cinder.conf 文件。

  • 向指定的用户授予合适的权限配置文件。

  • 手动安装其他软件包。

以下各节详细讨论了这些要求。

配置 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
enabled_backends

列出启用的后端主机。在此示例中,定义了 5 台后端主机。

这些后端主机在 3 台主机上使用 3 个 ZFS 驱动程序(ZFSVolumeDriverZFSISCSIDriverZFSFCDriver)。在这些主机中,一台是本地的 (localhost),而其他的是远程的(10.134.13.3810.134.63.182)。

volume_backend_ name

定义具有指定名称的卷类型。此参数标识卷类型。但是,必须使用以下命令手动创建卷类型:

# 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_LOCALZFS_REMOTE_FC 创建卷类型。

zfs_volume_base

在每个卷后端上为新的 ZFS 卷指定基础数据集。

san_is_local san_ip san_login san_password

所有 ZFS 驱动程序所基于的 SAN 驱动程序的参数。需要设置这些参数才能通过 SSH 以本地或远程方式在后端主机上发出命令。

对于每个后端,按以下两种方式之一设置 SAN 参数:

  • 仅设置 san_is_local = True

  • 一起设置 san_ipsan_loginsan_password

不要设置全部四个 SAN 参数。

debug=true verbose=true

用于调试的可选参数。您可以不配置这些参数。

正确配置 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 中确保用户和进程的安全》。

将远程主机启用为目标

要将远程主机启用为目标,请执行以下步骤:

  1. 在远程主机上安装 group/feature/storage-server 软件包。

    # pkg install storage-server
  2. 在启动器和远程主机上启用以下服务:

    • 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
  3. 为所定义的 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