Linux服务器iSCSI存储区域网络SAN配置与多路径MPIO链路聚合实战

iSCSI存储区域网络SAN架构原理

iSCSI(Internet Small Computer System Interface)基于TCP/IP协议传输SCSI指令,将存储设备从服务器本地分离出来构建存储区域网络(SAN)。与直接附加存储(DAS)相比,iSCSI SAN支持存储资源集中管理、动态分配和多服务器共享;与FC SAN相比,iSCSI使用标准以太网和TCP/IP协议,无需专用光纤通道硬件,部署成本显著降低。

iSCSI架构中存在两个角色:Target端提供存储资源,通常是专用存储服务器或NAS设备;Initiator端是使用存储资源的服务器。Initiator通过iSCSI协议向Target发起连接,将远程存储映射为本地块设备(/dev/sdX),上层操作系统和应用程序像使用本地磁盘一样访问iSCSI存储。这种透明映射特性使得iSCSI适用于数据库存储、虚拟机磁盘镜像和集群共享存储等场景。

iSCSI Target端配置

在CentOS/RHEL系统上使用targetcli配置iSCSI Target。安装并进入targetcli交互式配置界面:

# 安装targetcli
yum install -y targetcli

# 创建后端存储
targetcli
/> backstores/block create name=lun0 /dev/sdb1
/> iscsi/ create iqn.2026-08.com.yunthe:storage.target01
/> iscsi/iqn.2026-08.com.yunthe:storage.target01/tpg1/luns create /backstores/block/lun0
/> iscsi/iqn.2026-08.com.yunthe:storage.target01/tpg1/acls create iqn.2026-08.com.yunthe:client01
/> iscsi/iqn.2026-08.com.yunthe:storage.target01/tpg1/portals create 0.0.0.0 3260
/> saveconfig
/> exit

# 启动target服务
systemctl enable --now target

配置说明:backstores/block将物理磁盘/dev/sdb1创建为后端存储块;IQN(iSCSI Qualified Name)格式为iqn.年份-月份.反向域名:标识符;ACL用于Initiator认证,只有匹配IQN的客户端才能访问对应LUN;portal指定监听地址和端口。

Target端的访问控制需要配置Initiator的CHAP认证,增强安全性:

# 在targetcli中设置CHAP认证
/> iscsi/iqn.2026-08.com.yunthe:storage.target01/tpg1/acls/iqn.2026-08.com.yunthe:client01 set auth userid=storageuser
/> iscsi/iqn.2026-08.com.yunthe:storage.target01/tpg1/acls/iqn.2026-08.com.yunthe:client01 set auth password=Str0ngP@ssw0rd
/> saveconfig

iSCSI Initiator端配置与多路径MPIO

Initiator端安装iscsi-initiator-utils并配置IQN:

# 安装Initiator
yum install -y iscsi-initiator-utils

# 设置Initiator IQN,需与Target端ACL配置一致
echo "InitiatorName=iqn.2026-08.com.yunthe:client01" > /etc/iscsi/initiatorname.iscsi

# 配置CHAP认证
cat >> /etc/iscsi/iscsid.conf << 'EOF'
node.session.auth.authmethod = CHAP
node.session.auth.username = storageuser
node.session.auth.password = Str0ngP@ssw0rd
EOF

# 发现Target并登录
iscsiadm -m discovery -t st -p 192.168.10.100:3260
iscsiadm -m node -T iqn.2026-08.com.yunthe:storage.target01 -p 192.168.10.100:3260 -l

# 设置开机自动登录
iscsiadm -m node -T iqn.2026-08.com.yunthe:storage.target01 -p 192.168.10.100:3260 --op update -n node.startup -v automatic

单链路iSCSI存在单点故障风险。当Target端使用双网卡或Initiator端使用双网卡时,配置MPIO(Multi-Path I/O)多路径聚合实现链路冗余和负载均衡。安装device-mapper-multipath并配置:

# 安装multipath工具
yum install -y device-mapper-multipath
systemctl enable --now multipathd

# 编辑多路径配置
cat > /etc/multipath.conf << 'EOF'
defaults {
    user_friendly_names yes
    path_grouping_policy multibus
    path_checker tur
    path_selector "round-robin 0"
    failback immediate
    no_path_retry 5
    polling_interval 10
}

# 针对iSCSI设备的过滤
blacklist {
    devnode "^sd[a-b]$"  # 排除本地系统盘
}
EOF

# 重载配置
systemctl reload multipathd

# 查看多路径状态
multipath -ll
# 输出示例:
# mpatha (36001405abcdef0123456789) dm-0 LIO-ORG,lun0
# size=500G features='0' hwhandler='0' wp=rw
# |-+- policy='round-robin 0' status=active
# | |- 6:0:0:1 sdc 8:32 active ready running
# | `- 7:0:0:1 sdd 8:48 active ready running
# `-+- policy='round-robin 0' status=enabled
#   |- 6:0:0:1 sdc 8:32 active ready running
#   `- 7:0:0:1 sdd 8:48 active ready running

path_grouping_policy设置为multibus表示所有路径处于同一组,round-robin轮询分发I/O请求。当某条链路故障时,multipathd在polling_interval(10秒)间隔内检测到路径状态变化,自动将I/O切换到存活路径,failback设置为immediate表示故障恢复后立即切回。

iSCSI存储性能调优与监控

iSCSI性能瓶颈通常出现在TCP/IP网络层和磁盘I/O层。网络层面优化包括:启用Jumbo Frame(MTU=9000)减少网络分片开销,在Target和Initiator两端以及中间交换机统一配置MTU;使用专用VLAN隔离iSCSI流量,避免与其他业务流量竞争带宽;绑定多网卡做active-backup或802.3ad LACP聚合提升带宽和冗余。

# 配置Jumbo Frame
ip link set eth1 mtu 9000

# 确认MTU生效
ip link show eth1 | grep mtu
# 输出: link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff mtu 9000

# 在Target端验证Initiator到Target的MTU连通性
ping -M do -s 8972 192.168.10.100
# -M do禁止分片,-s 8972为ICMP载荷大小(9000-28=8972)

TCP参数调优对iSCSI吞吐量影响明显。增大TCP窗口和缓冲区提升大块传输效率:

# /etc/sysctl.conf
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_window_scaling = 1

# 生效配置
sysctl -p

日常监控使用iostat和mpstat确认磁盘I/O和多路径负载分布。多路径I/O均匀分布时各路径的IOPS应接近,如果某条路径负载明显偏高,检查path_selector策略和链路质量。使用iscsiadm -m session -P 3查看会话状态和链路统计信息,重点关注重传次数和错误计数。当重传率持续偏高时,排查网络设备配置和线缆质量。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-iscsi-cun-chu-qu-yu-wang-luo-san-pei-zhi-yu/

(0)
小编小编
上一篇 19小时前
下一篇 19小时前

相关推荐