3PAR系列控制器集群设置调整方法

Adjusting cluster settings for 3PAR series controllers(3par系列控制器调整集群设置)

当 HPE 3PAR(F 类 / T 类 / StoreServ 7000 与 8000 系列)存储阵列中的某一个节点无法重新加入集群时,绝大多数情况并不是硬件损坏,而是该节点的节点参数(node parameters)丢失,或者被写入了另一台控制器的值。这种问题最常出现在控制器更换、用不同批次的备件重建节点、把从另一台阵列拆下来的主板直接装机的场景里。此时节点面板的 LED 会表现为常亮绿灯,其含义是 awaiting to join cluster(等待加入集群),但无论等待多久节点都不会真正上线。本文说明如何进入 WHACK(引导装载程序 / boot-loader)提示符,使用 promedit 把节点参数改回正确值,并让节点重启后重新回到集群中。

背景:3PAR 节点为什么会「认不出」自己的集群

3PAR 阵列的每个控制器节点都会在主板 PROM 中保存一组身份参数,用来回答三个问题:我是第几个节点我插在什么样的中板上我属于哪一套阵列。集群在接纳一个新节点之前,会把这三个答案与阵列侧的期望值做比对;只要其中有任何一项不匹配,节点就会被拒绝加入,并停在常亮绿灯的状态。

因此,当一块来自其他阵列、或者被清空过 PROM 的控制器主板被装进故障槽位时,它虽然在物理上已经「到场」,逻辑身份却仍然指向旧的集群。阵列不会主动「好心」帮它改写成新的身份,因为从集群的角度看,参数不匹配同样可能是误接入其他阵列的证据。结果是节点一直等待,而集群一直不接纳。

需要特别强调的是:这类故障几乎总是配置问题,而不是硬件问题。在动手更换控制器之前,先按本文的流程核对参数,往往可以在几分钟内解决问题,避免无谓的备件消耗和停机时间。

故障现象与 LED 指示灯的含义

  • 常亮绿灯(green solid):节点已经启动、供电与控制平面正常,但处于 awaiting to join cluster 状态——它在等集群接纳它。
  • 节点能引导但永远不被采用:阵列可能完全启动完成,其他节点工作正常,只有这一个节点始终缺席;因为它在 PROM 中保存的节点参数与集群期望的身份不一致。
  • 串口登录后看不到集群 CLI:节点自身可以引导,但因为没有加入集群,无法提供正常的 cli% 提示符。

重要提示:请尽量使用原故障节点上的原装 IDE / 磁盘——但前提是这次节点故障不是由 IDE 或磁盘本身引起的。复用来自同一槽位的已知良好介质,可以同时保留数据与节点身份,让节点更容易被集群接纳。如果怀疑介质本身就是故障源,则应该先更换介质,再处理节点参数。

前置条件与准备工作

  • 串口访问:必须能够通过串口连接到待修节点的控制台。整个流程无法通过网管界面或 SSH 完成,因为节点尚未加入集群。
  • 串口参数:准备好厂商要求的速率与流控设置,并确认终端软件不会对 Ctrl + W 之类的组合键做本地解释(部分终端会把 Ctrl + W 当作「删除上一个单词」,务必在终端设置中确认组合键能被原样透传)。
  • 正确的型号参考值:准备好该阵列实际型号(例如 7400、7400C、8400、8450)对应的 Node TypeMidplane Type 参考值。不同型号的取值不同,改错只会让节点离正确身份更远。
  • 阵列序列号:拿到目标阵列的 7 位序列号。注意要使用「节点应该加入的那套阵列」的序列号,而不是替换机箱的序列号。
  • 停机窗口:流程包含节点重启,请在维护窗口内进行,并确认集群的另一个节点处于健康状态,能够承载业务。

如果不确定阵列当前的节点与组件健康情况,可以先在健康节点的 CLI 上收集现状,再决定是否需要停机检修。

进入 WHACK 提示符

首先需要判断,节点起不来是否确实由节点参数设置引起。判断方法是:通过串口连上节点,给它断电重启(power-cycle),并在启动过程中按下 Ctrl + W 进入 WHACK 提示符。一旦成功进入 WHACK,就可以读取和修改 PROM / 节点参数了。

SMI Whack> prom edit

调整过程需要重启后按组合键 Ctrl + W 进入,以下均以 7400 为例。Ctrl + W 的窗口期比较短,通常要自检刚开始时就连续敲击;如果第一次没有进去,反复断电重启重试即可,不会对数据造成影响。

读取节点参数(7400 示例)

执行 prom edit 会显示当前主板与节点的身份信息。下面是一台健康 7400 节点的示例输出:

Board Spin:       03
Size * 256 bytes: 04
Board Class:      920
Board Base:       200040
Board Rev:        91
Assembly Vendor:  FXN
Assembly Year:    2012
Assembly Week:    30
Assembly Day:     03
Assembly Serial:  00103530
Alternate Class:  ffff
Alternate Base:   ffff
Alternate Dash:   ff
System Serial:    <7 digit serial>
Node ID:          01
Midplane Type:    1b
Node Type:        40

