概述
在这篇文章中,我将与大家分享一些在带有 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 连接
(查看图 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):
- 将 LPAR4 vfchost0 适配器映射到 vio1 上的物理 FC 适配器 fcs0。
$ vfcmap –vadpater vfchost0 –fcp fcs0 |
- 将 LPAR4 vfchost1 适配器映射到 vio1 上的物理 FC 适配器 fcs1。
$ vfcmap –vadapter vfchost1 – fcp fcs1 |
- 将 LPAR4 vfchost0 适配器映射到 vio2 上的物理 FC 适配器 fcs0。
$ vfcmap –vadapter vfchost0 – fcp fcs0 |
- 将 LPAR4 vfchost1 适配器映射到 vio2 上的物理 FC 适配器 fcs1。
$ vfcmap –vadapter vfchost1 –fcp fcs1 |
对于非关键系统(例如 MIN1):
- 将 NIM1 vfchost3 适配器映射到 vio1 上的物理 FC 适配器 fcs2。
$ vfcmap –vadapter vfchost3 –fcp fcs2 |
- 将 NIM1 vfchost4 适配器映射到 vio1 上的物理 FC 适配器 fcs3。
$ vfcmap –vadapter vfchost4 – fcp fcs3 |
- 将 NIM1 vfchost3 适配器映射到 vio2 上的物理 FC 适配器 fcs2。
$ vfcmap –vadapter vfchost3 – fcp fcs2 |
- 将 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 配置文件
名为 normal 的配置文件包含 LPAR 所有必需的 Virtual I/O 设备(如下所示)。该配置文件用来在标准操作过程中激活 LPAR。
图 3.安装后使用所有 FC 适配器的配置文件
名为 wwpns 的配置文件仅包含 LPAR 的头两个虚拟 FC 设备(如下所示)。只有在需要重新安装 AIX 操作系统的时候才用此配置文件来激活 LPAR。AIX 安装成功后,就使用 LPAR normal 配置文件再次激活 LPAR。它会配置其余的虚拟 FC 适配器。
图 4.只带有头两个虚拟 FC 适配器的 LPAR
在构建过程中,我们还需要收集重新安装的 AIX LPAR 的 WWPN 列表。有两种方法可以找到新 LPAR(例如,还未安装操作系统的)上的虚拟 Fibre Channel 适配器的 WWPN。首先,从 HMC 检查 LPAR 属性(如下所示)。
图 5.虚拟 FC 适配器 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(一主一从)。
用于磁带机的虚拟 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 的磁带驱动连接
(查看图 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
fcs4fcnet4 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 命令将物理端口映射到虚拟主机适配器,如下所示:
- 将 tsm1 vfchost60 适配器映射到 vio1 上的物理 FC 适配器 fcs4。
$ vfcmap –vadapter vfchost60 –fcp fcs4 |
- 将 tsm1 vfchost61 适配器映射到 vio1 上的物理 FC 适配器 fcs5。
$ vfcmap –vadapter vfchost61 – fcp fcs5 |
- 将 tsm1 vfchost60 适配器映射到 vio2 上的物理 FC 适配器 fcs4。
$ vfcmap –vadapter vfchost60 – fcp fcs4 |
- 将 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 数据
(查看图 7 。)
可以在客户端 LPAR 上使用 fcstat 命令来监控适配器上缓存使用和溢出情况的性能统计数据。例如,以下输出结果指示我们需要调整虚拟 FC 适配器上得某些设置。尤其需要调整 num_cmd_elems 和 max_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=0x200000 和 num_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 的经验。我希望您能喜欢这篇文章。当然,俗话说解决问题的方法不止一个。所以,请随时联系我,分享您关于此技术的经验,我很愿意聆听您的想法和经验。
关于作者
![]()
Chris Gibson 是一位 AIX 系统专家,居住在澳大利亚墨尔本市。他是 IBM CATE(System p 平台和 AIX 5L),同时也是 IBM Redbook “NIM from A to Z in AIX 5L” 的作者之一。
http://www.ibm.com/developerworks/cn/aix/library/au-NPIV/index.html