ESXi 可以使用 Internet SCSI (iSCSI) 协议连接到外部 SAN 存储。除了传统的 iSCSI 外,ESXi 还支持 RDMA 的 iSCSI 扩展 (iSER)。

使用 iSER 协议,主机可以使用相同的 iSCSI 框架,但会将 TCP/IP 传输替换为远程直接内存访问 (RDMA) 传输。

关于 iSCSI SAN

iSCSI SAN 在主机和高性能存储子系统之间使用以太网连接。

在主机端,iSCSI SAN 组件包括 iSCSI 主机总线适配器 (host bus adapter, HBA) 或网卡 (NIC)。iSCSI 网络还包括传输存储流量的交换机和路由器、电缆、存储处理器 (Storage Processor, SP) 及存储磁盘系统。

此图介绍了两种类型的 iSCSI 连接,一种使用软件启动器,另一种使用硬件启动器。

iSCSI SAN 使用客户端-服务器架构。

客户端(也称为 iSCSI 启动器)在 ESXi 主机上操作。它通过发出 SCSI 命令并将封装到 iSCSI 协议中的这些命令传输到 iSCSI 服务器来启动 iSCSI 会话。服务器也称为 iSCSI 目标。通常,iSCSI 目标表示网络上的物理存储系统。

目标也可以是虚拟 iSCSI SAN,例如正在虚拟机中运行的 iSCSI 目标仿真器。iSCSI 目标通过传输必需的 iSCSI 数据响应启动器的命令。

iSCSI 多路径

在主机服务器与存储之间传输数据时,SAN 将使用一种叫做多路径的技术。通过多路径,ESXi 主机可拥有多个指向存储系统上的 LUN 的物理路径。

通常,从主机到 LUN 的单一路径包括 iSCSI 适配器或网卡、交换机端口、连接电缆和存储控制器端口。如果路径中的任何组件出现故障,主机将选择另一条可用路径用于 I/O。检测故障路径并切换到另一条路径的过程称为路径故障切换。

有关多路径的详细信息,请参见 了解 ESXi 环境中的多路径和故障切换

iSCSI SAN 节点和端口

iSCSI SAN 上单个可发现的实体(如启动器或目标)表示一个 iSCSI 节点。

每个节点均有一个节点名称。ESXi 使用多种方法来标识节点。

IP 地址
每个 iSCSI 节点都可具有一个与其相关联的 IP 地址,以便网络上的路由和交换设备可以在主机与存储器之间建立连接。此地址就像为了访问公司的网络或 Internet 而分配给计算机的 IP 地址一样。
iSCSI 名称
用于标识节点的全球唯一名称。iSCSI 使用 iSCSI 限定名 (IQN) 和扩展唯一标识符 (EUI)。
默认情况下, ESXi 为 iSCSI 启动器生成唯一 iSCSI 名称,例如, iqn.1998-01.com.vmware:iscsitestox-68158ef2。通常,无需更改默认值;但如果要这样做,请确保输入的新 iSCSI 名称是全球唯一的。
iSCSI 别名
使用的 iSCSI 设备或端口的更易管理的名称,而不是 iSCSI 名称。iSCSI 别名不是唯一名称,且应为与端口关联的友好名称。

每个节点都有一个或多个将其连接到 SAN 的端口。iSCSI 端口是 iSCSI 会话的端点。

iSCSI 命名约定

iSCSI 使用一种特殊、唯一的名称来标识 iSCSI 节点(目标或启动器)。

iSCSI 名称通过两种不同方式格式化。最常见的是 IQN 格式。

有关 iSCSI 命名要求和字符串配置文件的更多详细信息,请参见 IETF 网站上的 RFC 3721 和 RFC 3722。

