从FC SAN到iSCSI:存储网络搭建与WWN/LUN配置实战 📅 发布时间:2026/9/19 14:31:56 👁 浏览次数: 简介一份面向网络存储与容灾系统课程学习者的实验报告主题为存储区域网络SAN完整覆盖FC SAN与iSCSI两大核心协议。包体仅含1个doc文档大小约11.18MB已吸引568人浏览学习内容编排适合需要完成同类实验或入门存储网络配置的读者。报告以西南科技大学实验报告为模板详细记录了光纤通道端口的WWN收集、主机启动程序端口查看以及基于XigmaNAS开源存储服务器配置iSCSI目标、LUNextent、发起端组、认证组和门户组的全过程。每个步骤均配有界面截图和参数说明便于对照复现。此外还总结了实际操作中常见的三类问题及解决办法如路径含中文导致虚拟机创建失败、浏览器登录兼容性、LUN重复创建报错等能帮助读者避免同类坑点提升故障排查能力。通过这份报告读者既能理解SAN工作原理也能掌握从零搭建IPSAN的动手技能。1. 存储区域网络服务器不装硬盘之后发生了什么一台服务器开机BIOS 列表里出现了几块完全陌生的磁盘而机器上并没有安装任何本地硬盘。这个场景在没接触过存储的人看来很怪却是数据中心里最常规的形态磁盘被搬到了机柜另一端的存储阵列里通过光纤通道或者以太网连回来操作系统只是在跟一个“远端裸盘”打交道。把磁盘拉远的那张网络就是存储区域网络SAN。它和 NAS 最本质的区别是NAS 给的是带文件系统的目录SAN 给的是未格式化的块设备格式化、分区、文件系统创建全发生在主机端。本次实验把 FC SAN 和 iSCSI 两条路线各走了一遍先在 VNXe 上收集 FC 端口的 WWN再通过 iSCSI 把 LUN 映射到 Windows 主机最后用 XigmaNAS 这台开源网络存储服务器完整搭建了一套 IP SAN适合正在做网络存储与容灾课程设计、第一次接触存储网络的人。2. FC SAN 端口视角从 WWN 收集到 Zoning 前置知识2.1 WWN 的构成FC 网络里的设备识别号FC SAN 中设备不靠 IP 寻址而是靠 WWNWorld Wide Name。WWN 是分配在 FC 节点和 FC 端口上的全球唯一标识常见的是 64 位格式写成 16 位十六进制字符形如50:06:01:60:84:3e:12:34。这个标识的结构比 MAC 复杂最前面 4 个 bit 是 NAANetwork Address Authority用来表示地址分配机构接着是厂商分配的 OUI 和目标设备序列号。不同 NAA 值对应不同的地址格式生产环境里最常碰到的是 NAA 5 和 NAA 6。NAA 值格式含义常见场景1IEEE 48 位地址格式早期 FC-AL 设备2IEEE Extended 格式早期光纤通道 HBA5IEEE Registered 格式当前多数 FC HBA、存储阵列 FC 端口6IEEE Registered Extended128 位 WWN 设备既然 FC 设备挂在交换机上主机要找到存储端口就要先让交换机知道两个 WWN一端是服务器 HBA 的 Port WWN另一端是存储端口自己的 Port WWN。这两个标识在后续的 Zoning 配置里都会被直接引用搞混 Node WWN 和 Port WWN 会导致交换机上的 Zone 永远激活不了。2.2 在 VNXe 管理界面里定位 FC 端口实验第一步是收集并记录存储端口的名称。在 VNXe 中操作路径是设置 - 更多配置 - 高级配置 - 端口设置。进入端口设置页面后会看到 IO 模块列表展开某个 IO 模块逐个选择 Fibre Channel 端口就能看到每个端口对应的 WWN、端口速率以及归属的存储处理器SP。这里有一个容易混淆的点每个 FC 端口其实有两个 WWN一个是 Node WWN标识端口所在设备另一个是 Port WWN标识端口本身。VNXe 端口列表里展示的是 Port WWN而做 Zoning、做多路径识别时也以 Port WWN 为准。因此实验记录不应该只抄一串数字还要把端口所在 IO 模块、SP 编号和速率一起记下来。这三个信息在排障时能帮助你判断链路到底连到了哪个控制器上避免把故障范围从存储端误判到主机端。2.3 收集主机启动器的 WWN存储端口的 WWN 收集完还要去 VNXe 的“主机”菜单里查看启动器。在 VNXe 主机 启动器页面可以看到所有注册上来的启动器条目它们一般分两类FC 启动器以 WWN 形式显示标识前缀是 FCiSCSI 启动器以 IQN 形式显示标识前缀是iqn.。实验里这一步很容易被跳过因为不少同学认为“我还没建 LUN为什么要看启动器”。实际原因是存储阵列创建 LUN 时要做主机映射而映射条件就是启动器的 WWN 或 IQN。如果启动器没有注册到存储上LUN 建好了也看不到等于白做。记录启动器时建议同时记下主机名直接以 IP 或者主机名命名不要用系统默认生成的编号否则三个月后回看这张表根本分不清哪条 WWN 对应哪台机器。2.4 记录 WWN 在真实环境里的用途这一环节记录的 WWN 在真实环境里主要流向三个地方。第一FC 交换机 Zoning把主机 HBA 的 Port WWN 和存储端口的 Port WWN 划到同一个 Zone 里其他端口不能访问这条链路这是 FC SAN 环境里最基本的隔离手段。第二存储端的 LUN 映射VNXe 的主机定义里会绑定启动器再给主机分配 LUN映射关系层级是“主机组 - 主机 - 启动器 - LUN”。第三多路径软件比如 PowerPath 或 MPIO 识别多条链路时会按 WWN 判断路径是否指向同一个目标WWN 记录一旦出错多路径会被误判成多个独立链路导致 I/O 路径混乱。这一整套流程虽然是在 VNXe 的图形界面上完成的但它背后的逻辑和命令行环境完全一致。理解了 WWN 在整个链路里的角色后面再看 FC 交换机配置、存储初始化、主机连线就能串起来了。3. iSCSI 协议栈与 LUN 映射从存储端到 Windows 发起程序3.1 iSCSI 的分层SCSI 指令封装进 TCP 段iSCSI 做的事情是把 SCSI 指令和块数据封装进 TCP/IP 包。发起端Initiator发送 SCSI 命令目标端Target执行并返回数据默认监听端口是 3260。这一层封装有两个直接影响一是物理层不再依赖光纤千兆以太网就能跑二是原来的 HBA 换成了普通网卡软件启动器就能完成发起端功能这也是实验里直接在 Windows 上用 iSCSI 发起程序连接 XigmaNAS 的原因。iSCSI 的“设备标识”是 IQNiSCSI Qualified Name格式像这样iqn.2004-10.example.com:storage-lun1这个格式分成三段iqn.开头后面是域名登记日期再往后是反向域名最后是冒号加自定义标识。和 FC 的 WWN 相比IQN 是人可读的但也要注意发起端和目标端必须严格匹配 IQN 字符串多一个字符、大小写不对都会认证失败。3.2 在 VNXe 上创建 iSCSI 接口实验里 VNXe 的 iSCSI 配置从设置 - iSCSI 设置 - iSCSI 接口开始。选择一个以太网端口点击 Create在弹出的窗口里指定存储处理器SP、IP 地址、子网掩码以及 VLAN 标签。这里的重点是存储处理器的分配VNXe 有两个 SP如果只给 SP A 建了 iSCSI 接口那 LUN 映射到 SP B 时发起端就连不上。生产环境一般给两个 SP 都配置接口再用多路径软件做聚合实验中如果只有一个接口后面 LUN 的归属要仔细看LUN 创建在哪一侧主机就必须连哪一侧的 IP。VLAN 标签在实验里通常留空但在真实环境里几乎是必填的。存储网络单独划 VLAN、单独分网段是避免存储流量和业务流量互相干扰的常见做法。如果这里填了 VLAN ID主机网卡所在交换机端口也必须设置成 trunk 模式否则二层就通了三层始终不通。3.3 创建 LUN 和主机访问授权接口创建完成后进入存储管理创建 LUN。需要注意在 iSCSI 存储里 LUN 不只面对容量申请还面对主机访问控制。实验界面里依次配置了复制和快照的保护存储、主机访问这说明 LUN 建好之后默认是不会被任何主机看到的必须在“主机访问”里显式添加允许访问的发起端。生产环境里如果有多个服务器建议用 Initiator Group发起端组来管理而不是给每个 LUN 单独绑一个 IQN。这样后续扩容只需要把新 LUN 挂到已有组而不用逐个主机修改映射关系。VNXe 中创建 LUN 时还可以选精简配置还是厚配置实验容量不大厚配置更直观性能和容量都更容易理解。3.4 Windows 发起程序连接与磁盘加载在 Windows 主机上打开 iSCSI 发起程序输入存储端 IP点击快速连接。连接成功后还不能直接使用因为 Windows 磁盘管理里这只是块未初始化的磁盘。到计算机管理里的磁盘管理右键联机再用右键初始化磁盘之后才能新建简单卷。# 查看 Windows 上已发现的 iSCSI 目标 Get-IscsiTarget | Format-Table -Property TargetAddress, IsConnected, TargetName这段命令在管理员权限的 PowerShell 会话里执行。TargetAddress 是存储端的地址IsConnected 显示当前是否已经建立连接TargetName 是目标端暴露出来的名称。如果这里显示 False就要回头检查存储端的 Portal Group 和 Initiator Group 配置尤其是发起端组里有没有把当前主机的 IQN 加进去。提示连接后如果磁盘管理里看不到新硬盘先检查目标是否为已连接状态再检查磁盘是否处于脱机状态。Windows Server 会把新 LUN 默认设为脱机这是常见坑。4. XigmaNAS 构建 IP SANZFS 存储池与 iSCSI Target 全链路4.1 为什么用 XigmaNAS 做实验XigmaNAS 是一个基于 FreeBSD 的开源网络存储服务器提供文件共享、备份、RAID、ZFS 存储池和 iSCSI Target 服务。和直接在 Linux 上写 iscsi-target.conf 相比它把磁盘管理、存储池和 iSCSI 目标全部集成到了 WebGUI 里做存储网络实验时能省掉大量命令行调试时间。先在这里跑熟 iSCSI Target 的组件关系再迁移到 tgtadm 或者 FreeBSD 的 ctld 环境理解成本会低很多。4.2 虚拟机里安装和磁盘规划创建虚拟机时除了系统盘之外再添加四块同样大小的虚拟磁盘作为后续 ZFS 存储池的成员盘。导入老师提供的 ISO 后开机安装控制台里选择第 9 项进入安装程序然后选择第 3 项 InstallFull OS on HDD/SSD DATA/SWAP。这个全盘安装模式会把系统文件、数据文件、交换分区放到同一块目标硬盘上适合虚拟机测试场景。安装完成后重启控制台会显示 WebGUI 访问地址通常是一个http://开头的内网地址。这里有个容易忽略的细节虚拟机网卡模式。如果后续 Windows 主机和 XigmaNAS 不在同一个虚拟机网络里iSCSI 发起程序会一直发现不了目标。实验时建议把 XigmaNAS 和 Windows 主机放在同一个 VMware 网络或 VirtualBox Host-Only 网络里保证二层互通。4.3 添加磁盘、格式化和 ZFS 池登录 WebGUI 后的操作顺序是固定的Disks - Management - HDD Management逐个添加四块数据盘Disks - Management - HDD Format对每块盘执行格式化Disks - ZFS - Pools - Virtual Device把四块盘组成虚拟设备Disks - ZFS - Pools - Management基于虚拟设备创建存储池。ZFS 的层次结构和普通文件系统不一样vdev 是池底层的构成单元一个池可以有一个或者多个 vdev创建时要选对 RAID 级别。实验里四块盘是按 stripe 处理还是按 raidz1 处理决定了可用容量和故障容忍度。如果只是验证 iSCSI 链路stripe 最省事如果希望接近生产环境就用 raidz1它允许坏一块盘而不丢数据。创建完存储池可以在 Shell 或 SSH 下用命令直接验证# 查看 ZFS 存储池整体状态 zpool status # 查看池内数据集和挂载点 zfs listzpool status是 ZFS 场景下排障的第一条命令它输出池名、状态ONLINE / DEGRADED / FAULTED、vdev 布局以及 I/O 错误计数。zfs list则列出池里的数据集、已用空间和挂载点。这两条命令在之后的 iSCSI 排障里能帮助我们确认池是否处于可用状态避免把存储池故障误判成 iSCSI 配置问题。4.4 iSCSI Target 的四个组件XigmaNAS 的 iSCSI Target 配置由四个部分组成实验里创建的顺序也印证了这一点组件负责内容关键参数Extent (LUN)定义对外暴露的存储块类型 File/Disk、路径、大小Portal Group定义监听入口IP、端口默认 3260Initiator Group限定允许连接的主机发起端 IQN 列表Auth GroupCHAP 认证用户名、密码先创建 Extent再创建 Initiator Group、Auth Group、Portal Group最后在 Target 页面把它们绑定在一起。Extent 里如果选 File 类型路径必须指向 ZFS 池中的实际文件或目录路径写错是创建失败最常见的原因选 Disk 类型则直接指定块设备。做实验时 File 类型更灵活一个文件就是一个 LUN删除也简单对应关系一目了然。Auth Group 在实验里可以配置也可以不配置。生产环境几乎必须开启 CHAP否则同一个二层网络里的任何主机都能发现并连接这个 target。CHAP 认证配置时要注意用户名和密码在发起端、目标端两侧都要一致发起端配置错了通常表现为“目标已发现但连接超时”而不是直接报密码错这个现象容易误导人。4.5 目标创建与客户端接入在 Service - iSCSI Target - Target 页面创建目标填一个规范的 Target Name比如iqn.2024-04.local.xigmanas:target1然后把前面创建的 Extent、Portal Group、Initiator Group、Auth Group 全部选进来保存后目标状态为 Online。客户端接入的流程和上一章 VNXe 部分基本一致Windows 打开 iSCSI 发起程序输入 XigmaNAS 的 IP 地址发现目标后连接之后到磁盘管理里联机、初始化、新建卷。到这里一台开源网络存储服务器上的完整 IP SAN 就跑通了。5. 排错场景ISO 路径、浏览器会话与 Extent 目录三连坑5.1 ISO 路径含中文导致虚拟机创建失败实验记录里第一个卡壳点是创建虚拟机时卡在一个位置直接失败。排查到最后问题出在 ISO 文件路径带中文字符虚拟化软件在解析镜像路径时行为异常。把 ISO 拷贝到纯英文路径后创建即恢复正常。这个问题的通用性不低桌面虚拟化软件对非 ASCII 字符路径的兼容性时好时坏更容易出现在 ISO 挂载、快照目录和虚拟磁盘路径三类场景。建议虚拟机目录、ISO 路径一律只用英文字母、数字和下划线。5.2 登录页面闪回问题第二个坑在 WebGUI 登录输入账号密码点击 login页面闪一下又停回登录界面再点还是一样的现象。这个表现通常让人误以为是密码错误但其实界面上没有任何报错。实验中换到 Chrome 后正常登录后续重新登录时原来的浏览器也能成功说明是会话 Cookie 和页面重定向逻辑的兼容性问题而不是账号问题。遇到这种“闪回”时先清除该站点的 Cookie再用无痕窗口验证一次仍然失败就换浏览器内核检查 WebGUI 使用的 Web 服务器日志。不要反复尝试改密码那样只会把问题带到另一个方向。5.3 Extent 创建失败文件路径的父目录问题第三个坑发生在 iSCSI Extent 创建上添加 Extent 时页面没有成功重新创建时提示已有同名项冲突。单独看提示很容易以为是资源被占用实际原因是 Extent 里指定的文件路径其父目录不存在XigmaNAS 不会自动创建深层目录。处理方法是使用 Tools - File Manager用 WebGUI 账号登录后先创建/mnt/vd01/extend目录然后回到 iSCSI 页面重新创建 Extent路径指定到该目录下的文件创建才成功。关键点在于File 类型的 Extent 不仅需要文件路径还需要保证父目录存在如果后续要建多个 LUN建议先规划好目录结构比如按池名和业务名分目录再逐层创建避免每次添加都要临时补目录。5.4 一条命令验证 iSCSI 链路实验结束后再次连接时不必每次打开图形界面确认状态。在 Windows 上用 PowerShell 直接查会话# 查看当前主机的 iSCSI 会话确认目标连接状态 Get-IscsiSession | Select-Object -Property TargetName, InitiatorAddress, TargetAddress, NumberOfConnectionsTargetName对应存储端创建的目标名InitiatorAddress是发起端网卡 IPTargetAddress是存储端 IPNumberOfConnections为当前会话的连接数。单路径场景为 1多路径场景为 2 或更多。出现“连得上但磁盘管理里没有盘”的情况时先执行这条命令确认会话是通的再查磁盘是否脱机最后才去检查存储端映射关系顺序反了会在错误的方向上浪费时间。本文还有配套的精品资源点击获取