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通过镜像缓存和掉电保护保证这一点。
三、多路径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多路径 |
拓扑设计时建议遵循以下原则:
- 故障域分离:两台交换机、两路电源、两个控制器端口分别属于不同故障域。
- 路径对称:主机到阵列的路径数量、速率尽量对称,避免某条路径过载。
- Zone最小化:SAN Zone只包含必要的WWN,减少干扰和故障传播。
- NAS多路径:NFS可用多路径或DNS轮询,SMB可用DFS或集群VIP,避免单节点访问。
- 可观测性:保留端口、链路、控制器的监控点,便于故障时快速定位。
五、Dell实现方式与落地检查
在Dell环境中,落地高可用拓扑通常按以下顺序推进:
- 规划故障域:确定双交换机、双电源、双控制器端口的物理分布,画出路径图。
- 配置SAN Zone:按“单发起端—单目标端”或“双发起端—双目标端”规划,避免全互联Zone。
- 部署多路径:安装PowerPath或配置原生MPIO/DM-Multipath,确认ALUA优先级生效。
- 验证路径:用
multipath -ll、PowerPathpowermt display dev=all查看路径状态。 - 模拟故障:拔掉一条链路或关闭一个控制器端口,观察I/O是否切换、业务是否中断。
- 记录基线:保存正常状态下的路径、端口、Zone、控制器归属,作为后续排障对照。
最后,高可用拓扑不是一次配置就结束。建议把路径状态、控制器归属、交换机端口误码、电源状态纳入日常巡检,并在变更(如固件升级、Zone调整、控制器重启)后重新验证切换路径。只有“设计冗余、验证切换、持续监控”三步都做到,存储高可用才真正成立。