在 IBM Power Systems 上实现 NPIV 的技巧

使用 Virtual I/O 和 AIX 6.1 实现 Virtual Fibre Channel

Chris Gibson 与大家分享在 IBM POWER7 系统上的 AIX 和 Virtual I/O Server 环境下实现 NPIV 的技巧。

Chris Gibson, AIX 专家, Southern Cross Computer Systems

/developerworks/i/p-cgibson.jpgChris Gibson 是一位 AIX 系统专家,居住在澳大利亚墨尔本市。他是 IBM CATE(System p 平台和 AIX 5L),同时也是 IBM Redbook “NIM from A to Z in AIX 5L” 的作者之一。



2011 年 12 月 19 日

概述

在这篇文章中,我将与大家分享一些在带有 AIX 和 Virtual I/O Server (VIOS) 的 IBM Power Systems 上实现 NPIV 的经验。已经有一些出版物讨论过使用 VIOS 配置 NPIV 的步骤,我在 参考资料 部分中提供了其中一部分步骤的链接。因此,在这里我将不再详述创建虚拟 Fibre Channel (FC) 或准备 NPIV 和虚拟 FC 环境的步骤。假设您已经对此完全了解并具备了一切所需的知识。我将要介绍的是我在实际部署此技术过程中觉得有意思或是未见记载的知识。最终,这套系统的目标是为了提供一个基础架构平台,以便承载多个 SAP 应用程序和一个 DB2 数据库同时运行。

NPIV (N_Port ID Virtualization) 是一个行业标准,它充许多个系统共享一个物理 Fibre Channel 端口。使用此项技术能将多个系统(本例中是 AIX LPAR)连接到一个物理光纤通道适配器的物理端口上。每个系统 (LPAR) 都有与其自己虚拟 FC 适配器相对应的一个惟一的全球端口名称 (WWPN)。这意味这每个 LPAR 可以以本地(natively)的方式连接到一个 SAN 上的物理存储。

从多个方面来说,这是非常有利的。首先,可以节约费用。实现多个 LPAR 共享一个光纤通道可以帮您节约购买多余适配器的费用。

其次,使用 NPIV 可以减轻管理 VIOS 的负担。与虚拟 SCSI (VSCSI) 不同,不需要先将 SAN 磁盘分配给 VIOS 再将其映射到 Virtual I/O client (VIOC) LPAR 中,而是会直接将存储分配给客户端上虚拟 FC 适配器的 WWPN。同时,在每次将新磁盘映射到 LPAR/VIOS 上或解除 VIO 服务器上的磁盘映射时都不需要更新文档。

I/O 性能可能是您选择 VSCSI 上的 NPIV 的另一个原因。有了 NPIV,所有到磁盘的路径均可以用 MPIO 激活,从而增加 SAN 存储的总体带宽和可用性。可以一次在多个 VIO 服务器上实现 I/O 加载的负载平衡。不再需要再修改客户端 VSCSI hdisk 路径优先级来将 I/O 发送给替代的 VIO 服务器,因为如果需要的话,可以让所有 VIO 服务器支持所有 I/O。

还有一点是可以使用磁盘 “复制服务” 功能。很多现代存储设备都为用户提供了对 SAN LUN 进行 “闪存” 或 “快照” 的功能,以用于各种目的,如克隆系统、获取备份等等。使用 VSCSI 对于实现这类功能可能是一个挑战。可以实现,但要实现自动处理会有点难。有些产品提供了一些工具,可从主机层而非存储子系统中运行。为了能使用此功能,客户端 LPAR 必须将这些磁盘 “看成” 本地的设备。例如,AIX 系统可能需要检测此磁盘,并将其看成是本地的 NetApp 磁盘,从而让 NetApp “快照” 工具能起作用。如果它找不到本地的 NetApp 设备,而只是找到一个 VSCSI 磁盘,那么它就无法与 NetApp 系统直接通信,从而导致该工具无法起作用或得不到支持。

使用 NPIV 最大的不便(我所知道的)就是必须要在所有的客户端 LPAR 上安装所需的 MPIO 设备驱动器和/或主机附带工具。这意味着如果有 100 个 AIX LPAR 都使用了 NPIV 并连接到 IBM DS8300 磁盘,那么必须在这 100 个 LPAR 上安装并维护 SDDPCM。反过来,如果实施了 VSCSI,只要在 VIOS 上安装并维护 SDDPCM 即可。要安装的 VIOS 数量一定比客户端少吧!一个特定的 Power 系统上通常只有二到四个 VIO 服务器。

