yanjp_hn
作者yanjp_hn·2011-07-21 14:46
系统工程师·电子厂

使用 alt_disk_copy 克隆 rootvg

字数 18617阅读 3329评论 1赞 1
在ibm的网站上看关于使用alt_disk_copy克隆rootvg的详细使用,先记录下来,已方便学习。
 

alt_disk 实用程序由以下命令组成:

  • alt_disk_copy 执行磁盘克隆。
  • alt_rootvg_op 在克隆的 rootvg 上执行维护操作。
  • alt_disk_mysysb 执行 mksysb 复制。

本文不讨论 alt_disk_mysysb。

这些 alt 命令需要的文件如下:

bos.alt_disk_install.boot_images

bos.alt_disk_install.rte    

bos.msg.en_US.alt_disk_install.rte

 

 

概述

因为 alt_disk_copy 命令把当前正在运行的 rootvg 复制到另一个磁盘,所以一定要挂载希望克隆的所有文件系统。alt_disk_copy 只复制 rootvg 中当前挂载的文件系统。执行 rootvg 不需要停止进程;但是,这个过程要花费一段时间,所以最好在午餐时或晚上执行(请记住,它复制正在运行的 rootvg)。复制完成之后,就有了两个 rootvg 卷组:

rootvg

altinst_rootvg

 

其中的 altinst_rootvg 是克隆的非活跃/不变的 rootvg。在克隆的 rootvg 中,所有逻辑卷名前面有 ‘alt’ 前缀。引导列表也改为从 altinst_rootvg 引导。AIX 喜欢这样做;它假设您希望从克隆的 rootvg 而不是真实的 rootvg 引导。如果现在重新引导系统,当系统运行起来之后,原来的 rootvg 将变成:

old_rootvg

 

altinst_rootvg 变成:

rootvg

 

如果决定从 old_rootvg 重新引导,当系统运行起来之后,old_rootvg 变成:

rootvg

 

rootvg 变成:

altinst_rootvg

 

不必担心原来的和克隆的 rootvg 的重命名。稍后讨论这个问题。

在成功地完成升级之后,可以使用 alt_rootvg_op 销毁包含克隆的 rootvg 的磁盘,重新建立镜像。如果升级失败,也没问题 —— 只需制作第三方支持所需的快照,然后从原来的 rootvg 引导。对于登录的用户来说,没有什么影响。

当从第三方支持收到修复建议时,只需从克隆的 rootvg 重新引导并纠正问题。不需要重新应用升级,因为在克隆的 rootvg 上已经应用了升级。测试升级结果,如果一切正常,就销毁原来的 rootvg,重新建立镜像。

在克隆的 rootvg 上不要使用 importvg 或 exportvg;而是应该使用 alt 命令。

对于克隆的 rootvg,可以使用 alt_rootvg_op 唤醒它,从而挂载文件系统。可以在克隆的文件系统上执行所需的任何操作,比如纠正链接、为第三方支持收集信息等,然后让这个磁盘继续休眠,这也会卸载文件系统。

在执行克隆时排除某些目录

在执行克隆时,可以通过创建 /etc/exclude.rootvg 文件排除某些目录。文件中的条目应该以 ^./ 开头。‘^’ 表示搜索行开头的字符串,‘./’ 表示相对于当前目录。建议您这么做,因为 alt_disk_copy 使用 grep 搜索字符串,这么做它就不会误解命令。例如,要想排除以下目录,就要提供完整的路径名并加上前缀 ‘^.’:

/home/reps

/opt/installs

 

可以在 /etc/exclude.rootvg 文件中插入:

^./home/reps

^./opt/installs

 

要确保最后一个条目后面没有空行。

 

开始克隆吧!

现在,我们先看看典型的克隆。假设您有 rootvg 的两磁盘(hdisk0 和 hdisk1)软件镜像,将在这个系统上进行 ML 升级(或对安装在 rootvg 中的应用程序进行升级)。我将讲解如何执行克隆,以及在成功地升级之后,如何让这个磁盘回到 rootvg 中并重新建立镜像。还会讲解在升级失败时可以采取的措施。

操作前检查

在取消 rootvg 的镜像之前,首先花些时间确认镜像是正确的,没有过时的 LV,因为如果有这种情况,unmirrorvg 命令会失败。当然,如果 unmirrorvg 失败,可以使用 migratepv 在两个磁盘之间相互复制缺少的 LV。检查镜像是否正确的简单方法是执行以下命令:

lsvg -l rootvg

 

对于每个数据输出行,检查 PPs 列的输出是否是 LPs 列的两倍。