iSCSI 限定名称格式
iSCSI 限定名称 (IQN) 格式采用 iqn.yyyy-mm.naming-authority:unique 名称的形式,其中:
  • yyyy-mm 是命名机构成立的年份和月份。
  • naming-authority 是命名机构的 Internet 域名的反向语法。例如,iscsi.vmware.com 命名机构可以具有 iqn.1998-01.com.vmware.iscsi iSCSI 限定名称形式。该名称表示 vmware.com 域名是于 1998 年 1 月注册的,iscsi 是由 vmware.com 维护的子域。
  • unique name 是希望使用的任何名称,如主机的名称。命名机构必须确保在冒号后面分配的任何名称都是唯一的,如:
    • iqn.1998-01.com.vmware.iscsi:name1
    • iqn.1998-01.com.vmware.iscsi:name2
    • iqn.1998-01.com.vmware.iscsi:name999
企业唯一标识符格式
企业唯一标识符 (EUI) 格式采用 eui.16_hex_digits 形式。

例如,eui.0123456789ABCDEF

16 位十六进制数字是 IEEE EUI(扩展唯一标识符)格式的 64 位数的文本表示形式。前 24 位是 IEEE 向特定公司注册的公司 ID。其余 40 位由持有该公司 ID 的实体分配,并且必须是唯一的。

iSCSI 启动器

要访问 iSCSI 目标,ESXi 主机需要使用 iSCSI 启动器。

启动器是在 ESXi 主机上安装的软件或硬件。iSCSI 启动器启动主机与外部 iSCSI 存储系统之间的通信,并将数据发送到存储系统。

ESXi 环境中,在您的主机上配置的 iSCSI 适配器会发挥启动器的作用。ESXi 支持多种类型的 iSCSI 适配器。

有关配置和使用 iSCSI 适配器的信息,请参见 为 ESXi 配置 iSCSI 和 iSER 适配器与存储

软件 iSCSI 适配器
软件 iSCSI 适配器是 VMkernel 中内置的 VMware 代码。使用软件 iSCSI 适配器,您的主机可通过标准网络适配器连接到 iSCSI 存储设备。软件 iSCSI 适配器可在与网络适配器进行通信的过程中负责 iSCSI 处理过程。借助软件 iSCSI 适配器,您无需购买专用硬件便可使用 iSCSI 技术。
硬件 iSCSI 适配器
硬件 iSCSI 适配器是第三方适配器,可从主机卸载 iSCSI 和网络处理。硬件 iSCSI 适配器分为几种类别。
  • Dependent Hardware iSCSI Adapter。基于 VMware 网络以及由 VMware 提供的 iSCSI 配置和管理界面。

    这种类型的适配器可以是一张为同一端口提供标准网络适配器和 iSCSI 卸载功能的卡。iSCSI 卸载功能取决于主机获取 IP、MAC 和其他用于 iSCSI 会话的参数的网络配置。iSCSI 许可的 Broadcom 5709 网卡就是一种从属适配器。

  • Independent Hardware iSCSI Adapter。执行自己的网络及 iSCSI 配置和管理界面。

    通常,只提供 iSCSI 卸载功能,或者提供 iSCSI 卸载功能和标准网卡功能的卡就是一种独立硬件 iSCSI 适配器。iSCSI 卸载功能具有独立的配置管理,可分配 IP、MAC 和其他用于 iSCSI 会话的参数。QLogic QLA4052 适配器就是一种独立适配器。

硬件 iSCSI 适配器可能需要获得许可。否则,可能不会出现在客户端或 vSphere CLI 中。有关许可信息,请联系供应商。

ESXi 中使用 iSER 协议

除了传统的 iSCSI 以外,ESXi 还支持 iSCSI Extensions for RDMA (iSER) 协议。启用 iSER 协议之后,ESXi 主机上的 iSCSI 框架可以使用远程直接内存访问 (RDMA)(而不是 TCP/IP)传输。

传统的 iSCSI 协议通过 TCP/IP 网络在主机上的 iSCSI 启动器和存储设备上的 iSCSI 目标之间传输 SCSI 命令。iSCSI 协议将封装命令,并将相关数据汇编成 TCP/IP 层的数据包。当数据到达时,iSCSI 协议将反汇编 TCP/IP 数据包,以便能够区分 SCSI 命令并将其提供给存储设备。

iSER 与传统的 iSCSI 不同,因为它使用远程直接内存访问 (RDMA) 传输替换 TCP/IP 数据传输模型。通过使用 RDMA 的直接数据放置技术,iSER 协议可以直接在 ESXi 主机和存储设备的内存缓冲区之间传输数据。此方法不仅可以消除不必要的 TCP/IP 处理和数据复制,还可以减少存储设备上的延迟和 CPU 负载。