一般来说,我推荐在大多数大型企业网站上使用 NPIV,因为它具有良好的灵活性、管理性和伸缩性。尽管如此,VSCSI 仍占有一席之地,甚至在大型网站中。在某些情况下,最好是对 rootvg 磁盘使用 VSCSI,并对所有非 rootvg(数据)卷组使用 NPIV。例如,如果从使用 NPIV 的 SAN(rootvg 驻留在 SAN 磁盘)启动,那么就需要安装 MPIO 设备驱动器以支持该存储。在使用 MPIO 软件的时候升级往往非常困难,而 SAN 启动也是如此。是有办法可以解决此问题,但是如果能避免的话,您最好还是慎重考虑!

例如,如果您是一名客户,有大量的 AIX LPAR 要从 HDS SAN 存储启动,那么我建议对 rootvg 磁盘使用 VSCSI。这意味着需要在 VIOS 上安装 HDLM (Hitachi Dynamic Link Manager, HDS MPIO) 软件,还要将 rootvg 的 HDS LUN 分配给 VIOS 并从 VIOS 映射。其他所有数据(数据库或应用程序文件/代码)的 LUNS 将通过 NPIV 和虚拟 FC 适配器驻留在现有的存储上。同时还要将 HDLM 安装在 LPAR 上,但只用于非 rootvg 磁盘。按这种方式实现意味着,当需要升级 LPAR 上的 HDLM 软件时,您不必担心从 rootvg 到 HDS 存储转换的事,而只对软件进行升级。这只是一些借鉴!


环境

我所用于实现 NPIV 的环境包括 POWER7 750 和 IBM XIV 存储。客户端 LPAR 都运行 AIX 6.1 TL6 SP3。VIO 服务器都运行版本 2.2.0.10 Fix Pack 24 Service Pack 1 (2.2.0.10-FP-24-SP-01)。750 配置有 6 个 8GB 光纤通道适配器(特征码 5735)。每个 8GB FC 适配器都有两个端口。每个 VIO 服务器都分配 3 个 FC 适配器。每个 VIOS 的前两个适配器用作磁盘,每个 VIOS 的最后一个 FC 适配器用于磁带连接。


磁盘的 NPIV 和虚拟 FC

我在规划阶段有意识地给每个生产 LPAR 配备四个虚拟 FC 适配器。将头两个虚拟 FC 适配器映射到第一个 VIOS 的头两个虚拟 FC 端口,并将最后两个虚拟 FC 适配器映射到第二个 VIOS 的头两个物理 FC 端口。如下图所示。

图 1.SAN 和存储的虚拟 FC 连接
演示 SAN 和存储的虚拟 FC 连接

(查看图 1 的 大图。)

我还决定隔离不同物理 FC 适配器/端口上的其他 磁盘流量(例如,非关键的生产流量)。在上图中,蓝色线条/LUN 表示生产流量。此流量从 LPAR 上的虚拟适配器 fcs0 和 fcs1 映射到 vio1 上第一个 FC 适配器上的物理端口 fcs0 和 fcs1。LPAR 上的虚拟 FC 适配器 fcs2 和 fcs3 映射到 vio2 上第一个 FC 适配器的物理端口 fcs0 和 fcs1。

红色线条表示所有非关键磁盘流量。例如,NIM 和 Tivoli Storage Manager LPAR 在每个 VIOS 使用与生产 LPAR 不同的 FC 适配器。虚拟 FC 适配器 fcs0 和 fcs1 映射到 vio1 中第二个 FC 适配器的物理端口 fcs2 和 fcs3。虚拟 FC 适配器 fcs2 和 fcs3 映射到 vio2 中第二个 FC 适配器的物理端口 fcs2 和 fcs3。

我们用来创建 VIO 服务器映射的 vfcmap 命令示例如下:

对于生产系统(例如 LPAR4):

  1. 将 LPAR4 vfchost0 适配器映射到 vio1 上的物理 FC 适配器 fcs0。
    $ vfcmap –vadpater vfchost0 –fcp fcs0
  2. 将 LPAR4 vfchost1 适配器映射到 vio1 上的物理 FC 适配器 fcs1。
    $ vfcmap –vadapter vfchost1 – fcp fcs1
  3. 将 LPAR4 vfchost0 适配器映射到 vio2 上的物理 FC 适配器 fcs0。
    $ vfcmap –vadapter vfchost0 – fcp fcs0
  4. 将 LPAR4 vfchost1 适配器映射到 vio2 上的物理 FC 适配器 fcs1。
    $ vfcmap –vadapter vfchost1 –fcp fcs1

