现网的几套oracle rac环境下经常会有EMC存储扩盘动作,而EMC的powerpath软件本身也会存在软件版本升级的问题。每次操作时都会担心盘符变动和一套rac下的几个节点盘符名一致的问题。通过EMC的powerpath内的emcpadm 与powermt 命令可以快速的解决该问题。本篇就针对该问题的维护经验做一个小结。
一、powerpath盘符信息的导出、导入与检查
1、查看当前的路径聚合信息
先看输出结果:# powermt display dev=all|more
Pseudo name=emcpowera
Symmetrix ID=000498700082
Logical device ID=049F
state=alive; policy=SymmOpt; queued-IOs=0
==============================================================================
--------------- Host --------------- - Stor - -- I/O Path -- -- Stats ---
### HW Path I/O Paths Interf. Mode State Q-IOs Errors
==============================================================================
5 lpfc sdif FA 4gA active alive 0 0
5 lpfc sdfx FA 2gA active alive 0 0
4 lpfc sddp FA 3gA active alive 0 0
4 lpfc sdbh FA 1gA active alive 0 0
Pseudo name=emcpoweraa
Symmetrix ID=000498700082
Logical device ID=03DB
state=alive; policy=SymmOpt; queued-IOs=0
==============================================================================
--------------- Host --------------- - Stor - -- I/O Path -- -- Stats ---
### HW Path I/O Paths Interf. Mode State Q-IOs Errors
==============================================================================
5 lpfc sdhf FA 4gA active alive 0 0
5 lpfc sdex FA 2gA active alive 0 0
4 lpfc sdcp FA 3gA active alive 0 0
4 lpfc sdah FA 1gA active alive 0 0
………………省略
上面的pseudo name是几块盘聚合后的路径名称;Logical device ID值为对应存储上的唯一值,可以理解为同LUN ID一样;I/O paths为聚合前的盘名称,如上面的sdif、sdfx、sddp、sdbh聚合后的名字为emcpowera,对应的逻辑ID为049F ,状态都是正常的active alive。
2、导出当前的多路径信息
使用emcpadm命令可以将当前的路径配置信息导出:# emcpadm export_mappings -x -f map.xml
导出的xml信息类似如下:# more map.xml
5.7.1 (build 6)
irora11
emcpowerbf
0x307890
symmetrix
000498700082
symm_id
028B
emcpowerbe
0x307880
symmetrix
000498700082
symm_id
028C
…………省略
3、检查与导入
一般在升级powerpath软件时会出现,升级前后盘符名称不一致的问题,这里就可以利用之前的导出结果进行导入。# emcpadm export_mappings -x -f map.xml
# emcpadm check_mappings -x -f map.xml
# emcpadm import_mappings -x -f map.xml
检查结果如下图:
前后没有变化的会显示为nochage,有变化的会将当前的和变化后的名称列在同一列。该问题可以通过上面的import命令导入老的xml配置使配置和之前的一致。
除了下面的对比方法,也可以使用下面的方法对比:# powermt display dev=all|grep 'Pseudo\|Logical' |awk '{if(NR%2==0){printf $0 "\n"}else{printf "%s:",$0}}'
Pseudo name=emcpowera:Logical device ID=049F
Pseudo name=emcpoweraa:Logical device ID=03DB
Pseudo name=emcpowerab:Logical device ID=03D7
………………省略
通过该命令取出所有的聚合后的名称和逻辑ID号的对应关系,对比powerpath升级前后或扩容前后的变化。
二、盘符名更改
比如有一个三节点的rac,扩容后如果根据SCSI_ID使用的情况下,盘符名不同并不会影响使用,但为了维护方便,一般会要求盘符名、scsi_id、logical id、udev rule下的名称在三台主机上要保持一致。可以先以其中一台为参照,列出当前新增的磁盘信息与logical的对应信息,可以使用上面powemt与awk的组合导出的结果。也可以使用scsi_id获取的结果和/dev/disk/by-id的结果的组合。# /lib/udev/scsi_id --page=0x83 --whitelisted --device=/dev/emcpowerca
360000970000498700082533030383836
# ll /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323234 -> ../../sdfz
lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323842 -> ../../sdga
lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323843 -> ../../sdgb
lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323844 -> ../../sdgc
lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030333642 -> ../../sdgd
注:/dev/disk/by-id里显示的名称是聚合前的名称,不会显示聚合后的名称。且scsi_id在rac的另一个节点上看到的值也是一样。现网使用中快速比对的方法还是根据powermt的logical ID与聚合名对比,因为logcial id在三台主机上都是唯一的。
这里假设通过logical id 相同下,A、B 两台主机前后的聚合合的盘符情况如下:DB1 DB2
/dev/emcpowera /dev/emcpowerb
/dev/emcpowerb /dev/emcpowera
/dev/emcpowerc /dev/emcpowerc
想要修改一致的话,可以在B主机上执行如下命令:#emcpadm renamepseudo –s emcpowera –t emcpowerd
#emcpadm renamepseudo –s emcpowerb –t emcpowera
#emcpadm renamepseudo –s emcpowerd –t emcpowerb
实际对比时可以选通过取A、B两台主机的powermt与awk组合后的结果,按logcial id排序后,再将两个文件join的文法快速比对,也可以通过excel 的功能快速比对。