当前位置: 首页 > 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.gsyq.cn/news/1597893.html

相关文章:

  • Windows系统文件dwmapi.dll丢失找不到问题解决
  • 如何用星露谷物语农场规划器打造完美农场:新手到专家的终极指南
  • Selenium 4时代:Windows下ChromeDriver配置的三种实战方案
  • 读书志(2)机器人学:从数学基础到轨迹规划的实践脉络
  • 从手动重复到智能解放:Arknights-Mower明日方舟自动化实战秘籍
  • sqlserver2pgsql:从SQL Server到PostgreSQL的无缝迁移解决方案
  • 群晖NAS搭建FTP服务器:从内网到公网远程访问的完整实践
  • Python Hook实战:从插件系统到AOP的进阶应用
  • 智慧工厂产线工位应用指南:工业触摸一体机选型与部署实战
  • 万字长文!让你懂透编译原理(二)——第二章 高级语言及其语法描述
  • 从tail+grep到脚本化:打造高效日志搜索的自动化工作流
  • 由TDA2030A驱动的10W OCL桌面功放设计与制作
  • 用Java ArrayList实现一个简单的数组去重功能
  • 深入解析Mermaid:高效创建专业图表的完整指南
  • d2s-editor:5个实用技巧让你成为暗黑2存档编辑大师
  • 终极指南:3分钟搞定游戏乱码!Locale Remulator让你的日韩游戏完美显示
  • 从二维到三维:GIS坐标转换中的四参数与七参数实战解析
  • Windows原生运行安卓应用:APK安装器如何实现3分钟快速部署?
  • CoppeliaSim实战:从STL模型到可驱动机械臂的完整动力学建模流程
  • STM32F1 HAL库SD卡DMA模式下的FATFS移植与性能优化
  • B站会员购抢票神器biliTickerBuy:告别手速焦虑的终极解决方案
  • Yakit+Nuclei:新手友好的图形化漏洞验证实战指南
  • 从OHEM到Focal Loss:深入剖析目标检测中的难例挖掘策略演进与PyTorch实战
  • 亚马逊为何放弃 OpenAI 电影项目?数据中心员工奋起反抗,Meta 泄露员工数据
  • 如何为Windows XP/2003构建创新兼容层:突破性解决方案指南
  • 5分钟构建专业可视化图表:Mermaid Live Editor的交互式设计革命
  • 技术人的‘讲真话’:在代码与协作中构建可信赖的工程文化
  • 从零上手JupyterLab:一站式安装、配置与核心功能实战
  • 计算机视觉的油气管道智能监测系统
  • Translumo:Windows平台终极实时屏幕翻译工具,3分钟实现跨语言无障碍体验