Linux iSCSI 配置详解
iSCSI(Internet Small Computer System Interface)是一种基于 TCP/IP 协议的存储网络技术,允许通过网络将存储设备(如磁盘阵列或 SAN)附加到 Linux 服务器上,实现块级数据访问,本文将详细介绍在 Linux 系统中配置 iSCSI 客户端( Initiator)和服务端(Target)的完整步骤,涵盖环境准备、安装配置、连接测试及故障排查等关键环节。

环境准备与软件安装
在开始配置前,需确保网络环境正常,且客户端与服务端能够相互通信,以 Ubuntu/Debian 为例,客户端需安装 open-iscsi 包,服务端则需安装 tgt(Target Tools)或 scst 等软件。
客户端安装:
sudo apt update sudo apt install open-iscsi
服务端安装(以 tgt 为例):
sudo apt install tgt
安装完成后,需确保 iscsid 服务(客户端)和 tgtd 服务(服务端)已启动并设置为开机自启:
sudo systemctl enable --now iscsid sudo systemctl enable --now tgtd
iSCSI 服务端(Target)配置
服务端负责提供存储资源,需定义逻辑单元(LUN)并将其暴露给客户端,以下以 tgt 为例演示配置过程。
-
创建存储后端
假设使用一块磁盘/dev/sdb作为存储后端,首先为其创建分区或直接使用整个磁盘,将/dev/sdb格式化为 ext4 文件系统:sudo mkfs.ext4 /dev/sdb
-
定义 Target 和 LUN
编辑 tgt 配置文件/etc/tgt/conf.d/iscsi.conf,添加以下内容:<target iqn.2023-01.com.example:storage.target01> backing-store /dev/sdb initiator-address 192.168.1.100 # 限制客户端 IP(可选) incominguser username password # 设置认证(可选) </target>iqn格式为iqn.年份-月份.域名:自定义名称,需确保全局唯一。backing-store指定实际存储设备。- 保存后重启
tgtd服务使配置生效:sudo systemctl restart tgtd
-
验证 Target 配置
使用tgtadm命令查看已配置的 Target:
sudo tgtadm --mode target --op show
输出应包含之前定义的 Target 名称及 LUN 信息。
iSCSI 客户端(Initiator)配置
客户端通过发现服务端的 Target 并建立连接,将其映射为本地块设备。
-
发现 Target
使用iscsiadm命令发现服务端提供的 Target:sudo iscsiadm -m discovery -t st -p 192.168.1.10 # 服务端 IP
-t st表示通过 iSCSI Target Portal 发现,-p指定服务端 IP 和端口(默认 3260)。 -
登录 Target
发现后,客户端会列出可用的 Target,需手动登录:sudo iscsiadm -m node -T iqn.2023-01.com.example:storage.target01 -p 192.168.1.10 -l
若服务端启用了认证,需添加
-l username password参数。 -
验证连接
登录成功后,通过lsblk或fdisk -l查看新识别的磁盘:lsblk | grep sdb
服务端的
/dev/sdb应映射为客户端的/dev/sdb(或类似名称)。
-
自动连接配置
为避免每次重启后手动登录,可修改 Initiator 的配置:sudo iscsiadm -m node -T iqn.2023-01.com.example:storage.target01 -p 192.168.1.10 --op update -n node.startup -v automatic
设置为
automatic后,系统启动时会自动连接 Target。
高级配置与注意事项
-
多路径配置(Multipathing)
为提高可用性和性能,可配置多路径访问,安装multipath-tools:sudo apt install multipath-tools
编辑
/etc/multipath.conf,添加服务端多路径信息后重启 multipath 服务:sudo systemctl enable --now multipathd
-
安全优化
- 启用 CHAP 认证,避免未授权访问。
- 限制客户端 IP 地址,在服务端配置中指定
initiator-address。 - 使用防火规则(如
iptables)限制 3260 端口的访问。
-
故障排查
- 连接失败:检查网络连通性、防火墙规则及 Target 服务状态。
- 磁盘未识别:确认
iscsid服务运行,并检查登录状态:sudo iscsiadm -m session -o show
- 性能问题:调整网络 MTU 值或启用 Jumbo Frame,优化存储后端性能。
Linux 下的 iSCSI 配置通过开源工具实现了灵活的存储扩展,适用于虚拟化、集群系统等场景,本文从环境准备到高级配置逐步展开,涵盖了服务端存储暴露、客户端连接及安全优化等核心操作,实际部署中,需根据业务需求调整参数,并结合日志(如 /var/log/syslog)及时排查问题,通过合理配置,iSCSI 可为 Linux 系统提供高效、可靠的存储解决方案。



















