PowerScale:节点拆分,因为 lldpd 不再将心跳发送到后端戴尔交换机
Summary: 本文介绍进程消耗其允许的最大内存并且不再向后端交换机发送链路层发现协议 (LLDP) 数据包_lldpd的问题。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
警告:
-
不建议执行到受影响版本(9.5.0.0 至 9.5.0.5)的 OneFS 升级
-
在受影响的版本上执行 OneFS 升级之前,RPS 或客户必须重新启动所有 lldpd 进程(例如,从 9.5.0.1 升级到 9.5.0.7)。请按照解决方案中的选项 2 进行作。
lldpd 中存在内存泄漏,如果进程已占用其允许的最大内存 (1 GB),则节点可以拆分。一旦节点消耗了其允许的内存,它就不会再向后端交换机发送 LLDP 数据包。运行 SmartFabric Services (SFS) 的 PowerScale 戴尔认证后端交换机必须接收来自节点的心跳 (LLDP) 数据包。如果错过了三个心跳信号,交换机端口将从其专用虚拟网络中删除。然后,节点就无法再通过该路径与群集通信。
如果要升级群集,则节点将连续重新启动,每次重新启动都需要断开和备份若干个链路。重新启动中的每个链路事件都会缓慢增加 lldpd vmem 使用的大小。如果最近未重新启动进程,则在升级期间节点很可能会拆分。
在以下情况下,可能会出现此问题:
- OneFS 升级
- 正常群集作
可以使用以下命令查看当前 vmem 使用情况,其中最大驻留集大小 (RSS) 值为 1,048,576 KB。RSS 是来自 PS 的第六列信息(“-”的左侧)输出(不包括节点名称)。
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
提醒:“isi_for_array”在离线节点上不起作用。需要直接连接到离线节点以收集上述信息。
输出示例如下:
cl950x-1# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep' cl950x-1: _lldpd 1483 0.0 3.2 273804 262168 - S 6Aug23 74:25.14 lldpd: no neighbor. (lldpd) cl950x-1: _lldpd 1492 0.0 3.2 273804 262168 - S 6Aug23 74:31.73 lldpd: no neighbor. (lldpd) cl950x-2: _lldpd 1483 0.0 2.9 251068 238632 - S 14Aug23 66:19.68 lldpd: no neighbor. (lldpd) cl950x-2: _lldpd 1492 0.0 2.9 251068 238632 - S 14Aug23 66:24.72 lldpd: no neighbor. (lldpd) cl950x-3: _lldpd 1483 0.0 2.9 251832 239420 - S 14Aug23 46:25.36 lldpd: no neighbor. (lldpd) cl950x-3: _lldpd 1492 0.0 2.9 251832 239420 - S 14Aug23 46:32.24 lldpd: no neighbor. (lldpd) cl950x-4: _lldpd 1487 0.0 3.1 268052 256212 - S 8Aug23 50:25.15 lldpd: no neighbor. (lldpd) cl950x-4: _lldpd 1496 0.0 3.1 268052 256212 - S 8Aug23 50:36.34 lldpd: no neighbor. (lldpd) cl950x-5: _lldpd 1483 0.0 3.1 273208 261552 - S 6Aug23 75:41.91 lldpd: no neighbor. (lldpd) cl950x-5: _lldpd 1492 0.0 3.1 273208 261552 - S 6Aug23 75:35.00 lldpd: no neighbor. (lldpd) cl950x-6: _lldpd 1482 0.0 3.2 274144 262516 - S 6Aug23 50:49.08 lldpd: no neighbor. (lldpd) cl950x-6: _lldpd 1492 0.0 3.2 274144 262516 - S 6Aug23 51:02.88 lldpd: no neighbor. (lldpd) cl950x-7: _lldpd 1483 0.0 3.2 274004 262380 - S 6Aug23 50:51.55 lldpd: no neighbor. (lldpd) cl950x-7: _lldpd 1492 0.0 3.2 274004 262380 - S 6Aug23 51:03.26 lldpd: no neighbor. (lldpd) cl950x-8: _lldpd 1483 0.0 2.9 251176 238744 - S 14Aug23 46:40.93 lldpd: no neighbor. (lldpd) cl950x-8: _lldpd 1492 0.0 2.9 251176 238744 - S 14Aug23 46:49.57 lldpd: no neighbor. (lldpd) ^^^^^^
lldpd 进程消耗内存的速度因多种因素而异。这也是 OneFS 升级期间内存使用量增幅高于正常水平的原因:
- 群集上的网络配置大小
- 从网络配置创建的子网数量
- 网络事件的数量,例如链路断开或启动
- 重复重新启动事件
进程达到允许的最大内存所需的时间_lldpd因群集而异。但是,我们发现网络配置大小与故障时间之间存在相关性。这意味着配置的 groupnet、子网和池越多,它发生得越快。
Cause
在 9.5 中,lldpd 已更新并包含内存泄漏。
Resolution
警告
|
有多个选项可用于解决或解决该问题,具体取决于您当前的情况:
- 将 OneFS 升级到 9.5.0.6 及更高版本
- 请注意文章中有关在从受影响的版本升级之前重新启动 lldpd 的警告消息。
- 临时解决方法会立即完成,重新启动 lldpd 进程。这需要通过在整个群集中重新启动进程进行手动干预:
-
# killall lldpd
-
- 通过立即重新启动超过 500 MB 的 lldpd 进程来解决问题后的临时解决方法:
-
# isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''
-
- 问题解决后的临时解决方法(以下命令与上一个命令相同),可以在屏幕会话中运行此作,以每 1200 秒执行一次检查。
-
# while true; do isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''; sleep 1200; done
-
Article Properties
Article Number: 000219439
Article Type: Solution
Last Modified: 19 May 2025
Version: 7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.