VMAX、PowerMax:重新启动运行 VxVm 8.0 或更高版本的主机后,某些 LUN 不可见
摘要: Veritas 8.0 及更高版本正在检查阵列中运行的微码级别,以确定其支持的功能。如果来自相同阵列的设备报告不同的微码级别,Veritas 认为这是异常,不会配置设备的路径。
症状
UNIX 主机连接到 VMAX 或 PowerMax,运行 VxVm 和 VxDMP 8.0 或更高版本来管理多路径。重新启动后,某些设备在主机级别配置,而不是在 Veritas 级别配置。
INQ 显示属于同一阵列的设备的不同微码级别:
# inq ... /dev/rhdisk909 :EMC :SYMMETRIX :5876 :940339c000 : 39.1 /dev/rhdisk3779 :EMC :SYMMETRIX :5978 :9401bab008 : 20.0
有问题的设备针对使用无中断迁移 (NDM) 迁移的阵列显示。在这种情况下,阵列的序列号 (94) 和 LUN ID(339c 或 1bab)是假冒身份。以下命令可显示设备的真实身份:
# inq -native ... /dev/rhdisk909 :EMC :SYMMETRIX :5978 :80005de000 : 39.1 /dev/rhdisk3779 :EMC :SYMMETRIX :5978 :80002bc000 : 20.0
针对设备报告的不同微码级别在 DEBUG 模式下通过 INQ 进行确认:
- Device hdisk909
<02/17/2024 01:11:37.455866> Leave: xsil_fill_in_inq_info, Return Value: 0 <02/17/2024 01:11:37.455875> device is spoofed <02/17/2024 01:11:37.455884> is_EMC_device=1 symm_model=0x0a00 ucode_level=0x5876 ucode_date=0x08190002 <02/17/2024 01:11:37.455893> symm_dev_num=0x0339c symm_serial#=<00019xxxxx94> <02/17/2024 01:11:37.455902> device_serial_number_ex : 940339c000 <02/17/2024 01:11:37.455911> device_serial_number : 94!|k000
- 设备 hdisk3779
<02/17/2024 01:11:37.469147> Leave: xsil_fill_in_inq_info, Return Value: 0 <02/17/2024 01:11:37.469158> device is spoofed <02/17/2024 01:11:37.469172> is_EMC_device=1 symm_model=0x0900 ucode_level=0x5978 ucode_date=0x07230008 <02/17/2024 01:11:37.469183> symm_dev_num=0x01bab symm_serial#=<00019xxxxx94> <02/17/2024 01:11:37.469194> device_serial_number_ex : 9401bab008 <02/17/2024 01:11:37.469204> device_serial_number : 94BAB008
根据 Veritas 文章升级到 Infoscale 8.0 后,EMC VMAX 存储模块中缺少大多数设备,Veritas 8.0 不支持来自相同阵列的设备(此处为 xx94)报告两个不同的微码(上面示例中的 5876 和 5978)。
原因
最初迁移设备时,源阵列中设备的身份与微码级别一起复制到目标阵列上。迁移后,我们有:
# inq ... /dev/rhdisk909 :EMC :SYMMETRIX :5876 :940339c000 : 39.1 /dev/rhdisk3779 :EMC :SYMMETRIX :5876 :9401bab008 : 20.0
在迁移一段时间后,不再需要 hdisk3779 上的空间,并将该设备从存储组中移除并回收(删除)。在上面的示例中,LUN 1bab 实际上表示阵列 xx80 上的 LUN 2BC,正如我们在“inq native”命令输出中看到的那样。
为主机分配了新空间,同样来自阵列 xx80。由于 LUN ID 2BC 已删除,因此重新使用了此 LUN 号码。但是,在这种情况下,会恢复欺骗身份,以便新设备显示为旧阵列 (9401b1b008) 中的设备,而不是新阵列 (80002bc00) 中的设备。模拟设备的微码级别不会保留,因此它现在报告目标阵列的微码(在本例中为 5978)。也不会保留阵列类型(请参阅上一部分中 DEBUG 模式下的 INQ,对于 hdisk909 0x0a00 symm_model ,对于 hdisk3779 0x0900)。
Veritas 8.0 及更高版本查看与设备关联的微码级别,以确定阵列上运行的微码。它还在研究 Symmetrix 型号。然后,Veritas 能够确定阵列可以支持哪些功能。在本例中,对于阵列 xxx94,Veritas 无法确定微码是 5876 还是 5978。它也无法确定 Symmetrix 级别。因此,显示微码 5978 的所有设备未由 Veritas 配置。
解决方案
如果未执行此作,则重新获得对所有设备的访问权限的唯一解决方案是删除针对 NDM 的源阵列显示的所有设备的假冒身份。