输出可以分为两部分理解:上半部分(Board Spin、Board Class、Board Base、Board Rev、Assembly 系列字段)描述的是主板自身的制造信息,属于物理属性,正常情况不需要改动;下半部分(System Serial、Node ID、Midplane Type、Node Type)描述的是节点在集群中的身份,正是解决「无法加入集群」时需要核对的字段。

需要重点核对的三个参数

  • Node ID —— 节点编号。设置为该槽位正确的节点号:节点 1 = 01,节点 0 = 00,以此类推。节点号重复或与槽位不符,是节点被拒绝加入最常见的原因。
  • Midplane Type —— 中板类型。对 7400 而言正确值是 1b。它描述节点插在哪种中板上,取值错误会让集群认为节点接在了异类硬件上。
  • Node Type —— 节点类型。对 7400 而言正确值是 40。它描述节点的型号类别,必须与阵列中其他节点一致。

请务必注意:7400 的参数与 7400C(以及其他型号)并不相同。在修改任何字段之前,先对照正确的型号参考值,否则只会把节点推得离集群更远。如果阵列是混合型号或者曾经做过型号升级,请以阵列侧当前的期望值为准。

设置系统序列号

接下来,在 WHACK 提示符下设置 3PAR 系统的 7 位序列号,让节点把自己标识为「属于正确的阵列」:

SMI Whack> set perm sys_serial=<7 digit 3PAR serial>

你在 prom edit 中看到的 System Serial 字段,就是这条命令写入的值。请使用节点将要加入的那套阵列的序列号,而不是替换机箱的序列号;序列号不一致会让节点长期停留在「等待加入」的中间状态,既不被接纳,也不明确报错。

复位节点,让它重新加入集群

当每一个参数——节点编号、中板类型、节点类型、系统序列号——都核对正确之后,在 WHACK 提示符下发 reset 命令。节点会重启,并应自动重新加入集群:

SMI Whack> reset

按需求设置好合适的 Node ID,集群即可进入该节点。重启过程通常需要数分钟,请耐心等待节点完成自检与集群同步,不要在此期间再次断电。

验证:确认节点真的回到了集群

重启之后,从阵列侧确认两个节点都存在且健康:

cli% shownode
cli% checkhealth

shownode 应把两个节点都列为 OKcheckhealth 会报告剩余的任何组件级告警。建议再顺手确认版本一致性,避免节点虽然上线但运行的是不匹配的固件:

cli% showversion -b
cli% shownode -d

只有当 shownode 中所有节点的状态都是 OK、且 checkhealth 没有与本次操作相关的告警时,才可以认为维修完成。

排障清单

  • reset 之后节点仍然常亮绿灯:首先复查 Node ID。编号重复或错误会直接阻止节点被采纳,这是最高频的原因。
  • 型号取值写错:核对 Midplane Type 与 Node Type 是否与实际阵列型号匹配(7400 / 7400C / 8000 各不相同),必要时查阅该型号的参数参考。
  • 序列号不匹配:sys_serial 必须与节点要加入的阵列一致;残留的旧序列号会让节点一直悬而未决。
  • Ctrl + W 无响应:要在上电自检刚开始时立刻按下;部分控制器型号的时间窗口很紧。同时确认终端软件没有截获该组合键。
  • 参数看起来都对但仍不加入:检查是否复用了原节点的 IDE / 磁盘;如果介质来自其他槽位或曾经属于别的阵列,节点身份可能仍然携带旧值。另外确认另一个节点在线、集群本身健康。
  • 修改后不确定是否生效:重新执行一次 prom edit,逐字段确认写回的值,再决定是否下发 reset

常见问题(FAQ)

问:这个操作会不会影响数据?整个过程只修改节点的身份参数,不触碰用户数据。风险主要来自停机窗口的规划,而不是参数本身。

问:可以在节点仍在集群中时修改这些参数吗?不可以。修改必须在 WHACK 提示符下进行,也就是节点未运行集群软件时。prom edit 只能从引导装载程序进入。

问:为什么一定要从串口操作?因为节点在「等待加入集群」状态下不提供可用的网络管理接口,串口控制台是唯一入口。

问:怎样避免同类问题再次发生?更换控制器时尽量沿用原节点的介质,替换主板前记录好原节点的 Node ID、Midplane Type、Node Type 与系统序列号,装机后逐项比对。

问:两个节点都要改吗?只改身份不正确的那一个。另一个健康节点不要动,改错反而会引入新的不一致。

相关阅读

想了解 3PAR 故障切换的完整机制,请阅读 HPE 3PAR Primera Peer Persistence:故障切换详解。日常的节点与磁盘维护可参考 HPE 3PAR 磁盘更换:showpd 与 servicemag 工作流。控制器故障的隔离与更换流程见 HPE 3PAR 控制器故障处理:隔离、离线与更换。查看集群状态与告警所用的命令,可参考 HPE 3PAR 管理:按类别整理的常用 CLI 命令HPE 3PAR CLI 速查表,以及 HPE 3PAR 错误代码与 checkhealth 排障。如果阵列尚未完成初始化,请先看 手动初始化设置 3PAR 存储系统