内容


使用 AIX Logical Volume Manager 执行 SAN 存储迁移

用 Logical Volume Manager 将 AIX 系统迁移到新的 SAN 存储子系统

Comments

简介

如果您使用 AIX 的时间足够长,就会遇到需要将一个现有的 AIX 系统从旧的 SAN 存储设备迁移到崭新的 SAN 存储子系统的情况。旧设备上的技术可以继续使用,或者就简单地用新的技术取代它。这种存储设备可以是 IBM 的产品,也可以是其他厂商的产品。但不管是何情况,您都要面临这样一个选择,即如何才能最好地将现有的 AIX 系统迁移到新设备。当然,还需要将迁移对运行中的系统的影响减到最少。

在本文中,我将与您分享一些示例以展示我是如何将 AIX 系统从旧的 SAN 存储子系统迁移到新的 SAN 存储子系统的。我将涉及专用的和虚拟的 I/O (VIO) 系统。为了展示这种方式,这些示例既包含 IBM 存储器,又包含非 IBM 的存储器。

准备和计划

进行这种类型的迁移需要仔细的准备和计划。我假设您或您的 SAN 存储管理员已经布好线、配置并连接好了新的 SAN 存储设备与您现有的 SAN。并且,我还会假设您的 AIX 系统已经具有了到您现有的 SAN fabric 的 SAN 连接。

在迁移之前,请与您的存储供应商确认它能提供的支持。查阅供应商的存储支持矩阵。这些矩阵通常都会列出于存储供应商的网站(或者也可以从供应商的服务代表那里得到),并会突出显示其存储设备所支持的系统。比如,对于 IBM 企业级存储设备(比如 DS8300),您在进行计划和准备时就可以参考它的支持矩阵。 DS8300 Interoperability Matrix(参见本文的 参考资料 部分)列出了对各种主机系统和适配器的一些重要的支持和兼容性考虑,涵盖了范围广泛的支持核查,比如受支持的操作系统、补丁级别、所需的 Fibre Channel (FC) 适配器固件、受支持的 SAN 开关类型/固件等。

其中最重要的一块是所需的多路径 I/O 设备驱动器以及推荐的 FC 适配器固件(Microcode)级别。我曾看到在将一个新的存储设备集成到现有的 SAN 和 AIX 环境前因未核查这些组件而引发的各种各样的问题。大多数供应商都提供了很多工具来帮助计划和验证,比如,IBM 就提供了 Fix Level Recommendation Tools 站点和 IBM HBA 支持站点(参见 参考资料 部分)。如果一个供应商不提供有助于您进行计划和准备的在线工具,那么我建议您直接向它们请求帮助。毕竟,帮助您让它们的产品能工作于您的环境对它们也是有益处的!

计划和准备的另一个重要(并且有时常常被忽略的)阶段是设计阶段。建议您花些时间设计您的新 SAN 存储设备如何能适应您现有的 SAN。问一些有助于设计过程的问题,比如:

  • 此设备能不能/应不应该连接到现有的 SAN?这是不是供应一个新 SAN Fabric 的最佳时机?
  • 这些 AIX 系统如何连接到新的存储设备?
  • 此 AIX 操作系统和数据如何能从旧的磁盘迁移到新的磁盘?

如果有帮助的话(并且它通常都会),可以画图来形象地展示上述问题的答案。并且还有助于他人理解您想要实现的目标。先用一个图表来封装您的当前状态,然后用另一个图表来描述新设备将如何安装,再后是建议的迁移过程或进程。最后,说明在旧设备不再需要且所有数据均已从中迁移出来后整个环境将是什么样子。

那么您是否是从一个专用的 I/O 环境迁移到一个虚拟的 I/O 环境呢?如果是,我建议您查阅有关如何从物理存储向虚拟存储迁移的最新 IBM 红皮书(参见 参考资料)。此红皮书可以在整个迁移过程为您提供指导,并为您提供几种迁移的方法。

