Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1566785
  • 博文数量: 77
  • 博客积分: 1205
  • 博客等级: 少尉
  • 技术积分: 4476
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-22 21:48
文章分类
文章存档

2018年(1)

2017年(1)

2015年(1)

2014年(18)

2013年(12)

2012年(44)

分类: 系统运维

2012-08-20 16:49:41

本文参考链接:

这篇博文要完成的目标是,将一个现存的AIX系统通过mksysb进行备份,然后利用NIM将其迁移到一个新的LPAR上。为了操作的方便,这里我把上篇博文所配置的NIM服务器作为现存的AIX系统(下简称源系统),在它上面完成系统备份工作,然后将该系统备份映像通过NIM安装到一个新生成的LPAR上。

1. 我们首先在源系统上用mksysb来生成一个备份映像文件。
mksysb也是NIM的一种资源,所以和lpp_source以及SPOT资源一样,我打算也为mksysb映像文件设置独立的文件系统存储空间:
bash-3.2#crfs -v jfs2 -g rootvg -A yes -m /export/nim/mksysb -a size=20G
bash-3.2#mount /export/nim/mksysb

有了存放空间之后,就可以用mksysb来备份系统了:
bash-3.2#mksysb -i /export/nim/mksysb/nim-master.sysb
备份系统映像文件名为nim-master.sysb. 这条命令在我的系统上执行了大约半个小时才完成,之后就看到生成了nim-master.sysb文件了。

2. 在步骤1的系统备份文件基础上构造一个类型为mksysb的NIM资源:
bash-3.2#nim -o define -t mksysb -a server=master -a location=/export/nim/mksysb/nim-master.sysb -a comments='mksysb of nim master'  nim-master.sysb
上面的命令中,location指明了该资源所表示的系统备份文件的完整路径(包括文件名),该资源的名称指定为nim-master-sysb.

可以通过lsnim命令来仔细查看一下该资源的详细信息:


命令输出中的alloc_count = 0表明该资源还没有分配给任何一个nim client使用。

3. 在nim-master-sysb资源基础上创建一个SPOT资源nim-master-spot:
bash-3.2#nim -o define -t spot -a server=master -a source=nim-master-sysb -a location=/export/nim/spot -a auto_expand=yes -a comments='spot created from the mksysb of the nim master'  nim-master-spot

4. 当mksysb与spot资源都创建好后,接下来需要为目标LPAR创建一个machine资源dennis-client:
bash-3.2#nim -o define -t standalone -a platform=chrp -a if1="find_net dennis-client 0" -a netboot_kernel=mp -a connect=shell  dennis-client

5. 有了上面的基础之后,就可以将源系统的备份映像通过NIM安装到目标LPAR上了。现在目标LPAR的状态是只是被创建出来,拥有一个virtual ethernet adapter,处于Not Active.
bash-3.2#nim -o bos_inst -a source=mksysb -a spot=nim-master-spot -a mksysb=nim-master-sysb -a boot_client=no  dennis-client
这一命令有几个参数有必要解释一下,source=mksysb表明这是一个NIM master发起的类型为mksysb的安装。 参数"-a spot=nim-master-spot -a mksysb=nim-master-sysb"将前面步骤2和3中创建的mksysb和spot类型的资源allocate给了client machine,也就是dennis-client.
这个命令会在NIM服务器的/tftpboot目录里准备一大堆东西,以便client machine在boot时通过bootp来取启动映像等。这个命令成功完成后,会看到nim-master-spot和nim-master-sysb资源中的alloc_count域的值从0变成了1. 而且如果看dennis-client资源时,会看到nim-master-spot和nim-master-sysb都已经分配给了它:



(
如果在实际当中需要把分配给dennis-client的资源释放掉,可以用以下命令:
-bash-3.2$nim -o reset -F dennis-client
-bash-3.2$nim -o deallocate -a subclass=all dennis-client
正常情况下我们不需要显式调用上面的命令来将client machine中所分配的资源释放掉,这是因为当一个client machine成功通过NIM完成安装过程之后,所有allocate给它的资源都会被自动deallocate掉。
如果只想从client machine中deallocate某一个资源,比如bosinst_data类型的资源,那么可以:
-bash-3.2$nim -o reset -F dennis-client
-bash-3.2$nim -o deallocate -a bosinst_data=nim-master-bosinst dennis-client
后一条命令的反向操作就是:
bash-3.2# nim -o allocate -a bosinst_data=nim-master-bosinst dennis-client


6. 在VIOS/IVM环境下通过lpar_netboot来启动目标LPAR并通过NIM来安装之前的mksysb映像文件:
-bash-3.2$lpar_netboot -T on -v -x -f -D -t ent -s auto -d auto -S 172.16.20.30 -G 172.16.20.1 -C 172.16.20.40 dennis-client dennis-client Server-8204-E8A-SN069C7F5

在我实际的操作环境中,发生了错误,就是在第6步开始通过NIM安装mksysb image file时,提示磁盘空间不够。这是因为我们的源系统所在的rootvg为150G,而目标系统LPAR我通过VIOS提供给它的磁盘空间只有120G。所以为了解决这个问题,又不得不引入bosinst_data资源。

mksysb所生成的文件中,内置有备份发生时所在系统的一些信息,典型的比如当前系统磁盘空间的大小,所以当我们想通过NIM来把该备份映像安装到一个磁盘空间比被备份系统小的系统上时就会出现问题,解决方法是在mksysb映像文件的基础上重新生成一个bosinst.data文件,然后修改其中的磁盘空间大小,再生成一个bosinst_data类型的资源,将其分配给client machine.
首先,从mksysb映像文件中提取出bosinst.data文件:
-bash-3.2$cd /export/nim/mksysb
-bash-3.2$restore -xqvf nim-master.sysb ./bosinst.data

然后我们编辑新生成的bosinst.data文件,主要是修改这一段:
target_disk_data:
        PVID = 00c8b7e42e4b9f54
  PHYSICAL_LOCATION = U8204.E8A.068B7E4-V2-C2-T1-L8200000000000000
        CONNECTION = vscsi0//820000000000
        LOCATION =
        SIZE_MB =
103600
        HDISKNAME = hdisk0
红色部分原来是153600,这是因为被备份的系统所在的rootvg大小是150G。

修改完bosinst.data文件之后,我们需要在它的基础上定义一个新的bosinst_data类型的资源,然后将其分配给我们的client machine,也就是dennis-client。我们之所以要这么做,是因为显式地定义这个资源并分配给client machine,该资源所对应的bosinst.data文件中的数据会overwrite掉mksysb备份系统时built-in的那个bosinst.data:
-bash-3.2$nim -o define -t bosinst_data -a location=/export/nim/mksysb/bosinst.data  -a server=master -a comments="bosinst.data create from nim-master mksysb image"  nim-master-bosinst

然后将上述新生成的bosinst_data资源分配给dennis-client:
-bash-3.2$nim -o bos_inst -a source=mksysb -a spot=nim-master-spot -a mksysb=nim-master-sysb -a bosinst_data=nim-master-bosinst -a boot_client=no dennis-client

这样的话我们已经完成了在NIM服务器上bootp一个新LPAR的所有准备工作。接下来我们需要登录到VIOS/IVM环境下,通过lpar_netboot命令来启动并引导安装此前由mksysb备份的系统映像,首先登录到VIOS/IVM环境,执行lpar_netboot:
-bash-3.2$ lpar_netboot -T on -v -x -f -D -t ent -s auto -d auto -S 172.16.20.30 -G 172.16.20.1 -C 172.16.20.40 dennis-client dennis-client Server-8204-E8A-SN069C7F5

这个命令成功执行后,新创建的LPAR将被power on并开始通过bootp去引导安装NIM服务器/tftpboot目录下的安装映像。一切顺利的话,新的LPAR将获得一个和被备份系统完全一样的clone环境。这里特别说明的是,在我们的case里,由于备份的是一个nim master系统,IBM不希望在一个环境中出现多个nim master,因为这可能会导致nim操作的混乱,所以NIM相关的一些东西在新clone的系统中是无法正常work的。




阅读(10794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~