7.4. 配置 iSCSI 目标

作为存储管理员,您可以使用 gwcli 命令行实用程序 配置 目标、LUN 和客户端。您还可以使用 gwcli reconfigure 子命令来优化 iSCSI 目标的性能

警告

红帽不支持管理由 Ceph iSCSI 网关工具(如 gwcliceph-ansible)导出的 Ceph 块设备镜像。此外,使用 rbd 命令重命名或删除 Ceph iSCSI 网关导出的 RBD 镜像可能会导致存储集群不稳定。

警告

在从 iSCSI 网关配置移除 RBD 镜像之前,请遵循从操作系统中删除存储设备的标准步骤。详情请查看存储管理指南中的删除一个存储设备(Red Hat Enterprise Linux 7)或系统设置指南(Red Hat Enterprise Linux 8)。

7.4.1. 先决条件

  • 安装 Ceph iSCSI 网关软件。

7.4.2. 使用命令行界面配置 iSCSI 目标

Ceph iSCSI 网关是 iSCSI 目标节点,也是 Ceph 客户端节点。在独立节点上配置 Ceph iSCSI 网关,或者将它与 Ceph 对象存储设备 (OSD) 节点共存。

警告

除非在本文档中指定,或者红帽支持指示您这样做,否则不要使用 gwcli reconfigure 子命令来调整其他选项。

先决条件

  • 安装 Ceph iSCSI 网关软件。

流程

  1. 启动 iSCSI 网关命令行界面:

    [root@iscsigw ~]# gwcli
  2. 使用 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 地址。

  3. 添加 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

    注意

    不要在池或镜像名称中使用任何句点(.)。

  4. 创建客户端:

    语法

    > 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)]
  5. 向客户端添加磁盘:

    语法

    >/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

  6. 若要确认 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/
  7. 验证 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 网关节点上运行。

  8. 另外,还可重新配置 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

  9. 配置 iSCSI 启动器.

其它资源

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

其它资源

7.4.4. 降低检测下线 OSD 的计时器设置

有时,需要降低检测下线 OSD 的定时器设置。例如,在将 Red Hat Ceph Storage 用作 iSCSI 网关时,您可以通过降低检测下线 OSD 的计时器设置来降低启动器超时的可能性。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 访问 Ansible 管理节点.

流程

  1. 将 Ansible 配置为使用新的计时器设置。

    1. 在 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 配置文件中。

    2. 进入 ceph-ansible 目录:

      [admin@ansible ~]$ cd /usr/share/ceph-ansible
    3. 使用 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

  2. 验证定时器设置与 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"
    }

  3. 可选:如果无法立即重新启动 OSD 守护进程,您可以从 Ceph 监控节点进行在线更新,或者直接更新所有 Ceph OSD 节点。在您能够重新启动 OSD 守护进程后,如上所述,使用 Ansible 将新的计时器设置添加到 ceph.conf 中,以便在重启后保留设置。

    1. 从 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'

    2. 从 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 级别访问权限。

流程

  1. 启动 iSCSI 网关命令行界面:

    [root@iscsigw ~]# gwcli
  2. 创建新主机组:

    语法

    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

  3. 在主机组中添加主机:

    语法

    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

    重复此步骤,将其他主机添加到组中。

  4. 在主机组中添加磁盘:

    语法

    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 目标部分。