3. 存储高可用基础架构设计

存储高可用不是“买两台设备”这么简单,它是一套从部件、控制器、链路到拓扑逐层消除单点故障(SPOF)的设计方法。本节围绕四个层次展开:冗余组件、双活控制器、多路径I/O,以及SAN与NAS的高可用拓扑原则,并结合Dell的实现方式说明“实际怎么做”。

一、冗余组件:从最底层消除单点

高可用的第一原则是:任何单一部件的失效都不应导致业务中断。在Dell PowerStore、PowerVault ME5、Unity XT等阵列中,冗余通常覆盖以下对象:

  • 电源与散热:双电源模块(PSU)分别接入A、B两路独立PDU,风扇N+1冗余,单个PSU或风扇故障时告警但不宕机。
  • 控制器:双控制器互为备份,任一控制器故障时另一控制器接管其LUN/卷。
  • 后端磁盘链路:SAS双端口盘或NVMe双端口盘,通过两条独立后端路径连接两个控制器,避免单条SAS链或单端口盘成为SPOF。
  • 缓存与掉电保护:控制器缓存镜像到对端控制器,并配合超级电容/闪存模块,在断电时将缓存数据落盘。
  • 管理路径:管理口、带外管理(iDRAC/CMC)独立于数据路径,便于故障时远程介入。

判断冗余是否真正生效,不能只看“有没有两块”,而要看故障域是否分离。例如两个PSU插在同一路PDU上,仍属于同一故障域;两条光纤链路接到同一台交换机,也不构成真正的链路冗余。

二、双活控制器:Active-Active的工作方式

Dell中高端阵列普遍采用Active-Active双控制器。以PowerStore为例,两个节点(Node A、Node B)同时对外提供服务,卷(Volume)按归属(Affinity)分布在两个节点上,主机I/O由归属节点处理,非归属节点通过内部PCIe/NVMe链路转发。当Node A故障时,Node B接管其卷,主机侧通过多路径软件把I/O切换到Node B的端口。

这里有两个关键点:

  • 归属与接管:卷的归属决定了正常路径;故障时发生“接管(Takeover)”,恢复后可能发生“回切(Failback)”。回切策略需与业务窗口匹配,避免频繁切换。
  • 缓存一致性:双活控制器之间必须保持写缓存镜像,否则接管后数据不完整。Dell通过镜像缓存和掉电保护保证这一点。
教学示例:假设PowerStore双节点,卷Vol1归属Node A。主机HBA1经交换机SW1到Node A端口0,HBA2经SW2到Node B端口1。正常时Vol1的I/O走HBA1→SW1→Node A;Node A故障后,多路径把I/O切到HBA2→SW2→Node B,Node B接管Vol1。此处的端口、交换机编号为示例,实际以现场WWN和Zone配置为准。

三、多路径I/O:让主机“看见”多条路

多路径I/O(MPIO)是主机侧的高可用机制。它把同一LUN的多条物理路径聚合成一个逻辑设备,实现路径故障切换和负载均衡。Dell环境常用两种实现:

  • Dell EMC PowerPath:Dell自家多路径软件,支持PowerStore、Unity XT、PowerMax等,提供路径故障切换、负载均衡和路径健康监控。
  • 原生MPIO:Windows MPIO、Linux DM-Multipath、VMware NMP/PSP,配合Dell的ALUA(Asymmetric Logical Unit Access)使用。

以Linux DM-Multipath为例,典型配置思路如下(示例参数,需按现场调整):

# /etc/multipath.conf 片段(示例)
defaults {
    path_selector "service-time 0"
    path_grouping_policy "group_by_prio"
    failback immediate
    no_path_retry 5
}
devices {
    device {
        vendor "DellEMC"
        product "PowerStore"
        path_grouping_policy "group_by_prio"
        prio "alua"
    }
}

配置后可用 multipath -ll 查看路径状态:正常时同一LUN下应看到多条active ready路径,并按ALUA优先级分为优化路径组和非优化路径组。若某条路径变为failed,说明该链路或端口异常,需要检查HBA、交换机Zone和阵列端口。

四、SAN与NAS高可用拓扑设计原则

SAN(块存储)和NAS(文件存储)的高可用拓扑原则不同,但核心都是“消除单点、分离故障域”。

维度SAN高可用原则NAS高可用原则
链路双HBA、双交换机、双阵列端口,Zone按“单发起端—多目标端”或“双发起端—双目标端”规划双网卡、双交换机、双NAS节点,LACP或独立子网
协议FC/iSCSI/NVMe-oF,优先ALUA优化路径NFS/SMB,配合DNS轮询或NAS集群VIP
故障切换MPIO路径切换、控制器接管节点接管、VIP漂移、SMB透明故障转移
典型Dell实现PowerStore/Unity XT + PowerPath/MPIO + Connectrix交换机PowerScale/Unity NAS + 集群VIP + NFS/SMB多路径

拓扑设计时建议遵循以下原则:

  1. 故障域分离:两台交换机、两路电源、两个控制器端口分别属于不同故障域。
  2. 路径对称:主机到阵列的路径数量、速率尽量对称,避免某条路径过载。
  3. Zone最小化:SAN Zone只包含必要的WWN,减少干扰和故障传播。
  4. NAS多路径:NFS可用多路径或DNS轮询,SMB可用DFS或集群VIP,避免单节点访问。
  5. 可观测性:保留端口、链路、控制器的监控点,便于故障时快速定位。
Dell存储高可用拓扑:双控制器 + 多路径 + 双交换机 主机 HBA1 WWN: 10:00:...A1 主机 HBA2 WWN: 10:00:...B2 FC交换机 SW1 Zone: HBA1→NodeA FC交换机 SW2 Zone: HBA2→NodeB Dell PowerStore 双活控制器 Node A 端口0 / 端口1 归属 Vol1 Node B 端口0 / 端口1 接管 Vol1 缓存镜像 故障切换路径(示例) 正常I/O路径 故障切换路径 注:端口、WWN、Zone为教学示例,实际以现场配置为准

五、Dell实现方式与落地检查

在Dell环境中,落地高可用拓扑通常按以下顺序推进:

  1. 规划故障域:确定双交换机、双电源、双控制器端口的物理分布,画出路径图。
  2. 配置SAN Zone:按“单发起端—单目标端”或“双发起端—双目标端”规划,避免全互联Zone。
  3. 部署多路径:安装PowerPath或配置原生MPIO/DM-Multipath,确认ALUA优先级生效。
  4. 验证路径:用multipath -ll、PowerPath powermt display dev=all查看路径状态。
  5. 模拟故障:拔掉一条链路或关闭一个控制器端口,观察I/O是否切换、业务是否中断。
  6. 记录基线:保存正常状态下的路径、端口、Zone、控制器归属,作为后续排障对照。
注意:多路径配置完成后,务必确认“优化路径”和“非优化路径”的优先级正确。若所有路径都被识别为优化路径,可能导致I/O跨控制器转发,增加延迟。ALUA优先级需与阵列端口归属一致。

最后,高可用拓扑不是一次配置就结束。建议把路径状态、控制器归属、交换机端口误码、电源状态纳入日常巡检,并在变更(如固件升级、Zone调整、控制器重启)后重新验证切换路径。只有“设计冗余、验证切换、持续监控”三步都做到,存储高可用才真正成立。