典型的 SAN 包括通过交换机网络连接到一组存储系统的一组计算机。多台计算机通常访问的是同一存储。

下图显示了通过以太网交换机连接到存储系统的多个计算机系统。在此配置中,每个系统都通过单个以太网链路连接到交换机。交换机通过单个以太网链路连接到存储系统。

图 1. 单个以太网链路与存储的连接
图中显示了通过单个以太网交换机连接到存储系统的多个系统。

系统从存储读取数据时,存储在响应时会发送足够的数据来填充存储系统与以太网交换机之间的链路。任何单个系统或虚拟机都不可能充分利用网络速度。但是,在许多系统共享一个存储设备时可能会发生这种情况。

将数据写入存储时,多个系统或虚拟机可能会尝试填充其链路。因此,系统与存储系统之间的交换机可能会丢弃网络数据包。之所以可能发生丢弃数据的情况,是因为交换机要发送至存储系统的流量超过了单个链路所能承载的流量。交换机可传输的数据量受到交换机与存储系统间的链路速度的限制。

图 2. 丢弃的数据包
图中显示了在服务器和存储系统之间的丢弃了数据的交换机。

恢复丢弃的网络数据包会导致性能明显降低。除了花时间确定数据已丢弃,重新传输操作还需使用本可用于当前事务的网络带宽。

iSCSI 流量通过传输控制协议 (Transmission Control Protocol, TCP) 进行网络传输。TCP 是一个可靠的传输协议,可确保重试丢弃的数据包并使其最终到达目标位置。TCP 旨在恢复并快速、无缝地重新传输丢弃的数据包。但是,如果交换机定期丢弃数据包,网络吞吐量将降低。网络会因重新发送数据的请求以及已重新发送的数据包而变得拥堵。传输的数据量少于网络未拥堵时的数据量。

大多数以太网交换机可缓冲或存储数据。此方法为每个尝试发送数据的设备提供到达目标位置的同等机会。缓冲部分传输数据的功能与限制未完成命令数目的许多系统相结合,可以将传输数据缩减为小型突发。多个系统中的突发可以依次发送至存储系统。

如果事务较大,且多台服务器正通过单个交换机端口发送数据,则可能会超出缓冲能力。在这种情况下,交换机会丢弃无法发送的数据,且存储系统必须请求重新传输丢弃的数据包。例如,如果以太网交换机可缓冲 32 KB,但服务器发送到存储设备 256 KB,则会丢弃一些数据。

大多数受管交换机都会提供有关所丢弃数据包的信息,类似以下形式:

*: interface is up
IHQ: pkts in input hold queue     IQD: pkts dropped from input queue
OHQ: pkts in output hold queue    OQD: pkts dropped from output queue
RXBS: rx rate (bits/sec)          RXPS: rx rate (pkts/sec)
TXBS: tx rate (bits/sec)          TXPS: tx rate (pkts/sec)
TRTL: throttle count
表 1. 交换机信息示例
界面 IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
* GigabitEthernet0/1 3 9922 0 0 476303000 62273 477840000 63677 0

在此 Cisco 交换机示例中,使用的带宽为 476303000 位/秒,低于线速的一半。端口缓冲入站数据包,但丢弃了一些数据包。此界面摘要最后一行的 IQD 列表示该端口已丢弃近 10,000 个入站数据包。

为避免此问题而对配置进行更改时需确保多个输入以太网链路不缩减为一个输出链路,否则会导致链路超额预定。如果在几乎满载时进行传输的多个链路切换为更少数量的链路,则可能发生超额预定情况。

通常,向存储写入大量数据的应用程序或系统必须避免共享存储设备的以太网链路。与存储设备存在多个连接时,这些类型的应用程序可实现最佳性能。

“交换机与存储的多个连接”显示了交换机与存储的多个连接。

图 3. 交换机与存储的多个连接
此图显示了交换机与存储的多个连接。

使用 VLAN 或 VPN 不能针对共享配置中的链路超额预定问题提供合适的解决方案。VLAN 和网络的其他虚拟分区提供了按逻辑设计网络的方法。但是,它们不会更改交换机之间链路和中继的物理功能。当存储流量和其他网络流量共享物理连接时,可能会出现超额预定和丢失数据包的现象。此情况也适用于共享交换机间中继的 VLAN。设计 SAN 的性能时,必须考虑网络的物理限制而不是逻辑分配。