wangmj
作者wangmj2017-08-10 21:13
系统运维工程师, CES

NIM迁移恢复OS时磁盘空间不足的处理方法

字数 6866阅读 903评论 0赞 4

在恢复时报错提示如下

A disk of size 140013 was specified in the
bosinst.data file, but there is not a disk of at least
that size on the system.

上述情况表明待恢复系统没有大于或者等于原系统rootvg磁盘,根据提示该信息记录在bosinst.data文件中

下面介绍如何取得bosinst.data文件并进行编辑
如果原系统目前正在运行,则可以将其从原系统copy至nim服务器上

scp root@App:/var/adm/ras/bosinst.data /export/nim/mksysb/

或者直接从备份镜像中提取

cd /export/nim/mksysb/
restore -vxqf mksysb_app01 ./bosinst.data

下述为我提取的过程

nim:/export/nim/mksysb# restore -vxqf mksysb_app01 ./bosinst.data
New volume on mksysb_app:
Cluster size is 51200 bytes (100 blocks).
The volume number is 1.
The backup date is: Wed Sep 23 15:45:25 BEIST 2015
Files are backed up by name.
The user is root.
x 6847 ./bosinst.data
The total size is 6847 bytes.
The number of restored files is 1.
nim:/export/nim/mksysb# ls -l bosinst.data
-rw-r--r-- 1 root system 6847 Sep 23 15:45 bosinst.data

对bosinst.data文件进行编辑,主要编辑的字段为target_disk_data,它记录了原系统rootvg中磁盘的信息
下述是针对rootvg就一块硬盘的情况,如果target_disk_data记录了多块硬盘,处理方式请看文档后半部分

target_disk_data:
PVID = 00c9691240e6f180
PHYSICAL_LOCATION = U9117.MMA.0696912-V8-C2-T1-L8100000000000000
CONNECTION = vscsi0//810000000000
LOCATION =
SIZE_MB = 140013 ##此为原磁盘的大小
HDISKNAME = hdisk0

建议将SIZE_MB直接留空,修改后信息如下:

target_disk_data:
PVID = 00c9691240e6f180
PHYSICAL_LOCATION = U9117.MMA.0696912-V8-C2-T1-L8100000000000000
CONNECTION = vscsi0//810000000000
LOCATION =
SIZE_MB =
HDISKNAME = hdisk0

在nim上定义bosinst_data的资源

nim -o define -t bosinst_data -a server=master -a location=/export/nim/mksysb/bosinst.data bosinst_data

由于上一次恢复未成功,此时主机还有资源,需要reset其资源

smit nim_mac
->Perform Operations on Machines
->选择待恢复的主机
->选择reset操作

将新定义的bosinst_data资源也指定给待恢复主机

nim -o bos_inst -a source=mksysb -a spot=spot_app01 -a mksysb=mksysb_app01 -a bosinst_data=bosinst_data -a accept_licenses=yes -a boot_client=no SKAPP

使用HMC console终端从网络启动

如果报错提示如下

The data file did not specify enough disk space to
contain the operating system.

上述提示不仅仅由于原系统磁盘总空间大于待恢复主机的,而且原系统中已分配的空间也大于待恢复主机,但是实际空间小于待恢复主机,此时需要修改bosinst.data文件及image.data文件,bosinst.data文件修改方法如上,image.data文件的取得方式可以参考bosinst.data,我这里使用第二种方法

restore -vxqf mksysb_app01 ./image.data

编辑image.data
统计lv_data字段中LPS和并计算所有LPS的总大小,确认是否大于待恢复主机的磁盘空间;
统计lv_data字段中LV_MIN_LPS和并计算所有LV_MIN_LPS的总大小,确认是否小于待恢复主机的磁盘空间;
如果满足上述2个条件,则适当修改某些LV的LPS数,如:

lv_data:
VOLUME_GROUP= rootvg
LV_SOURCE_DISK_LIST= hdisk0
LV_IDENTIFIER= 00c9691200004c000000014ff290f5fd.13
LOGICAL_VOLUME= lv_app
VG_STAT= active/complete
TYPE= jfs2
MAX_LPS= 512
COPIES= 1
LPs= 200 ##指定的LPS
STALE_PPs= 0
INTER_POLICY= minimum
INTRA_POLICY= middle
MOUNT_POINT= /app
MIRROR_WRITE_CONSISTENCY= on/ACTIVE
LV_SEPARATE_PV= yes
PERMISSION= read/write
LV_STATE= opened/syncd
WRITE_VERIFY= off
PP_SIZE= 256
SCHED_POLICY= parallel
PP= 200 ##指定的PP
BB_POLICY= relocatable
RELOCATABLE= yes
UPPER_BOUND= 32
LABEL= /app
MAPFILE=
LV_MIN_LPS= 8 ##实际使用的LPS
STRIPE_WIDTH=
STRIPE_SIZE=
SERIALIZE_IO= no
FS_TAG= vfs=jfs2:log=INLINE:mount=true:options=rw:account=false
DEV_SUBTYP=

如上所示,LPS为200,但是LV_MIN_LPS为8,表示该lv实际使用仅8了PP,因此可以将LPS修改为20,PP修改为20同时需修改文件系统字段

fs_data:
FS_NAME= /app
FS_SIZE= 104857600 ##文件系统总大小,单位为512-blocks
FS_MIN_SIZE= 4096000
FS_LV= /dev/lv_app
FS_JFS2_BS= 4096
FS_JFS2_SPARSE= yes
FS_JFS2_INLINELOG= yes
FS_JFS2_SIZEINLINELOG= 200
FS_JFS2_EAFORMAT= v1
FS_JFS2_QUOTA= no
FS_JFS2_DMAPI= no
FS_JFS2_VIX= yes
FS_JFS2_EFS= no

需要将上述FS_SIZE修改为20个PP的大小

上述修改后如下

lv_data:
VOLUME_GROUP= rootvg
LV_SOURCE_DISK_LIST= hdisk0
LV_IDENTIFIER= 00c9691200004c000000014ff290f5fd.13
LOGICAL_VOLUME= lv_app
VG_STAT= active/complete
TYPE= jfs2
MAX_LPS= 512
COPIES= 1
LPs= 20 ##指定的LPS
STALE_PPs= 0
INTER_POLICY= minimum
INTRA_POLICY= middle
MOUNT_POINT= /app
MIRROR_WRITE_CONSISTENCY= on/ACTIVE
LV_SEPARATE_PV= yes
PERMISSION= read/write
LV_STATE= opened/syncd
WRITE_VERIFY= off
PP_SIZE= 256
SCHED_POLICY= parallel
PP= 20 ##指定的PP
BB_POLICY= relocatable
RELOCATABLE= yes
UPPER_BOUND= 32
LABEL= /app
MAPFILE=
LV_MIN_LPS= 8 ##实际使用的LPS
STRIPE_WIDTH=
STRIPE_SIZE=
SERIALIZE_IO= no
FS_TAG= vfs=jfs2:log=INLINE:mount=true:options=rw:account=false
DEV_SUBTYP=

fs_data:
FS_NAME= /app
FS_SIZE= 10485760 ##文件系统总大小,单位为512-blocks
FS_MIN_SIZE= 4096000
FS_LV= /dev/lv_app
FS_JFS2_BS= 4096
FS_JFS2_SPARSE= yes
FS_JFS2_INLINELOG= yes
FS_JFS2_SIZEINLINELOG= 200
FS_JFS2_EAFORMAT= v1
FS_JFS2_QUOTA= no
FS_JFS2_DMAPI= no
FS_JFS2_VIX= yes
FS_JFS2_EFS= no

上述修改的目的是为了使还原时需要创建的LV总大小小于磁盘空间

定义image_data资源

nim -o define -t image_data -a server=master -a location=/export/nim/mksysb/image.data image_data

将新定义的image_data资源也指定给待恢复主机

nim -o bos_inst -a source=mksysb -a spot=spot_app01 -a mksysb=mksysb_app01 -a bosinst_data=bosinst_data -a image_data=image_data -a accept_licenses=yes -a boot_client=no SKAPP

