供稿人:秦宝军
1 MPIO介绍
2002年10月,AIX 5.2 引入了MPIO (Multi-Path I/O) 多路径管理的功能。MPIO驱动程序缺省内嵌于AIX系统。对支持MPIO的存储设备,MPIO自动发现、配置和管理多个存储路径,实现IO的高可靠性和负载均衡。MPIO方案的实现有三个部分组成,分别为存储系统部分、存储软件部分和操作系统部分。一般而言,存储设备厂商都为AIX平台提供复杂的专用的多路径管理方案,管理IO请求,并相应的优化存储系统。这些复杂的多路径方案,只是用于特定的存储设备,而不能适用于其它的存储系统,例如,IBM的SDD,EMC的Powerpath,日立的Hitachi Dynamic Link Manager。MPIO在系统层面对存储提供支持,从而解决这一问题。
2 配置基于VIO服务器客户端AIX的MPIO
此次方案实施采用的服务器和存储设备如下图所示:

2.1.配置VIO服务器端
方案开始实施之前,假定共享的DS8300的LUN已经分配给了要使用的两个VIO服务器。
2.2 创建VIO服务器端和客户端SCSI适配器
基于HMC,在两个VIO服务器端创建虚拟SCSI适配器。建立客户端分区,创建虚拟客户端SCSI适配器,并分别映射到不同VIO服务器的SCSI适配卡。具体实施细节请参考《Advanced POWER Virtualization on IBM System p5》
假定,方案实施中VIO服务器的命名分别为vio_a和vio_b,共享DS8300的LUN。DS8300的LUN已经映射到服务器vio_a和vio_b。
逻辑拓扑图如下所示:

首先在服务器vio_a端确定要使用的PV,如下:
$ lsdev -type disk
name status description
..
hdisk3 Available MPIO Other FC SCSI Disk Drive
hdisk4 Available MPIO Other FC SCSI Disk Drive
hdisk5 Available MPIO Other FC SCSI Disk Drive
…
$lspv
..
hdisk3 00c3e35c99c0a332 None
hdisk4 00c3e35c99c0a51c None
hdisk5 00c3e35ca560f919 None
..
在以上列出的PV中,将hdisk5
映射到虚拟AIX客户端分区,生成MPIO物理盘。通过以下命令确定PV hdisk5的属性,确保客户端能正确识别PV,正确配置MPIO。
$lsdev -dev
hdisk5 -attr
..
algorithm fail_over Algorithm True
..
lun_id 0x5463000000000000 Logical Unit Number ID False
..
..
pvid
00c3e35ca560f9190000000000000000 Physical volume identifier False
..
reserve_policy single_path Reserve Policy True
注意,
物理卷hdisk5的属性 lun_id, pvid和reserve_policy。
在VIO服务器vio_b端确定对应hdisk5的LUN,可以根据pvid查找。与vio_a对应DS8300的同一个LUN在vio_b系统的逻辑标示可能与vio_a标示不同,但pvid是一致的。过程如下:
$lspv
hdisk7 00c3e35ca560f919 None
..
物理卷hdisk7的pvid与vio_a的hdisk5一致,为同一个LUN。
查看hdisk7的类型:
$ lsdev -type disk
name status description
..
hdisk7 Available MPIO Other FC SCSI Disk Drive
..
确定hdisk7的属性:
$lsdev -dev hdisk7 -attr
..
algorithm fail_over Algorithm True
..
lun_id 0x5463000000000000 Logical Unit Number ID False
..
pvid 00c3e35ca560f9190000000000000000 Physical volume identifier False
..
reserve_policy single_path
Reserve Policy True
可以注意到hdisk7的属性与hdisk5的属性一致。
2.3 修改物理卷的属性 reservation policy
为能在虚拟AIX客户端分区正确的将hdisk5和hdisk7识别为MPIO的卷,需要修改PV的reserve policy属性为no_reserve。使用命令chdev修改,使用如下:
修改vio_a的hdisk5的reserve policy属性:
$ chdev -dev hdisk5 -attr reserve_policy=no_reserve
hdisk4 changed
同样在vio_b VIO服务器端修改hdisk7的属性如下:
$ chdev -dev hdisk7 -attr reserve_policy=no_reserve
hdisk6 changed
1) 在VIO服务器端创建虚拟目标设备
在上一步骤中,已经确定要使用的PV。再次在VIO服务器vio_a和vio_b端确定使用的虚拟SCSI适配器,使用命令mkvdev建立PV到虚拟SCSI适配器的映射关系。命令格式如下:
mkvdev -vdev hdisk# -vadapter vhost# -dev vhdisk#
分别在两个VIO服务器端运行以上命令后,将在不同VIO服务器的同一个LUN映射到同一个虚拟客户端。
注意:
如果PV的reserve_policy的属性没有设置为no_reserve,在第二个VIO服务器运行以上命令可能会失败。
2) 确认VIO服务器和虚拟客户端间的映射关系
借助于HMC,验证客户端的虚拟SCSI适配卡槽位,与服务器端虚拟SCSI适配
卡的槽位关系,再一次确认虚拟客户端与VIO服务器间的映射。在此例中:
- 客户端分区的槽位4对应VIO服务器vio_a的槽位5
- 客户端分区的槽位5对应VIO服务器vio_b的槽位5
如下图所示:


