4. 高可用存储网络设计基础

存储网络是高可用存储系统的“神经系统”。无论后端阵列本身冗余多么完善,只要主机到存储的链路存在单点故障,业务连续性就无从谈起。本章围绕协议选型、多路径机制、交换机冗余与SAN Fabric设计原则四条主线展开,帮助读者建立可落地的网络高可用设计思路。

4.1 三种主流存储协议的定位与对比

HPE Alletra 系列同时支持 FC、iSCSI 与 NVMe-oF 三种前端协议,它们并非互相替代,而是面向不同场景的互补方案。

FC(Fibre Channel)是传统企业SAN的主力协议。它使用专用HBA卡、光纤交换机和FC帧封装SCSI命令,典型速率包括16G/32G/64G。FC采用基于端口的信用机制,天然具备无损、低时延、确定性交付的特点,适合对稳定性要求极高的核心数据库。代价是专用硬件成本高、需要独立的FC网络运维技能。

iSCSI把SCSI命令封装进TCP/IP,复用现有以太网。10G/25G以太网即可承载,成本低、运维熟悉。但TCP的拥塞控制与重传机制会引入抖动,因此iSCSI高可用设计必须配合无损以太网(PFC/ETS)或独立存储VLAN,否则链路拥塞会直接放大为存储时延。

NVMe-oF是面向全闪存的新一代协议,把NVMe命令通过RDMA(RoCEv2)或FC(FC-NVMe)传输。它取消了传统SCSI的单队列限制,支持多队列、深队列与更低的协议开销,端到端时延可降至百微秒级。HPE Alletra MP 的NVMe-oF前端通常采用RoCEv2,需要无损以太网与DCB配置支撑。

对比维度FCiSCSINVMe-oF (RoCEv2)
传输介质专用光纤以太网无损以太网
典型速率32G/64G10G/25G25G/100G
时延量级低中最低
无损机制端口信用依赖PFC/ETS必须PFC/ECN
运维复杂度高(专用技能)低中高(DCB调优)

4.2 多路径I/O:把“多条路”变成“一条可靠的路”

多路径I/O(MPIO)的核心思想是:主机与存储之间同时存在两条以上物理独立路径,操作系统把它们聚合成一个逻辑设备。当某条路径故障时,I/O自动切换到备用路径,业务无感知。

在Linux上,HPE推荐使用DM Multipath(device-mapper-multipath)。关键配置项包括:path_grouping_policy(多路径分组策略)、path_checker(路径检测方式)、failback(故障回切策略)。典型配置如下:

defaults {
    path_grouping_policy    group_by_prio
    path_checker            tur
    failback                immediate
    no_path_retry           30
    user_friendly_names     yes
}
devices {
    device {
        vendor              "HPE"
        product             "Alletra"
        path_selector       "service-time 0"
        prio                alua
    }
}

其中path_selector "service-time 0"表示按路径服务时间动态选路,prio alua表示优先级由ALUA决定。这两项配合,才能让多路径在正常状态下也做到负载均衡,而非仅仅“备用”。

4.3 ALUA:让主机知道哪条路更快

ALUA(Asymmetric Logical Unit Access,非对称逻辑单元访问)是SCSI标准中的目标端口状态机制。在双控制器阵列中,每个LUN实际上由其中一个控制器“拥有”(Owner)。主机通过Owner控制器的路径访问最快,通过非Owner控制器的路径需要内部转发,时延更高。

ALUA定义了两种目标端口状态:Active/Optimized(AO)与Active/Non-Optimized(ANO)。主机多路径软件读取这些状态后,把AO路径放入高优先级组,ANO路径放入低优先级组。正常时I/O走AO组;当AO路径全部失效,才切换到ANO组。这样既保证了性能,又保留了冗余。

需要特别注意的是:ALUA是“非对称”的,因此path_grouping_policy必须设为group_by_prio,而不是multibus。若误设为multibus,主机可能把ANO路径也当作等价路径使用,导致性能下降甚至路径抖动。

双控制器ALUA多路径访问关系 主机 DM Multipath group_by_prio HBA-1 HBA-2 Fabric A 交换机 Fabric B 交换机 控制器 A 端口状态: AO LUN Owner 控制器 B 端口状态: ANO 内部转发 AO 路径 ANO 路径 AO 路径(优先,低时延) ANO 路径(备用,高时延) 交叉路径

4.4 交换机冗余与SAN Fabric设计原则

多路径要真正生效,前提是路径在物理上独立。如果两条HBA线缆插在同一台交换机的不同端口上,交换机故障仍会导致全部路径中断。因此SAN设计的第一原则是Fabric隔离:至少两台独立交换机,分别构成Fabric A与Fabric B,主机双HBA分别接入两个Fabric,存储双控制器端口也分别接入两个Fabric。这就是经典的“双Fabric、无交叉”拓扑。

在此基础上,还需遵循以下原则:

  • 端口与线缆冗余:主机到交换机、交换机到存储均采用双链路,且两条链路不共用同一物理管道或同一电源域。
  • Zone划分最小化:每个Zone只包含一台主机的HBA与它需要访问的存储端口,避免“大Zone”导致所有主机看到所有LUN,既降低安全性也增加RSCN风暴风险。
  • 单Fabric内不堆叠:Fabric A与Fabric B之间不做ISL互联,保持故障域完全隔离。若必须互联,应使用明确的路由策略而非简单合并。
  • 速率与信用匹配:交换机端口速率、缓冲信用(BB Credit)需与链路距离匹配,长距离链路要核算信用是否足够,否则会出现吞吐下降。
  • 命名与文档规范:WWN、Zone名称、交换机端口用途应统一命名,便于故障时快速定位。
在HPE Alletra的部署实践中,建议先完成Fabric A的单路径验证,再接入Fabric B,最后用multipath -ll确认每个LUN下同时存在AO与ANO路径,且AO路径数量与预期一致。

4.5 协议选型与多路径的协同判断

协议选择会直接影响多路径的配置方式。FC与FC-NVMe使用prio alua即可;iSCSI在Linux上通常也支持ALUA,但需确认目标端已启用ALUA并正确上报状态;NVMe-oF over RoCEv2则使用native NVMe multipath或DM Multipath的NVMe支持,其路径状态由NVMe ANA(Asymmetric Namespace Access)描述,概念与ALUA类似但字段不同。

实际排障时,可按以下顺序判断:先看物理链路(lsscsi、systool -c fc_host或ip link),再看多路径聚合结果(multipath -ll),最后看路径优先级是否符合ALUA/ANA预期。若发现所有路径都被归入同一优先级组,应优先检查path_grouping_policy与目标端ALUA状态,而不是急于更换硬件。

常见误区:把“多路径已识别”等同于“高可用已就绪”。若两条路径实际经过同一台交换机或同一控制器端口,故障时仍会同时失效。设计阶段必须用拓扑图核对物理独立性,而非只看操作系统识别到的路径数量。

综上,高可用存储网络的设计逻辑可以概括为:协议决定性能与成本边界,多路径决定故障切换能力,ALUA/ANA决定路径优先级,交换机冗余与Fabric隔离决定故障域大小。四者缺一不可,且必须在设计阶段就统一规划,而非部署后再补救。