三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

别再手动挂盘了!用CentOS 7 + targetcli 5分钟搞定iSCSI网络存储(附开机自启配置)

别再手动挂盘了!用CentOS 7 + targetcli 5分钟搞定iSCSI网络存储(附开机自启配置)

5分钟极速部署iSCSI共享存储:CentOS 7靶向配置实战指南

当实验室需要为KVM集群提供共享存储,或是数据库服务器组要求高性能块设备时,传统NAS往往难以满足低延迟需求。iSCSI作为IP SAN的工业标准,通过将SCSI协议封装在TCP/IP网络中,既能保留块存储的高性能特性,又具备网络存储的灵活性。但常规配置流程涉及服务端靶向创建、客户端发现登录、安全认证等多环节,新手容易在交互式配置中迷失方向。

1. 靶向环境闪电部署

现代Linux存储栈已深度集成LIO(Linux IO Target)内核子系统,CentOS 7通过targetcli工具将其封装为交互式配置界面。这个基于Python的REPL环境将复杂的存储资源配置抽象为层级目录操作,比传统配置文件方式效率提升至少3倍。

先决条件检查:

# 验证系统版本与内核模块 cat /etc/redhat-release | grep "7." lsmod | grep target_

若缺少target_core_mod等模块,需通过yum install targetcli -y安装全套工具链。特别注意:生产环境建议单独划分存储网络,本文示例使用192.168.100.0/24网段。

服务端快速初始化流程:

  1. 进入交互式配置界面
    targetcli
  2. 创建后端存储对象(以10GB虚拟磁盘为例)
    /> /backstores/block create iscsi_disk /dev/sdb
  3. 建立iSCSI靶向门户
    /> /iscsi create iqn.2023-08.lab.storage:server

关键参数说明:

参数类型命名规范示例值
iSCSI限定名iqn.年月.域名反写:设备描述iqn.2023-08.lab.storage:server
存储对象类型_用途iscsi_disk
CHAP认证用户名+12位复杂密码auth_user/M#9xK!2pLqW

2. 安全认证与访问控制

企业级存储必须配置CHAP双向认证,防止未授权访问。targetcli在ACLs节点下实现细粒度权限管理:

# 在靶向门户中创建访问控制项 /iscsi/iqn...server/tpg1/acls create iqn.2023-08.lab.storage:client # 设置认证凭据 cd /iscsi/iqn...client/ set auth userid=storage_user set auth password=St0r@geSec2023

客户端需同步修改/etc/iscsi/iscsid.conf

node.session.auth.authmethod = CHAP node.session.auth.username = storage_user node.session.auth.password = St0r@geSec2023

常见认证故障排查:

  • 密码包含特殊字符时需用\转义
  • 服务端与客户端时间差需小于5分钟
  • 使用tcpdump -i eth0 port 3260抓包分析握手过程

3. 客户端自动化连接方案

传统iscsiadm命令需手动执行发现、登录操作,实际运维中可通过systemd单元实现智能连接:

  1. 创建自动发现服务

    cat > /etc/systemd/system/iscsi-discovery.service <<EOF [Unit] Description=iSCSI Target Discovery After=network-online.target [Service] Type=oneshot ExecStart=/usr/sbin/iscsiadm -m discovery -t st -p 192.168.100.20 RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF
  2. 配置自动挂载依赖

    # 在fstab中添加(关键参数_netdev) /dev/sdb /mnt/iscsi xfs defaults,_netdev,x-systemd.requires=iscsi-discovery.service 0 0
  3. 启用服务

    systemctl daemon-reload systemctl enable iscsi-discovery

该方案相比传统方案的优势:

  • 网络就绪后才尝试连接
  • 自动重试机制(需配合iscsid.conf中的node.conn[0].timeo.replacement_timeout参数)
  • 与systemd日志系统深度集成

4. 性能调优与监控策略

默认配置可能无法发挥硬件最佳性能,需针对性调整:

服务端优化:

# 调整队列深度 echo 256 > /sys/block/sdb/queue/nr_requests # 启用多路径(需安装device-mapper-multipath) mpathconf --enable --with_multipathd y

客户端建议配置:

# /etc/iscsi/iscsid.conf node.session.iscsi.InitialR2T = No node.session.iscsi.ImmediateData = Yes node.session.iscsi.FirstBurstLength = 262144 node.session.iscsi.MaxBurstLength = 16776192

监控方案对比:

工具监控维度部署复杂度数据粒度
sar -d磁盘IOPS/吞吐量分钟级
iSCSI Stats会话状态/错误计数秒级
Prometheus全链路指标毫秒级

在KVM虚拟化场景中,建议将iSCSI LUN直接透传给虚拟机(使用virtio-scsi驱动),而非挂载到宿主机再共享。实测表明,这种方式的IOPS性能可提升40%,延迟降低60%。

← 返回列表