更新 2018
/2/1- 此问题已在 Mellanox CX4 固件和驱动程序的更新版本中得到修复
在使用 Dell EMC Microsoft Storage Spaces Direct 就绪节点和 Dell EMC PowerEdge R740xd 和 Mellanox CX4 LX 适配器用于存储流量实施的超融合群集中,当群集节点重新启动时,您可能会在 Windows 事件查看器(应用程序和服务日志 -> Microsoft -> Windows -> SMB 客户端 -> 连接)中看到 SMB 客户端错误(事件 ID 30803)。
虽然这在节点重新启动期间在故障转移群集中是正常的,但即使所有群集节点都完全正常工作,您偶尔也可能会看到这些错误定期重新出现在群集节点上。此行为是由于为重新启动的节点中的每个存储接口创建 SMB 侦听程序失败所致。这些错误显示在群集中幸存的节点上,而不是在重新启动的节点上。错误描述指示 SMB 客户端尝试连接到的服务器,描述中的服务器地址指示刚刚重新启动的节点。
在群集节点的正常运行状态下,节点重新启动后,运行 netstat –xan 应显示与节点上的每个存储接口关联的 IPv4 和 IPv6 侦听程序。在具有两个存储适配器的节点上收集netstat.exe的以下输出。
活动 NetworkDirect 连接、侦听器、SharedEndpoints
模式 IfIndex 类型 本地地址 外部地址 PID
内核 4 连接 10.128.100.101:445 10.128.100.100:61476 0
内核 4 连接 10.128.100.101:445 10.128.100.100:62244 0
内核 4 连接 10.128.100.101:445 10.128.100.100:61988 0
内核 4 连接 10.128.100.101:445 10.128.100.100:62756 0
内核 4 连接 10.128.100.101:12541 10.128.100.100:445 0
内核 4 连接 10.128.100.101:12797 10.128.100.100:445 0
内核 4 连接 10.128.100.101:14077 10.128.100.100:445 0
内核 4 连接 10.128.100.101:14333 10.128.100.100:445 0
内核 14 连接 10.128.100.133:445 10.128.100.132:27454 0
内核 14 连接 10.128.100.133:445 10.128.100.132:27198 0
内核 14 连接 10.128.100.133:237510.128.100.132:445 0
内核 14 连接 10.128.100.133:62535 10.128.100.132:445 0
内核 14 连接 10.128.100.133:62791 10.128.100.132:445 0
内核 14 连接 10.128.100.133:64071 10.128.100.132:445 0
内核 14 连接 10.128.100.133:64327 10.128.100.132:445 0
内核 4 侦听器 [fe80::4cae:cb05:4932:f226%4]:445 NA 0
Kernel 4 Listener 10.128.100.101:445 NA 0
Kernel 14 Listener 10.128.100.133:445 NA 0
内核 14 侦听器 [fe80::5180:55b6:c0f0:ae8d%14]:445 NA 0
输出列表 1 - 功能齐全的 SMB 堆栈
但是,当您开始在群集中看到 SMB 客户端错误时,重新启动的节点可能没有与系统中每个存储接口关联的所有侦听程序。
活动 NetworkDirect 连接、侦听器、SharedEndpoints
模式 IfIndex 类型 本地地址 外部地址 PID
内核 4 连接 10.128.100.101:445 10.128.100.100:61476 0
内核 4 连接 10.128.100.101:445 10.128.100.100:62244 0
内核 4 连接 10.128.100.101:445 10.128.100.100:61988 0
内核 4 连接 10.128.100.101:445 10.128.100.100:62756 0
内核 4 连接 10.128.100.101:12541 10.128.100.100:445 0
内核 4 连接 10.128.100.101:12797 10.128.100.100:445 0
内核 4 连接 10.128.100.101:14077 10.128.100.100:445 0
内核 4 连接 10.128.100.101:14333 10.128.100.100:445 0
内核 14 连接 10.128.100.133:2375 10.128.100.132:445 0
内核 14 连接 10.128.100.133:62535 10.128.100.132:445 0
内核 14 连接 10.128.100.133:62791 10.128.100.132:445 0
内核 14 连接 10.128.100.133:64071 10.128.100.132:445 0
内核 14 连接 10.128.100.133:64327 10.128.100.132:445 0
内核 4 侦听器 [fe80::4cae:cb05:4932:f226%4]:445 NA 0
Kernel 4 Listener 10.128.100.101:445 NA 0
输出列表 2 - SMB 堆栈缺少侦听器
因此,在上面的示例中,SMB 客户端尝试在接口索引 14 上进行连接最终将导致与 RDMA 相关的连接被拒绝消息和 SMB 客户端错误(事件 ID 30803)
Dell EMC Microsoft 就绪型节点网络体系结构建议每个群集节点两个存储适配器,出现此问题时不会中断群集功能。此外,缺少侦听器的适配器仍可用于发送 RDMA 流量。但是,由于其中一个存储适配器上没有侦听器,因此无法执行使用 RDMA 进行的写入。此适配器回退到使用 TCP 处理任何写入或接收流量。这可能会导致写入性能降低,具体取决于工作负载。发生此问题时,不会造成数据丢失或功能限制。
这已确定为 Mellanox CX4 LX WinOF2 驱动程序版本 1.70 及更低版本中的错误。
通过在重新启动后重新启动没有关联 SMB 侦听器的虚拟存储适配器,可以重新创建 SMB 侦听程序。您可以按照下面概述的步骤确定要重新启动的正确虚拟适配器。
从 netstat -xan 输出中,您可以看到其中一个存储适配器缺少侦听器。可以使用 Get-NetAdapter cmdlet 找到缺失适配器的接口索引。
PS C:\>Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
______________ __ ___________________ ____ ______vEthernet (Storage2) Hyper-V Virtual Ethernet Adapter #3 14 Up 00-15-5D-09-C4-0210 Gbps
vEthernet (Storage1) Hyper-V Virtual Ethernet Adapter #2 4 Up 00-15-5D-09-C4-0110 Gbps
vEthernet(管理)Hyper-V Virtual Ethernet Adapter 10 Up 00-15-5D-09-C4-0010 Gbps
以太网远程 NDIS 兼容设备 9 不存在 50-9A-4C-A7-F9-DF 0 bps
NIC2 英特尔(R) 以太网 10G X710 rNDC 6 断开连接 24-6E-96-52-CC-A410 Gbps
NIC4 英特尔® i350 千兆网络连接15 Disconnected 24-6E-96-52-CC-C3 0 bps
NIC3 英特尔® i350 千兆位网络连接器#2 8 断开连接 24-6E-96-52-CC-C2 0 bps
NIC1 英特尔(R) 以太网 10G 4P X710/I350 rNDC 13 断开连接 24-6E-96-52-CC-A210 Gbps
插槽 1 端口 2 Mellanox ConnectX-4 Lx 以太网适配器...#2 2 上 24-8A-07-59-4C-6910 Gbps
插槽 1 端口 1 Mellanox ConnectX-4 Lx 以太网适配器 11 高达 24-8A-07-59-4C-6810 Gbps
通过查看 netstat –xan 输出(如输出清单 2 所示),您可以看到索引为 14 的接口没有与之关联的侦听器。在 Get-NetAdapter cmdlet 中,您可以看到接口索引 14 是虚拟适配器 vEthernet (Storage2)。
您现在可以在缺少侦听器的情况下重新启动接口。
Restart-NetAdapter –Name 'vEthernet (Storage2)'
完成此过程后,您可以检查 netstat –xan 以确保已创建侦听器。This process may take a few minutes.创建侦听器后,群集节点将开始通过 RDMA 正常通信,新的 SMB 客户端错误将停止出现在事件查看器中。