如果您是从一个专用的 I/O 环境迁移到另一个专用的 I/O 配置,那么就需要考虑每个 LPAR 上的软件要求。例如,对于 IBM DS8300 存储器,需要在迁移前(或迁移后随即)确保具有合适的 SDDPCM MPIO 设备驱动器(比如 devices.sddpcm.53.rte)和 DS8300 Host Attachment 工具箱(比如 devices.fcp.disk.ibm.mpio.rte),以及所需的 FC 适配器 Microcode(固件)。

如果您已经具备了一个虚拟的 I/O 环境(为磁盘流量运行了一个虚拟的 I/O 服务器或 VIOS),然后考虑对此 VIOS 有何要求。如果您是从 IBM 存储迁移到 IBM 存储,那么您可能只需要更新此 MPIO 代码、FC 适配器固件以及设备驱动器。不过,如果您是从供应商 A 迁移到供应商 B,那么您可能需要采用一个不同的方式。设计过程应该事先就解决掉这些问题。

例如,如果您从(VIOS 呈现的磁盘)IBM DS 迁移到 NetApp 存储,那么您很可能需要考虑为 NetApp 磁盘供应新的 VIO 服务器。与在相同的 VIOS 混合两个供应商的 MPIO 代码相比,如果每种存储器具有其自己的 VIOS 将更容易管理。我推荐这种方式并且我的示例将会展示我是如何选择部署这种类型的配置的。

不过,在本文中我不会讨论 N-Port ID Virtualization (NPIV)。NPIV 为 Power 平台上的存储虚拟化添加了另一个层面。具有 VIOS 的 NPIV 利用了虚拟的 FC 设备来将磁盘(和磁带)本机地呈现给客户机 LPAR。更多信息,请参考 参考资料 部分。

我还假设在您的环境中没有 IBM SAN Volume Controller (SVC)。如果您有一个 SVC 且您所有的 AIX 系统均位于其后,那么我建议您充分利用此产品的杰出功能。它能在无需惊动主机系统的情况下将存储透明地从一个存储设备迁移到另一个存储设备。

如果您没有 SVC,正在考虑实现一个,那么我建议您立即这么做!若环境内有了一个 SVC,存储迁移(对于 AIX 管理员)将是很容易的一件事情。并且那也是使用这个很棒的设备的很多优势之一。有关 IBM SVC 的更多信息,请参见参考资料部分。

若没有 SVC,AIX 存储迁移将最有可能涉及 AIX Logical Volume Manager (LVM) 的使用。这也是我在如下的示例中将要介绍的。

用 AIX 和专用 I/O 进行 IBM SAN 存储迁移

几年前,我曾需要将大量的 AIX 主机从一个旧的 IBM ESS (F20) 迁移到一个崭新的 IBM DS8300 存储子系统。这些 AIX 主机均使用了专用的 FC 适配器(HBA)。每个主机有至少两个 FC 适配器连接到我们的 SAN。下图展示了 SAN 存储以及 AIX LPAR 到现有的 SAN Fabric 的连接情况:

图 1. 从 IBM ESS 到 DS8300 存储的迁移 — 专用 I/O — 当前状态
从 IBM ESS 到 DS8300 存储的迁移
从 IBM ESS 到 DS8300 存储的迁移

连接到这类存储的每个 AIX 系统的 MPIO 代码均需更新到最新的 SDD 设备驱动器和 FC 适配器 Microcode。比如,我们的设计文档就说明了如下内容:

确保在所有 AIX 系统的这些级别安装了如下软件:

AIX

5200-05

IY62165 Abstract:目标设备拒绝被写 - AIX Host 到 McData 开关。

Fileset devices.pci.df1000f7.com:5.2.0.50 被应用到此系统上。

IY62116 Abstract: EEH 错误后,附带 hdisks 故障。

Fileset devices.pci.df1000f7.com:5.2.0.50 被应用到此系统上。

ibm2105.rte

32.6.100.24 COMMITTED IBM 2105 Disk Device

