如何使用 Ceph iSCSI 服务,包括配置客户端以连接到 iSCSI 目标并挂载块存储设备。以下是详细步骤。
1. 确认 iSCSI 服务状态
在开始使用前,确认所有守护进程正常:
ceph orch ps | grep iscsi
- 确保
node01
、node02
、node03
的状态都是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:准备客户端
安装 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
- 在 Linux 客户端上安装
设置客户端 initiator 名称:
- 编辑 initiator 名称(唯一标识客户端):
示例内容:sudo vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1993-08.org.debian:01:client1
- 替换
client1
为您的客户端标识,确保唯一。
- 替换
- 重启 iSCSI 服务:
sudo systemctl restart open-iscsi
- 编辑 initiator 名称(唯一标识客户端):
步骤 2:发现 iSCSI 目标
发现 Ceph iSCSI 目标:
- 在客户端上,使用
iscsiadm
发现 Ceph iSCSI 目标:iscsiadm -m discovery -t sendtargets -p <node-ip>:5000
- 替换
<node-ip>
为node01
、node02
或node03
的 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
。
- 替换
- 在客户端上,使用
检查发现结果:
- 列出发现的目标:
确认目标信息(如 IQN 和 IP)正确。iscsiadm -m node
- 列出发现的目标:
步骤 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 磁盘
查找 iSCSI 磁盘:
- 登录后,检查新添加的块设备:
示例输出:lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 10G 0 disk
sdb
是 iSCSI 磁盘(大小取决于 Ceph RBD 映像配置)。
- 登录后,检查新添加的块设备:
格式化和挂载:
- 格式化磁盘(例如使用 ext4):
sudo mkfs.ext4 /dev/sdb
- 创建挂载点并挂载:
sudo mkdir /mnt/iscsi sudo mount /dev/sdb /mnt/iscsi
- 验证挂载:
df -h /mnt/iscsi
- 格式化磁盘(例如使用 ext4):
持久化挂载(可选):
- 编辑
/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 映像。如果您尚未创建映像:
- 创建 RBD 映像:
rbd create iscsi/image1 --size 10G
iscsi
是池名,image1
是映像名,大小为 10GB(可调整)。
- 映射映像到 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。
- 使用 Ceph Dashboard 或
- 验证映像:
rbd ls iscsi
- 创建 RBD 映像:
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 多路径以提高可用性:
- 监控:
- 定期检查 iSCSI 服务:
ceph orch ps | grep iscsi ceph -s
- 使用 Ceph Dashboard 查看 iSCSI 目标状态。
- 定期检查 iSCSI 服务:
- 备份:
- 备份 RBD 映像:
rbd snap create iscsi/image1@snap1 rbd export iscsi/image1@snap1 /backup/image1.snap
- 备份 RBD 映像:
4. 常见问题排查
- 无法发现目标:
- 确保客户端网络可访问节点 IP 和 5000 端口:
ping <node-ip> telnet <node-ip> 5000
- 检查
iscsi.yml
中的trusted_ip_list
是否包含客户端 IP 网段。
- 确保客户端网络可访问节点 IP 和 5000 端口:
- 登录失败:
- 确认 CHAP 认证设置(
api_user
和api_password
)。 - 检查日志:
ceph -W iscsi
- 确认 CHAP 认证设置(
- 无可用磁盘:
- 确保 RBD 映像已创建并绑定到 iSCSI 目标(见步骤 6)。
- 检查
gwcli
配置:gwcli ls
5. 总结
- 当前状态:iSCSI 服务在
node01
、node02
、node03
上运行正常。 - 使用步骤:
- 安装客户端工具 (
open-iscsi
)。 - 发现并登录 iSCSI 目标。
- 格式化并挂载磁盘。
- (如需要)创建 RBD 映像并通过
gwcli
配置目标。
- 安装客户端工具 (
- 生产建议:启用多路径,定期备份,监控服务状态。
相关命令及日志:
iscsiadm -m discovery -t sendtargets -p <node-ip>:5000
的输出。gwcli ls
的输出(如果使用了gwcli
)。- 客户端日志:
journalctl -u iscsid
。