news 2026/6/3 9:03:05

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

作者头像

张小明

前端开发工程师

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

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

最近在开发一个需要多台虚拟机协作的项目时,频繁遇到大文件传输的困扰。每次用U盘或scp命令传输几个GB的Docker镜像都让人抓狂——速度慢不说,还经常因为网络波动中断。直到发现了iSCSI这个神器,才彻底解决了我的痛点。今天就把这套零成本、高性能的跨主机磁盘共享方案完整分享给大家,从环境准备到安全卸载,每个步骤都配有详细截图和避坑指南。

1. 环境准备与基础概念

1.1 为什么选择iSCSI?

在虚拟化环境中,我们常遇到这些场景:

  • 两台服务器需要共享同一套代码库
  • 开发机需要直接访问测试机的数据库文件
  • 团队协作时保持设计素材的实时同步

传统解决方案各有局限:

  • NFS/Samba:适合小文件,大文件性能差
  • rsync:需要手动触发同步
  • 云存储:产生额外费用且受网络影响

iSCSI的独特优势在于:

  1. 块级存储:客户端识别为本地磁盘,支持分区格式化
  2. TCP/IP传输:利用现有网络基础设施
  3. 低延迟:千兆网络下实测传输速度可达110MB/s
  4. 跨平台: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-utils

2. 服务端配置详解

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.00g

2.2 targetcli交互式配置

启动配置工具:

targetcli

按步骤执行:

  1. 创建存储后端
    /backstores/block create shared_disk /dev/vg_shared/lv_data
  2. 创建iSCSI Target
    /iscsi create iqn.2024-08.local.iscsi:server
  3. 设置ACL(客户端认证)
    /iscsi/iqn.2024-08.local.iscsi:server/tpg1/acls create iqn.2024-08.local.iscsi:client
  4. 配置监听端口
    /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-port=3260/tcp firewall-cmd --reload

调整SELinux策略:

setsebool -P daemons_use_tcp_port=1 semanage port -a -t iscsi_port_t -p tcp 3260

3. 客户端连接实战

3.1 发起端配置

修改initiator名称(与服务端ACL匹配):

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

3.2 连接与挂载

建立连接:

iscsiadm -m node -T iqn.2024-08.local.iscsi:server -p 192.168.1.100 -l

查看新增磁盘(通常为/dev/sdX):

lsblk

示例输出:

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/shared

3.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/fstab

4. 高级配置与故障排查

4.1 多路径I/O配置(可选)

当使用双网卡提高可靠性时:

yum install -y device-mapper-multipath mpathconf --enable --with_multipathd y

配置示例(/etc/multipath.conf):

devices { 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 delete

4.3 性能监控命令

查看实时IO状态:

iostat -x /dev/sdb 2

检查连接状态:

iscsiadm -m session -P 3

网络质量测试(服务端执行):

iperf3 -s # 客户端执行 iperf3 -c 192.168.1.100

这套方案在我团队内部已经稳定运行半年,最直观的感受是:

  • Docker镜像构建时间从原来的15分钟缩短到3分钟
  • 团队成员再也不用互相催着同步代码
  • 数据库备份文件可以直接编辑验证
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 9:02:10

LAV Filters终极配置指南:如何构建高效多媒体解码工作流

LAV Filters终极配置指南:如何构建高效多媒体解码工作流 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters 作为基于ffmpeg的开源DirectShow媒体解码…

作者头像 李华
网站建设 2026/6/3 9:02:08

Sentinel-3 L2测高数据批量解析与GIS矢量化工具包

本文还有配套的精品资源,点击获取 简介:一套面向Sentinel-3A/B卫星测高L2级netCDF文件的本地化处理工具集,支持自动读取波形、高度、时间戳、经纬度等关键参数,可一键导出为CSV或Shapefile格式,便于后续GIS分析与空…

作者头像 李华
网站建设 2026/6/3 9:01:47

当Stable Diffusion‘叛变’:聊聊DiffAttack如何让AI模型‘看走眼’

当Stable Diffusion“叛变”:DiffAttack如何颠覆AI安全认知想象一下,你训练了一位忠诚的画家,它能够根据你的描述创作精美画作。突然有一天,这位画家开始在你不知情的情况下,悄悄修改其他艺术家的作品——不是出于恶意…

作者头像 李华
网站建设 2026/6/3 8:57:38

数字保存实战指南:从OAIS模型到3-2-1备份,对抗数据脆弱性

1. 项目概述:数字时代的“时间胶囊”“Digital Preservation: Informing Tomorrow Today”——这个标题直译过来是“数字保存:为明天提供今日的信息”,听起来有点宏大,但它的核心其实非常接地气:我们如何确保今天产生的…

作者头像 李华