当前位置: 首页 > news >正文

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核4G

2.2 软件安装

在CentOS/RHEL上安装非常简单:

# 服务端 yum install targetcli targetd -y # 客户端 yum install iscsi-initiator-utils -y

Ubuntu用户可以用apt:

apt install tgt open-iscsi

3. 服务端详细配置

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 userid=myuser set auth password=ComplexP@ssw0rd!

密码建议12位以上,包含大小写字母、数字和特殊字符。

4. 客户端配置实战

4.1 连接iSCSI存储

先修改客户端标识:

echo "InitiatorName=iqn.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 -l

4.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 multipathd

5.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-service=iscsi-target --permanent firewall-cmd --reload

6.2 性能问题定位

用iotop看磁盘IO:

iotop -o

用nmon监控网络带宽:

nmon

我遇到过因为MTU不匹配导致的性能问题,把服务端和客户端的MTU都设为9000后问题解决。

7. 生产环境建议

在实际项目中,我总结了几条经验:

  1. 一定要做监控,可以用Prometheus+Granfa监控iSCSI连接状态
  2. 定期测试故障转移,拔掉网线看看客户端能否自动切换到备用路径
  3. 备份很重要!iSCSI虽然方便,但误删数据是无法恢复的
  4. 考虑使用LVM,这样可以在线扩容存储空间

有次客户存储空间不足,因为用了LVM,我直接在线加了块硬盘就解决了,业务完全没中断。

http://www.jsqmd.com/news/1085945/

相关文章:

  • YOLO26N 轻量化模型:移动端与嵌入式部署指南
  • 6SL3130-6TE23-6AB0 电源模块
  • 【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计 10 存储器/存储软件/存储芯片/存储盘/存储系统/存储网络01
  • Windows系统文件dwmapi.dll丢失找不到问题解决
  • 如何用星露谷物语农场规划器打造完美农场:新手到专家的终极指南
  • 零门槛打造专属二次元视频社区:IwrQk一站式跨平台体验革命
  • 告别开机grub:无需第三方工具,手动清理Windows+Linux双系统残留启动项
  • Selenium 4时代:Windows下ChromeDriver配置的三种实战方案
  • 读书志(2)机器人学:从数学基础到轨迹规划的实践脉络
  • 静态变量及其非静态变量 接口定义注意事项 内部类的不同类型 异常及其自定义异常
  • Modelsim 波形分析实战:从基础操作到高效调试
  • 提升手机体验的神奇APP!
  • 从糖果分配问题到余数DP:信息学奥赛中的动态规划核心技巧
  • sqlserver2pgsql:从SQL Server到PostgreSQL的无缝迁移解决方案
  • 3个实用技巧:如何用D3KeyHelper轻松解决暗黑3重复操作难题
  • 从手动重复到智能解放:Arknights-Mower明日方舟自动化实战秘籍
  • Python Hook实战:从插件系统到AOP的进阶应用
  • 从XModem到YModem:嵌入式文件传输协议的演进与实战解析
  • 信息学奥赛递推实战:从杨辉三角到算法思维的构建
  • 5分钟快速上手:让Switch手柄在Windows电脑上完美工作的BetterJoy终极指南
  • 群晖NAS搭建FTP服务器:从内网到公网远程访问的完整实践
  • 智慧工厂产线工位应用指南:工业触摸一体机选型与部署实战
  • 万字长文!让你懂透编译原理(二)——第二章 高级语言及其语法描述
  • 软考入户深圳被拒的8大高频原因(第5条90%人忽略),资深落户顾问亲授3天补救方案
  • 三步搞定Windows和Office激活的终极神器:KMS_VL_ALL_AIO完全指南
  • UE4结合AirSim:从虚幻商城场景到自定义无人机仿真
  • 屏幕反光的形成原理与抗反射技术方案——悟赫德护景贴观复盾的工艺实践
  • RentAHuman.ai 技术架构拆解:当 AI Agent 把人类当成可调用 API
  • 从SINR到吞吐量:深入解析CQI映射与MCS选择策略
  • “功能性”是软件质量模型(如ISO/IEC 25010标准)中的一个核心质量特性,用于衡量软件产品是否能够提供满足用户明确和隐含需求的功能