对于非关键系统(例如 MIN1):

  1. 将 NIM1 vfchost3 适配器映射到 vio1 上的物理 FC 适配器 fcs2。
    $ vfcmap –vadapter vfchost3 –fcp fcs2
  2. 将 NIM1 vfchost4 适配器映射到 vio1 上的物理 FC 适配器 fcs3。
    $ vfcmap –vadapter vfchost4 – fcp fcs3
  3. 将 NIM1 vfchost3 适配器映射到 vio2 上的物理 FC 适配器 fcs2。
    $ vfcmap –vadapter vfchost3 – fcp fcs2
  4. 将 NIM1 vfchost4 适配器映射到 vio2 上的物理 FC 适配器 fcs3。
    $ vfcmap –vadapter vfchost4 –fcp fcs3

我在每个 VIO 服务器上都使用了 map –all –npiv 来确认 vfchost 适配器到物理 FC 端口的映射是否正确(如下所示)。

vio1(生产 LPAR):

	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost0      U8233.E8B.XXXXXXX-V1-C66                4 LPAR4          AIX
	
	Status:LOGGED_IN
	FC name:fcs0                    FC loc code:U78A0.001.XXXXXXX-P1-C3-T1
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs0            VFC client DRC:U8233.E8B.XXXXXXX-V6-C30-T1
	
	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost1      U8233.E8B.XXXXXXX-V1-C67                4 LPAR4          AIX
	
	Status:LOGGED_IN
	FC name:fcs1                    FC loc code:U78A0.001.XXXXXXX-P1-C3-T2
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs1            VFC client DRC:U8233.E8B.XXXXXXX-V6-C31-T1

vio1(非生产 LPAR):

	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost3      U8233.E8B.XXXXXXX-V1-C30                3 nim1           AIX
	
	Status:LOGGED_IN
	FC name:fcs2                    FC loc code:U5877.001.XXXXXXX-P1-C1-T1
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs0            VFC client DRC:U8233.E8B.XXXXXXX-V3-C30-T1
	
	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost4      U8233.E8B.XXXXXXX-V1-C31                3 nim1           AIX
	
	Status:LOGGED_IN
	FC name:fcs3                    FC loc code:U5877.001.XXXXXXX-P1-C1-T2
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs1            VFC client DRC:U8233.E8B.XXXXXXX-V3-C31-T1

vio2(生产 LPAR):

	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost0      U8233.E8B.XXXXXXX-V2-C66                4 LPAR4          AIX
	
	Status:LOGGED_IN
	FC name:fcs0                    FC loc code:U5877.001.XXXXXXX-P1-C3-T1
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs2            VFC client DRC:U8233.E8B.XXXXXXX-V6-C32-T1
	
	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost1      U8233.E8B.XXXXXXX-V2-C67                4 LPAR4          AIX
	
	Status:LOGGED_IN
	FC name:fcs1                    FC loc code:U5877.001.XXXXXXX-P1-C3-T2
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs3            VFC client DRC:U8233.E8B.XXXXXXX-V6-C33-T1

vio2(非生产 LPAR):

	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost3      U8233.E8B.XXXXXXX-V2-C30                3 nim1           AIX
	
	Status:LOGGED_IN
	FC name:fcs2                    FC loc code:U5877.001.XXXXXXX-P1-C4-T1
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs2            VFC client DRC:U8233.E8B.XXXXXXX-V3-C32-T1
	
	Name          Physloc                            ClntID ClntName       ClntOS
	------------- ---------------------------------- ------ -------------- -------
	vfchost4      U8233.E8B.XXXXXXX-V2-C31                3 nim1           AIX
	
	Status:LOGGED_IN
	FC name:fcs3                    FC loc code:U5877.001.XXXXXXX-P1-C4-T2
	Ports logged in:5
	Flags:a<LOGGED_IN,STRIP_MERGE>
	VFC client name:fcs3            VFC client DRC:U8233.E8B.XXXXXXX-V3-C33-T1

幸运的是,当我们使用 IBM XIV 存储的时候,我们不需要安装额外的设备驱动程序来支持该磁盘。AIX 本地支持 XIV 存储。然而我们还是要安装 XIV 主机附件软件包中的一些管理工具。它为我们提供了一些方便的工具,如 xiv_devlist(以下显示了输出内容)。

# lsdev –Cc disk
hdisk0          Available 30-T1-01    MPIO 2810 XIV Disk
hdisk1          Available 30-T1-01    MPIO 2810 XIV Disk
hdisk2          Available 30-T1-01    MPIO 2810 XIV Disk
hdisk3          Available 30-T1-01    MPIO 2810 XIV Disk

# lslpp –l | grep xiv
xiv.hostattachment.tools   1.5.2.0  COMMITTED  Support tools for XIV
                                                 connectivity

# xiv_devlist

Loading disk info... 
                                                                                 
