告别U盘传文件!手把手教你用iSCSI在CentOS 7上搭建共享磁盘(保姆级图文教程)

发布时间:2026/6/3 9:03:21

告别U盘传文件!手把手教你用iSCSI在CentOS 7上搭建共享磁盘(保姆级图文教程) 告别U盘传文件手把手教你用iSCSI在CentOS 7上搭建共享磁盘保姆级图文教程最近在开发一个需要多台虚拟机协作的项目时频繁遇到大文件传输的困扰。每次用U盘或scp命令传输几个GB的Docker镜像都让人抓狂——速度慢不说还经常因为网络波动中断。直到发现了iSCSI这个神器才彻底解决了我的痛点。今天就把这套零成本、高性能的跨主机磁盘共享方案完整分享给大家从环境准备到安全卸载每个步骤都配有详细截图和避坑指南。1. 环境准备与基础概念1.1 为什么选择iSCSI在虚拟化环境中我们常遇到这些场景两台服务器需要共享同一套代码库开发机需要直接访问测试机的数据库文件团队协作时保持设计素材的实时同步传统解决方案各有局限NFS/Samba适合小文件大文件性能差rsync需要手动触发同步云存储产生额外费用且受网络影响iSCSI的独特优势在于块级存储客户端识别为本地磁盘支持分区格式化TCP/IP传输利用现有网络基础设施低延迟千兆网络下实测传输速度可达110MB/s跨平台Windows/Linux/macOS全支持1.2 实验环境规划建议使用两台CentOS 7虚拟机进行测试服务端192.168.1.100分配20GB虚拟磁盘客户端192.168.1.101生产环境建议使用独立网卡和交换机组建iSCSI专用网络所需软件包# 服务端 yum install -y targetcli lvm2 # 客户端 yum install -y iscsi-initiator-utils2. 服务端配置详解2.1 存储空间准备首先为共享磁盘创建LVM卷比直接使用裸磁盘更灵活pvcreate /dev/sdb vgcreate vg_shared /dev/sdb lvcreate -L 10G -n lv_data vg_shared验证创建结果lvs输出示例LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data vg_shared -wi-a----- 10.00g2.2 targetcli交互式配置启动配置工具targetcli按步骤执行创建存储后端/backstores/block create shared_disk /dev/vg_shared/lv_data创建iSCSI Target/iscsi create iqn.2024-08.local.iscsi:server设置ACL客户端认证/iscsi/iqn.2024-08.local.iscsi:server/tpg1/acls create iqn.2024-08.local.iscsi:client配置监听端口/iscsi/iqn.2024-08.local.iscsi:server/tpg1/portals create 192.168.1.100最终配置结构应如下所示o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- block ............................................. [Storage Objects: 1] | | o- shared_disk ................... [/dev/vg_shared/lv_data (10.0GiB) write-thru activated] o- iscsi ............................................................... [Targets: 1] o- iqn.2024-08.local.iscsi:server ................................... [TPGs: 1] o- tpg1 .................................................. [no-gen-acls, no-auth] o- acls ......................................................... [ACLs: 1] | o- iqn.2024-08.local.iscsi:client ................................ [Mapped LUNs: 1] o- luns ......................................................... [LUNs: 1] | o- lun0 ...................... [block/shared_disk (/dev/vg_shared/lv_data)] o- portals ....................................................... [Portals: 1] o- 192.168.1.100:3260 ............................................... [OK]2.3 防火墙与SELinux设置放行iSCSI端口firewall-cmd --permanent --add-port3260/tcp firewall-cmd --reload调整SELinux策略setsebool -P daemons_use_tcp_port1 semanage port -a -t iscsi_port_t -p tcp 32603. 客户端连接实战3.1 发起端配置修改initiator名称与服务端ACL匹配echo InitiatorNameiqn.2024-08.local.iscsi:client /etc/iscsi/initiatorname.iscsi发现服务端存储iscsiadm -m discovery -t st -p 192.168.1.100正常应返回192.168.1.100:3260,1 iqn.2024-08.local.iscsi:server3.2 连接与挂载建立连接iscsiadm -m node -T iqn.2024-08.local.iscsi:server -p 192.168.1.100 -l查看新增磁盘通常为/dev/sdXlsblk示例输出NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 45G 0 lvm / └─centos-swap 253:1 0 4G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk # 这就是iSCSI磁盘格式化并挂载mkfs.xfs /dev/sdb mkdir /mnt/shared mount /dev/sdb /mnt/shared3.3 开机自动连接配置自动登录iscsiadm -m node -T iqn.2024-08.local.iscsi:server -p 192.168.1.100 --op update -n node.startup -v automatic添加到fstab实现自动挂载echo /dev/sdb /mnt/shared xfs _netdev 0 0 /etc/fstab4. 高级配置与故障排查4.1 多路径I/O配置可选当使用双网卡提高可靠性时yum install -y device-mapper-multipath mpathconf --enable --with_multipathd y配置示例/etc/multipath.confdevices { device { vendor LIO-ORG product * path_grouping_policy multibus path_checker tur features 0 hardware_handler 0 failback immediate } }4.2 常见问题解决问题1连接时报错Could not login to [target]检查服务端ACL名称是否匹配确认防火墙规则已放行查看/var/log/messages中的错误详情问题2写入速度慢使用jumbo frames需交换机支持ifconfig eth0 mtu 9000调整队列深度echo 64 /sys/block/sdb/queue/nr_requests问题3安全卸载流程umount /mnt/shared iscsiadm -m node -T iqn.2024-08.local.iscsi:server -p 192.168.1.100 -u iscsiadm -m node -T iqn.2024-08.local.iscsi:server -p 192.168.1.100 -o delete4.3 性能监控命令查看实时IO状态iostat -x /dev/sdb 2检查连接状态iscsiadm -m session -P 3网络质量测试服务端执行iperf3 -s # 客户端执行 iperf3 -c 192.168.1.100这套方案在我团队内部已经稳定运行半年最直观的感受是Docker镜像构建时间从原来的15分钟缩短到3分钟团队成员再也不用互相催着同步代码数据库备份文件可以直接编辑验证

相关新闻