PowerFlex 3.X:添加导致 MDM 崩溃和故障切换的 SDC 命令
Summary:
执行 add SDC 命令 (scli --add_sdc /),发生 MDM 故障切换
Symptoms
1. MDM 在“受限模式”
下运行 2. 用户尝试添加 IP 不在已批准的 SDC IP 中的 SDC — 这会强制 MDM 创建新的 SDC 对象
3. 使用的 SDC 名称是在 4. 主 MDM 和辅助 MDM 接管
上发生 MDM 崩溃之前
已存在的 SDC 名称 1. 用户使用 IP 而不是 GUID 执行添加 SDC 命令, 并接收 stdout 形式的通信错误,例如:
# scli --add_sdc --sdc_ip 123.234.234.201 --sdc_name SDC40
Error: MDM failed command. Status: Communication error
2. 检查 MDM exp.0 文件,可能会观察到下面的崩溃
21/12 02:43:26.897784 Panic in file /data/builds/workspace/ScaleIO-Common-Job@2/src/mdm/control/obj_container.c, line 2291, function objContainer_GetObjId, PID 30902.Panic Expression (((void *)0) != (pObjHeader)) && ((pObjHeader)->magic == 0x68cab8db) .
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(mosDbg_PanicPrepare+0x13a) [0x9a51ca]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(objContainer_GetObjId+0xe8) [0x981768]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(iniMgr_ApproveInitiator+0x359) [0x8c7fe9]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175() [0x562a08]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(netRecvGroup_WaitForWork+0x3dc) [0x7b2cfc]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(netRecvGroup_WaitForWorkLoop+0x18) [0x7b3008]
/opt/emc/scaleio/mdm/bin/mdm-3.5.1000.175(mosUmt_StartFunc+0x7a) [0x7fb5da]
/lib64/libc.so.6(+0x48140) [0x7ff1b5a8d140]
[(nil)]
冲击:
1. 添加 SDC 命令将失败 - 不会将 SDC 添加到系统
2. MDM 故障切换
Cause
在 PowerFlex v3.0 之前,MDM 组件存储所有 SDC 的 IP,即使对于断开连接的 SDC 也是如此。从版本 3.0 及更高版本开始,MDM 组件仅跟踪已连接或已批准的 SDC IP。
作为“add SDC”命令的一部分,用户必须使用其他参数,例如:“SDC IPs”或“SDC GUID”,可选参数为“SDC name”。
发出“add SDC”命令后,MDM 将尝试查找具有这些参数的现有 SDC,在我们的场景中,用户提供了不熟悉的“SDC IP”,因此,由于版本 3.0 中引入的更改,
MDM 不熟悉新提供的“SDC IP”,因此 MDM 创建了新的 SDC 对象。
此外,执行命令时使用的“SDC name”参数是现有的 SDC 名称,因此它会立即删除刚刚创建的 SDC 对象,因为 MDM 检测到此名称已在使用中。
一旦 MDM 尝试访问已删除的 SDC 对象,它就会进行断言并进行故障切换。
Resolution
要克服这种情况并成功添加以前连接的 SDC,请使用“SDC GUID”参数而不是“SDC IP”。
例如:
scli --add_sdc --sdc_guid FA4BFBF6-546A-11E8-B40D-0050568D283E
受影响的版本
所有高于 3.0 的版本