使用 alt_disk_copy 克隆 rootvg
地址:http://www.ibm.com/developerworks/cn/aix/library/au-alt_disk_copy/
简介
大多数系统管理员都遇到过以下情况:
- 一次 ML 升级失败了。
- 问题一直持续到快下班时。
- 您无法解决问题。
- 叫第三方支持来解决它已经太晚了。
- 您要下班了。
通常,这种情况下需要 rootvg 恢复,无论是使用磁带 mksysb 恢复,还是网络引导恢复。毫无疑问,这是让人难受的!使用 alt_disk_copy 方法复制 rootvg 所需的时间很少,与重新引导以将 rootvg 恢复到升级之前的状态所需的时间差不多。本文讲解在应用 AIX 升级时如何使用 alt_disk_copy 以及如何恢复 rootvg。还可以使用 alt_disk_copy 测试两个不同版本的 AIX。只需升级一个磁盘,然后从它引导;当需要返回到另一个版本时,只需从另一个磁盘引导。对于 rootvg 的定期在线备份,常常使用 alt_disk_copy 把 rootvg 克隆到空闲磁盘上。它还可以作为 rootvg 的硬件迁移工具。
本文主要关注典型的 rootvg 两磁盘软件镜像设置。但是,alt_disk_copy 不仅适用于这种两磁盘设置;相同的原理也可以应用于多种软件镜像解决方案。
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
使用 alt_disk_copy 克隆 rootvg的更多相关文章
- HACMP 学习笔记--转载自wangjialiang-csdn博客
An41 教程: Ha: 初始阶段的规划最重要 第一部分:概念和模型 Ha 目标:掩盖和消除计划和非计划的宕机 Eliminate SPOF :消除单节点故障, single point of fai ...
- AIX 常用命令和知识
BOOTLIST:#bootlist -m normal -o (查看bootlist)#bootlist -m normal (设置bootlist为空,谁要在我机器上执行我就要哭了)#boot ...
- AIX常用命令汇总(转)
在本文中,我将讨论这其中的一些核心命令.其目的旨在为您提供一个可用作便捷参考的列表.虽然这些命令的行为在所有 AIX 版本中都应该相同,但是仅在 AIX 5.3 下对它们进行了测试. 注意:以下段落中 ...
- 创建AIX克隆盘
1.AIX的克隆盘技术 AIX克隆盘,AIX rootvg的备用替换盘,可以用于保留AIX的原始状态,使AIX在进行升级操作时保留一个AIX操作系统的原始映像,在系统需要时实现即时还原,回到升级操作前 ...
- SQL Server2014 SP2新增的数据库克隆功能
SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtest use testtest go --创建表 )) --插入数 ...
- GitHub实战系列~4.把github里面的库克隆到指定目录+日常使用 2015-12-11
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...
- [转]Oracle 12c多租户特性详解:PDB 的创建、克隆与维护
转自:http://chuansong.me/n/443660447865 PDB 的创建和访问 在使用 dbca 建库时,创建数据库之前,可以保存一下创建脚本,分析其具体执行过程.以自定义方式创建名 ...
- 克隆虚机网卡出现 Device eth0 does not seem to be present, delaying initialization 错误
错误原因 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的 ...
- git用法之常用命令[克隆、提交]
1.克隆/下载项目 1)git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git 或者 2)git clone http://git.soyd ...
随机推荐
- 线特征---LSD and LBD程序运行(一)
最近在看有关特征提取的线特征,暑期就看了相关的论文:<基于点线综合特征的双目视觉SLAM方法_谢晓佳>,最近呢,把里面有关线特征提取LSD和描述子LBD的代码跑了一遍,记录如下: [1]L ...
- stark组件开发之自动生成URL
app01\model.py from django.db import models # Create your models here. class Depart(models.Model): i ...
- SharpSvn 调用在运行时提示加载程序集出错,或有依赖项
策略后引用: SharpSvn, Version=1.8009.3299.43, Culture=neutral, PublicKeyToken=d729672594885a28日志: 尝试下载新的 ...
- 主机在无线网络的情况下,设置centos7.2虚拟机网络联通
1.vmvare中,编辑-虚拟网络编辑器 2.虚拟机设置 3.进入linux登录后 输入nmtui 4激活连接 5大功告成,输入ping www.baidu.com 发现ping通了
- Java VisualVM 插件地址
打开Java VisualVM检查更新插件时,默认的连接连不上,通过浏览器访问之后发现默认的服务器已经404,新地址已经迁移到github,下面这个地址里面有不同版本jdk对应的插件中心地址. htt ...
- andorid 三种方式的练习
layout1 线性布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- andorid 表格布局
tablelayout.xml表格布局 <?xml version="1.0" encoding="utf-8"?> <TableLayout ...
- iOS.GetCurrentTimestamp
Cocoa 中测量时间的方法 1. The Methods to Get Current Timestamp iOS中获取时间戳的方法: A. CACurrentMediaTime() B. gett ...
- MyBatis Generator介绍
MyBatis Generator介绍 MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和 ...
- JSP概述、API、注释
JSP自带的API包含4个包,可通过Tomcat的官网查看,JSP和EL的API是分开的 javax.servlet.jsp // 包含用于Servlet/JSP容器将JSP页面翻译为Servlet的 ...