分配虚拟化磁盘路径的优先级

自动负载均衡 SAN 流量的方法

本文讨论了根据每个磁盘以及每个磁盘路径对应的奇数/偶数编号为 VIO 服务器上的虚拟 scsi 路径分配物理路径优先级的方法。此脚本可用于使用 VIO 服务器和客户端 LPAR 上使用 MPIO 的虚拟环境。此脚本还让系统管理员能够手动负载均衡双 VIO 服务器之间来自客户端 LPAR 的 SAN 流量,以及 VIO 服务器上所有物理适配器之间来自客户端 LPAR 的 SAN 流量。

Dana French, 总裁, Mt Xia Inc.

http://www.ibm.com/developerworks/i/p-dfrench.jpgFrench 先生在 IT 行业中的从业经验已有三十多年,所涉及的行业也非常之多。他的工作重点主要是业务连续性、灾难恢复以及高可用性等领域,并且他设计和编写了许多软件包,以实现灾难恢复和高可用性过程的自动化。他最大的贡献是将系统管理作为一项自动化的、面向业务的过程(而不是面向系统的、交互的过程)。他还是 Korn Shell 编程领域的著名专家。



2012 年 1 月 04 日

简介

本文讨论了在使用双 VIO 服务器的 AIX 客户端 LPAR 上设置存储通信优先级的标准流程。设置通信路径优先级能让管理员充分利用所有可用的 SAN 光纤带宽,并且在所有可用的硬件路径上分配 SAN 流量。

本文讲述的方法可用于独立的 AIX 系统或是从一个或多个 VIO 服务器获取存储的 AIX LPAR。在 VIO 环境中,所有 VIO 服务器和客户端 AIX LPAR 都应该设置通信路径优先级。

充分利用 SAN 光纤带宽的方法基于本文即将详细介绍的命名和编号模式的实现。为每个 SAN 光纤路径分配优先级的自动化流程是以此命名和编号模式的实现为基础的。


设置 SAN 基础结构路径优先级的过程

第一步是执行 AIX 安装;它可能来自发行媒体、mksysb 备份,或是来自 NIM 服务器(首选方式)。我们建议先创建一个标准的版本,然后保存一个此标准版的 mksysb 镜像。然后使用 NIM 服务器,使用标准版的 mksysb 执行所有的 AIX 安装。安装完成后,就使用一个配置脚本根据各个系统的需要和要求定制标准版本。

建议可在虚拟环境的配置中包含多个 VIO 服务器,它可提供对存储和网络设备的冗余访问。这意味着每个 VIO 服务器都要配置了多个物理适配器访问存储,以及多个物理设备访问网络。每个 VIO 服务器通常都会配置有两个或三个提供存储访问的光纤通道设备。

对虚拟 SCSI 适配器进行配置需要有磁盘布局以及网络配置的知识。虚拟 SCSI 适配器需要在 HMC 上配置服务器和客户端适配器。SCSI 适配器的客户端部分(在 VIO 上配置)需要定义主机范围内惟一的 “插槽号”。为了达到高可用性,在双 VIO 配置中,SCSI 适配器的服务器端部分必须在两个 VIO 服务器上都进行配置。

对于每个使用虚拟化磁盘或逻辑存储卷的客户端 LPAR,必须在 HMC 上配置客户端虚拟 SCSI 适配器,每个 VIO 服务器上配置一次。虚拟 SCSI 适配器的客户端需要有额外的信息和设置对应于 SCSI 适配器的服务器端。调整此处定义的插槽号将使调试和追踪故障变得容易得多,我们也强烈建议这么做。

要定义符合 VIO 客户端/服务器环境标准的插槽编号,必须按奇数/偶数对插槽编号进行分类。奇数号插槽只能用于奇数号 VIO 服务器;偶数号插槽只能用于偶数号 VIO 服务器。这样就形成了一个简单的机制来判定由哪个插槽供哪个 VIO 服务器使用。

为了能追踪每个插槽,并且为插槽编号提供可识别的模式,任意选择一个范围的插槽编号分配给虚拟 SCSI 适配器。此标准指定了选择的插槽编号范围为 10 到 499。

使用以下的示例 VIO 服务器主机名称(以下表 1 中),可以根据存储的最终用途将虚拟 SCSI 插槽编号分配给虚拟 SCSI 适配器(在以下表 2 中):

