7.4. 配置 iSCSI 目标
作为存储管理员,您可以使用 gwcli
命令行实用程序 配置 目标、LUN 和客户端。您还可以使用 gwcli reconfigure
子命令来优化 iSCSI 目标的性能。
红帽不支持管理由 Ceph iSCSI 网关工具(如 gwcli
和 ceph-ansible
)导出的 Ceph 块设备镜像。此外,使用 rbd
命令重命名或删除 Ceph iSCSI 网关导出的 RBD 镜像可能会导致存储集群不稳定。
7.4.1. 先决条件
- 安装 Ceph iSCSI 网关软件。
7.4.2. 使用命令行界面配置 iSCSI 目标
Ceph iSCSI 网关是 iSCSI 目标节点,也是 Ceph 客户端节点。在独立节点上配置 Ceph iSCSI 网关,或者将它与 Ceph 对象存储设备 (OSD) 节点共存。
除非在本文档中指定,或者红帽支持指示您这样做,否则不要使用 gwcli reconfigure
子命令来调整其他选项。
先决条件
- 安装 Ceph iSCSI 网关软件。
流程
启动 iSCSI 网关命令行界面:
[root@iscsigw ~]# gwcli
使用 IPv4 或 IPv6 地址创建 iSCSI 网关:
语法
>/iscsi-targets create iqn.2003-01.com.redhat.iscsi-gw:_target_name_ > goto gateways > create ISCSI_GW_NAME IP_ADDR_OF_GW > create ISCSI_GW_NAME IP_ADDR_OF_GW
示例
>/iscsi-targets create iqn.2003-01.com.redhat.iscsi-gw:ceph-igw > goto gateways > create ceph-gw-1 10.172.19.21 > create ceph-gw-2 10.172.19.22
注意您不能混合使用 IPv4 和 IPv6 地址。
添加 Ceph 块设备:
语法
> cd /disks >/disks/ create POOL_NAME image=IMAGE_NAME size=IMAGE_SIZE_m|g|t
示例
> cd /disks >/disks/ create rbd image=disk_1 size=50g
注意不要在池或镜像名称中使用任何句点(
.
)。创建客户端:
语法
> goto hosts > create iqn.1994-05.com.redhat:_client_name_ > auth use username=USER_NAME password=PASSWORD
示例
> goto hosts > create iqn.1994-05.com.redhat:rh7-client > auth username=iscsiuser1 password=temp12345678
重要红帽不支持混合客户端,如有些启用了 Challenge Handshake Authentication Protocol (CHAP),另外一些禁用了一些 CHAP。所有客户端都必须启用 CHAP,或者禁用 CHAP。默认的行为是仅通过其启动器名称验证启动器。
如果启动器无法登录到目标,某些启动器可能无法正确配置 CHAP 身份验证,例如:
o- hosts ................................ [Hosts: 2: Auth: MISCONFIG]
在
主机
级别使用以下命令重置所有 CHAP 身份验证:/> goto hosts /iscsi-target...csi-igw/hosts> auth nochap ok ok /iscsi-target...csi-igw/hosts> ls o- hosts ................................ [Hosts: 2: Auth: None] o- iqn.2005-03.com.ceph:esx ........... [Auth: None, Disks: 4(310G)] o- iqn.1994-05.com.redhat:rh7-client .. [Auth: None, Disks: 0(0.00Y)]
向客户端添加磁盘:
语法
>/iscsi-target..eph-igw/hosts > cd iqn.1994-05.com.redhat:_CLIENT_NAME_ > disk add POOL_NAME/IMAGE_NAME
示例
>/iscsi-target..eph-igw/hosts > cd iqn.1994-05.com.redhat:rh7-client > disk add rbd/disk_1
若要确认 API 在正确使用 SSL,请搜索位于
/var/log/rbd-target-api.log
或/var/log/rbd-target/rbd-target-api.log
(对于https
) 的rbd-target-api
日志文件,例如:Aug 01 17:27:42 test-node.example.com python[1879]: * Running on https://0.0.0.0:5000/
验证 Ceph ISCSI 网关是否正常工作:
/> goto gateways /iscsi-target...-igw/gateways> ls o- gateways ............................ [Up: 2/2, Portals: 2] o- ceph-gw-1 ........................ [ 10.172.19.21 (UP)] o- ceph-gw-2 ........................ [ 10.172.19.22 (UP)]
如果状态为
UNKNOWN
,请检查网络问题和任何错误配置。如果使用防火墙,请验证是否打开适当的 TCP 端口。验证 iSCSI 网关是否列在trusted_ip_list
选项中。验证rbd-target-api
服务是否在 iSCSI 网关节点上运行。另外,还可重新配置
max_data_area_mb
选项:语法
>/disks/ reconfigure POOL_NAME/IMAGE_NAME max_data_area_mb NEW_BUFFER_SIZE
示例
>/disks/ reconfigure rbd/disk_1 max_data_area_mb 64
注意max_data_area_mb
选项控制每个镜像可用于在 iSCSI 目标和 Ceph 集群之间传递 SCSI 命令数据的内存量(以兆字节为单位)。如果这个值太小,可能会导致过量队列完全重试,这将影响性能。如果该值太大,则可能会导致一个磁盘使用过多的系统内存,这可能会导致其他子系统的分配失败。max_data_area_mb
选项的默认值为8
。- 配置 iSCSI 启动器.
其它资源
- 详情请参阅安装 iSCSI 网关。
- 如需更多信息,请参阅配置 iSCSI initiator 部分。
7.4.3. 优化 iSCSI 目标的性能
有许多设置控制 iSCSI 目标如何通过网络传输数据。这些设置可用于优化 iSCSI 网关的性能。
只有在由红帽支持团队指示或根据本文档中指定的要求时才更改这些设置。
gwcli reconfigure
子命令可控制用于优化 iSCSI 网关性能的设置。
影响 iSCSI 目标性能的设置
-
max_data_area_mb
-
cmdsn_depth
-
immediate_data
-
initial_r2t
-
max_outstanding_r2t
-
first_burst_length
-
max_burst_length
-
max_recv_data_segment_length
-
max_xmit_data_segment_length
其它资源
-
有关
max_data_area_mb
的信息,包括演示如何使用gwcli reconfigure
的示例,位于使用命令行接口配置 iSCSI 目标一节中。
7.4.4. 降低检测下线 OSD 的计时器设置
有时,需要降低检测下线 OSD 的定时器设置。例如,在将 Red Hat Ceph Storage 用作 iSCSI 网关时,您可以通过降低检测下线 OSD 的计时器设置来降低启动器超时的可能性。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 访问 Ansible 管理节点.
流程
将 Ansible 配置为使用新的计时器设置。
在 Ansible 管理节点上,在
group_vars/all.yml
文件中添加ceph_conf_overrides
部分,如下所示,或编辑任何现有的ceph_conf_overrides
部分:ceph_conf_overrides: osd: osd_client_watch_timeout: 15 osd_heartbeat_grace: 20 osd_heartbeat_interval: 5
在 Ansible playbook 运行时,上面的设置将添加到 OSD 节点上的
ceph.conf
配置文件中。进入
ceph-ansible
目录:[admin@ansible ~]$ cd /usr/share/ceph-ansible
使用 Ansible 更新
ceph.conf
文件,并在所有 OSD 节点上重新启动 OSD 守护进程。在 Ansible admin 节点上运行以下命令:裸机 部署
[admin@ansible ceph-ansible]$ ansible-playbook site.yml --limit osds
容器 部署
[admin@ansible ceph-ansible]$ ansible-playbook site-container.yml --limit osds -i hosts
验证定时器设置与
ceph_conf_overrides
中设置的相同:语法
ceph daemon osd.OSD_ID config get osd_client_watch_timeout ceph daemon osd.OSD_ID config get osd_heartbeat_grace ceph daemon osd.OSD_ID config get osd_heartbeat_interval
示例
[root@osd ~]# ceph daemon osd.0 config get osd_client_watch_timeout { "osd_client_watch_timeout": "15" } [root@osd ~]# ceph daemon osd.0 config get osd_heartbeat_grace { "osd_heartbeat_grace": "20" } [root@osd ~]# ceph daemon osd.0 config get osd_heartbeat_interval { "osd_heartbeat_interval": "5" }
可选:如果无法立即重新启动 OSD 守护进程,您可以从 Ceph 监控节点进行在线更新,或者直接更新所有 Ceph OSD 节点。在您能够重新启动 OSD 守护进程后,如上所述,使用 Ansible 将新的计时器设置添加到
ceph.conf
中,以便在重启后保留设置。从 Ceph 监控节点在线更新 OSD 计时器设置:
语法
ceph tell osd.OSD_ID injectargs '--osd_client_watch_timeout 15' ceph tell osd.OSD_ID injectargs '--osd_heartbeat_grace 20' ceph tell osd.OSD_ID injectargs '--osd_heartbeat_interval 5'
示例
[root@mon ~]# ceph tell osd.0 injectargs '--osd_client_watch_timeout 15' [root@mon ~]# ceph tell osd.0 injectargs '--osd_heartbeat_grace 20' [root@mon ~]# ceph tell osd.0 injectargs '--osd_heartbeat_interval 5'
从 Ceph OSD 节点在线更新 OSD 计时器设置:
语法
ceph daemon osd.OSD_ID config set osd_client_watch_timeout 15 ceph daemon osd.OSD_ID config set osd_heartbeat_grace 20 ceph daemon osd.OSD_ID config set osd_heartbeat_interval 5
示例
[root@osd ~]# ceph daemon osd.0 config set osd_client_watch_timeout 15 [root@osd ~]# ceph daemon osd.0 config set osd_heartbeat_grace 20 [root@osd ~]# ceph daemon osd.0 config set osd_heartbeat_interval 5
其它资源
- 有关将红帽 Ceph 存储用作 iSCSI 网关的更多信息,请参阅 Red Hat Ceph Storage 块设备指南中的 Ceph iSCSI 网关。
7.4.5. 使用命令行界面配置 iSCSI 主机组
Ceph iSCSI 网关可以配置主机组,以管理共享同一磁盘配置的多个服务器。iSCSI 主机组创建主机以及该组中每一主机有权访问的磁盘的逻辑分组。
将磁盘设备共享到多个主机必须使用群集感知型文件系统。
先决条件
- 安装 Ceph iSCSI 网关软件。
- 对 Ceph iSCSI 网关节点的 root 级别访问权限。
流程
启动 iSCSI 网关命令行界面:
[root@iscsigw ~]# gwcli
创建新主机组:
语法
cd iscsi-targets/ cd IQN/host-groups create group_name=GROUP_NAME
示例
/> cd iscsi-targets/ /iscsi-targets> cd iqn.2003-01.com.redhat.iscsi-gw:ceph-igw/host-groups/ /iscsi-target.../host-groups> create group_name=igw_grp01
在主机组中添加主机:
语法
cd GROUP_NAME host add client_iqn=CLIENT_IQN
示例
> cd igw_grp01 /iscsi-target.../host-groups/igw_grp01> host add client_iqn=iqn.1994-05.com.redhat:rh8-client
重复此步骤,将其他主机添加到组中。
在主机组中添加磁盘:
语法
cd /disks/ /disks> create pool=POOL image=IMAGE_NAME size=SIZE cd /IQN/host-groups/GROUP_NAME disk add POOL/IMAGE_NAME
示例
> cd /disks/ /disks> create pool=rbd image=rbdimage size=1G /> cd iscsi-targets/iqn.2003-01.com.redhat.iscsi-gw:ceph-igw/host-groups/igw_grp01/ /iscsi-target...s/igw_grp01> disk add rbd/rbdimage
重复此步骤,向该组添加其他磁盘。
7.4.6. 其它资源
- 有关使用 Red Hat Ceph Storage 仪表板配置 iSCSI 目标的详情,请参阅 Red Hat Ceph Storage 仪表板指南中的创建 iSCSI 目标部分。