devices.sdd.52.rte

1.6.0.2 COMMITTED IBM Subsystem Device Driver for AIX V52

devices.fcp.disk.ibm.rte

1.0.0.0 COMMITTED IBM FCP Disk Device

确保已应用了最新的 Microcode for Fibre Channel 适配器。使用 lscfg 命令来决定 FC 适配器的 Microcode 级别。

$ lscfg -vpl fcs0 | grep Z9

在迁移之前,更新我们所有的 100 多个 AIX 系统是一个相当大的工程。不过,一旦完成,我们将能毫无障碍地移到新的存储设备。

将数据从旧磁盘迁移到新磁盘的方式是为了部署 AIX Logical Volume Manager。在我们的数据迁移策略的核心有两个 LVM 实用工具(mirrorvg 和 migratepv)。这两个命令均能在系统运行的同时在不同的磁盘间复制/移动数据。由于这些命令具有 I/O 密集的特性,因此它们会对系统上的 I/O 造成微小的性能影响。因此,在系统运行峰值(磁盘 I/O)负载时,不应该进行数据迁移。我们应该将这些任务安排在系统相对安静的时期。

图 2 中的箭头(从 hdisk0 到 hdisk11)代表了数据迁移的 LVM 镜像(和 migratepv)过程。

本来可以用 mirrorvg 命令将操纵系统(rootvg)从旧的 ESS 迁移到 DS8300。但是,对于这些应用程序/数据卷组,我们选择使用了 migratepv 命令。这就让我们得以控制在运行的系统上释放的额外 I/O 活动的多少。某些迁移系统尚在制作中,我们不想让 I/O 子系统溢出并导致不必要的性能问题。

很明显,在我们开始之前,我们的存储团队必须首先将这个新的 DS8300 附加并配置到我们现有的 SAN。这个过程完成后,我们就可以与存储团队一起来决定对于要迁移到这个新设备的每个 AIX 系统,将需要哪种类型的 LUN 以及需要多少这样的 LUN。

我们的计划还会捕获每个 LPAR 主机名、现有的 AIX hdisk 名、现有的 SDD (vpath) 配置、每个 FC 适配器的 World Wide Port Name (WWPN)、当前的 FC 适配器名(比如 fcs0 和 fcs1)、当前的 LUN 配置以及所建议的新 LUN 配置。

存储划分完毕后,我们就可以将新的 LUN 分配到现有的 AIX 主机并执行迁移。如下的图 2 显示了 DS8300 已被连接到我们的 SAN 并且来自它的一个 LUN 已被分配给了一个现有的 AIX LPAR。 LUN 作为一个 hdisk 设备(hdisk11)呈现给 AIX。这个磁盘已经被分配给了现有的一个卷组(rootvg)。

图 2. 从 IBM ESS 到 DS8300 的存储迁移 — 专用 I/O — LVM 镜像 — 迁移状态
从 IBM ESS 到 DS8300 的存储迁移 - 专用 I/O - LVM 镜像
从 IBM ESS 到 DS8300 的存储迁移 - 专用 I/O - LVM 镜像

在迁移之前,我们执行了系统的备份(包括一个 mksysb)。迁移可以在应用程序在该系统上运行的同时执行。不过,在迁移后的某些时候,将需要进行一次重引导。系统从 SAN 磁盘引导。为了这个操作系统,我们将会将此系统迁移到一个新的 SAN 磁盘。为了确保引导磁盘已成功迁移,我们必须能够在这个新的磁盘上引导此系统。不好的一面是如果此操作失败,我们将需要从一个 mksysb 备份恢复此系统。

事后(5 年后!),我幡然领悟我本应建议使用 alt_disk_install(在 AIX 5.2)而非 mirrorvg。alt_disk_install 命令(现已被 AIX 5.3 上的 alt_disk_copy 命令所取代)能够将一个现有的 rootvg 克隆到另一个磁盘上。使用这个命令应该可以提供一个更为有效的 back out 路径。所幸的是我们根本无需在任何存储迁移中开始一个 back out。