另一种检查方法是使用 lspv -l <hdiskx>,通过对比输出确认两个磁盘上都有每个 LV 的条目。

接下来,执行 bosboot 命令。我自己在执行重新引导或涉及 rootvg 的磁盘操作之前总是这么做;这是一个好习惯:

# bosboot -a

bosboot: Boot image is 35803 512 byte blocks.

 

本文使用的磁盘如下:

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

接下来,取消 rootvg 的镜像,选择将用来克隆 rootvg 的磁盘。这里使用 hdisk1 克隆 rootvg,所以执行以下 unmirrorvg 命令:

# unmirrorvg rootvg hdisk1

0516-1246 rmlvcopy: If hd5 is the boot logical volume, please run 'chpv -c <disk

name>'

        as root user to clear the boot record and avoid a potential boot

        off an old boot image that may reside on the disk from which this

        logical volume is moved/removed.

0516-1804 chvg: The quorum change takes effect immediately.

0516-1144 unmirrorvg: rootvg successfully unmirrored, user should perform

        bosboot of system to reinitialize boot records.  Then, user must modify

        bootlist to just include:  hdisk0.

 

接下来,让 hdisk1 脱离 rootvg 以准备克隆:

# reducevg rootvg hdisk1

 

确认这个磁盘目前没有分配给任何卷组:

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    None

 

 

运行 alt_disk_copy

现在可以执行 alt_disk_copy 了。只需通过命令参数指定 hdisk1。基本格式为:

alt_disk_copy -d <hdisk to clone rootvg>

 

使用排除列表的基本格式为:

alt_disk_copy -e /etc/exclude.rootvg -d <hdisk to clone rootvg>

 

alt_disk_copy 命令的输出如下(已经做了删节):

# alt_disk_copy -d hdisk1

Calling mkszfile to create new /image.data file.

Checking disk sizes.

Creating cloned rootvg volume group and associated logical volumes.

Creating logical volume alt_hd5

Creating logical volume alt_hd6

Creating logical volume alt_hd8

Creating logical volume alt_hd4

Creating logical volume alt_hd2

Creating logical volume alt_hd9var

Creating logical volume alt_hd3

Creating logical volume alt_hd1

Creating logical volume alt_hd10opt

Creating /alt_inst/ file system.

Creating /alt_inst/home file system.

Creating /alt_inst/opt file system.

Creating /alt_inst/tmp file system.

…......

…......

for backup and restore into the alternate file system...

Backing-up the rootvg files and restoring them to the

alternate file system...

Modifying ODM on cloned disk.

Building boot image on cloned disk.

forced unmount of /alt_inst/var

forced unmount of /alt_inst/usr

forced unmount of /alt_inst/tmp

forced unmount of /alt_inst/opt

forced unmount of /alt_inst/home

…..

…..

Changing logical volume names in volume group descriptor area.

Fixing LV control blocks...

Fixing file system superblocks...

Bootlist is set to the boot disk: hdisk1

 

现在,有了一个克隆的 rootvg,它的名称是 altinst_rootvg。注意,前面的输出表明,alt_disk_copy 已经把引导列表改为从克隆的 rootvg(现在是 hdisk1)引导。

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    altinst_rootvg

 

可以通过执行 bootlist 命令确认这一点。

# bootlist -m normal -o

hdisk1 blv=hd5

 

现在,可以安装 ML 升级了。在执行 ML 升级之后,需要重新引导系统。对于这个示例,ML 升级将安装在真正的 rootvg(即 hdisk0)上,所以现在需要修改引导列表,希望系统在升级之后能够运行正常。

# bootlist -m normal hdisk0

 

确认对引导列表的修改:

# bootlist -m normal -o

hdisk0 blv=hd5

 

接下来,安装 ML 升级,然后重新引导。在重新引导之后,系统上有 rootvg 和克隆的 rootvg。可以看到根卷组没有改名,因为我们是从真正的 rootvg (hdisk0) 引导的:

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    altinst_rootvg

 

接下来,假设升级过程一切正常,用户和系统管理员可以顺利地登录。现在可以销毁克隆的 rootvg,让磁盘回到 rootvg 中供镜像使用。使用带 X 参数的 alt_rootvg_op 命令销毁克隆的 rootvg。基本格式为:

alt_rootvg_op -X < cloned rootvg to destroy>

 

# alt_rootvg_op -X altinst_rootvg

Bootlist is set to the boot disk: hdisk0

 

接下来,让 hdisk1 回到 rootvg 中,然后用这个磁盘重新建立镜像:

# extendvg -f rootvg hdisk1

# mirrorvg rootvg hdisk1

0516-1804 chvg: The quorum change takes effect immediately.

0516-1126 mirrorvg: rootvg successfully mirrored, user should perform

        bosboot of system to initialize boot records.  Then, user must modify

        bootlist to include:  hdisk0 hdisk1.

 

修改引导列表,在其中包含这两个磁盘,运行 bosboot:

# bootlist -m normal -o hdisk0 hdisk1

hdisk0 blv=hd5

hdisk1

# bosboot -a

bosboot: Boot image is 35803 512 byte blocks.

# bootlist -m normal -o

hdisk0 blv=hd5

hdisk1 blv=hd5

 

对于这个示例,任务完成了。升级的安装非常顺利。系统又可以正常操作了。如果一切顺利,用 alt_disk_copy 做这么多工作确实没什么用。但是,如果升级失败了呢?我们有什么办法?我们继续讨论。

 

请恢复原状

现在假设刚安装了 ML 升级并重新引导,在运行 AIX 时发现了问题。请记住,磁盘目前处于以下状态:

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    altinst_rootvg

 

既然出现了问题,您以后一定会联系第三方支持,所以现在应该制作正在运行的系统的快照。再次重申,当前的状态是:

  • rootvg:升级后有问题的拷贝。
  • altinst_rootvg :升级前的正常拷贝。

恢复原状

要想返回到升级前的状态,只需把引导列表改为从 hdisk1 (altinst_rootvg) 引导,然后重新引导。就这么简单:

# bootlist -m normal -o hdisk1

hdisk1 blv=hd5

# bootlist -m normal -o

hdisk1 blv=hd5

# shutdown -Fr

 

重新引导之后,rootvg 磁盘如下:

# lspv

hdisk0          0041a97b0622ef7f                    old_rootvg

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

接下来,执行 bosboot 并检查引导列表:

# bosboot -a

bosboot: Boot image is 35803 512 byte blocks.

# bootlist -m normal -o

hdisk1 blv=hd5

 

系统现在已经回到了升级前的状态。

 

修复升级后问题

得到第三方支持提供的信息之后,在方便的时候(并得到最终用户同意),可以从 ML 升级失败的磁盘 (hdisk0) 引导,应用解决问题的修复措施。因此,把引导列表改为从 hdisk0 (old_rootvg) 引导并重新引导:

# bootlist -m normal -o hdisk0

# shutdown -Fr

 

重新引导(准备应用修复措施)之后,现在的 rootvg 磁盘如下:

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    altinst_rootvg

 

接下来,应用补丁或按指示执行纠正措施。假设系统现在又可以正常操作了。

测试系统之后,使用前面介绍的命令把 hdisk1 重新放回 rootvg 中:

#

alt_rootvg_op -X altinst_rootvg

 

Bootlist is set to the boot disk: hdisk0

# extendvg -f rootvg hdisk1

# mirrorvg rootvg hdisk1

bootlist -m normal -o hdisk0 hdisk1

hdisk0 blv=hd5

hdisk1

# bosboot -a

 

bosboot: Boot image is 35803 512 byte blocks.

#  bootlist -m normal -o

hdisk0 blv=hd5

hdisk1 blv=hd5

# lspv

hdisk0          0041a97b0622ef7f                    rootvg          active

hdisk1          00452f0b2b1ec84c                    rootvg          active



唤醒磁盘

在克隆的 rootvg 环境中,可以唤醒克隆的 rootvg,这会挂载其中的所有文件系统。这非常有用,因为您有一个运行良好的系统,同时可以挂载克隆的 rootvg 上的文件系统以进一步研究或修改文件。在唤醒克隆的 rootvg 时,它被改名为:

altinst_rootvg

 

在仍然挂载着克隆的 rootvg 文件系统时,不要执行重新引导,因为这会产生出乎意料的结果。还可以修改克隆的 rootvg 的名称,这在有多个克隆的 rootvg 时有用:

假设磁盘处于以下状态:

# lspv

hdisk0          0041a97b0622ef7f                    old_rootvg

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

唤醒磁盘的基本命令格式是:

alt_rootvg_op -W -d < hdisk>

 

现在,我们来唤醒 old_rootvg (hdisk0):

# alt_rootvg_op -W -d hdisk0

Waking up old_rootvg volume group ...

 

检查磁盘的状态,可以发现 old_rootvg 已经改名为 altinst_rootvg 并已经激活。

# lspv

