Ceph iSCSI 使用指南

半兽人 发表于: 2025-09-25   最后更新时间: 2025-09-25 15:39:53  
{{totalSubscript}} 订阅, 77 游览

如何使用 Ceph iSCSI 服务,包括配置客户端以连接到 iSCSI 目标并挂载块存储设备。以下是详细步骤。

1. 确认 iSCSI 服务状态

在开始使用前,确认所有守护进程正常:

ceph orch ps | grep iscsi
  • 确保 node01node02node03 的状态都是 running,且有有效的容器 ID 和运行时间。
  • 检查服务状态:
    ceph orch ls --service-name iscsi.iscsi
    
    确认 running 字段为 3,表示三个节点都正常。
  • 验证集群健康:
    ceph health
    
    应返回 HEALTH_OK 或无 iSCSI 相关警告。

2. 如何使用 Ceph iSCSI 服务

Ceph iSCSI 服务通过 iSCSI 协议提供块存储,客户端(如 Linux、Windows 或 VMware)可以连接到 iSCSI 目标(target)并将其挂载为本地磁盘。以下是配置客户端的基本步骤,以 Linux 客户端为例。

步骤 1:准备客户端

  1. 安装 iSCSI 客户端工具

    • 在 Linux 客户端上安装 open-iscsi(适用于 Ubuntu/CentOS 等):
      # Ubuntu/Debian
      sudo apt-get update
      sudo apt-get install -y open-iscsi
      
      # CentOS/RHEL
      sudo yum install -y iscsi-initiator-utils
      
    • 确认安装:
      iscsiadm --version
      
  2. 设置客户端 initiator 名称

    • 编辑 initiator 名称(唯一标识客户端):
      sudo vi /etc/iscsi/initiatorname.iscsi
      
      示例内容:
      InitiatorName=iqn.1993-08.org.debian:01:client1
      
      • 替换 client1 为您的客户端标识,确保唯一。
    • 重启 iSCSI 服务:
      sudo systemctl restart open-iscsi
      

步骤 2:发现 iSCSI 目标

  1. 发现 Ceph iSCSI 目标

    • 在客户端上,使用 iscsiadm 发现 Ceph iSCSI 目标:
      iscsiadm -m discovery -t sendtargets -p <node-ip>:5000
      
      • 替换 <node-ip>node01node02node03 的 IP 地址(建议使用集群网络的 IP)。
      • 示例输出:
        192.168.1.101:5000,1 iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
        
      • 记录返回的 IQN(目标名称),例如 iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
  2. 检查发现结果

    • 列出发现的目标:
      iscsiadm -m node
      
      确认目标信息(如 IQN 和 IP)正确。

步骤 3:配置 iSCSI 认证(可选)

  • 如果 iscsi.yml 配置了认证(如 api_user: admin, api_password: admin),需要设置 CHAP 认证。
  • 编辑节点配置:
    iscsiadm -m node -T <target-iqn> -p <node-ip>:5000 --op=update -n node.session.auth.authmethod -v CHAP
    iscsiadm -m node -T <target-iqn> -p <node-ip>:5000 --op=update -n node.session.auth.username -v admin
    iscsiadm -m node -T <target-iqn> -p <node-ip>:5000 --op=update -n node.session.auth.password -v admin
    
    • 替换 <target-iqn> 为发现的 IQN,<node-ip> 为节点 IP。
    • 如果 api_secure: false 且未配置 CHAP,可跳过此步。

步骤 4:登录 iSCSI 目标

  • 登录目标:
    iscsiadm -m node -T <target-iqn> -p <node-ip>:5000 --login
    
  • 确认登录成功:
    iscsiadm -m session
    
    应显示类似:
    tcp: [1] 192.168.1.101:5000,1 iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw (non-flash)
    