在对现有系统做任何更改之前,我们对系统配置进行了建档。当前的磁盘 LVM 和 SDD (vpath) 配置也被捕获。通常,SDD 配置了 vpath 设备来将 MPIO 提供给 hdisk 设备。为了简单起见并让示例更具代表性,我更倾向于使用 hdisk 设备而不是 vpath 设备。您通常需要在一个纯 SDD 环境中使用 vpath 设备。存储供应商将会区别地呈现 MPIO 磁盘。在处理存储设备和 MPIO 代码时,要谨记这一点。

# lsdev -Cc disk
# lsvg –l rootvg
# lsvg –l datavg
# lsvg -p rootvg
# lsvg -p datavg
# lsvpcfg

当新的 LUN 已被分配给 AIX 主机时,会执行 cfgmgr 命令来发现这个新的 DS8300 磁盘。我还确认这个新磁盘已被发现且路径已被正确配置。

; A disk type of 2107 confirms it is DS8300 storage.
# lsdev –Cc disk | grep 2107
# lspv
# lsvpcfg

此时,我可以用 extendvg 命令将这个新的 DS8300 LUN (hdisk11) 添加到 rootvg。然后,我使用了 mirrorvg 命令来在新磁盘上创建数据的确切副本。使用 AIX LVM 命令,这个过程相当直观。

# extendvg –f rootvg hdisk11
# mirrorvg –S rootvg hdisk11

这个镜像过程需要一些时间。作为一种防范措施,我确保了在新磁盘上已经有一个新的(备份)转储逻辑卷(LV)、新的引导映像已经创建且引导列表包含了新旧 hdisk。如果在迁移的这个时候需要重启系统,我就能有把握能从任一磁盘引导。

# mklv -y hd71 -t dump rootvg 8 hdisk11
# lspv -l hdisk11
# sysdumpdev -s /dev/hd71


# bosboot -a -d /dev/hdisk11
# bosboot -a -d /dev/hdisk0 # bootlist –m normal -o # bootlist -m normal hdisk0 hdisk11 # ipl_varyon –i

镜像同步后(即 lsvg –l rootvg 不再显示任何过期的分区),从 rootvg 删除这个旧的 hdisk。首先,我必须从这个旧的磁盘解除 rootvg 镜像(unmirrorvg)。确保这个磁盘上的所有活动的转储设备均已删除。我临时将主转储设备更改为 /dev/sysdumpnull,然后用 rmdev 命令从卷组和 AIX Object Data Manager (ODM) 删除了这个磁盘。

# ps –ef | grep sync
# lsvg –l rootvg | grep –i stale
# unmirrovg rootvg hdisk0 # sysdumpdev -Pp /dev/sysdumpnull # rmlv hd7 ; no output from the lspv command, means no LV data on disk. # lspv –l hdisk0 # reducevg rootvg hdisk0 # chpv –c hdisk0 # rmdev –dl hdisk0

在进行了这些更改后,需要重新创建这个引导映像、确保引导列表只包含新的 hdisk 且主转储设备已正确设置。

# bosboot -a -d /dev/hdisk11 
# sysdumpdev -Pp /dev/hd71
# bootlist –m normal -o
# bootlist -m normal hdisk11
# ipl_varyon -i

当操作系统现迁移到新磁盘之后,我重点进行数据卷组迁移。存储团队将新的数据 LUN 分配给主机并为我提供了一个新的 LUN id 列表。首先,我需要标识出用于数据迁移的 DS8300 磁盘。lspv 和 lsdev 命令均可显示与 AIX 系统上的 hdisks 相关的信息。

; hdisk NOT ASSIGNED TO A VG
# lspv
hdisk12      none            None          
hdisk13      none            None          
; A disk type of 2107 is displayed for DS8300 disks on AIX.
# lsdev –Cc disk | grep 2107

