8.4. 配置 iSCSI 启动器


Red Hat Ceph Storage 支持三个操作系统中的 iSCSI 启动器来连接到 Ceph iSCSI 网关:

8.4.1. Red Hat Enterprise Linux 的 iSCSI 启动器

先决条件:

  • 必须安装软件包 iscsi-initiator-utils-6.2.0.873-35 或更高版本
  • 必须安装软件包 device-mapper-multipath-0.4.9-99 或更新版本

安装软件:

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

    # yum install iscsi-initiator-utils
    # yum install device-mapper-multipath

设置启动器名称

  1. 编辑 /etc/iscsi/initiatorname.iscsi 文件。

    注意

    启动器名称必须与 Ansible client_connections 选项中使用的启动器名称匹配,或者使用 gwcli 在初始设置中使用什么。

配置多路径 IO:

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

    # mpathconf --enable --with_multipathd y
  2. 将以下内容添加到 /etc/multipath.conf 文件中:

    devices {
            device {
                    vendor                 "LIO-ORG"
                    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 服务:

    # systemctl reload multipathd

CHAP Setup 和 iSCSI Discovery/Login:

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

    示例

    node.session.auth.authmethod = CHAP
    node.session.auth.username = user
    node.session.auth.password = password

    注意

    如果更新这些选项,则必须重新运行 iscsiadm discovery 命令。

  2. 发现目标门户:

    # iscsiadm -m discovery -t st -p 192.168.56.101
    192.168.56.101:3260,1 iqn.2003-01.org.linux-iscsi.rheln1
    192.168.56.102:3260,2 iqn.2003-01.org.linux-iscsi.rheln1
  3. 登录到目标:

    # iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.rheln1 -l

查看多路径 IO 配置:

多路径守护进程(multipath)将根据 multipath.conf 设置自动设置设备。运行 multipath 命令显示故障切换配置中的设备设置,每个路径都有一个优先级组,例如:

# multipath -ll
mpathbt (360014059ca317516a69465c883a29603) dm-1 LIO-ORG ,IBLOCK
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-Optmized 路径。status 字段指示正在使用的路径,其中 active 表示当前使用的路径,enabled 表示在 active 失败时的故障转移路径。要将设备名称(例如 multipath -ll 输出中的 sde )与 iSCSI 网关匹配,请运行以下命令:

# iscsiadm -m session -P 3

Persistent Portal 值是分配给 gwcli 中列出的 iSCSI 网关的 IP 地址或 gateway_ip_list 中列出的 iSCSI 网关的 IP 地址(如果使用 Ansible)。

8.4.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 或更新版本

配置多路径 IO:

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

    devices {
            device {
                    vendor                 "LIO-ORG"
                    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 服务:

    # systemctl reload multipathd

添加 iSCSI 存储

  1. 单击 Storage 资源选项卡,以列出现有的存储域。
  2. 单击 New Domain 按钮打开 New Domain 窗口。
  3. 输入新存储域的名称
  4. 使用 Data Center 下拉菜单选择数据中心。
  5. 使用下拉菜单选择 Domain FunctionStorage Type。与所选域功能不兼容的存储域类型不可用。
  6. Use Host 字段中选择一个活动主机。如果这不是数据中心中的第一个数据域,您必须选择数据中心的 SPM 主机。
  7. 当选择 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 以登录所有发现的目标。

      重要

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

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

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

8.4.3. Microsoft Windows 的 iSCSI 启动器

先决条件:

  • Microsoft Windows Server 2016

iSCSI 启动器、发现和设置:

  1. 安装 iSCSI 启动器驱动程序和 MPIO 工具。
  2. 启动 MPIO 程序,单击 Discover Multi-Paths 选项卡,选中 iSCSI 设备的添加支持 框,然后单击 Add。这个更改需要重启。
  3. 在 iSCSI Initiator Properties 窗口中,在 Discovery 标签页 1 中添加一个目标门户。输入 Ceph iSCSI 网关的 IP 地址或 DNS 名称 2 和端口 3

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

    iSCSI 目标标签页 mod
  5. Connect To Target 窗口中,选择 Enable multi-path 选项 1 ,然后点击 高级 按钮 2

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

    iSCSI 高级窗口 mod
    重要

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

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

    iSCSI 窗口启动器属性 mod

多路径 IO 设置:

配置 MPIO 负载均衡策略,设置超时和重试选项在 mpclaim 命令中使用 PowerShell。iSCSI 启动器工具配置剩余的选项。

注意

红帽建议将 PDORemovePeriod 选项从 PowerShell 增加到 120 秒。这个值可能需要根据应用程序进行调整。当所有路径都停机且 120 秒过期时,操作系统将启动失败的 IO 请求。

Set-MPIOSetting -NewPDORemovePeriod 120
  1. 设置故障切换策略
mpclaim.exe -l -m 1
  1. 验证故障转移策略
mpclaim -s -m
MSDSM-wide Load Balance Policy: Fail Over Only
  1. 使用 iSCSI 启动器工具,从 Targets 选项卡 1Devices…​ 按钮 2

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

    iSCSI 设备 mpio mod
  3. Device Details 窗口中显示到每个目标门户的路径。如果使用 ceph-ansible 设置方法,iSCSI 网关将使用 ALUA 告知 iSCSI 启动器将哪些路径和 iSCSI 网关用作主路径。负载均衡策略 Fail Over Only 必须被选择

    mpio set failover only mod
  4. 从 PowerShell,查看多路径配置
mpclaim -s -d $MPIO_DISK_ID

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

注意

将有一个 Active/Optimized 路径,它是拥有 LUN 的 iSCSI 网关节点的路径,并为每个其他 iSCSI 网关节点有一个 Active/Unoptimized 路径。

mpclaim output mod

tuning:

考虑使用以下 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

8.4.4. VMware ESX vSphere Web 客户端的 iSCSI 启动器

先决条件:

  • VMware ESX 6.5 或更高版本使用与 VMFS 6 的虚拟机兼容性 6.5
  • 访问 vSphere Web 客户端
  • 对 VMware ESX 主机的 root 访问权限,以执行 esxcli 命令

iSCSI 发现和多路径设备设置:

  1. 禁用 HardwareAcceleratedMove (XCOPY):

    # esxcli system settings advanced set --int-value 0 --option /DataMover/HardwareAcceleratedMove
  2. 启用 iSCSI 软件。在 Navigator 窗格中点 Storage 1 。选择 适配器选项卡 2 。点 Confgure iSCSI 3 :

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

    esx web client config iscsi main mod step2
    注意

    如果启动器名称与初始设置期间使用 gwcli 创建客户端时使用的启动器名称不同,或者如果 Ansible client_connections: 客户端 变量中使用的启动器名称不同,请按照以下步骤更改启动器名称。在 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

  4. 配置 CHAP。展开 CHAP 身份验证 部分 1 。选择"不使用 CHAP,除非目标需要" 2 。输入初始设置中使用的 CHAP NameSecret 3 凭证,无论是使用 gwcli auth 命令还是 Ansible client_connections: 凭证 变量。验证 Mutual CHAP 验证部分 4 是否选择了 "Do not use CHAP"。

    esx web client chap mod step3
    警告

    vSphere Web 客户端中有一个错误,最初不使用 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
  5. 配置 iSCSI 设置。扩展 高级设置 1 。将 RecoveryTimeout 值设置为 25 2

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

    esx web client config iscsi main mod step5
    注意

    使用 ALUA SATP 和 MRU PSP 自动配置 LUN。不能使用其他 SATP 和 PSP。这可以通过 esxcli 命令验证:

    esxcli storage nmp path list -d eui.$DEVICE_ID

    $DEVICE_ID 替换为适当的设备标识符。

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

    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 状态,则其余路径将具有 未优化的 Group State 值,它将是故障转移路径。

  8. 要匹配其对应 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 地址。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部