步骤 5:挂载 iSCSI 磁盘

  1. 查找 iSCSI 磁盘

    • 登录后,检查新添加的块设备:
      lsblk
      
      示例输出:
      NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
      sdb    8:16   0  10G  0 disk
      
      • sdb 是 iSCSI 磁盘(大小取决于 Ceph RBD 映像配置)。
  2. 格式化和挂载

    • 格式化磁盘(例如使用 ext4):
      sudo mkfs.ext4 /dev/sdb
      
    • 创建挂载点并挂载:
      sudo mkdir /mnt/iscsi
      sudo mount /dev/sdb /mnt/iscsi
      
    • 验证挂载:
      df -h /mnt/iscsi
      
  3. 持久化挂载(可选):

    • 编辑 /etc/fstab
      sudo vi /etc/fstab
      
      添加:
      /dev/sdb  /mnt/iscsi  ext4  defaults,_netdev  0  0
      
    • 确保 iSCSI 服务开机自启:
      sudo systemctl enable open-iscsi
      

步骤 6:创建 RBD 映像(如果尚未配置)

  • iSCSI 目标需要绑定到 Ceph RBD 映像。如果您尚未创建映像:
    1. 创建 RBD 映像:
      rbd create iscsi/image1 --size 10G
      
      • iscsi 是池名,image1 是映像名,大小为 10GB(可调整)。
    2. 映射映像到 iSCSI 目标:
      • 使用 Ceph Dashboard 或 gwcli(iSCSI 网关 CLI)配置目标和 LUN:
        gwcli
        
        在 gwcli 中:
        /> cd /iscsi-targets
        /> create iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw
        /> cd iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/disks
        /> create rbd iscsi/image1
        /> cd /iscsi-targets/iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/gateways
        /> create node01 192.168.1.101
        /> create node02 192.168.1.102
        /> create node03 192.168.1.103
        
        • 替换 IP 为实际节点 IP。
    3. 验证映像:
      rbd ls iscsi
      

3. 使用建议

  • 多路径(Multipath)(推荐生产环境):
    • 配置 iSCSI 多路径以提高可用性:
      sudo yum install -y device-mapper-multipath  # CentOS/RHEL
      sudo apt-get install -y multipath-tools      # Ubuntu/Debian
      
      • 配置 /etc/multipath.conf
        defaults {
            user_friendly_names yes
            find_multipaths yes
        }
        
      • 启动 multipath 服务:
        sudo systemctl enable multipathd
        sudo systemctl start multipathd
        
      • 验证多路径设备:
        multipath -ll
        
  • 监控
    • 定期检查 iSCSI 服务:
      ceph orch ps | grep iscsi
      ceph -s
      
    • 使用 Ceph Dashboard 查看 iSCSI 目标状态。
  • 备份
    • 备份 RBD 映像:
      rbd snap create iscsi/image1@snap1
      rbd export iscsi/image1@snap1 /backup/image1.snap
      

4. 常见问题排查

  • 无法发现目标
    • 确保客户端网络可访问节点 IP 和 5000 端口:
      ping <node-ip>
      telnet <node-ip> 5000
      
    • 检查 iscsi.yml 中的 trusted_ip_list 是否包含客户端 IP 网段。
  • 登录失败
    • 确认 CHAP 认证设置(api_userapi_password)。
    • 检查日志:
      ceph -W iscsi
      
  • 无可用磁盘
    • 确保 RBD 映像已创建并绑定到 iSCSI 目标(见步骤 6)。
    • 检查 gwcli 配置:
      gwcli ls
      

5. 总结

  • 当前状态:iSCSI 服务在 node01node02node03 上运行正常。
  • 使用步骤
    1. 安装客户端工具 (open-iscsi)。
    2. 发现并登录 iSCSI 目标。
    3. 格式化并挂载磁盘。
    4. (如需要)创建 RBD 映像并通过 gwcli 配置目标。
  • 生产建议:启用多路径,定期备份,监控服务状态。

相关命令及日志:

  • iscsiadm -m discovery -t sendtargets -p <node-ip>:5000 的输出。
  • gwcli ls 的输出(如果使用了 gwcli)。
  • 客户端日志:journalctl -u iscsid
更新于 2025-09-25

查看ceph更多相关的文章或提一个关于ceph的问题,也可以与我们一起分享文章