标识出正确的磁盘(hdisk12 和 hdisk13)后,需要将这些磁盘(用 extendvg)添加到现有的数据卷组(datavg)。

# extendvg datavg hdisk12 hdisk13

使用 LVM 命令 migratepv 可以完成从旧磁盘到新磁盘的数据迁移。我必须为 migratepv 操作选择源和目的磁盘。比如,如下的命令会把数据从 hdisk2 迁移到 hdisk12,从 hdisk3 迁移到 hdisk13。在迁移结束时,hdisk2 和 hdisk3 都将是空白的并且它们所有的数据现在应分别位于 hdisk12 和 hdisk13 上。

# migratepv hdisk2 hdisk12
# migratepv hdisk3 hdisk13

为了确认每个旧 hdisk 的所有数据(本地卷)都已迁移完毕,运行 lspv 命令来列出每个磁盘的内容。这个命令没有返回任何输出,这就表明磁盘的确是空的。现在我就可以安全地将这些旧的磁盘从卷组及 ODM 删除掉。

# lspv –l hdisk2
# lspv –l hdisk3
# reducevg datavg hdisk2 hdisk3
# rmdev –dl hdisk2
# rmdev –dl hdisk3

迁移完成后,我现在就可以让存储团队收回 F20 上旧的 LUN 了。

为了确保引导磁盘和引导列表已被正确配置,我将重新引导系统以便验证。这还能确认新迁移的磁盘、卷组、逻辑卷和文件系统在迁移完成后仍能继续按预期运行。我们专用的 I/O 系统的已经获得理想的最终状态。旧的 ESS 存储现在应该可以退役并从数据中心删除。

图 3. 从 IBM ESS 到 DS8300 的存储迁移 — 专用 I/O — 最终状态
从 IBM ESS 到 DS8300 的存储迁移                     - 专用 I/O - 最终状态
从 IBM ESS 到 DS8300 的存储迁移 - 专用 I/O - 最终状态

用 AIX 和虚拟 I/O 进行来自不同供应商的 SAN 存储的迁移

在下一个场景中,我将讨论如何执行一个类似的存储迁移。与上述这个例子的不同之处在于我必须使用虚拟 I/O 服务器(VIOS)从 IBM 存储迁移到 NetApp 存储。

让我们来查看一下当前的状态(在迁移到新存储之前此环境的状态)。如下的图 4 显示了有一个 AIX LPAR 连接到一对 VIOS。而这二者均连接到 IBM DS8300 存储。这个 VIOS 对(hvio1 和 hvio2)将 DS8300 LUN 作为虚拟 SCSI (VSCSI) 磁盘提供给客户机 LPAR。此 LPAR 在一个磁盘上具有单一一个卷组,面向操作系统的 rootvg。为应用程序数据所用的其他的磁盘和卷组也存在,但为了简便起见,没有对之进行描述。

这个 NetApp 存储设备已经附加到我们现有的 SAN fabric。不过,此时,VIOS 或 AIX 系统均没有访问它。

图 4. 从 DS8300 到 NetApp 的存储迁移 — DS8300 VIOS — 当前状态
从 DS8300 到 NetApp 的存储迁移 -                     DS8300 VIOS - 当前状态
从 DS8300 到 NetApp 的存储迁移 - DS8300 VIOS - 当前状态

我们的程序文档大致列出了我们该如何迁移一个现有的 AIX LPAR,它当前为所有的磁盘(DS8300)流量使用了 hvio1 和 hvio2。LPAR 和 VIOS 位于一个 Power6 570 (570-1) 之上。新的 NetApp VIOS(hvio11 和 hvio12)也位于同一管理系统,并被用于所有虚拟 I/O 和 NetApp 存储设备之间的通信。这些细节在我们的计划过程中都已被捕获到了:

客户机 LPAR: lpar1

管理系统:570-1

DS8300 VIOS 对(源):hvio1 和 hvio2

NetApp VIOS 对(目标):hvio11 和 hvio12