XIV Devices
----------------------------------------------------------------------
Device       Size     Paths  Vol Name      Vol Id   XIV Id   XIV Host 
----------------------------------------------------------------------
/dev/hdisk1  51.5GB   16/16  nim2_ rootvg  7        7803242  nim2     
----------------------------------------------------------------------
/dev/hdisk2  51.5GB   16/16  nim2_ nimvg   8        7803242  nim2     
----------------------------------------------------------------------
/dev/hdisk3  103.1GB  16/16  nim2_ imgvg   9        7803242  nim2     
----------------------------------------------------------------------


Non-XIV Devices
---------------------
Device   Size   Paths
---------------------

如果你想在 AIX 上实现 XIV 存储,我强烈推荐您看一下 Anthony Vandewert 博客 上关于此主题的内容。

您可能注意到图表中 VIO 服务器自己会从 750 中的内部 SAS 驱动程序启动。每个 VIO 服务器均配置两个 SAS 驱动程序和一个镜像 rootvg。它们不会从 SAN 启动。


LPAR 配置文件

在 LPAR 构建过程中,我们注意到,即使所启动的新 LPAR 中四个虚拟 FC 适配器都配置正确,fcsX 适配器名称和插槽 id 顺序还是错了 (fcs0=slot32, fcs1=slot33, fcs3=slot30, fcs4=slot31)。为了防止这种情况发生,我们为每个 LPAR 创建两个配置文件。

第一个配置文件(即 normal)包含所有四个虚拟 FC 适配器的信息。第二个配置文件(即 wwpns)仅包含映射到 vio1 上头两个物理 FC 端口的虚拟 FC 适配器的信息。首先使用此配置文件启动 LPAR,然后安装 AIX,让适配器顺序正确 (fcs0=slot30, fcs1=slot31)。安装 AIX 并启动 LPAR 之后,我们将使用 normal 配置文件和所有四个虚拟 FC 适配器重新激活 LPAR。

每个 AIX LPAR 有两个 LPAR 配置文件。示例如下所示。

图 2.虚拟 FC 的 LPAR 配置文件
虚拟 FC 的 LPAR 配置文件样例

名为 normal 的配置文件包含 LPAR 所有必需的 Virtual I/O 设备(如下所示)。该配置文件用来在标准操作过程中激活 LPAR。

图 3.安装后使用所有 FC 适配器的配置文件
安装后使用的所有虚拟 FC 适配器的配置文件

名为 wwpns 的配置文件仅包含 LPAR 的头两个虚拟 FC 设备(如下所示)。只有在需要重新安装 AIX 操作系统的时候才用此配置文件来激活 LPAR。AIX 安装成功后,就使用 LPAR normal 配置文件再次激活 LPAR。它会配置其余的虚拟 FC 适配器。

图 4.只带有头两个虚拟 FC 适配器的 LPAR
只有头两个 VFC 适配器的 LPAR

在构建过程中,我们还需要收集重新安装的 AIX LPAR 的 WWPN 列表。有两种方法可以找到新 LPAR(例如,还未安装操作系统的)上的虚拟 Fibre Channel 适配器的 WWPN。首先,从 HMC 检查 LPAR 属性(如下所示)。

图 5.虚拟 FC 适配器 WWPNS
VFC 适配器 WWPNS

为了加快进度,我们在 HMC 命令行工具中使用 lssyscfg 命令来显示 WWPN(如下所示)。

hscroot@hmc1:~> lssyscfg -r prof -m 750-1 -F virtual_fc_adapters --filter lpar_names=LPAR4
"""4/client/2/vio1/32/c0507603a2920084,c0507603a2920084/0"",
""5/client/3/vio2/32/c050760160ca0008,c050760160ca0009/0"""

现在拥有了每个 LPAR 的 WWPN 列表。

	# cat LPAR4_wwpns.txt
	c0507603a292007c
	c0507603a292007e
	c0507603a2920078
	c0507603a292007a

我们将这些 WWPN 提供给 SAN 管理员,以便让他们能在 SAN 交换机上手工 “分配” LPAR 并为每一个分配存储。为了加快进度,我们使用 sed 将冒号插入 WWPN 中。这样,SAN 管理员只要剪切复制 WWPN 即可,无需手动插入冒号。

	# cat LPAR4_wwpns | sed 's/../&:/g;s/:$//'
	c0:50:76:03:a2:92:00:7c
	c0:50:76:03:a2:92:00:7e
	c0:50:76:03:a2:92:00:78
	c0:50:76:03:a2:92:00:7a

这里需要注意的是,如果您打算在启用 NPIV 的系统上实现 Live Partition Mobility (LPM),则要确保将两个 WWPN 分配给客户端 LPAR 上的每一个虚拟 FC 适配器。请记住,创建的每个客户端虚拟 FC 适配器都会生成一对 WWPN(一主一从)。请参阅 参考资料 一节中的 Live Partition Mobility with Virtual Fibre Channel 获取更多相关信息。


用于磁带机的虚拟 FC 适配器

