凌峰创科服务平台

Linux如何挂载IPSAN服务器?

  1. 发现并登录 iSCSI 目标:让 Linux 客户端找到并连接到存储服务器上的 LUN(Logical Unit Number,逻辑单元号)。
  2. 挂载文件系统:像挂载普通硬盘一样,将连接上的 iSCSC 设备挂载到指定的目录。

下面我将提供一个完整、详细的步骤指南,并包含一些常见问题的排查。

Linux如何挂载IPSAN服务器?-图1
(图片来源网络,侵删)

准备工作

  1. 网络连通性:确保你的 Linux 客户端能够通过 IP 地址访问到 iSCSI 存储服务器(Target)。
  2. 必要信息:你需要从存储管理员那里获取以下信息:
    • iSCSI Target 的 IP 地址
    • iSCSI Target 的门户端口:通常是 3260
    • iSCSI Initiator 名称:你的 Linux 客户端的唯一标识符,格式通常是 iqn.yyyy-mm.<reverse-domain>:[unique-name]iqn.2025-10.com.example:storage-client-01,如果不确定,可以按下面步骤生成一个。
    • iSCSI Target 的 IQN 名称:存储服务器的标识符。
    • CHAP 认证信息(如果需要):用户名和密码。

第一步:安装和配置 iSCSI 客户端工具

在大多数现代 Linux 发行版中,可以使用 open-iscsi 包。

对于基于 RHEL/CentOS/Fedora 的系统:

# 安装 open-iscsi 包
sudo yum install -y iscsi-initiator-utils
# 或者使用 dnf (新版本)
sudo dnf install -y iscsi-initiator-utils

对于基于 Debian/Ubuntu 的系统:

# 更新软件包列表
sudo apt update
# 安装 open-iscsi 包
sudo apt install -y open-iscsi

第二步:配置 iSCSI Initiator 名称

/etc/iscsi/initiatorname.iscsi 文件包含了你的 Initiator 的 IQN 名称。

  1. 查看或编辑文件

    sudo nano /etc/iscsi/initiatorname.iscsi

    应该类似这样:

    Linux如何挂载IPSAN服务器?-图2
    (图片来源网络,侵删)
    InitiatorName=iqn.1994-05.com.redhat:4c4f6c79-0c8f-4b3f-8f1e-3d5a7b1c9e3d

    你可以保留默认的,或者根据需要修改,确保这个名称在存储服务器上是允许访问的。

  2. 重启或重载服务(如果修改了名称):

    # 重启 iscsid 服务
    sudo systemctl restart iscsid

    在较新的系统上,iscsid 服务通常是自动管理的,重启客户端系统也能确保配置生效。


第三步:发现并登录 iSCSI Target

这是核心步骤,我们使用 iscsiadm 命令行工具。

发现目标

使用 iscsiadmdiscovery 功能来查找存储服务器上可用的 Target。

# 语法: iscsiadm -m discovery -t st -p <Target_IP_Address>:<Port>
# st 代表 "sendtargets",这是最常用的发现方式。
# 示例:
sudo iscsiadm -m discovery -t st -p 192.168.1.100:3260

执行成功后,你会在 /var/lib/iscsi/nodes/ 目录下看到发现的 Target 信息,并且命令会返回 Target 的 IQN 名称, 168.1.100:3260,1 iqn.2025-10.com.example:storage-server.target-01

登录目标

发现目标后,你需要登录它来建立会话并挂载 LUN。

# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> --login
# 示例:
sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 --login

如果存储服务器配置了 CHAP 认证(用户名和密码),你需要先在 /etc/iscsi/iscsid.conf 中配置好,然后再执行登录命令,配置 CHAP 比较复杂,通常建议联系存储管理员。

登录成功后,你可以使用以下命令查看会话状态:

sudo iscsiadm -m session

输出会显示类似 tcp: [1] 192.168.1.100:3260,1 iqn.2025-10.com.example:storage-server.target-01 的信息,表示会话已建立。


第四步:查找并挂载 iSCSC 设备

登录成功后,Linux 内核会识别到新的块设备(LUN)。

查找新设备

使用 lsblkfdisk 命令来查看所有磁盘设备,找到刚刚挂载上的 iSCSI 设备。