当前的 VIOS 和 LPAR FC 适配器、DS8300 磁盘、虚拟适配器和虚拟磁盘配置均被捕获并用在计划中以便进行新磁盘的分配。比如,节选自我们的计划电子数据表的如下内容显示了每个 LPAR、所分配的当前 DS8300 磁盘、当前 VIOS、现有的 vhost/vscsi 关系、所需的新 NetApp LUN、新 VIOS 以及对于每个 LPAR 从 vhost 到 vscsi 的新映射。参看图 5、6 和 7。

图 5.
电子数据表的屏幕快照
电子数据表的屏幕快照
图 6.
电子数据表的屏幕快照
电子数据表的屏幕快照
图 7.
电子数据表的屏幕快照
电子数据表的屏幕快照

在我们迁移到 NetApp 存储阵列之前,存储管理员首先配置我们所需的 LUN 并准备将它们呈现给 NetApp VIOS hvio11 和 hvio12。为了分配顺利进行我们还为它们提供了如下信息(最低限度):

  • 客户机 LPAR 名称 : lpar1 (LPAR on 570-1)。SAN 引导。
  • 源 DS8300 VIOS 对的名称:hvio1 和 hvio2。
  • 目标 NetApp VIOS 对的名称:hvio11 和 hvio12。
  • 在迁移所涉及的所有 VIOS 上的所有 FC 适配器的 WWPN。
  • 所需的 LUN 的数量、大小和目的,比如 1 x 50GB Boot LUN - rootvg, 1 x 100GB Application data - datavg。

我们用几个 LVM 命令捕获当前的磁盘和卷组配置。

# lsdev -Cc disk
# lsvg
# lsvg –o | lsvg –l
# lsvg –o | lsvg -il
# lspv
# lsvg | lsvg –pi

当然,在对它进行任何更改之前,需要先备份我们的 LPAR,以防万一。这包括执行一个 mksysb 和 savevg 备份,然后用我们的公司备份工具进行一次文件级别的备份。

在开始迁移之前,我们部署了两个新的 VIOS(hvio11 和 hvio12)以便用于 NetApp。在我们的设计阶段,我们决定为了 NetApp VIOS 的构建,最好是部署 VIO 服务器的最新版本,版本 2.1。在两个 NetApp VIOS 上均安装了 NetApp MPIO Host Attachment 软件。这两个 VIOS 将会从 NetApp 存储进行 SAN 引导。请参看图 8。

图 8. 从 DS8300 到 NetApp 的存储迁移 — 引入 NetApp 存储和 VIOS
从 DS8300 到 NetApp 的存储迁移 — 引入 NetApp 存储和 VIOS
从 DS8300 到 NetApp 的存储迁移 — 引入 NetApp 存储和 VIOS

存储团队为 hvio11 和 hvio12 分配了一个 NetApp LUN (LUNy)。这个磁盘将被客户机 LPAR 用于 rootvg(引导磁盘)。

我们还向客户机 LPAR 动态添加(用 DLPAR)了两个新的 VSCSI 适配器,即 vscsi2 和 vscsi3,其中 vscsi2 连接到 hvio11,vscsi3 连接到 hvio12。同样地,使用 DLPAR,我们为 hvio11 和 hvio12 分配了一个新的虚拟 SCSI 服务器适配器(vhost)。我还用这些新创建的虚拟适配器更新了 VIOS 和 LPAR 分区概要文件(在 HMC 上)。

然后,我们将这个 LUN(以 Virtual Target Device 或 VTD)映射到每个 VIOS 上的客户机 LPAR 并将其呈给此 LPAR。这个磁盘(hdisk11)作为客户机上的一个虚拟 SCSI 磁盘。新 hdisk 已经被包含到了现有的引导卷组(rootvg,如 图 8 所示)。

LUN 分配到 NetApp VIOS 后,我们就要执行我们标准的 VIOS 到此客户机 LPAR 的磁盘映射,即用 mkvdev 和 lsmap 来创建并验证磁盘已被分配给正确的 LPAR。

