Linux实战:iSCSI网络存储的配置与自动化挂载 1. iSCSI网络存储入门指南第一次接触iSCSI时我也被这个专业名词吓到了。后来发现它其实就是把本地硬盘搬到网络上用的技术特别适合需要多台服务器共享存储的场景。想象一下你有一台专门存放数据的服务器其他服务器都能像使用本地硬盘一样使用这台服务器的存储空间这就是iSCSI的魔力。iSCSI由三个核心组件组成iSCSI Initiator客户端程序安装在需要访问存储的服务器上iSCSI Target服务端程序运行在提供存储的服务器上以太网交换机连接两者的网络设备我最近给一个客户部署MySQL集群时就用到了iSCSI。他们把数据库文件都放在iSCSI存储上这样即使某台MySQL服务器挂了其他节点也能立即接管数据完全一致。相比NFS这类文件级共享iSCSI是块级存储性能更好特别适合数据库这类对IO要求高的应用。2. 环境准备与规划2.1 硬件配置建议根据我的经验iSCSI对硬件要求不高但有些细节需要注意网络千兆以太网是底线最好用万兆。曾经有个项目用百兆网络跑iSCSI性能惨不忍睹服务端至少4核CPU内存建议8G起步特别是要做RAID的情况下客户端2核4G足够主要看应用需求这是我常用的测试环境配置服务端192.168.100.20 4核8G 500G SSD 客户端192.168.100.19 2核4G2.2 软件安装在CentOS/RHEL上安装非常简单# 服务端 yum install targetcli targetd -y # 客户端 yum install iscsi-initiator-utils -yUbuntu用户可以用aptapt install tgt open-iscsi3. 服务端详细配置3.1 创建存储资源第一次用targetcli可能会觉得复杂其实就几个关键步骤targetcli / /backstores/block create disk1 /dev/sdb / /iscsi create iqn.2023-08.example.com:server这里有个坑要注意iqn命名格式必须是iqn.YYYY-MM.域名反写:自定义标识我之前随便写了个名字导致客户端死活连不上。3.2 设置CHAP认证生产环境一定要开认证我有次没开认证结果被内网扫描工具扫到差点被勒索病毒加密。设置方法/iscsi/iqn.../tpg1/acls create iqn.2023-08.example.com:client cd /iscsi/iqn.../client/ set auth useridmyuser set auth passwordComplexPssw0rd!密码建议12位以上包含大小写字母、数字和特殊字符。4. 客户端配置实战4.1 连接iSCSI存储先修改客户端标识echo InitiatorNameiqn.2023-08.example.com:client /etc/iscsi/initiatorname.iscsi然后发现和登录存储iscsiadm -m discovery -t sendtargets -p 192.168.100.20 iscsiadm -m node -T iqn.2023-08.example.com:server -p 192.168.100.20 -l4.2 自动挂载配置这里最容易出问题的是fstab配置。必须加_netdev参数否则系统启动时会卡住mkfs.xfs /dev/sdb mkdir /mnt/iscsi echo /dev/sdb /mnt/iscsi xfs defaults,_netdev 0 0 /etc/fstab我曾经有台生产服务器因为这个参数没加导致无法启动最后只能进救援模式修复。5. 高级优化技巧5.1 多路径配置当你有多个网络接口时可以配置多路径IO提高可靠性yum install device-mapper-multipath -y mpathconf --enable systemctl start multipathd5.2 性能调优在/etc/iscsi/iscsid.conf中添加这些参数能显著提升性能node.session.timeo.replacement_timeout 120 node.conn[0].timeo.noop_out_interval 30 node.conn[0].timeo.noop_out_timeout 30实测这些调整能让IOPS提升20%以上特别是对SSD存储。6. 常见问题排查6.1 连接失败排查先检查基本连通性telnet 192.168.100.20 3260如果端口不通检查服务端防火墙firewall-cmd --add-serviceiscsi-target --permanent firewall-cmd --reload6.2 性能问题定位用iotop看磁盘IOiotop -o用nmon监控网络带宽nmon我遇到过因为MTU不匹配导致的性能问题把服务端和客户端的MTU都设为9000后问题解决。7. 生产环境建议在实际项目中我总结了几条经验一定要做监控可以用PrometheusGranfa监控iSCSI连接状态定期测试故障转移拔掉网线看看客户端能否自动切换到备用路径备份很重要iSCSI虽然方便但误删数据是无法恢复的考虑使用LVM这样可以在线扩容存储空间有次客户存储空间不足因为用了LVM我直接在线加了块硬盘就解决了业务完全没中断。