现网的几套oracle rac环境下经常会有EMC存储扩盘动作,而EMC的powerpath软件本身也会存在软件版本升级的问题。每次操作时都会担心盘符变动和一套rac下的几个节点盘符名一致的问题。通过EMC的powerpath内的emcpadm 与powermt 命令可以快速的解决该问题。本篇就针对该问题的维护经验做一个小结。

一、powerpath盘符信息的导出、导入与检查

1、查看当前的路径聚合信息

先看输出结果:

 1# powermt display dev=all|more
 2Pseudo name=emcpowera
 3Symmetrix ID=000498700082
 4Logical device ID=049F
 5state=alive; policy=SymmOpt; queued-IOs=0
 6==============================================================================
 7--------------- Host ---------------   - Stor -  -- I/O Path --   -- Stats ---
 8###  HW Path               I/O Paths    Interf.  Mode     State   Q-IOs Errors
 9==============================================================================
10   5 lpfc                   sdif        FA  4gA  active   alive      0      0
11   5 lpfc                   sdfx        FA  2gA  active   alive      0      0
12   4 lpfc                   sddp        FA  3gA  active   alive      0      0
13   4 lpfc                   sdbh        FA  1gA  active   alive      0      0
14Pseudo name=emcpoweraa
15Symmetrix ID=000498700082
16Logical device ID=03DB
17state=alive; policy=SymmOpt; queued-IOs=0
18==============================================================================
19--------------- Host ---------------   - Stor -  -- I/O Path --   -- Stats ---
20###  HW Path               I/O Paths    Interf.  Mode     State   Q-IOs Errors
21==============================================================================
22   5 lpfc                   sdhf        FA  4gA  active   alive      0      0
23   5 lpfc                   sdex        FA  2gA  active   alive      0      0
24   4 lpfc                   sdcp        FA  3gA  active   alive      0      0
25   4 lpfc                   sdah        FA  1gA  active   alive      0      0
26………………省略

上面的pseudo name是几块盘聚合后的路径名称;Logical device ID值为对应存储上的唯一值,可以理解为同LUN ID一样;I/O paths为聚合前的盘名称,如上面的sdif、sdfx、sddp、sdbh聚合后的名字为emcpowera,对应的逻辑ID为049F ,状态都是正常的active alive。

2、导出当前的多路径信息

使用emcpadm命令可以将当前的路径配置信息导出:

1# emcpadm export_mappings -x -f map.xml

导出的xml信息类似如下:

 1# more map.xml
 2<?xml version="1.0" encoding="ISO-8859-1"?>
 3<powerpath_dev_mappings>
 4  <powerpath_version>5.7.1 (build 6)</powerpath_version>
 5  <src_hostname>irora11</src_hostname>
 6  <lun>
 7    <pseudo_dev>emcpowerbf</pseudo_dev>
 8    <udev>0x307890</udev>
 9    <product_id>symmetrix</product_id>
10    <frame_id>000498700082</frame_id>
11    <logical_devid_type>symm_id</logical_devid_type>
12    <logical_devid>028B</logical_devid>
13  </lun>
14  <lun>
15    <pseudo_dev>emcpowerbe</pseudo_dev>
16    <udev>0x307880</udev>
17    <product_id>symmetrix</product_id>
18    <frame_id>000498700082</frame_id>
19    <logical_devid_type>symm_id</logical_devid_type>
20    <logical_devid>028C</logical_devid>
21  </lun>
22…………省略

3、检查与导入

一般在升级powerpath软件时会出现,升级前后盘符名称不一致的问题,这里就可以利用之前的导出结果进行导入。

1# emcpadm export_mappings -x -f map.xml
2# emcpadm check_mappings -x -f map.xml
3# emcpadm import_mappings -x -f map.xml

检查结果如下图:

emc check

前后没有变化的会显示为nochage,有变化的会将当前的和变化后的名称列在同一列。该问题可以通过上面的import命令导入老的xml配置使配置和之前的一致。

除了下面的对比方法,也可以使用下面的方法对比:

1# powermt display dev=all|grep 'Pseudo\|Logical' |awk '{if(NR%2==0){printf $0 "\n"}else{printf "%s:",$0}}'
2Pseudo name=emcpowera:Logical device ID=049F
3Pseudo name=emcpoweraa:Logical device ID=03DB
4Pseudo name=emcpowerab:Logical device ID=03D7
5………………省略

通过该命令取出所有的聚合后的名称和逻辑ID号的对应关系,对比powerpath升级前后或扩容前后的变化。

二、盘符名更改

比如有一个三节点的rac,扩容后如果根据SCSI_ID使用的情况下,盘符名不同并不会影响使用,但为了维护方便,一般会要求盘符名、scsi_id、logical id、udev rule下的名称在三台主机上要保持一致。可以先以其中一台为参照,列出当前新增的磁盘信息与logical的对应信息,可以使用上面powemt与awk的组合导出的结果。也可以使用scsi_id获取的结果和/dev/disk/by-id的结果的组合。

1# /lib/udev/scsi_id --page=0x83 --whitelisted --device=/dev/emcpowerca
2360000970000498700082533030383836
3# ll /dev/disk/by-id/
4total 0
5lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323234 -> ../../sdfz
6lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323842 -> ../../sdga
7lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323843 -> ../../sdgb
8lrwxrwxrwx 1 root root 10 Aug 14 00:08 scsi-360000970000498700082533030323844 -> ../../sdgc
9lrwxrwxrwx 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 两台主机前后的聚合合的盘符情况如下:

1DB1                              DB2
2/dev/emcpowera                  /dev/emcpowerb
3/dev/emcpowerb                  /dev/emcpowera
4/dev/emcpowerc                  /dev/emcpowerc

想要修改一致的话,可以在B主机上执行如下命令:

1# emcpadm renamepseudo –s emcpowera –t emcpowerd
2# emcpadm renamepseudo –s emcpowerb –t emcpowera
3# emcpadm renamepseudo –s emcpowerd –t emcpowerb

实际对比时可以选通过取A、B两台主机的powermt与awk组合后的结果,按logcial id排序后,再将两个文件join的文法快速比对,也可以通过excel 的功能快速比对。