Tivoli Storage Manager 是用来在新环境中备份并修复系统的备份软件。Tivoli Storage Manager 使用 TS3310 磁带库以及磁盘存储工具来备份客户端数据。在该环境下,我们选择使用虚拟 FC 适配器将磁带库连接到 Tivoli Storage Manager。它还能够让我们将磁带设备分配给任意 LPAR,而无需将物理适配器从一个 LPAR 移到另一个,这种情况以后会越来越多。如前所述,给每个 VIOS 分配了三个双端口的 8GB FC 适配器。其中两个适配器用于磁盘,第三个供磁带独占使用。

下图显示了每个 VIOS 中的物理 FC 端口 fcs4 和 fcs5 将用于磁带连接。还显示了在 Tivoli Storage Manager LPAR 中这四个磁带驱动每一个都将分配给一个特定的虚拟 FC 适配器。

图 6. 通过虚拟 FC 的磁带驱动连接
通过虚拟 FC 的磁带驱动器连接

(查看图 6 的 大图)。

Tivoli Storage Manager LPAR 初始配置为虚拟 FC 适配器仅连接到 XIV 磁盘。如下列 lspath 输出所示,从 fcs0 到 fcs3 仅用于磁盘独占访问。

# lsdev -Cc adapter | grep fcs
fcs0 Available 30-T1 Virtual Fibre Channel Client Adapter
fcs1 Available 31-T1 Virtual Fibre Channel Client Adapter
fcs2 Available 32-T1 Virtual Fibre Channel Client Adapter
fcs3 Available 33-T1 Virtual Fibre Channel Client Adapter

# lspath
Enabled hdisk0 fscsi0
Enabled hdisk0  fscsi0
Enabled hdisk0  fscsi0
Enabled hdisk0  fscsi0
Enabled hdisk0 fscsi1
Enabled hdisk0  fscsi1
Enabled hdisk0  fscsi1
Enabled hdisk0  fscsi1
Enabled hdisk0 fscsi2
Enabled hdisk0  fscsi2
Enabled hdisk0  fscsi2
Enabled hdisk0  fscsi2
Enabled hdisk0 fscsi3
Enabled hdisk0  fscsi3
Enabled hdisk0  fscsi3
Enabled hdisk0  fscsi3
..etc.. for the other disks on the system

要连接到磁带驱动器,我们需要为 LPAR 配置另外四个的虚拟 FC 适配器。首先,确保物理适配器可用并且已通过光纤连接。在两个 VIOS 上,我们使用 lsnports 命令确定适配器的状态及其 NPIV 功能。如下列输出结果所示,物理配置器的 fcs4 和 fcs5 都可以使用,而且 NPIV 已准备好。fabric 列显示为 1。如果显示为 0,那么适配器可能未连接到具有 NPIV 功能的 SAN。

$ lsnports
name  physloc                    fabric tports aports swwpns awwpns
fcs0  U78A0.001.DNWK4W9-P1-C3-T1      1     64     52   2048   1988
fcs1  U78A0.001.DNWK4W9-P1-C3-T2      1     64     52   2048   1988
fcs2  U5877.001.0084548-P1-C1-T1      1     64     61   2048   2033
fcs3  U5877.001.0084548-P1-C1-T2      1     64     61   2048   2033
fcs4 U5877.001.0084548-P1-C2-T1  1    64    64   2048  2048
fcs5 U5877.001.0084548-P1-C2-T2  1    64    64   2048  2048

当最初检查两个 VIOS 上得适配器状态时,看到以下的 lsnports 输出结果:

$ lsnports
name  physloc                    fabric tports aports swwpns awwpns
fcs0  U78A0.001.DNWK4W9-P1-C3-T1      1     64     52   2048   1988
fcs1  U78A0.001.DNWK4W9-P1-C3-T2      1     64     52   2048   1988
fcs2  U5877.001.0084548-P1-C1-T1      1     64     61   2048   2033
fcs3  U5877.001.0084548-P1-C1-T2      1     64     61   2048   2033
fcs4 U5877.001.0084548-P1-C2-T1      0     64     64   2048   2048

如上所示,只发现 fcs4 适配器;fcs4 的 fabric 值是 0,fcs5 丢失。这些问题都是与 SAN 的物理连接造成的。线缆被拔出并且/或者有回环适配器插入接口。错误报告显示 fcs4 连接错误,而 fcs5 没有。

$ errlog
IDENTIFIER TIMESTAMP  T C RESOURCE_NAME  DESCRIPTION
7BFEEA1F 0502104011 T H fcs4  LINK ERROR

端口物理连接到 SAN 交换机后,我就将 fcs4 条目从 ODM 中移除(如下所示),然后在 VIOS 上运行 cfgmgr