表 1:VIO 服务器名的示例 LPAR 名称
VIO 服务器名 描述 托管主机名
mtxapvio00 主机上的第一个 VIO 服务器节点 Server-9119-590-SN12A345B
mtxapvio01 主机上的第二个 VIO 服务器节点 Server-9119-590-SN12A345B
表 2:VIO 服务器插槽编号
虚拟 SCSI 适配器插槽编号 VIO 插槽编号(偶数/奇数) VIO 服务器(示例) 用途
100 偶数 mtxapvio00 操作系统存储
101 奇数 mtxapvio01 操作系统存储
102 偶数 mtxapvio00 数据库/应用程序存储
103 奇数 mtxapvio01 数据库/应用程序存储
104 偶数 mtxapvio00 数据库/应用程序存储
105 奇数 mtxapvio01 数据库/应用程序存储
106 偶数 mtxapvio00 数据库/应用程序存储
107 奇数 mtxapvio01 数据库/应用程序存储
108 偶数 mtxapvio00 其他
109 奇数 mtxapvio01 其他
110 偶数 mtxapvio00 操作系统存储
111 奇数 mtxapvio01 操作系统存储
112 偶数 mtxapvio00 数据库/应用程序存储
113 奇数 mtxapvio01 数据库/应用程序存储
114 偶数 mtxapvio00 数据库/应用程序存储
115 奇数 mtxapvio01 数据库/应用程序存储
116 偶数 mtxapvio00 数据库/应用程序存储
117 奇数 mtxapvio01 数据库/应用程序存储
118 偶数 mtxapvio00 其他
119 奇数 mtxapvio01 其他
120 偶数 mtxapvio00 操作系统存储
121 奇数 mtxapvio01 操作系统存储
122 偶数 mtxapvio00 数据库/应用程序存储
123 奇数 mtxapvio01 数据库/应用程序存储
124 偶数 mtxapvio00 数据库/应用程序存储
125 奇数 mtxapvio01 数据库/应用程序存储
126 偶数 mtxapvio00 数据库/应用程序存储
127 奇数 mtxapvio01 数据库/应用程序存储
128 偶数 mtxapvio00 其他
129 奇数 mtxapvio01 其他

根据此标准,插槽编号以 0 或 1 结尾的虚拟 SCSI 适配器将应用于与操作系统存储的通信中。而插槽编号以 2、3、4、5、6 或 7 结尾的 SCSI 适配器将应用于与应用程序或数据库存储的通信中。最后,插槽编号以 8 或 9 结尾的 SCSI 适配器则用于与其他存储的通信中。

根据上述的标准插槽编号模式创建虚拟 SCSI 适配器。为编号在 10 到 499 之间且以 0、1、2、3、8 和 9 结尾的所有插槽创建虚拟 SCSI 适配器。必须在偶数编号的 VIO 服务器上创建偶数编号的插槽,在奇数编号的 VIO 服务器上创建奇数编号的插槽。将 SCSI 适配器按偶数/奇数分类的目的是为管理员提供一个简单机制以轻松识别和维护这些资源。通过使用此标准,可以在任何一台主机上配置最多达 49 个客户端 LPAR。对此标准稍做修改,那么就可以配置任意多的客户端 LPAR。下列的表 3 显示了在双 VIO 服务器中,为三个客户端 LPAR 分配虚拟 SCSI 适配器的插槽编号序列示例:

表 3: 客户端 LPAR 虚拟 SCSI 适配器插槽编号
客户端 LPAR 名称 客户端 LPAR 插槽(来自 VIO) VIO 服务器 mtxapvio00 插槽编号(偶数) VIO 服务器 mtxapvio01 插槽编号(奇数) 分配给 LPAR 的 VIO 服务器
mtxapora00 100/101 100 101 操作系统存储
mtxapora00 102/103 102 103 数据库存储
mtxapora00 104/105 104 105 数据库存储
mtxapora00 106/107 106 107 数据库存储
mtxapora00 108/109 108 109 分页
mtxapora01 110/111 110 111 操作系统存储
mtxapora01 112/113 112 113 数据库存储
mtxapora01 114/115 114 115 数据库存储
mtxapora01 116/117 116 117 数据库存储
mtxapora01 118/119 118 119 分页
mtxapora02 120/121 120 121 操作系统存储
mtxapora02 122/123 122 123 应用程序存储
mtxapora02 124/125 124 125 数据库存储
mtxapora02 126/127 126 127 数据库存储
mtxapora02 128/129 128 129 分页