在 iSER 环境中,iSCSI 的工作方式与以前完全一样,但使用的是底层 RDMA 架构接口(而不是基于 TCP/IP 的接口)。

由于 iSER 协议保留了与 iSCSI 基础架构的兼容性,因此在 ESXi 主机上启用 iSER 的过程与 iSCSI 过程类似。请参见使用 ESXi 配置 iSER

建立 iSCSI 连接

ESXi 环境中,“目标”一词标识可以由主机访问的单个存储单元。术语“存储设备”和“LUN”描述代表目标上的存储空间的逻辑卷。通常,“设备”和“LUN”等词在 ESXi 环境中表示通过存储器目标向您的主机呈现的 SCSI 卷,对于该卷可以格式化。

不同的 iSCSI 存储供应商通过不同方式向主机呈现存储器。有些供应商在单个目标上呈现多个 LUN,而有些供应商则向多个目标各呈现一个 LUN。

图 1. 目标与 LUN 表示形式比较
在一例中,主机看到一个具有三个 LUN 的目标。在另一个示例中,主机看到三个目标,每个目标都有一个 LUN。

在这些示例中,每个配置都有三个 LUN 可用。在第一种情况中,主机可以检测到一个目标,但该目标具有三个可供使用的 LUN。每个 LUN 均表示单独的存储卷。在第二种情况中,主机可以检测到三个不同的目标,每个目标都拥有一个 LUN。

基于主机的 iSCSI 启动器建立与各目标的连接。具有包含多个 LUN 的单个目标的存储系统通过一个连接向所有 LUN 输送流量。在具有三个目标(每个均有一个 LUN)的系统中,主机分别连接至三个 LUN。

当您尝试在具有多个 iSCSI 适配器的主机的多个连接上聚合存储流量时,此信息很有用。您可以将一个目标的流量设置为特定适配器,并为另一个目标的流量使用另一个适配器。

iSCSI 存储系统类型

主机支持的 ESXi 存储类型包括主动-主动、主动-被动和 ALUA 合规。

主动-主动存储系统
支持通过所有可用的存储端口同时访问多个 LUN,而不会明显降低性能。所有路径都始终保持活动状态,除非路径发生故障。
主动-被动存储系统
存储处理器在其中主动提供对给定 LUN 的访问权限的系统。其他处理器用作 LUN 的备份,并且可以主动提供对其他 LUN I/O 的访问权限。只能向给定 LUN 的活动端口成功发送 I/O。如果通过主动存储端口访问失败,则其中一个被动存储处理器可通过服务器对其进行访问而激活。
非对称存储系统
支持非对称逻辑单元访问 (ALUA)。ALUA 合规存储系统对每个端口提供不同级别的访问。借助 ALUA,主机可以判断目标端口的状态,并区分路径的优先级。主机会将某些活动路径用作主路径,其他路径用作辅助路径。
虚拟端口存储系统
支持通过一个虚拟端口访问所有可用 LUN。虚拟端口存储系统是主动-主动存储设备,但通过单个端口隐藏其多个连接。默认情况下, ESXi 多路径不会在特定端口与存储之间建立多个连接。某些存储供应商提供会话管理器来建立并管理与其存储的多个连接。这些存储系统以透明的方式处理端口故障切换和连接均衡。此功能通常称为透明故障切换。

发现、身份验证和访问控制

可以使用多种机制发现存储并限制对它的访问。

必须配置主机和 iSCSI 存储系统以支持存储访问控制策略。

发现
发现会话是 iSCSI 协议的一部分。它返回可在 iSCSI 存储系统上访问的一组目标。 ESXi 上提供的两类发现为:动态和静态。动态发现从 iSCSI 存储系统获取可访问目标的列表。静态发现只能通过目标名称和地址访问特定目标。

有关详细信息,请参见在 ESXi 主机上配置 iSCSI 和 iSER 的动态或静态发现