$ r oem
oem_setup_env
# rmdev -dRl fcs4
fcnet4 deleted
sfwcomm4 deleted
fscsi4 deleted
fcs4 deleted
# cfgmgr
# exit
$

然后会发现 fcs4 和 fcs5,并且配置正确。

$ lsnports
name  physloc              fabric     tports  aports  swwpns  awwpns
fcs0  U78A0.001.DNWK4W9-P1-C3-T1      1         64      52    2048    1988
fcs1  U78A0.001.DNWK4W9-P1-C3-T2      1         64      52    2048    1988
fcs2  U5877.001.0084548-P1-C1-T1      1         64      61    2048    2033
fcs3  U5877.001.0084548-P1-C1-T2      1         64      61    2048    2033
fcs4 U5877.001.0084548-P1-C2-T1  1        64     64   2048   2048
fcs5 U5877.001.0084548-P1-C2-T2  1        64     64   2048   2048

Tivoli Storage Manager LPAR 中专门用于磁带的虚拟 FC 适配器是 fcs4、fcs5、fcs6 和 fcs7。计划将 tsm1 上的 fcs4 映射到 vio1 上的 fcs4,fcs5 映射到 vio1 上的 fcs5,fcs6 映射到 vio2 上的 fcs4,fcs7 映射到 vio2 上的 fcs5。

虚拟适配器插槽配置如下:

LPAR:tsm1  VIOS:vio1
U8233.E8B.06XXXXX-V4-C34-T1 >   U8233.E8B.06XXXXX-V1-C60  
U8233.E8B.06XXXXX-V4-C35-T1 >   U8233.E8B.06XXXXX-V1-C61  

LPAR:tsm1  VIOS:vio2
U8233.E8B.06XXXXX-V4-C36-T1 >   U8233.E8B.06XXXXX-V2-C60  
U8233.E8B.06XXXXX-V4-C37-T1 >   U8233.E8B.06XXXXX-V2-C61 

我们在 vio1 上创建了两个新的虚拟 FC 主机 (vfchost) 适配器,在 vio2 上创建了两个新的 vfchost 适配器。用新的适配器更新两个 VIOS 的配置文件(在 HMC 上),并在每个 VIOS 上添加一个 DLPAR 操作。在每个 VIOS 上运行 cfgdev 命令添加新 vfchost 适配器后,就需要将其映射到物理 FC 端口。

在每个 VIOS 上使用 vfcmap 命令将物理端口映射到虚拟主机适配器,如下所示:

  1. 将 tsm1 vfchost60 适配器映射到 vio1 上的物理 FC 适配器 fcs4。
    	$ vfcmap –vadapter vfchost60 –fcp fcs4
  2. 将 tsm1 vfchost61 适配器映射到 vio1 上的物理 FC 适配器 fcs5。
    	$ vfcmap –vadapter vfchost61 – fcp fcs5
  3. 将 tsm1 vfchost60 适配器映射到 vio2 上的物理 FC 适配器 fcs4。
    	$ vfcmap –vadapter vfchost60 – fcp fcs4
  4. 将 tsm1 vfchost61 适配器映射到 vio2 上的物理 FC 适配器 fcs5。
    	$ vfcmap –vadapter vfchost61 –fcp fcs5

下一步使用 DLPAR (使用以下的 流程)来升级带有四个新虚拟 FC 适配器的客户端 LPAR。务必了解将虚拟 FC 适配器添加到客户端 LPAR 的流程。如果操作不小心的话,那么客户端 LPAR 的 WWPN 可能会丢失,这会导致与 SAN 存储连接失败。您可能还要回顾下 HMC 的 chsyscfg 命令,因为可以使用此命令来修改 LPAR 的 WWPN。

在 LPAR 上运行过 cfgmgr 之后,我们确定有四个新的虚拟 FC 适配器。我们确定已经保存了 LPAR 当前 配置,如流程中所提到的那样。

# lsdev –Cc adapter  grep fcs
fcs0 Available 30-T1  Virtual Fibre Channel Client Adapter
fcs1 Available 31-T1  Virtual Fibre Channel Client Adapter
fcs2 Available 32-T1  Virtual Fibre Channel Client Adapter
fcs3 Available 33-T1  Virtual Fibre Channel Client Adapter
fcs4 Available 34-T1  Virtual Fibre Channel Client Adapter
fcs5 Available 35-T1  Virtual Fibre Channel Client Adapter
fcs6 Available 36-T1  Virtual Fibre Channel Client Adapter
fcs7 Available 37-T1  Virtual Fibre Channel Client Adapter

在这两个 VIOS 上,我们都使用 lsmap –all –npiv 命令来确认 FC 适配器上从物理到虚拟的映射是否正确。还要查看每个适配器的 lsmap 输出结果中的 Status: LOGGED_IN 条目以确定客户端 LPAR 是否成功登陆到SAN。