这种将插槽编号分配给虚拟 SCSI 适配器的标准化方法极大增强了管理员构建、修改和维护客户端 LPAR 和 VIO 服务器的能力。管理员可以立刻识别出由哪个 VIO 服务器为来自客户端 LPAR 的存储提供有效(或无效的)路径以及哪里存在问题。管理员也能够对特定的虚拟 SCSI 适配器进行离线维护或重新配置,而不会影响其他虚拟适配器上的存储。根据偶数/奇数模式在每个 VIO 服务器上创建虚拟 SCSI 适配器;尽管如此,是否根据上述标准将适配器分配给每个客户端 LPAR 仍由管理员来决定。

存储数组中的 LUN 通常会分配给与双 VIO 服务器相连的物理适配器。单个 LUN 会通过虚拟 SCSI 适配器分配给这两个 VIO 服务器,并显示给客户端 LPAR。客户端 LPAR 上的 Multi-Path I/O (MPIO) 驱动器则会识别到有一个 LUN 通过多个虚拟路径出现(每个 VIO 服务器上各一个),并且通过 “cfgmgr” 命令会发现一个 “hdisk”。

要配置的 LPAR 将拥有由双 VIOS 提供的多个资源,其中包括一个或多个 “vscsi” 适配器。还可以在 LPAR 配置中手动配置额外的物理设备,然而,本过程只介绍与虚拟设备相关的配置。

表 4:客户端 LPAR 上的虚拟 SCSI 适配器
适配器类型 示例插槽 示例设备名称 用途
虚拟 SCSI 适配器 100 vscsi0 操作系统磁盘
虚拟 SCSI 适配器 101 vscsi1 操作系统磁盘
虚拟 SCSI 适配器 102 vscsi2 数据/应用程序磁盘
虚拟 SCSI 适配器 103 vscsi3 数据/应用程序磁盘
虚拟 SCSI 适配器 104 vscsi4 数据/应用程序磁盘
虚拟 SCSI 适配器 105 vscsi5 数据/应用程序磁盘
虚拟 SCSI 适配器 106 vscsi6 数据/应用程序磁盘
虚拟 SCSI 适配器 107 vscsi7 数据/应用程序磁盘
虚拟 SCSI 适配器 108 vscsi8 其他磁盘
虚拟 SCSI 适配器 109 vscsi9 其他磁盘

此处描述的磁盘配置假设每个虚拟化磁盘对存储 SAN 有多条路径,每个 VIO 服务器有一条路径。Multi-Path I/O (MPIO) 的默认配置是将所有路径都赋予同样的优先级;这会将所有的 SAN 流量引向第一个 VIO 服务器。为了在两个 VIO 服务器之间平均分配存储通信流量,必须为 MPIO 配置中的每个路径分配一个路径优先级。目的是在 VIO 服务器之间平均地分配负载;尽管如此,对所有 “hdisk0” 磁盘来说,不必总是将最高优先级的路径指向偶数编号的 VIO 服务器。因此,在分配路径优先级时,应实现以下的逻辑:

  • 偶数编号磁盘 + 偶数编号客户端 LPAR 主机名 = 最高优先级路径是偶数编号的 VIO 服务器
  • 奇数号磁盘 + 奇数号客户端 LPAR 主机名 = 最高优先级路径是偶数编号的 VIO 服务器
  • 偶数号磁盘 + 奇数号客户端 LPAR 主机名 = 最高优先级路径是奇数编号的 VIO 服务器
  • 奇数号磁盘 + 偶数号客户端 LPAR 主机名 = 最高优先级路径是奇数编号 VIO 服务器

此路径优先级逻辑在名为 “vscsiPriority.ksh” 的 shell 脚本中有描述,它可以自动设置 VIO 服务器和/或客户端 LPAR 上所有磁盘的优先级。 可通过下列 URL 下载此脚本:http://www.mtxia.com/js/Downloads/Scripts/Korn/Functions/vscsiPriority.txt