# lsblk 会清晰地显示设备大小和类型
lsblk
# 或者使用 dmesg 查看内核日志,可以看到新设备的识别过程
dmesg | grep -i scsi

假设你看到的设备是 /dev/sdb,并且它有一个分区 /dev/sdb1

创建挂载点

创建一个目录作为挂载点。

sudo mkdir -p /mnt/iscsi_storage

挂载设备

使用 mount 命令将设备挂载到创建的目录。

# 语法: mount <设备路径> <挂载点>
# 示例 (挂载整个设备,如 /dev/sdb):
sudo mount /dev/sdb /mnt/iscsi_storage
# 示例 (如果设备有分区,如 /dev/sdb1):
sudo mount /dev/sdb1 /mnt/iscsi_storage

验证挂载

检查 /mnt/iscsi_storage 目录下是否有数据,并用 df -h 确认挂载状态。

df -h | grep /dev/sdb

你应该能看到类似下面的输出,证明挂载成功:

/dev/sdb        916G   33G  884G   4% /mnt/iscsi_storage

第五步:配置开机自动挂载(重要)

为了让 iSCSI 设备在系统重启后能自动挂载,你需要修改 /etc/fstab 文件。

警告: 错误地编辑 /etc/fstab 会导致系统无法启动!请务必小心。

  1. 获取设备 UUID(推荐方式,比直接使用 /dev/sdb 更稳定):

    sudo blkid /dev/sdb

    输出类似:/dev/sdb: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="xfs"

  2. 编辑 /etc/fstab

    sudo nano /etc/fstab
  3. 添加新行: 在文件末尾添加以下内容,使用你自己的 UUID 和挂载点。

    UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/iscsi_storage xfs defaults,_netdev 0 0
    • UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890:替换为你的设备 UUID。
    • /mnt/iscsi_storage:你的挂载点。
    • xfs:替换为你的文件系统类型(如 ext4)。
    • defaults:标准的挂载选项。
    • _netdev这个选项非常重要! 它告诉系统这是一个网络设备,应该在网络启动之后再尝试挂载,避免网络未就绪时挂载失败导致系统启动卡住。
    • 0 0:表示 dumpfsck 选项,对于网络文件系统通常设为 0。
  4. 保存并退出


第六步:断开和删除连接(可选)

如果你需要暂时断开连接或完全移除配置。

卸载设备

sudo umount /mnt/iscsi_storage

退出 iSCSI 会话

# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> --logout
sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 --logout

删除节点信息(彻底移除配置)

# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> -o delete
sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 -o delete

常见问题排查

  1. iscsiadm: Could not login to [iface: default].

    • 原因:网络不通、防火墙阻止了端口 3260、Target IQN 或认证信息错误。
    • 排查
      • ping <Target_IP_Address> 检查网络。
      • 在存储服务器和客户端上检查防火墙(firewall-cmd, ufw, iptables)是否允许 3260 端口。
      • 再次确认 Target IQN 和 Initiator IQN 是否正确。
      • 检查 CHAP 用户名和密码是否配置正确。
  2. mount: /mnt/iscsi_storage: special device /dev/sdb does not exist.

    • 原因:iSCSI 会话未成功建立,内核没有识别到设备。
    • 排查
      • 运行 sudo iscsiadm -m session 查看是否有活动的会话。
      • 如果没有,重新执行 iscsiadm ... --login
      • 检查 dmesg | grep -i scsi 查看内核识别设备时的日志,看是否有错误信息。
  3. 系统启动时挂载失败,进入紧急模式

    • 原因:通常是因为 iSCSI 设备在网络就绪之前就被 /etc/fstab 尝试挂载了。
    • 排查
      • 确保 /etc/fstab 中对应 iSCSI 设备的挂载选项包含了 _netdev
      • 如果没有,添加它并重启。
  4. 性能问题

    • 原因:网络延迟、MTU 设置不当、存储服务器负载高等。
    • 排查
      • 检查网络链路是否为全双工、速率是否匹配。
      • 尝试调整 iSCSI 会话的参数(如 isid, tpgt),但这通常需要高级知识。
      • 联系存储管理员检查后端存储性能。
分享:
扫描分享到社交APP
上一篇
下一篇