身份验证
iSCSI 存储系统通过名称和密匙对来对启动器进行身份验证。 ESXi 支持 CHAP 身份验证协议。要使用 CHAP 身份验证, ESXi 主机和 iSCSI 存储系统必须启用 CHAP,并具有公共凭据。

有关启用 CHAP 的信息,请参见为 ESXi 主机上的 iSCSI 或 iSER 存储适配器配置 CHAP 参数

访问控制
访问控制是在 iSCSI 存储系统中设置的策略。大多数实施都支持以下三种访问控制类型的一种或多种:
  • 通过启动器名称
  • 通过 IP 地址
  • 通过 CHAP 协议

仅符合所有规则的启动器才可以访问 iSCSI 卷。

由于 ESXi 主机可以发现所有目标,因此只使用 CHAP 进行访问控制可能会降低重新扫描的速度,但是随后会在身份验证这一步失败。如果主机仅发现其可以进行身份验证的目标,则 iSCSI 重新扫描会进行得更快。

虚拟机如何访问 iSCSI SAN 上的数据

ESXi 会将虚拟机的磁盘文件存储到位于 SAN 存储设备上的 VMFS 数据存储内。当虚拟机客户机操作系统向其虚拟磁盘发送 SCSI 命令时,SCSI 虚拟化层会将这些命令转换成 VMFS 文件操作。

虚拟机与其在 SAN 上存储的虚拟磁盘交互时,将发生以下过程:

  1. 虚拟机中的客户机操作系统读写 SCSI 磁盘时,将向虚拟磁盘发送 SCSI 命令。
  2. 虚拟机操作系统中的设备驱动程序将与虚拟 SCSI 控制器进行通信。
  3. 虚拟 SCSI 控制器将命令转发至 VMkernel。
  4. VMkernel 将执行以下任务。
    1. 在 VMFS 卷中查找相应的虚拟磁盘文件。
    2. 将对虚拟磁盘上块的请求映射到相应物理设备上的块。
    3. 将修改后的 I/O 请求从 VMkernel 中的设备驱动程序发送至 iSCSI 启动器(硬件或软件)。
  5. 如果 iSCSI 启动器是硬件 iSCSI 适配器(独立或从属),则该适配器执行以下任务:
    1. 将 I/O 请求封装到 iSCSI 协议数据单元 (Protocol Data Unit, PDU)。
    2. 将 iSCSI PDU 封装到 TCP/IP 数据包。
    3. 通过以太网将 IP 数据包发送至 iSCSI 存储系统。
  6. 如果 iSCSI 启动器是软件 iSCSI 适配器,则将发生以下事件。
    1. iSCSI 启动器将 I/O 请求封装到 iSCSI PDU 中。
    2. 启动器通过 TCP/IP 连接发送 iSCSI PDU。
    3. VMkernel TCP/IP 堆栈将 TCP/IP 数据包转发到物理网卡。
    4. 物理网卡通过以太网将 IP 数据包发送至 iSCSI 存储系统。
  7. 网络上的以太网交换机和路由器将请求递送至相应的存储设备。

错误纠正

为保护 iSCSI 标头和数据的完整性,iSCSI 协议提供了错误纠正方法,这些方法称为标头摘要和数据摘要。

这两种方法都受 ESXi 主机支持,您可以激活它们。这些方法用于检查 iSCSI 启动器和目标之间双向传输的标头和 SCSI 数据。

除其他网络层(例如 TCP 和以太网)提供的完整性检查外,标头和数据摘要还检查非加密数据完整性。标头和数据摘要将检查完整的通信路径,包括可更改网络级流量的所有因素,例如路由器、交换机和代理。

建立 iSCSI 连接之后,将协商摘要的存在和类型。启动器和目标就摘要配置达成一致后,此摘要必须用于它们之间的所有流量。

启用标头和数据摘要要求对启动器和目标进行额外处理,并可影响吞吐量和 CPU 使用性能。

注: 使用 Intel Nehalem 处理器的系统会卸载 iSCSI 摘要计算功能,从而减少对性能的影响。

有关启用标头和数据摘要的信息,请参见 为 ESXi 主机上的 iSCSI 配置高级参数