vio1:Name Physloc ClntID ClntName  ClntOS
------------- ---------------------------------- ------ -------------- -------
vfchost60  U8233.E8B.06XXXXX-V1-C60 6 tsm1  AIX

Status:LOGGED_IN
FC name:fcs4  FC loc code:U5877.001.0084548-P1-C2-T1
Ports logged in:1
Flags:a<LOGGED_IN,STRIP_MERGE>
VFC client name:fcs4  VFC client DRC:U8233.E8B.06XXXXX-V4-C34-T1

Name Physloc ClntID ClntName  ClntOS
------------- ---------------------------------- ------ -------------- -------
vfchost61  U8233.E8B.06XXXXX-V1-C61 6 tsm1  AIX

Status:LOGGED_IN
FC name:fcs5  FC loc code:U5877.001.0084548-P1-C2-T2
Ports logged in:1
Flags:a<LOGGED_IN,STRIP_MERGE>
VFC client name:fcs5   VFC client DRC:U8233.E8B.06XXXXX-V4-C35-T1


vio2:Name Physloc ClntID ClntName  ClntOS
------------- ---------------------------------- ------ -------------- -------
vfchost60  U8233.E8B.06XXXXX-V2-C60        6 tsm1  AIX

Status:LOGGED_IN
FC name:fcs4  FC loc code:U5877.001.0084548-P1-C5-T1
Ports logged in:1
Flags:a<LOGGED_IN,STRIP_MERGE>
VFC client name:fcs6  VFC client DRC:U8233.E8B.06XXXXX-V4-C36-T1

Name Physloc ClntID ClntName  ClntOS
------------- ---------------------------------- ------ -------------- -------
vfchost61  U8233.E8B.06XXXXX-V2-C61  6 tsm1  AIX

Status:LOGGED_IN
FC name:fcs5             FC loc code:U5877.001.0084548-P1-C5-T2
Ports logged in:1
Flags:a<LOGGED_IN,STRIP_MERGE>
VFC client name:fcs7  VFC client DRC:U8233.E8B.06XXXXX-V4-C37-T1

此时我们已经能够获取新适配器的 WWPN。此信息用来将磁带驱动器分配到系统中。

# for i in 4 5 6 7
> do
> echo fcs$i
> lscfg -vpl fcs$i | grep Net
> echo
> done
fcs4
  Network Address.............C0507603A2720087

fcs5
  Network Address.............C0507603A272008B

fcs6
  Network Address.............C0507603A272008C

fcs7
  Network Address.............C0507603A272008D

分配 TS3310 驱动程序之后再安装 IBM Atape 设备驱动程序。

# lslpp -l | grep -i atape
 Atape.driver  12.2.4.0  COMMITTED  IBM AIX Enhanced Tape and

将驱动器分配给新的 WWPN 后,在Tivoli Storage Manager LPAR 上运行 cfgmgr 来配置磁带驱动器。

# lsdev -Cc tape

# cfgmgr
# lsdev -Cc tape
rmt0 Available 34-T1-01-PRI IBM 3580 Ultrium Tape Drive (FCP)
rmt1 Available 34-T1-01-PRI IBM 3580 Ultrium Tape Drive (FCP)
rmt2 Available 35-T1-01-ALT IBM 3580 Ultrium Tape Drive (FCP)
rmt3 Available 35-T1-01-ALT IBM 3580 Ultrium Tape Drive (FCP)
rmt4 Available 36-T1-01-PRI IBM 3580 Ultrium Tape Drive (FCP)
rmt5 Available 36-T1-01-PRI IBM 3580 Ultrium Tape Drive (FCP)
rmt6 Available 37-T1-01-ALT IBM 3580 Ultrium Tape Drive (FCP)
rmt7 Available 37-T1-01-ALT IBM 3580 Ultrium Tape Drive (FCP)
smc0 Available 34-T1-01-PRI IBM 3576 Library Medium Changer (FCP)
smc1 Available 35-T1-01-ALT IBM 3576 Library Medium Changer (FCP)
smc2 Available 37-T1-01-ALT IBM 3576 Library Medium Changer (FCP)

现在 Tivoli Storage Manager 已经可以使用新的磁带驱动器。


监控虚拟 FC 适配器

很明显,VIO 服务器上的 viostat 命令能够监控 vfchost 适配器上的 I/O 流量(如以下示例所示)。

$  viostat -adapter vfchost3
System configuration: lcpu=8 drives=1 ent=0.50 paths=4 vdisks=20 tapes=0 

tty: tin tout  avg-cpu:% user % sys % idle % iowait physc %
entc
0.0 0.2 0.0 0.2 99.8 0.0  0.0
0.4 