3. 配置安装虚拟AIX客户端
现在,可以安装AIX客户端,详细的安装方式请参考以下信息:
http://www.redbooks.ibm.com/redpieces/abstracts/sg247940.html
基本的安装方式可以分为以下几个:
- NIM安装
- 通过克隆方式 (Alternate Disk Installation)
- 使用安装介质CD
正确安装AIX操作系统以后,察看MPIO的状态:
# lsdev -Cc disk
hdisk0 Available Virtual SCSI Disk Drive
# lspv
hdisk0 00c3e35ca560f919 rootvg active
# lspath
Enabled hdisk0 vscsi0
Enabled hdisk0 vscsi1
可以发现MPIO已经启用,其特点可归结为:
1) 双通道
为AIX虚拟客户端提供冗余支持。一个VIO服务器故障后,由此服务器提供的链路失败,但并不影响系统的使用。
# lspath
Failed hdisk0 vscsi0
Enabled hdisk0 vscsi1
2) 故障链路的监测
链路显示“failed”模式,即使VIO服务器故障修复后,虚拟AIX客户端也不能自动修复链路。修正客户端链路,可以采用以下方式:
- 使用chpath命令激活失败的联络
- 设置物理卷的属性为自动察看状态,属性为hcheck_interval和hcheck_mode,值分别为:
hcheck_interval : 60
hcheck_mode : nonactive
设置以上属性后,系统可以自动监测链路状态
使用如下命令设置参数:
$ chdev -l hdisk# -a hcheck_interval=60 -a hcheck_mode=nonactive -P
此命令需要重新引导AIX系统,才能生效。
3) 使用EMC作为共享存储注意事项
EMC存储设备连接到VIO服务器,作共享存储,要满足以下条件:
- Powerpath版本在4.4以上
- 在两个VIO服务器创建使用hdiskpower设备
- 服务器端虚拟SCSI适配卡和虚拟目标设备 (Virtual Target Device) 名称不能重复。否则,mkvdev不 能创建物理卷与虚拟适配卡间的映射关系。
$ mkvdev -vdev hdiskpower0 -vadapter vhost0 -dev hdiskpower0
Method error (/usr/lib/methods/define -g -d):
0514-013 Logical name is required.
- reserve属性不同于ESS/DS6000/DS8000/FAStT系列,reserve_lock。使用以下命令查看 此属性:
$ lsdev -dev hdiskpower# -attr reserve_lock
更改reserve_lock属性值,使用命令:
$ chdev -dev hdiskpower# -attr reserve_lock=no
另外,为能及时快速的监测到Fiber Channel的链路状态,在VIO服务器端需要修改HBA适配卡的属性fc_err_recov和dyntrk值如下:
$ chdev -dev fscsi# -attr fc_err_recov=fast_fail dyntrk=yes -perm
4 参考资料
1)红皮书Advanced POWER Virtualization on IBM System p5,可从以下链接得到:
http://www.redbooks.ibm.com/abstracts/sg247940.html?Open