7.5. 配置 iSCSI 启动器

您可以配置 iSCSI 启动器,以连接到以下平台上的 Ceph iSCSI 网关:

7.5.1. 为 Red Hat Enterprise Linux 配置 iSCSI 启动器

先决条件

  • Red Hat Enterprise Linux 7.7 或更高版本。
  • 必须安装了软件包 iscsi-initiator-utils-6.2.0.873-35 或更新的版本。
  • 必须安装 package device-mapper-multipath-0.4.9-99 或更新版本。

流程

  1. 安装 iSCSI 启动器和多路径工具:

    [root@rhel ~]# yum install iscsi-initiator-utils
    [root@rhel ~]# yum install device-mapper-multipath
  2. 通过编辑 /etc/iscsi/initiatorname.iscsi 文件来设置启动器名称。请注意,启动器名称必须与使用 gwcli 命令在初始设置期间使用的启动器名称匹配。
  3. 配置多路径 I/O.

    1. 创建默认 /etc/multipath.conf 文件并启用 multipathd 服务:

      [root@rhel ~]# mpathconf --enable --with_multipathd y
    2. 更新 /etc/multipath.conf 文件,如下所示:

      devices {
              device {
                      vendor                 "LIO-ORG"
                      product                "TCMU device"
                      hardware_handler       "1 alua"
                      path_grouping_policy   "failover"
                      path_selector          "queue-length 0"
                      failback               60
                      path_checker           tur
                      prio                   alua
                      prio_args              exclusive_pref_bit
                      fast_io_fail_tmo       25
                      no_path_retry          queue
              }
      }
    3. 重启 multipathd 服务:

      [root@rhel ~]# systemctl reload multipathd
  4. 设置 CHAP 和 iSCSI 发现和登录。

    1. 通过相应地更新 /etc/iscsi/iscsid.conf 文件来提供 CHAP 用户名和密码,例如:

      node.session.auth.authmethod = CHAP
      node.session.auth.username = user
      node.session.auth.password = password
    2. 发现目标门户:

      语法

      iscsiadm -m discovery -t st -p IP_ADDR

    3. 登录到目标:

      语法

      iscsiadm -m node -T TARGET -l

  5. 查看多路径 I/O 配置。multipathd 守护进程根据 multipath.conf 文件中的设置自动设置设备。

    1. 使用 multipath 命令显示故障切换配置中的设备设置,以及每个路径的优先级组,例如:

      示例

      [root@rhel ~]# multipath -ll
      mpathbt (360014059ca317516a69465c883a29603) dm-1 LIO-ORG,TCMU device
      size=1.0G features='0' hwhandler='1 alua' wp=rw
      |-+- policy='queue-length 0' prio=50 status=active
      | `- 28:0:0:1 sde  8:64  active ready running
      `-+- policy='queue-length 0' prio=10 status=enabled
        `- 29:0:0:1 sdc  8:32  active ready running

      multipath -ll 输出的 prio 值指示 ALUA 状态,其中 prio=50 表示它是在 ALUA Active-Optimized 状态下拥有 iSCSI 网关的路径,prio=10 表示它是一个 Active-non-Optimized 路径。status 字段指示正在使用的路径,其中 active 表示当前使用的路径,enabled 表示在 active 失败时的故障转移路径。

    2. 要将设备名称(例如 multipath -ll 输出中的 sde )与 iSCSI 网关匹配:

      示例

      [root@rhel ~]# iscsiadm -m session -P 3

      Persistent Portal 值是分配给 iSCSI 网关的 IP 地址,列在 gwcli 实用程序中。

7.5.2. 为 Red Hat Virtualization 配置 iSCSI 启动程序

先决条件

  • Red Hat Virtualization 4.1
  • 在所有 Red Hat Virtualization 节点上配置了 MPIO 设备
  • iscsi-initiator-utils-6.2.0.873-35 软件包或更新版本
  • device-mapper-multipath-0.4.9-99 软件包或更新版本

流程

  1. 配置多路径 I/O.

    1. 更新 /etc/multipath/conf.d/DEVICE_NAME.conf 文件,如下所示:

      devices {
              device {
                      vendor                 "LIO-ORG"
                      product                "TCMU device"
                      hardware_handler       "1 alua"
                      path_grouping_policy   "failover"
                      path_selector          "queue-length 0"
                      failback               60
                      path_checker           tur
                      prio                   alua
                      prio_args              exclusive_pref_bit
                      fast_io_fail_tmo       25
                      no_path_retry          queue
              }
      }
    2. 重启 multipathd 服务:

      [root@rhv ~]# systemctl reload multipathd
  2. 单击 Storage 资源选项卡,以列出现有的存储域。
  3. 单击 New Domain 按钮打开 New Domain 窗口。
  4. 输入新存储域的名称
  5. 使用 Data Center 下拉菜单选择数据中心。
  6. 使用下拉菜单选择 Domain FunctionStorage Type。与所选域功能不兼容的存储域类型不可用。
  7. Use Host 字段中选择一个活动主机。如果这不是数据中心中的第一个数据域,您必须选择数据中心的 SPM 主机。
  8. 当选择 iSCSI 作为存储类型时,新建域 窗口会自动显示已知带有未使用的 LUN 的目标。如果没有列出您要添加存储的目标,您可以使用目标发现来找到目标,否则继续下一步。

    1. 单击 Discover Targets 以启用目标发现选项。发现目标并登录后,新建域 窗口将自动显示环境未使用的目标。请注意,环境外部的 LUN 也会显示。您可以使用 发现目标 选项在多个目标或同一 LUN 的多个路径中添加 LUN。
    2. Address 字段中输入 iSCSI 主机的完全限定域名或 IP 地址。
    3. Port 字段中输入在浏览目标时,用于连接到主机的端口。默认值为 3260
    4. 如果使用 Challenge Handshake Authentication Protocol (CHAP) 来保护存储,请选中 User Authentication 复选框。输入 CHAP 用户名CHAP 密码
    5. 单击 Discover 按钮。
    6. 从发现结果中选择要使用的目标,然后单击 登录 按钮。或者,单击 Login All 以登录所有发现的目标。

      重要

      如果需要多个路径访问,请确保通过所有必要的路径发现并登录到目标。目前不支持修改存储域以添加其他路径。

  9. 单击所需目标旁边的 + 按钮。这将展开条目并显示与目标连接的所有未使用的 LUN。
  10. 选中您正在使用的每个 LUN 的复选框,以创建存储域。
  11. 另外,您还可以配置高级参数。

    1. 单击 Advanced Parameters
    2. Warning Low Space Indicator 字段中输入一个百分比值。如果存储域中的可用空间低于这个百分比,则会向用户显示警告消息并记录日志。
    3. Critical Space Action Blocker 字段中输入一个 GB 值。如果存储域中可用的可用空间低于此值,则会向用户和记录错误消息显示,并且任何占用空间的新操作(即便是临时使用)都会被阻止。
    4. 选中 Wipe After Delete 复选框以启用 wipe after delete 选项。您可以在创建域后编辑此选项,但这样做不会改变已存在磁盘的 wipe after delete 属性。
    5. 选中 Discard After Delete 复选框,以在删除后启用丢弃选项。您可以在创建域后编辑这个选项。此选项仅适用于块存储域。
  12. 单击 确定 以创建存储域并关闭该窗口。

7.5.3. 为 Microsoft Windows 配置 iSCSI 启动器

先决条件

  • Microsoft Windows Server 2016

流程

  1. 安装 iSCSI 启动器并配置发现和设置。

    1. 安装 iSCSI 启动器驱动程序和 MPIO 工具。
    2. 启动 MPIO 程序,单击 Discover Multi-Paths 选项卡,选中 iSCSI 设备添加支持框,然后单击 Add
    3. 重启 MPIO 程序。
    4. 在 iSCSI 启动器属性窗口中,在发现选项卡 1 中添加一个目标门户。输入 Ceph iSCSI 网关的 IP 地址或 DNS 名称 2 和端口 3 :

      iSCSI 发现选项卡 mod
    5. Targets 选项卡 1 中,选择目标并点击 Connect 2

      iSCSI 目标标签页 mod
    6. Connect To Target 窗口中,选择 启用多路径选项 1 ,然后点击 高级 按钮 2

      iSCSI 连接到目标模式
    7. Connect using 部分下,选择一个 目标门户 IP 1 。选择 Enable CHAP login on 2 并从 Ceph iSCSI 客户端凭证部分输入 NameTarget secret3 ,然后单击 OK 4

      iSCSI 高级窗口 mod
      重要

      Windows Server 2016 不接受小于 12 字节的 CHAP secret。

    8. 为设置 iSCSI 网关时定义的每个目标门户重复前面的两个步骤。
    9. 如果启动器名称与初始设置期间使用的启动器名称不同,请重命名启动器名称。在配置选项卡中的 iSCSI 启动器属性 窗口中,单击更改按钮 1 来重命名启动器名称。 2

      iSCSI 窗口启动器属性 mod
  2. 设置 多路径 I/O。在 PowerShell 中,使用 PDORemovePeriod 命令设置 MPIO 负载平衡策略和 mpclaim 命令来设置负载平衡策略。iSCSI 启动器工具配置剩余的选项。

    注意

    红帽建议将 PDORemovePeriod 选项从 PowerShell 增加到 120 秒。您可能需要根据应用调整此值。当所有路径都关闭且 120 秒过期时,操作系统将启动 I/O 请求失败。

    Set-MPIOSetting -NewPDORemovePeriod 120
    1. 设置故障切换策略

      mpclaim.exe -l -m 1
    2. 验证故障转移策略

      mpclaim -s -m
      MSDSM-wide Load Balance Policy: Fail Over Only
    3. 使用 iSCSI 启动器工具 1Targets 选项卡点击 Devices…​ 按钮 2 :

      iSCSI 目标标签2 mod
    4. Devices 窗口中选择一个磁盘 1 并点击 MPIO…​ 按钮 2

      iSCSI 设备 mpio mod
    5. Device Details 窗口显示到每个目标门户的路径。负载均衡策略 Fail Over Only 必须被选择。

      mpio set failover only mod
    6. 查看 PowerShell 中的 多路径 配置:

      mpclaim -s -d MPIO_DISK_ID

      MPIO_DISK_ID 替换为适当的磁盘标识符。

      注意

      存在一个 Active/Optimized 路径,它是拥有 LUN 的 iSCSI 网关节点的路径,其他 iSCSI 网关节点有一个 Active/未优化路径。

      mpclaim output mod
  3. (可选)调整设置。考虑使用以下 registry 设置:

    • Windows 磁盘超时

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk

      TimeOutValue = 65

    • Microsoft iSCSI Initiator Driver

      HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\<Instance_Number>\Parameters

      LinkDownTime = 25
      SRBTimeoutDelta = 15

7.5.4. 为 VMware ESXi 配置 iSCSI 启动器

先决条件

  • 有关支持的 VMware ESXi 版本,请查看客户门户网站知识库文章 iSCSI 网关(IGW) 部分。
  • 访问 VMware 主机客户端.
  • 根对 VMware ESXi 主机的访问权限,以执行 esxcli 命令。

流程

  1. 禁用 HardwareAcceleratedMove (XCOPY):

    > esxcli system settings advanced set --int-value 0 --option /DataMover/HardwareAcceleratedMove
  2. 启用 iSCSI 软件。在导航窗格中,单击 Storage 1 。选择 适配器选项卡 2 。点击 配置 iSCSI 3 :

    esx web client storage main mod
  3. 验证名称和别名中的启动器名称 1

    esx web client config iscsi main mod step2
  4. 如果使用 gwcli 在初始设置期间创建客户端时使用的启动器名称与使用 VMware ESX 主机的启动器名称不同,请使用以下 esxcli 命令。

    1. 获取 iSCSI 软件的适配器名称:

      > esxcli iscsi adapter list
      > Adapter  Driver     State   UID            Description
      > -------  ---------  ------  -------------  ----------------------
      > vmhba64  iscsi_vmk  online  iscsi.vmhba64  iSCSI Software Adapter
    2. 设置 initiator 名称:

      语法

      > esxcli iscsi adapter set -A ADAPTOR_NAME -n INITIATOR_NAME

      示例

      > esxcli iscsi adapter set -A vmhba64 -n iqn.1994-05.com.redhat:rh7-client

  5. 配置 CHAP。展开 CHAP 身份验证 部分 1 。选择"不使用 CHAP,除非目标需要" 2 。输入初始设置中使用的 CHAP NameSecret 3 凭证。验证 Mutual CHAP 验证部分 4 是否选择了 "Do not use CHAP"。

    esx web client chap mod step3
    警告

    由于 VMware Host 客户端中的一个错误,最初不会使用 CHAP 设置。在 Ceph iSCSI 网关节点上,内核日志包括以下错误来指示此错误:

    > kernel: CHAP user or password not set for Initiator ACL
    > kernel: Security negotiation failed.
    > kernel: iSCSI Login negotiation failed.

    要临时解决这个问题,请使用 esxcli 命令配置 CHAP 设置。authname 参数是 vSphere Web 客户端中的 Name

    > esxcli iscsi adapter auth chap set --direction=uni --authname=myiscsiusername --secret=myiscsipassword --level=discouraged -A vmhba64
  6. 配置 iSCSI 设置。扩展 高级设置 1 。将 RecoveryTimeout 值设置为 25 2

    ESX Web 客户端 iscsi 恢复超时第4 步
  7. 设置发现地址。在 Dynamic target 部分中 1 ,点 Add dynamic target 2 。在 地址 3 下,为其中一个 Ceph iSCSI 网关添加 IP 地址。只需要添加一个 IP 地址。最后,单击 保存配置 按钮 4 。在主界面的 Devices 选项卡中,您将看到 RBD 镜像。

    esx web client config iscsi main mod step5
    注意

    LUN 是自动配置的,使用 ALUA SATP 和 MRU PSP。不要使用其他 SATP 和 PSP。您可以通过 esxcli 命令验证:

    语法

    esxcli storage nmp path list -d eui.DEVICE_ID

    使用适当的设备标识符替换 DEVICE_ID

  8. 验证多路径设置是否正确。

    1. 列出设备:

      示例

      > esxcli storage nmp device list | grep iSCSI
         Device Display Name: LIO-ORG iSCSI Disk (naa.6001405f8d087846e7b4f0e9e3acd44b)
         Device Display Name: LIO-ORG iSCSI Disk (naa.6001405057360ba9b4c434daa3c6770c)

    2. 从上一步中获取 Ceph iSCSI 磁盘的多路径信息:

      示例

      > esxcli storage nmp path list -d naa.6001405f8d087846e7b4f0e9e3acd44b
      
      iqn.2005-03.com.ceph:esx1-00023d000001,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,t,1-naa.6001405f8d087846e7b4f0e9e3acd44b
         Runtime Name: vmhba64:C0:T0:L0
         Device: naa.6001405f8d087846e7b4f0e9e3acd44b
         Device Display Name: LIO-ORG iSCSI Disk (naa.6001405f8d087846e7b4f0e9e3acd44b)
         Group State: active
         Array Priority: 0
         Storage Array Type Path Config: {TPG_id=1,TPG_state=AO,RTP_id=1,RTP_health=UP}
         Path Selection Policy Path Config: {current path; rank: 0}
      
      iqn.2005-03.com.ceph:esx1-00023d000002,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,t,2-naa.6001405f8d087846e7b4f0e9e3acd44b
         Runtime Name: vmhba64:C1:T0:L0
         Device: naa.6001405f8d087846e7b4f0e9e3acd44b
         Device Display Name: LIO-ORG iSCSI Disk (naa.6001405f8d087846e7b4f0e9e3acd44b)
         Group State: active unoptimized
         Array Priority: 0
         Storage Array Type Path Config: {TPG_id=2,TPG_state=ANO,RTP_id=2,RTP_health=UP}
         Path Selection Policy Path Config: {non-current path; rank: 0}

      在示例输出中,每个路径都有一个带有以下部分的 iSCSI 或 SCSI 名称:

      Initiator name = iqn.2005-03.com.ceph:esx1 ISID = 00023d000002 Target name = iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw Target port group = 2 Device id = naa.6001405f8d087846e7b4f0e9e3acd44b

      activeGroup State 值表示这是到 iSCSI 网关的 Active-Optimized 路径。gwcli 命令列出 active 作为 iSCSI 网关所有者。如果 active 路径进入 dead 状态,则其余路径具有 unoptimizedGroup State 值,并且是故障转移路径。

  9. 匹配其各自 iSCSI 网关的所有路径:

    示例

    > esxcli iscsi session connection list
    vmhba64,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,00023d000001,0
       Adapter: vmhba64
       Target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
       ISID: 00023d000001
       CID: 0
       DataDigest: NONE
       HeaderDigest: NONE
       IFMarker: false
       IFMarkerInterval: 0
       MaxRecvDataSegmentLength: 131072
       MaxTransmitDataSegmentLength: 262144
       OFMarker: false
       OFMarkerInterval: 0
       ConnectionAddress: 10.172.19.21
       RemoteAddress: 10.172.19.21
       LocalAddress: 10.172.19.11
       SessionCreateTime: 08/16/18 04:20:06
       ConnectionCreateTime: 08/16/18 04:20:06
       ConnectionStartTime: 08/16/18 04:30:45
       State: logged_in
    
    vmhba64,iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw,00023d000002,0
       Adapter: vmhba64
       Target: iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
       ISID: 00023d000002
       CID: 0
       DataDigest: NONE
       HeaderDigest: NONE
       IFMarker: false
       IFMarkerInterval: 0
       MaxRecvDataSegmentLength: 131072
       MaxTransmitDataSegmentLength: 262144
       OFMarker: false
       OFMarkerInterval: 0
       ConnectionAddress: 10.172.19.22
       RemoteAddress: 10.172.19.22
       LocalAddress: 10.172.19.12
       SessionCreateTime: 08/16/18 04:20:06
       ConnectionCreateTime: 08/16/18 04:20:06
       ConnectionStartTime: 08/16/18 04:30:41
       State: logged_in

    将路径名称与 ISID 值匹配,RemoteAddress 值是自有 iSCSI 网关的 IP 地址。