在这个客户机 LPAR 上,我们运行了 cfgmgr 来发现新的 hdisk。我们验证了这个新的磁盘和路径都是可用的。到这个磁盘应该有两个路径,一个是通过 vscsi2 (hvio11),另一个是通过 vscsi3 (hvio12)。

# lsdev –Cc disk 
# lspv
# lspath –l hdisk11
Enabled hdisk11 vscsi2
Enabled hdisk11 vscsi3

将数据从旧的磁盘迁移到新的磁盘的方法将非常类似于之前的例子。只不过,这次我们将使用 mirrorvg(而非 migratepv)进行所有的数据迁移(包括数据卷组)。这些系统或者是开发系统或者是测试系统。因我们不想影响性能,而这些系统相对空闲或者用户数相对较少,所以我们能够添加额外的 I/O 动作,而无需太多的性能担忧。使用 mirrorvg 还能简化迁移,因为我们无需针对我们的每个源/目标磁盘各运行一次 migratepv 命令。

首先,我们向 rootvg 添加一个新的磁盘(hdisk11)。然后我们镜像此卷组和这个新的 hdisk。镜像过程在后台发生。请参看图 9。

# extendvg rootvg hdisk11	
# mirrorvg –S rootvg hdisk11
图 9. 迁移状态 — LVM 镜像
迁移状态 - LVM 镜像
迁移状态 - LVM 镜像

作为一种预先的防范措施,我们验证了 rootvg 现已被镜像、在引导列表中包含了新磁盘并为所镜像的卷组创建了新的引导映像。与以前一样,如果我需要在此刻重新引导这个 LPAR,我将有把握能够从任一磁盘引导。

# bosboot -a -d /dev/hdisk11
# bosboot –a –d /dev/hdisk0
# bootlist -m normal hdisk0 hdisk11 
# bootlist –m normal –o
# ipl_varyon -i

rootvg 成功镜像后,我们现在将能够再次解除镜像、从卷组和 ODM 删除旧的磁盘(hdisk0)。同样地,我们仍需要检查引导列表并为现在这个非镜像的卷组重新创建引导映像。

# ps –ef | grep sync
# lsvg –l rootvg
# unmirrorvg rootvg hdisk0	
# chpv –c hdisk0
# lspv –l hdisk0
# lsvg –l rootvg
# reducevg rootvg hdisk0
# lsvg –p rootvg
# rmdev -dl hdisk0
# bosboot -a -d /dev/hdisk11
# bootlist –m normal hdisk11
# bootlist –m normal -o

现在,有了 AIX OS 位于新 hdisk(NetApp LUN)之内,我们就能够迁移这些数据卷组。首先,我们标识出用于数据卷组迁移的那些 NetApp LUN。这些数据 LUN 早已被分配给了 VIOS 并已在客户机 LPAR 上进行了映射和配置。

同样地,我们使用 extendvg 来将这些 NetApp 磁盘添加到数据卷组(datavg)。

# extendvg datavg hdisk12 
# lsvg –p datavg
# lspv hdisk12

我们将卷组从 DS8300 磁盘(hdisk2)镜像到新的 NetApp 磁盘(hdisk12)。通过 –S 标志将镜像过程设置成在后台运行。为了确保卷组及逻辑卷已同步,在继续之前,我们检查没有过期的物理分区(PP)并且在后台也没有 LVM 同步过程仍在运行。

# mirrorvg –S datavg hdisk12 
# ps –ef | grep lresync
# lsvg –l datavg
datavg:
LV NAME   TYPE     LPs    PPs  PVs    LV STATE      MOUNT POINT
datalv    jfs2      96    192    2    open/syncd    /data
loglv01   jfs2log    1      2    2    open/syncd    N/A

镜像过程完成后,我们将这个卷组从 DS8300 存储(hdisk2)解除镜像。

# unmirrovg datavg hdisk2

为了验证 DS8300 hdisk 上不再有任何数据,运行 lspv 命令,之后不应返回任何输出。