下一步是配置分配给客户端 LPAR 的虚拟存储(演示 VSCSI 插槽编号标准以及其用处)。已经完全知晓 VIO 服务器上与每个客户端 LPAR 对应的 VSCSI 插槽编号;尽管如此,在客户端 LPAR 上,只要能够识别出插槽编号中惟一重要部分(即编号最后一位)就已经足够了。以零(0)或一(1)结尾的插槽用于操作系统磁盘。以二(2)或三(3)结尾的插槽用于应用程序和数据磁盘。以二(2)结尾的插槽由主机名为偶数编号的 VIO 服务器提供,以三(3)结尾的插槽由主机名为奇数编号的 VIO 服务器提供。 因此,在客户端 LPAR 上,所有父 VSCSI 适配器具有以二(2)或三(3)结尾的插槽号的磁盘都能自动检测到,并组成一个存储卷组。存储卷组中的磁盘可以分成逻辑卷和文件系统。以下的 Korn shell 语句会利用 “lscfg” 命令的输出结果以获取插槽编号以二(2)或三(3)结尾的 VSCSI 适配器对应的磁盘列表:

VGDISKS=$( lscfg -l 'hdisk*' | egrep -- '-C[0-9]*[23]-' | awk '{ print $1 }' | sort -n
    )

以下的 Korn shell 代码定义了在自动化虚拟存储配置过程中会用到的几个值。

# Determine the length of the host name
LEN="${#HNAME}"
   # extract the last two characters of the host name, assumed to be a two digit number
SEQNBR=${HNAME:LEN-2:2}
# assign a resource group name which will be used to define the VG, LVs, 
     and file systems.
RG="mtxdev${SEQNBR}"
# Assign the volume group major number 
VGMJ="8${SEQNBR}"
# Assign a unique identifier to use during the creation of the volume group
VGID="00vg"
# Assign a unique identifier to use during the creation of the Log Logical Volume
LGID="jfs2"
# Assign a directory mount point for the file system using the resource group name
MTPT="/${RG}"
# Create the volume group using the previously defined values
mkvg -f -y ${RG}${VGID} -V ${VGMJ} ${VGDISKS}
# Create the log logical volume using the previously defined values
/usr/sbin/mklv -y ${RG}${LGID}lv -t jfs2log -a e "${RG}${VGID}" 1
# Determine the number of free physical partitions associated with the volume group
FREEPPS=$( print "a=0; $( lsvg -p ${RG}${VGID} | sed -e '1,2 d' | awk '{ print $4 }' | 
     sed -e 's/^/a=a+/' ); a" | bc )
# Assign the number of physical partitions to use for the application/data logical volume.
LVSIZE=$(( FREEPPS - 5 ))
# Create the application/data logical volume
/usr/sbin/mklv -y ${RG}${LVID}lv \
-t jfs2 \
-x 5000 \
-a e \
"${RG}${VGID}" \
${LVSIZE}
# Create the application/data file system
/usr/sbin/crfs -v jfs2 \
-d "${RG}${LVID}lv" \
-m "${MTPT}" \
-A y \
-p rw \
-a agblksize=4096 \
-a logname="${RG}${LGID}lv"
# Mount the newly created file system
mount /${RG}

以上命令的结果是在一个通过资源组名称进行识别的目录上加载了一个完全配置的文件系统。本文中所有的 shell 脚本命令的重点就是增强系统管理各方面与标准化流程相关的业务连续性智能,其中包括网络和存储的构建。 像这样的标准化流程可以快速实现过程自动化和数据中心自动化。

有了网络和存储的自动构建,就能考虑其他组件的进程自动化,比如应用程序部署、数据库部署、负载管理配置、高可用性 (HACMP) 实现、灾难恢复实现、自动文件编制、审计合规性和审计响应。


结束语

设置 SAN 基础结构通信路径优先级可提供以下多项收益:

  • 在多个 VIO 服务器之间平均分配 SAN 流量负载。
  • 在多个物理适配器之间平均分配 SAN 流量负载。
  • 需要建立和实现命名标准,从而增强业务连续性。
  • 需要建立和实现 vSCSI 插槽命名标准,从而增强业务连续性。
  • 通过完全利用现有基础架构降低硬件需求。
  • 通过完全利用现有基础架构提升投资回报率 (ROI)。

最重要的是,建立路径优先级可提供一个标准化的、可重复的、可传授的方法,可供多个平台和多个管理员维护。这种管理和分配 SAN 流量的连续方法可以进行记录、测试和追踪。IT 管理人员可以使用此方法促进物理资源的优化,从这些资源中获得最高的投资回报率。

参考资料

学习

  • 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 系统时有一个更好的认识。

获得产品和技术

  • 下载 vscsiPriority.ksh shell 脚本。
  • 免费 试用 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=783917
ArticleTitle=分配虚拟化磁盘路径的优先级
publish-date=01042012