Adapter:Kbps tps Kb_read  Kb_wrtn
fcs1 2.5 0.4 199214  249268 

Adapter:Kbps tps Kb_read  Kb_wrtn
fcs2 0.0 0.0 0  0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost4 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost6 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost5 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost0 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost3 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost2 0.0 0.0 0.0  0.0 

Vadapter:Kbps tps bkread  bkwrtn
vfchost1 0.0 0.0 0.0  0.0

我必须承认使用该工具监控这些设备上的 I/O 的成功率是有限的。但是我还不清楚为什么该工具不报告任何 vfchost 适配器的统计数据。也许跟我们运行的 VIOS 级别有关?

幸运的是,nmon 能获取并报告客户端 LPAR 上的虚拟 FC 适配器性能统计数据。这并不新鲜,因为 nmon 总能获取 FC 适配器信息,但令人高兴的是,nmon 能记录虚拟和物理 FC 适配器的数据。

图 7. 虚拟 FC 适配器使用情况的 nmon 数据
虚拟 FC 适配器使用情况的 nmon 数据样例

(查看图 7 的 大图 。)

可以在客户端 LPAR 上使用 fcstat 命令来监控适配器上缓存使用和溢出情况的性能统计数据。例如,以下输出结果指示我们需要调整虚拟 FC 适配器上得某些设置。尤其需要调整 num_cmd_elemsmax_xfer_size 这两个属性。

# fcstat fcs0 | grep -p DMA | grep -p 'FC SCSI'
FC SCSI Adapter Driver Information
 No DMA Resource Count:580  No Adapter Elements Count:0
 No Command Resource Count:6093967

# fcstat fcs1 | grep -p DMA | grep -p 'FC SCSI'
FC SCSI Adapter Driver Information
 No DMA Resource Count:386  No Adapter Elements Count:0
 No Command Resource Count:6132098

# fcstat fcs2 | grep -p DMA | grep -p 'FC SCSI'
FC SCSI Adapter Driver Information
 No DMA Resource Count:222  No Adapter Elements Count:0
 No Command Resource Count:6336080

# fcstat fcs3 | grep -p DMA | grep -p 'FC SCSI'
FC SCSI Adapter Driver Information
 No DMA Resource Count:875  No Adapter Elements Count:0
 No Command Resource Count:6425427

我们也在 VIO 服务器的物理适配器上发现了缓存问题(通过 fcstat 命令)。我们调整 VIO 服务器上的 FC 适配器以匹配客户端 LPAR,例如 max_xfer_size=0x200000num_cmd_elems=2048

fcstat 命令将会对虚拟 FC 适配器的某些属性报 UNKNOWN 值。由于它是虚拟适配器,所以不包含有关物理适配器属性的任何信息,如固件层信息或支持的端口速度。

# fcstat fcs0
FIBRE CHANNEL STATISTICS REPORT: fcs0
Device Type:FC Adapter (adapter/vdevice/IBM,vfc-client)
Serial Number:UNKNOWN
Option ROM Version:UNKNOWN
Firmware Version:UNKNOWN
World Wide Node Name:0xC0507603A202007c
World Wide Port Name:0xC0507603A202007e
FC-4 TYPES:Supported:0x0000010000000000000000000000000000000000000000000000000000000000
Active:0x0000010000000000000000000000000000000000000000000000000000000000
Class of Service:3
Port Speed (supported):UNKNOWN
Port Speed (running):8 GBIT
Port FC ID:0x5D061D

结束语

以上就是我要分享的关于 NPIV、Power Systems、Virtual I/O 和 AIX 的经验。我希望您能喜欢这篇文章。当然,俗话说解决问题的方法不止一个。所以,请随时联系我,分享您关于此技术的经验,我很愿意聆听您的想法和经验。

参考资料

学习

  • 请参考下列关于 VIOS 环境中进行虚拟 FC 配置的更多信息链接。
  • PowerVM 新存储特性 - NPIV”(developerWorks,2010 年 3 月):NPIV(N_Port ID Virtualization )是 PowerVM 的 VIO 2.1 版本所推出的新功能 ,VIO Server 2.1 版本将对物理设备适配卡的虚拟支持扩展到了光纤卡,通过 VIOS 上的一块支持 NPIV 特性的真实物理光纤适配卡,多个不同的分区可通过虚拟的光纤卡访问 SAN 网络的资源 , 从而简化多分区系统上的 SAN 资源管理 。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

  • 试用 IBM 软件:下载试用版、登录到在线试用版、在沙箱环境下使用产品或通过云访问。选择 100 多种 IBM 产品试用版。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=781794
ArticleTitle=在 IBM Power Systems 上实现 NPIV 的技巧
publish-date=12192011