由于 SDS 服务在 CloudLink 代理程序解锁驱动器之前启动,因此在重新启动后出现 CloudLink 加密的 PowerFlex SDS 设备错误
Summary: 当 PowerFlex SDS 设备通过 CloudLink 加密时,映射器名称可能会在重新启动后更改。这会导致 SDS 设备重新排序,并在 PowerFlex UI 中显示为失败。
Symptoms
受影响的产品:具体组合包括:
- PowerFlex 3.6
- Cloud link 7.1
- RHEL 8.x
- 通过 CloudLink 加密的 SDS 设备
重新启动后,由于设备映射器重新排序,CloudLink 加密的 SDS 设备可能会在 PowerFlex UI 中显示为失败。
引导设备逻辑映射可以在第一个和最后一个设备字母之间交换。
如果 SDS 服务在 CloudLink 解锁驱动器之前启动,则在重新启动后也会发生 SDS 错误。这将在 CloudLink 版本 7.0.2 中修复。
Cause
- 加密的 CloudLink 映射器使用驱动器号作为标识符。(例如, /dev/mapper/svm_sdb)
- 当驱动器号更改时,映射器名称将更改
- 在重新启动期间,驱动器盘符可能会发生变化,具体取决于是首先检测到启动驱动器还是 SDS 驱动器。
- 如果 SDS 服务在 CloudLink 代理解锁驱动器之前启动,也会发生这种情况。
Resolution
驱动器号更改的解决方法:
-
选项 1:
- 停止 PowerFlex 节点 (/opt/emc/scaleio/sds/bin/delete_service.sh) 上的 SDS 服务。
- 清除所有 SDS 警报。这应该会触发 PowerFlex 重新扫描系统中的新设备名称并开始使用它们。(可在 演示服务器 > 设备中找到。)
- 在 (/opt/emc/scaleio/sds/bin/create_service.sh) 后重新启动 SDS 服务。
-
选项 2:从 PowerFlex 中删除 SDS 驱动器,然后重新添加它们。(可在 演示服务器 > 设备中找到)
-
选项 3:重新启动 PowerFlex 节点,磁盘顺序可能会更改回原始映射。
如果后续重新启动使用新的驱动器号格式,则在重新启动时继续发生 SDS 错误。要更改 PowerFlex 驱动器盘符,以便不会发生 SDS 错误,请运行以下 scli 命令:
查找出现错误的 SDS 节点的sds_id:
Scli --query_all_sds
使用新驱动器盘符进行更新:
Scli --update_sds_original_paths -sds_id <id>
延迟 PowerFlex 启动,直至 CloudLink 解锁驱动器:
CloudLink 升级到 7.0x、7.1、7.1.1 和 7.1.2 时,将在 SDS 节点上的 /opt/emc/extra/pre_run.sh中删除 60 秒睡眠计时器。这将在重新启动后导致 SDS 错误,因为 PowerFlex 在 CloudLink 解锁驱动器之前就开始使用它们。为防止重新启动时出现 SDS 错误,请在 CloudLink 代理程序升级后,在 SDS 节点上的 /opt/emc/extra/pre_run.sh 中重新添加 60 秒延迟。这会延迟 SDS 服务的启动,直到 CloudLink 解锁加密驱动器。
显示添加到 pre_run.sh 的 60 秒延迟的示例:
#!/bin/bash -f if [ -f /sbin/svm ]; then echo svm is installed $(date) >> /var/log/svm-sds /sbin/svmd -l /var/log/svmd.log -p /var/run/svmd.pid & end=$((SECONDS+300)) while [ $SECONDS -lt $end ]; do /sbin/svm unlocked > /dev/null && break sleep 5 done fi sleep 60 echo pre_run returned...$(date) >> /var/log/svm-sds
永久修复:
- 新部署 — 安装 CloudLink 7.1.2 和 PowerFlex 3.6.0.2
- 现有系统:升级到 CloudLink 7.1.2 和 PowerFlex 3.6.0.2
CloudLink 7.1.2 和 PowerFlex 3.6.0.2 将使用 /dev/disk/by-id/...因此使用 /dev/mapper/svm_wwn-XXXX 名称与逻辑 /dev/svm_sdXXX。