使用HMC console终端从网络启动

镜像拆除恢复

下述是针对rootvg中有两块或者多块硬盘的情况,主要是指rootvg做了mirror,此时需要修改image.data

restore -vxqf mksysb_oldhostname ./image.data

编辑image.data

lv_data:
VOLUME_GROUP= rootvg
LV_SOURCE_DISK_LIST= hdisk0 hdisk1 ##LV所在的磁盘
LV_IDENTIFIER= 00c9691200004c000000014ff290f5fd.4
LOGICAL_VOLUME= hd4
VG_STAT= active/complete
TYPE= jfs2
MAX_LPS= 512
COPIES= 2 ##copy的数目
LPs= 8 ##LPS数目
STALE_PPs= 0
INTER_POLICY= minimum
INTRA_POLICY= center
MOUNT_POINT= /
MIRROR_WRITE_CONSISTENCY= on/ACTIVE
LV_SEPARATE_PV= yes
PERMISSION= read/write
LV_STATE= opened/syncd
WRITE_VERIFY= off
PP_SIZE= 256
SCHED_POLICY= parallel
PP= 16 ##PP数目
BB_POLICY= relocatable
RELOCATABLE= yes
UPPER_BOUND= 32
LABEL= /
MAPFILE=
LV_MIN_LPS= 1
STRIPE_WIDTH=
STRIPE_SIZE=
SERIALIZE_IO= no
FS_TAG= vfs=jfs2:log=/dev/hd8:mount=automatic:type=bootfs:vol=root:free=true:quota=no
DEV_SUBTYP=

将上述COPIES修改为1,将PP修改为LPS的大小,同LV_SOURCE_DISK_LIST仅保留hdisk0
修改完成后如下:

lv_data:
VOLUME_GROUP= rootvg
LV_SOURCE_DISK_LIST= hdisk0 ##LV所在的磁盘
LV_IDENTIFIER= 00c9691200004c000000014ff290f5fd.4
LOGICAL_VOLUME= hd4
VG_STAT= active/complete
TYPE= jfs2
MAX_LPS= 512
COPIES= 1 ##copy的数目
LPs= 8 ##LPS数目
STALE_PPs= 0
INTER_POLICY= minimum
INTRA_POLICY= center
MOUNT_POINT= /
MIRROR_WRITE_CONSISTENCY= on/ACTIVE
LV_SEPARATE_PV= yes
PERMISSION= read/write
LV_STATE= opened/syncd
WRITE_VERIFY= off
PP_SIZE= 256
SCHED_POLICY= parallel
PP= 8 ##PP数目
BB_POLICY= relocatable
RELOCATABLE= yes
UPPER_BOUND= 32
LABEL= /
MAPFILE=
LV_MIN_LPS= 1
STRIPE_WIDTH=
STRIPE_SIZE=
SERIALIZE_IO= no
FS_TAG= vfs=jfs2:log=/dev/hd8:mount=automatic:type=bootfs:vol=root:free=true:quota=no
DEV_SUBTYP=

定义image_data资源

nim -o define -t image_data -a server=master -a location=/export/nim/mksysb/image.data image_data

将新定义的bosinst_data资源也指定给待恢复主机

nim -o bos_inst -a source=mksysb -a spot=spot_app01 -a mksysb=mksysb_app01 -a bosinst_data=bosinst_data -a image_data=image_data -a accept_licenses=yes -a boot_client=no SKAPP

使用HMC console终端从网络启动

总结
总的来说如果恢复时提示空间不足,建议提取bosinst.data、image.data两个文件
1、将bosinst.data中的SIZE_MB参数留空
2、如果bosinst.data中只有一块盘,建议确认下image.data中LV的总大小是否小于待恢复主机磁盘空间
3、如果bosinst.data中只有两块盘,则修改LV_SOURCE_DISK_LIST、COPIES、PP三个参数,同时检查LV总大小是否小于待恢复主机磁盘空间

阅读此文档需对NIM操作有简单的了解

前提已经定义好了mksysb、spot资源

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

4

添加新评论0 条评论

Ctrl+Enter 发表