hdisk0          0041a97b0622ef7f                    altinst_rootvg  active

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

克隆的文件系统已经挂载,它们的名称带 /alt_ 前缀:

# df -m

Filesystem    MB blocks      Free %Used    Iused %Iused Mounted on

/dev/hd4         128.00    102.31   21%     2659    11% /

/dev/hd2        1968.00    111.64   95%    40407    58% /usr

/dev/hd9var      112.00     77.82   31%      485     3% /var

/dev/hd3          96.00     69.88   28%      330     3% /tmp

/dev/hd1         208.00    118.27   44%     1987     7% /home

/proc                 -         -    -         -     -  /proc

/dev/hd10opt    1712.00   1445.83   16%     6984     3% /opt

/dev/alt_hd4     128.00    102.16   21%     2645    11% /alt_inst

/dev/alt_hd1     208.00     33.64   84%     1987    21% /alt_inst/home

/dev/alt_hd10opt   1712.00   1445.77   16%     6984     3% /alt_inst/opt

/dev/alt_hd3      96.00     72.38   25%      335     2% /alt_inst/tmp

/dev/alt_hd2    1968.00    100.32   95%    40407    59% /alt_inst/usr

/dev/alt_hd9var    112.00     77.53   31%      477     3% /alt_inst/var

 

现在,可以在克隆的 rootvg 上修改文件或进一步进行研究。现在可以访问克隆的文件系统。完成这些任务之后,让克隆的 rootvg 恢复休眠状态,同时对这个磁盘执行 bosboot。基本命令格式为:

alt_rootvg_op -S -t <hdisk>

 

现在,我们让 altinst_rootvg 休眠:

# alt_rootvg_op -S -t hdisk0

Putting volume group altinst_rootvg to sleep ...

Building boot image on cloned disk.

forced unmount of /alt_inst/var

forced unmount of /alt_inst/usr

forced unmount of /alt_inst/tmp

forced unmount of /alt_inst/opt

forced unmount of /alt_inst/home

forced unmount of /alt_inst

forced unmount of /alt_inst

Fixing LV control blocks...

Fixing file system superblocks...

 

磁盘的当前状态是:

# lspv

hdisk0          0041a97b0622ef7f                    altinst_rootvg

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

可以看到克隆的 rootvg 的名称仍然是 altinst_rootvg。

为了避免混淆,有时候最好恢复磁盘原来的状态,尤其是在有多个克隆的 rootvg 的情况下。所以把 altinst_rootvg 改名为 old_rootvg。基本格式是:

alt_rootvg_op -v <new cloned rootvg name> -d <hdisk>

 

所以对于这个示例,应该执行:

# alt_rootvg_op -v old_rootvg -d hdisk0

# lspv

hdisk0          0041a97b0622ef7f                    old_rootvg

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

当然,如果愿意,可以把克隆的 rootvg 改为更有意义的名称。

 # alt_rootvg_op -v bad_rootvg -d hdisk0

bash-2.05a# lspv

hdisk0          0041a97b0622ef7f                    bad_rootvg

hdisk1          00452f0b2b1ec84c                    rootvg          active

 

不能把克隆的 rootvg 改名为 altinst_rootvg;这是一个保留的名称。

现在,系统操作是否正常取决于应用的修复措施是否有效。

如果在 hdisk0 (old_rootvg) 上应用的修复措施是有效的,就用新的 ML 版本运行系统。

确认系统将从 hdisk0 引导:

# bootlist -m normal -o hdisk0

 

重新引导:

# shutdown -Fr

 

销毁克隆的磁盘 hdisk1(我们从 old_rootvg 重新引导;它现在变成 altinst_rootvg):

# alt_rootvg_op -X altinst_rootvg

 

hdisk1 回到 rootvg 中供镜像使用:

# extendvg -f rootvg hdisk1

# mirrorvg rootvg hdisk1

# bosboot -a

# bootlist -m normal -o hdisk0 hdisk1

 

如果修复无效,就仍然使用原来的 ML 版本,以后再修复:

确认系统将从 hdisk1 引导:

# bootlist -m normal -o hdisk1

 

销毁克隆的磁盘 hdisk0 (old_rootvg):

# alt_rootvg_op -X old_rootvg

 

hdisk0 回到 rootvg 中供镜像使用:

# extendvg -f rootvg hdisk0

# mirrorvg rootvg hdisk0

# bosboot -a

# bootlist -m normal -o hdisk0 hdisk1

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论1 条评论

GloryLewGloryLew项目经理河北东软软件有限公司
2011-07-30 19:24
这个是好东东
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广