Linux iSCSI配置的核心在于构建一个稳定、高效的IP存储网络,其成功关键在于服务端Target的精准LUN映射与客户端Initiator的持久化挂载配置,一个生产级的iSCSI环境,不仅要求存储资源能够被跨平台访问,更必须确保在网络波动或节点重启时,数据连接的自动恢复与数据完整性,通过Linux原生工具链(targetcli与iscsiadm)的组合,可以实现低成本、高性能的SAN(存储区域网络)架构,这在云环境与混合存储场景中具有极高的实战价值。

架构解析:iSCSI存储网络的工作逻辑
iSCSI(Internet Small Computer System Interface)技术将传统的SCSI存储指令封装在TCP/IP数据包中,使得存储数据可以通过标准的以太网进行传输,理解其双端架构是配置的前提:
- 服务端: 通常称为Target,它负责将本地磁盘分区或文件模拟成逻辑单元号,并通过网络端口监听连接请求。Target的配置核心在于ACL(访问控制列表)与LUN(逻辑单元号)的绑定,这直接决定了存储的安全性与隔离性。
- 客户端: 通常称为Initiator,它负责发现Target,建立会话,并将远程存储映射为本地块设备。
在生产环境中,建议采用独立的物理网络或VLAN隔离iSCSI流量,避免与管理流量或业务流量争抢带宽,这是保障存储性能与稳定性的第一道防线。
服务端配置:构建高可用Target存储对象
以CentOS 7/8或Ubuntu Server为例,推荐使用targetcli工具进行配置,它提供了直观的层级管理界面。
安装与启动服务
首先安装targetcli服务,并启动守护进程。
yum install targetcli -y systemctl start target && systemctl enable target
创建后端存储
进入targetcli交互界面后,需定义后端存储对象,这里有两种常见方式:
- Block(块设备): 直接使用物理磁盘分区(如
/dev/sdb1),性能最佳,I/O延迟最低。 - Fileio(文件模拟): 在文件系统上创建一个大文件作为存储,适合测试或对性能要求不高的场景。
cd /backstores/block create name=disk1_back dev=/dev/sdb1
专业建议: 在生产环境中,务必优先选择Block类型,因为Fileio涉及文件系统层的额外开销,会显著增加I/O延迟并消耗CPU资源。
定义Target与LUN映射
创建Target IQN(iSCSI Qualified Name),命名规范通常遵循iqn.yyyy-mm.com.example:identifier格式。
cd /iscsi create iqn.2024.com.kufanyun:server.storage01
进入刚创建的Target目录,将之前定义的后端存储映射为LUN。
cd iqn.2024.com.kufanyun:server.storage01/tpg1/luns create /backstores/block/disk1_back
配置ACL与Portal
为了安全性,必须配置ACL,仅允许特定的Initiator名称访问。

cd ../acls create iqn.2024.com.kufanyun:client.initiator01
最后检查Portal(监听IP和端口),默认监听0.0.0.0:3260。在多网卡服务器上,建议明确指定监听IP,防止流量跨网段传输。
客户端配置:Initiator的发现与挂载
客户端配置的重点在于发现目标节点并将其转化为系统可识别的块设备。
安装Initiator工具
yum install iscsi-initiator-utils -y
修改Initiator名称
编辑/etc/iscsi/initiatorname.iscsi文件,将名称修改为服务端ACL中配置的名称。这一步至关重要,名称不匹配将导致登录认证失败。
InitiatorName=iqn.2024.com.kufanyun:client.initiator01
发现与登录
重启iscsid服务后,使用发现命令查找Target。
iscsiadm -m discovery -t st -p <Target_IP> iscsiadm -m node -T iqn.2024.com.kufanyun:server.storage01 -p <Target_IP> --login
执行lsblk命令,此时应能看到新的磁盘设备(如/dev/sdb)。
生产级实战经验:持久化挂载与多路径优化
配置完基础连接仅是第一步,真正的挑战在于如何确保存储在系统重启后依然可用。
文件系统格式化与挂载
对新识别的磁盘进行格式化,建议使用XFS文件系统,它在处理大文件和高并发I/O方面表现优异。
mkfs.xfs /dev/sdb
开机自动挂载的陷阱
严禁直接在/etc/fstab中使用设备名(如/dev/sdb)进行挂载,因为在重启过程中,iSCSI设备的识别顺序可能发生变化,导致设备名漂移(例如变成/dev/sdc),这将导致系统启动异常或挂载错误分区。
正确的做法是使用UUID进行挂载。 通过blkid命令获取磁盘UUID,并在/etc/fstab中添加:

UUID="xxxx-xxxx-xxxx" /mnt/iscsi xfs _netdev 0 0
其中_netdev参数至关重要,它告诉系统该设备依赖网络,需在网络服务启动后再进行挂载。
酷番云实战案例:云服务器的高可用存储扩容
在酷番云的实际运维案例中,曾有一家视频渲染企业面临本地存储不足且无法停机扩容的难题,我们采用了Linux iSCSI方案,将酷番云高性能对象存储通过iSCSI网关映射为块设备挂载至其云服务器集群。
在此过程中,我们特别实施了多路径I/O配置,通过在客户端安装device-mapper-multipath,单条链路故障时,业务流量自动切换至备用链路,实现了存储链路的高可用。这一方案不仅解决了存储扩容瓶颈,还将存储IOPS提升了30%以上,充分体现了iSCSI在云原生环境下的灵活性与扩展能力。
安全加固与性能调优建议
在基础功能之上,专业的运维还需关注安全与性能的深度优化。
- CHAP认证: 仅靠ACL限制IP和名称并不足够,建议在Target和Initiator配置双向CHAP认证,通过预共享密钥防止中间人攻击。
- 巨帧支持: 若交换机支持,建议开启巨帧,将MTU值设置为9000,这能大幅减少网络包的处理数量,降低CPU负载,显著提升吞吐量。
- 队列深度调整: 针对高负载数据库应用,可通过调整
/sys/block/sdX/queue/nr_requests参数,优化块设备的I/O调度算法。
相关问答模块
iSCSI挂载的磁盘在重启后消失,如何解决?
解答: 这是一个典型的持久化配置问题,首先检查iscsiadm的配置,确保使用了node.startup = automatic(默认通常为manual),执行iscsiadm -m node -T <Target_IQN> -p <IP> --op update -n node.startup -v automatic,检查/etc/fstab挂载配置是否正确使用了UUID和_netdev参数,确认iscsid服务已设置为开机自启(systemctl enable iscsid)。
iSCSI传输速度远低于内网带宽,是什么原因?
解答: 性能瓶颈通常出现在三个环节,第一,网络配置,检查是否开启了巨帧,且交换机、网卡两端MTU设置一致;第二,磁盘性能,服务端的后端存储磁盘(机械盘或SSD)本身可能存在I/O瓶颈;第三,CPU性能,iSCSI封装解封装需要消耗CPU资源,检查服务器负载,必要时启用网卡硬件卸载功能。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/353452.html


评论列表(1条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于通过的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!