在 CentOS 环境下部署 iSCSI 服务,是构建低成本、高性能 SAN(存储区域网络)的核心方案,通过将磁盘设备封装成 IP 网络传输的数据块,iSCSI 能够让远程服务器像使用本地硬盘一样访问存储资源,这在虚拟化集群、数据库共享存储以及异地容灾场景中具有不可替代的优势,配置 iSCSI 的核心在于服务端与客户端的精准对接,包括 Target(目标端)的 LUN 划分、ACL 访问控制,以及 Initiator(发起端)的发现、登录与持久化挂载,只要遵循严谨的配置流程并注重网络传输优化,即可在企业级环境中构建稳定可靠的共享存储架构。

服务端配置:构建 iSCSI Target
服务端作为存储资源的提供者,其配置的稳定性直接关系到整个存储链路的性能,在 CentOS 7 或更高版本中,targetcli 是管理 iSCSI Target 的标准工具,它采用类似于文件系统的树状结构,直观且易于操作。
需要安装并启动服务,执行 yum install targetcli -y 完成安装后,使用 systemctl enable targetd 和 systemctl start targetd 确保服务开机自启并立即运行,进入 targetcli 交互式界面后,首要任务是创建后端存储,可以使用空闲的磁盘分区、逻辑卷(LVM)甚至是文件作为后端存储,推荐使用 LVM 逻辑卷,因为它具备动态扩容的灵活性,创建一个名为 disk1 的块设备后端存储:backstores/block create name=backend_disk1 dev=/dev/vg0/lv0。
接下来是定义 iSCSI 目标(Target)和 IQN(iSCSI Qualified Name),IQN 是全球唯一的标识符,通常格式为 iqn.年-月.com.域名:自定义标识,在 /iscsi 目录下创建目标:create iqn.2024-05.com.example:storage.target,创建完成后,需要将之前定义的后端存储映射为 LUN(Logical Unit Number),进入对应的 TPG(Target Portal Group)目录,执行 luns/ create /backstores/block/backend_disk1,这样存储资源就对外可见了。
为了安全起见,必须配置 ACL(访问控制列表),防止未授权的服务器连接到存储,在 acls/ 目录下创建允许访问的客户端 IQN,create iqn.2024-05.com.example:client.initiator,还可以配置 CHAP 认证,设置用户名和密码,确保数据传输的安全性,检查并保存配置:config save /etc/target/saveconfig.json,并确保防火墙开放了 3260 端口(TCP 协议)。
客户端配置:连接 iSCSI Initiator
客户端配置的重点在于发现目标、建立连接以及实现开机自动挂载,在 CentOS 客户端上,首先安装 iscsi-initiator-utils 工具包:yum install iscsi-initiator-utils -y。
安装完成后,需要修改客户端的 IQN 配置文件 /etc/iscsi/initiatorname.iscsi,将其中的 InitiatorName 修改为服务端 ACL 中允许的名称(即 iqn.2024-05.com.example:client.initiator),这一步至关重要,否则会被服务端拒绝连接,修改完成后重启 iscsid 服务:systemctl restart iscsid。

发现并登录目标是下一步的核心操作,使用 iscsiadm -m discovery -t st -p <服务端IP> 扫描可用的 Target,扫描成功后,会显示服务端的 IQN 信息,随后执行登录命令:iscsiadm -m node -T <服务端IQN> -p <服务端IP> --login,登录成功后,使用 lsblk 或 fdisk -l 命令,即可看到新增的磁盘设备(通常为 /dev/sdb 等)。
该磁盘如同本地物理硬盘,可以进行分区、格式化(如 mkfs.xfs /dev/sdb)并挂载使用。为了实现开机自动挂载,不能直接写入 /etc/fstab,因为网络连接建立晚于文件系统挂载过程,会导致系统启动失败,正确的做法是获取该磁盘的 UUID(通过 blkid /dev/sdb),然后在 /etc/fstab 中添加挂载项,并加上 _netdev 参数,UUID=xxxxxx /data xfs defaults,_netdev 0 0,确保 iscsi 和 iscsid 服务设置为开机自启。
安全认证与性能调优
在生产环境中,仅依靠 IP 访问控制是不够的。CHAP(Challenge-Handshake Authentication Protocol)认证是保障 iSCSI 安全的必要手段,在服务端 targetcli 的 auth 属性中,可以设置 userid=用户名 和 password=密码;在客户端 /etc/iscsi/iscsid.conf 文件中,需开启 node.session.auth.authmethod = CHAP,并填入对应的用户名和密码,双向认证则要求双方都配置凭证,进一步提升了安全性。
性能方面,iSCSI 对网络延迟和带宽非常敏感。建议在物理网络环境允许的情况下,使用独立的万兆网卡或绑定多网卡进行链路聚合,以增加吞吐量和冗余度,调整 MTU(最大传输单元)值为 9000(开启巨型帧),可以减少数据包分片带来的 CPU 开销,显著提升大块数据传输效率,在内核参数调优上,可以适当增加 /proc/sys/net/ipv4/tcp_window_size 等参数,优化 TCP 缓冲区大小。
酷番云经验案例:云环境下的高可用存储实践
在酷番云的云服务器产品线中,曾协助一家电商客户解决数据库集群的共享存储难题,该客户原本使用单机 NFS 存储,在大促期间面临严重的 I/O 瓶颈和网络抖动问题,基于酷番云高性能计算实例的底层高速网络,我们为客户设计了一套基于 iSCSI 的共享存储方案。
我们在酷番云的私有网络内,部署了两台运行 CentOS 的大存储型云主机作为 iSCSI Target,利用 LVM 条带化技术将本地高性能云盘整合成一个巨大的逻辑卷池,前端的应用集群云主机作为 Initiator,通过内网高速链路连接存储,为了确保高可用,我们配置了 Multipath 多路径软件,当其中一条物理链路或一台存储节点发生故障时,业务流量能够无缝切换至备用链路,实现了存储层面的 RPO(恢复点目标)接近于零,该方案不仅充分利用了酷番云实例的本地 IOPS 能力,还通过 iSCSI 协议保证了数据的一致性,成功支撑了客户“双十一”期间数千万次的动态交易请求,证明了在云环境中合理配置 iSCSI 能够达到媲美物理 SAN 的性能表现。

相关问答
Q1:在重启 iSCSI 客户端后,磁盘数据丢失了怎么办?
A: 这种情况通常是因为没有在 /etc/fstab 中正确配置 _netdev 参数,或者 iscsi 服务未设置为开机自启,导致系统在挂载磁盘时网络尚未连通,请检查 /etc/fstab 配置,确保挂载选项包含 _netdev,并执行 systemctl enable iscsi iscsid 确保服务随系统启动,确认服务端的防火墙规则在重启后依然生效。
Q2:如何彻底断开 iSCSI 连接并删除本地磁盘记录?
A: 首先需要卸载磁盘(如 umount /data),然后登出节点:iscsiadm -m node -T <TargetIQN> -p <TargetIP> --logout,若要永久删除连接记录,防止下次自动登录,需执行 iscsiadm -m node -T <TargetIQN> -p <TargetIP> --op delete,使用 iscsiadm -m session 确认没有活动会话即可。
通过上述步骤与最佳实践,您可以在 CentOS 上构建出既安全又高效的 iSCSI 存储网络,如果您在配置过程中遇到关于多路径聚合或特定文件系统优化的疑问,欢迎在评论区留言探讨,我们将为您提供更深入的技术解答。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/315543.html


评论列表(3条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
读了这篇文章,我深有感触。作者对使用的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!