3. 块存储协议核心概念

块存储协议是主机访问企业存储阵列的“语言与规则”。理解这些术语,关键不是背缩写,而是弄清三件事:谁发起访问、谁提供存储、用什么地址找到对方、以及数据以什么单位被读写。本节围绕 SCSI、iSCSI、FC、NVMe-oF 四种协议,以及 LUN、Target、Initiator、WWN、IQN 等寻址要素展开。

一、SCSI:块存储的“命令语义层”

SCSI(Small Computer System Interface)最初是并行物理接口,如今在企业存储中更多指 SCSI 命令集。它定义了主机如何向块设备发出 READ、WRITE、INQUIRY、TEST UNIT READY 等命令,以及设备如何返回状态。无论底层是 FC、iSCSI 还是 SAS,主机看到的块设备语义大多仍是 SCSI。因此可以把 SCSI 理解为“说什么”,而 FC/iSCSI 是“怎么送”。

SCSI 模型中,Initiator 是发起 I/O 的一端(通常是主机 HBA 或软件发起端),Target 是响应 I/O 的一端(通常是存储阵列的前端端口)。一个 Target 可以暴露多个 LUN(Logical Unit Number),LUN 是主机可识别的逻辑块设备编号。主机执行扫描后,会把每个可见 LUN 呈现为一块磁盘,例如 Linux 下的 /dev/sdb、Windows 下的磁盘 1。

二、FC 与 iSCSI:两种承载方式

FC(Fibre Channel,光纤通道)是专为存储设计的高速网络,使用 FC 交换机组成 Fabric,通过 WWN(World Wide Name) 标识端口。WWN 是 64 位十六进制地址,类似网卡的 MAC 地址,全球唯一。常见格式如 50:00:14:40:xx:xx:xx:xx。FC 中还有 WWPN(端口名)与 WWNN(节点名)之分,Zoning 和 LUN Masking 通常基于 WWPN 做访问控制。

iSCSI 则把 SCSI 命令封装进 TCP/IP,用普通以太网传输,成本低、易扩展。iSCSI 使用 IQN(iSCSI Qualified Name)标识发起端和目标端,格式形如 iqn.2024-06.com.example:host01。IQN 由日期、反向域名和自定义标识组成,配合 IP 地址与 TCP 3260 端口完成寻址。主机侧可用软件发起端(如 open-iscsi)或 iSCSI HBA。

三、NVMe-oF:为闪存而生的新协议

SCSI 命令栈对高并发闪存存在队列深度和延迟开销。NVMe 原生面向 PCIe SSD,支持多队列、深队列。NVMe-oF(NVMe over Fabrics)把 NVMe 命令扩展到网络,常见承载包括 FC-NVMe、RoCEv2、TCP。它不再使用 LUN 概念,而是用 Namespace 标识可访问的存储空间,用 NQN(NVMe Qualified Name)标识控制器与子系统。相比 iSCSI,NVMe-oF 在同等硬件下通常具有更低延迟和更高 IOPS,但需要网络支持无损或拥塞控制。

块存储协议栈与寻址要素对照 Initiator(主机侧) • FC HBA:WWPN 50:00:14:40:… • iSCSI:IQN + IP:3260 • NVMe-oF:NQN + IP/RoCE 发起 READ / WRITE 命令 扫描后呈现为块设备 /dev/sdb、磁盘 1 Target(存储阵列) • FC 前端端口 WWPN • iSCSI Target IQN • NVMe 子系统 NQN 暴露 LUN / Namespace LUN 0、LUN 1、NSID 1 映射到存储池卷 协议承载层 SCSI 命令集(READ/WRITE/INQUIRY) FC / iSCSI / NVMe-oF 传输 Fabric / TCP/IP / RoCE 网络 寻址与标识对照 协议 发起端标识 目标端标识 存储单元 典型端口 FC WWPN Target WWPN LUN — iSCSI IQN + IP IQN + IP LUN TCP 3260 NVMe-oF NQN + IP NQN + IP Namespace 4420 / 8009

四、LUN、Target、Initiator 的映射关系

实际配置中,管理员在阵列上创建卷,再把卷映射给某个 Initiator 的 WWPN 或 IQN,并指定一个 LUN 编号。主机侧扫描后,该卷就以块设备出现。这里有两个容易混淆的点:

  • LUN 是“编号”不是“容量”:LUN 0 可以是一块 2TB 卷,LUN 1 也可以是 500GB 卷,编号与大小无关。
  • 同一 LUN 对不同主机可以不同:阵列可把同一卷以 LUN 5 映射给主机 A,以 LUN 2 映射给主机 B,主机各自看到自己的编号。

访问控制通常分两层:FC 用 Zoning 限制哪些 WWPN 能通信,再用 LUN Masking 决定某 Initiator 能看到哪些 LUN;iSCSI 则用 ACL 把 IQN 与 Target 绑定。若主机扫描不到磁盘,先查物理链路,再查 Zoning/ACL,最后查 LUN Masking 与主机多路径状态。

五、寻址机制的实际判断

以 Linux 主机通过 iSCSI 接入为例,关键观察点如下:

# 发现目标
iscsiadm -m discovery -t sendtargets -p 192.168.10.50:3260
# 登录
iscsiadm -m node -T iqn.2024-06.com.dell:array01 -p 192.168.10.50:3260 -l
# 查看会话与设备
iscsiadm -m session -P 3
lsblk

若 iscsiadm -m session 显示已登录,但 lsblk 没有新磁盘,说明问题多在 LUN Masking 或主机侧未 rescan。FC 场景下可用 systool -c fc_host -v 查看 WWPN,用 lsscsi 确认 LUN 是否被识别。NVMe-oF 则用 nvme discover 与 nvme connect,再用 nvme list 查看 Namespace。

判断口诀:先看链路,再看登录,再看映射,最后看多路径。FC 查 WWPN 与 Zoning,iSCSI 查 IQN 与 ACL,NVMe-oF 查 NQN 与子系统。LUN/Namespace 是最终呈现给主机的存储单元,Target 与 Initiator 是两端身份,WWN/IQN/NQN 是寻址与授权依据。

掌握这些术语后,后续配置 FC Zoning、iSCSI 登录、NVMe-oF 连接以及多路径时,就能准确判断每一步在协议栈中的位置,而不是把“连不上”笼统归因于网络或存储。