# lspv –l hdisk2

现在,我们就能够使用 reducevg 从数据卷组删除这些 DS8300 hdisk 并从 ODM 删除这个磁盘。

# reducevg datavg hdisk2 
# rmdev –dl hdisk2

因这是一个虚拟的 I/O 环境,所以我们必须先执行一些额外的步骤,然后才能将这些 DS8300 LUN 交回给存储团队。

首先,我们必须从 DS8300 VIOS(hvio1 和 hvio2)删除 DS8300 磁盘的设备映射。我们还应该记录下 DS8300 LUN id (从 pcmpath 查询设备)以便我们可以提供给存储管理员一个可被重新回收的 LUN id 列表。在如下的例子中,我们检查了 vhost2 的磁盘映射并验证了这个备份设备 hdisk 号。然后,我们进入了 OEM VIOS 环境来运行 pcmpath 实用工具并获得与每个 hdisk 相关联的 LUN id。接下来,我们运行 rmvdev 命令来删除与这个 hdisk(比如 vtscsi2)相关联的所有虚拟目标设备(VTD)映射。最后,我们从 VIOS 上的 ODM 删除此 hdisk。这些旧的 DS8300 LUN 现在就可以由存储团队收回。

$ lsmap –vadapter vhost2 | grep hdisk
$ oem_setup_env
# pcmpath query device 20 | grep Serial
# exit
$ rmvdev -vtd vtscsi2
$ rmdev –dev hdisk20

虚拟 SCSI 服务器适配器(即 vhost2)可从每个 VIOS ($ rmdev –dev vhost2) 删除。并且使用 DLPAR,我们将能够从 LPAR 定义删除这些虚拟适配器。VIOS 分区概要文件也进行了更新以便反映这些虚拟设备的删除。

在客户机 LPAR 上的原始虚拟 SCSI 适配器 vscsi0 和 vscsi1 现在也被使用 rmdev 和 DLPAR 删除(LPAR 分区概要文件也进行了更新)。

同样地,此时,如果所有数据迁移均成功完成,就应该重新引导这个 LPAR。在重新引导后,验证正确的系统操作(卷组在线、逻辑卷打开/同步、文件系统装备完毕等)。

# lsvg
# lsvg –o
# df
# mount
# lsvg | lsvg –il | grep close

在变更成功完成后,我们就可以为迁移后的系统配置进行建档。至此,我们到达了我们理想的最终状态。这个 AIX 系统现在通过我们新的 VIOS 使用 NetApp 存储。请参看图 10。

DS8300(在本例中)将会继续存在于我们的系统中。同样地,用来向客户机 LPAR 提供 DS8300 存储的 VIOS 也将继续存在。对于那些对性能和可用性要求较高的 AIX 系统将需要使用 DS 存储。而所有其他的非关键的 AIX 测试系统将使用这个 NetApp 设备。

图 10. VIOS 最终状态
VIOS 最终状态
VIOS 最终状态

结束语

AIX 存储迁移既耗时又需要技巧。没有最新的存储虚拟化技术,比如 IBM 的 SVC,这个任务将需要若干阶段和任务。

所幸的是,AIX LVM 是一个非常成熟、稳定和强壮的工具。在我们面对这些挑战时,它能极大地帮助我们。

使用 LVM,我们能够减少迁移数据所需的中断期。如能在系统/应用程序运行期间仍能在源磁盘和目标磁盘间移动数据,这对于一个操作计算环境而言是一个巨大的优势。

与以往一样,我强烈建议您在尝试在产品系统中进行存储迁移之前先在一个非生产环境内测试您的过程。

如果您感觉本文吸引了您,还有其他一些 LVM 命令也很值得研究,比如 replacepv、redefinevg 和 recreatevg。LVM 热备份策略 也很有趣。参阅如下的参考资料部分以了解更多。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=547994
ArticleTitle=使用 AIX Logical Volume Manager 执行 SAN 存储迁移
publish-date=09262010