IBM Support

Moving your NIM to new location via backup/restore of the NIMdb

How To


Summary

This document walks you through on how to move your NIM to new location or system by backing up and restoring the NIMdb and NIM resources.
The most straight forward method on moving your NIM to new location is via mksysb. However, that requires you to have a second NIM set up already and use it to restore the mksysb to the new location. Other options are to burn the mksysb on DVD and use it to restore the NIM, or use the VIOS Virtual Media library by uploading the converted mksysb into ISO image and loading it on a Virtual optical device mapped to the new NIM. If none of those methods suit you or you do not want to restore the full rootvg of your old NIM but just move the NIMdb and resources on a new system, then this document will help you achieve that.

Objective

Our objective is to move the NIMdb and NIM resources and NIM clients  from NIM A to NIM B.

Environment

In this document we will use the following resources:
Sentinel  -  NIM A (our source NIM ) with oslevel 7200-05-02-2114
Robotron - NIM B (our destination NIM ) with oslevel 7200-05-02-2114
Chance - NIM client to NIM A with oslevel 7100-04-03-1642

Steps

In the bellow instructions, I will refer to our primary NIM (sentinel) as "NIM A" and the destination NIM (Robotron) will be "NIM B".
Before we begin, we have to make sure that NIM B is at the same oslevel as NIM A.
In our case, both NIMs are at 7200-05-02-2114. The NIM fileset must be installed on NIM B.
No further configuration is needed on NIM B. 
NIM A:
root@sentinel(/)# oslevel -s
7200-05-02-2114
root@sentinel(/)# lsnim
master                     machines        master
boot                       resources       boot
nim_script                 resources       nim_script
master_net                 networks        ent
72_03_04_sp                resources       lpp_source
instlab163                 machines        standalone
instlab163_mksysb          resources       mksysb
instlab163_mksysb_spot     resources       spot
certificate                resources       certificate
ent-Network1               networks        ent
root@sentinel(/)#
NIM B:
root@robotron(/720images/base/LCD8-2364-10/installp/ppc)# oslevel -s
7200-05-02-2114
root@robotron(/720images/base/LCD8-2364-10/installp/ppc)# lslpp -l | grep master
  bos.sysmgt.nim.master      7.2.5.1  COMMITTED  Network Install Manager -
root@robotron(/720images/base/LCD8-2364-10/installp/ppc)#
root@robotron(/home)# lsnim
0042-011 lsnim: unable to access the /etc/niminfo file
root@robotron(/home)#

 
1. We need create the file system and directory structure on NIM B so that it matches the structure on NIM A.
NIM A
root@sentinel(/)# df -gt
Filesystem    GB blocks      Used      Free %Used Mounted on
/dev/hd4           8.00      0.52      7.48    7% /
/dev/hd2           4.50      3.20      1.30   72% /usr
/dev/hd9var        1.50      0.13      1.37    9% /var
/dev/hd3           1.12      1.01      0.11   90% /tmp
/dev/hd1          53.00      0.11     52.89    1% /home
/dev/hd11admin      0.12      0.00      0.12    1% /admin
/proc                 -         -         -    - /proc
/dev/hd10opt       0.50      0.15      0.35   30% /opt
/dev/livedump      0.25      0.00      0.25    1% /var/adm/ras/livedump
/dev/fslv00        7.00      2.48      4.52   36% /export/nim/mksysb
/dev/fslv01        3.12      0.30      2.83   10% /export/nim/spot
/dev/fslv02        9.88      1.37      8.51   14% /export/nim/lpp_source
In the above output we can see that our NIM A is set up to store its resources as follows:
export/nim/mksysb - for mksysbs
export/nim/lpp_source - for lpp_sources
export/nim/spot - for SPOTS
root@sentinel(/export/nim)# ls
image_data  lpp_source  mksysb      scripts     spot
NIM B:
root@robotron(/)# df
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4          262144    172760   35%     2045    10% /
/dev/hd2         3670016    252200   94%    23522    43% /usr
/dev/hd9var       393216    325840   18%      575     2% /var
/dev/hd3          262144    258136    2%       26     1% /tmp
/dev/hd1          131072    130304    1%       11     1% /home
/dev/hd11admin     262144    261384    1%        5     1% /admin
/proc                  -         -    -        -      - /proc
/dev/hd10opt      131072     92856   30%      207     2% /opt
/dev/livedump     524288    523552    1%        4     1% /var/adm/ras/livedump

Creating the file systems on NIM B:
# smitty crfs--> Add an Enhanced Journaled File System--> rootvg
 Volume group name                                   rootvg
  SIZE of file system
          Unit Size                                   Megabytes                                +
*         Number of units                            [3000]                                         #
* MOUNT POINT                                        [/export/nim/mksysb]
  Mount AUTOMATICALLY at system restart?              yes                                       +
  PERMISSIONS                                         read/write                               +
  Mount OPTIONS                                      []                                        +
  Block Size (bytes)                                  4096                                     +
  Logical Volume for Log                                                                       +
  Inline Log size (MBytes)                           []                                         #
  Extended Attribute Format                                                                    +
  ENABLE Quota Management?                            no                                       +
  Enable EFS?                                         no                                       +
  Allow internal snapshots?                           no                                       +
  Mount GROUP                                              []


# mount /export/nim/mksysb
root@robotron(/720images/base/LCD8-2364-10/installp/ppc)# df -gt
Filesystem    GB blocks      Used      Free %Used Mounted on
/dev/hd4           0.12      0.04      0.08   35% /
/dev/hd2           1.75      1.63      0.12   94% /usr
/dev/hd9var        0.19      0.03      0.16   18% /var
/dev/hd3           0.12      0.00      0.12    2% /tmp
/dev/hd1           0.06      0.00      0.06    1% /home
/dev/hd11admin      0.12      0.00      0.12    1% /admin
/proc                 -         -         -    - /proc
/dev/hd10opt       0.06      0.02      0.04   30% /opt
/dev/livedump      0.25      0.00      0.25    1% /var/adm/ras/livedump
truth:/720images     275.00    222.96     52.04   82% /720images
instlab50:/ztools       4.00      3.55      0.45   89% /ztools
/dev/fslv00        2.94      0.00      2.94    1% /export/nim/mksysb
Repeat the above step on creating the rest of the file systems for the SPOT and lpp_source respectively.
Note: When creating the file systems, or directories, you have to make sure they have enough space to fit the resources from NIM A.
Files ystems are now created to match NIM A:
root@robotron(/)# df -gt
Filesystem    GB blocks      Used      Free %Used Mounted on
/dev/hd4           0.12      0.04      0.08   35% /
/dev/hd2           1.75      1.63      0.12   94% /usr
/dev/hd9var        0.19      0.03      0.16   18% /var
/dev/hd3           0.12      0.00      0.12    2% /tmp
/dev/hd1           0.06      0.00      0.06    1% /home
/dev/hd11admin      0.12      0.00      0.12    1% /admin
/proc                 -         -         -    - /proc
/dev/hd10opt       0.06      0.02      0.04   30% /opt
/dev/livedump      0.25      0.00      0.25    1% /var/adm/ras/livedump
truth:/720images     275.00    222.96     52.04   82% /720images
instlab50:/ztools       4.00      3.55      0.45   89% /ztools
/dev/fslv00        2.94      0.00      2.94    1% /export/nim/mksysb
/dev/fslv01        1.00      0.00      1.00    1% /export/nim/spot
/dev/fslv02        1.50      0.00      1.50    1% /export/nim/lpp_source
root@robotron(/export)# cd /export/nim
root@robotron(/export/nim)# ls
lpp_source  mksysb      scripts     spot
2. Now that we have the same NIM directory structure on NIM B, we are ready to move the NIM resources from NIM A to NIM B. For this we can use the following command:
On NIM A:
root@sentinel(/)# find ./export -print | backup -iqvf- | ssh robotron 'cd / ; restore -xqvf-'
a            0 ./export
a            0 ./export/nim
a            0 ./export/nim/image_data
a        13711 ./export/nim/image_data/image.data
a            0 ./export/nim/lpp_source
a            0 ./export/nim/lpp_source/72_03_04_sp
root@robotron's password:
a       489417 ./export/nim/lpp_source/72_03_04_sp/.toc
x            0 ./export
x            0 ./export/nim
x            0 ./export/nim/image_data
x        13711 ./export/nim/image_data/image.data
x            0 ./export/nim/lpp_source
x            0 ./export/nim/lpp_source/72_03_04_sp
x       489417 ./export/nim/lpp_source/72_03_04_sp/.toc
a    125881344 ./export/nim/lpp_source/72_03_04_sp/Java6.sdk.6.0.0.655.U
x    125881344 ./export/nim/lpp_source/72_03_04_sp/Java6.sdk.6.0.0.655.U
a    168527872 ./export/nim/lpp_source/72_03_04_sp/Java7_64.jre.7.0.0.635.U
x    168527872 ./export/nim/lpp_source/72_03_04_sp/Java7_64.jre.7.0.0.635.U
a     15222784 ./export/nim/lpp_source/72_03_04_sp/Java7_64.sdk.7.0.0.635.U
x     15222784 ./export/nim/lpp_source/72_03_04_sp/Java7_64.sdk.7.0.0.635.U
.....
.
..
.
x            0 ./export/nim/spot/instlab163_mksysb_spot/usr/websm/codebase
x            0 ./export/nim/spot/instlab163_mksysb_spot/usr/websm/codebase/com
x            0 ./export/nim/spot/instlab163_mksysb_spot/usr/websm/codebase/com/ibm
x            0 ./export/nim/spot/instlab163_mksysb_spot/usr/websm/codebase/com/ibm/rsct
x            0 ./export/nim/spot/instlab163_mksysb_spot/usr/websm/codebase/com/ibm/rsct/bundles
x            0 ./export/nim/spot/lost+found
root@sentinel(/)#  
All NIM resources should now be copied over to NIM B:
root@robotron(/export/nim/lpp_source)# ls
72_03_04_sp  lost+found
root@robotron(/export/nim/spot)# ls
instlab163_mksysb_spot  lost+found
root@robotron(/export/nim/mksysb)# ls
bosinst.data  etc           image.data    instlab163    lost+found

 
3. After the resources have been copied to NIM B, we can proceed with backing up the database on NIM A and moving it to NIM B:
On NIM A:
root@sentinel(/)# /usr/lpp/bos.sysmgt/nim/methods/m_backup_db NIMDB.backup
a ./etc/objrepos/nim_attr 16 blocks
a ./etc/objrepos/nim_attr.vc 32 blocks
a ./etc/objrepos/nim_object 8 blocks
a ./etc/objrepos/nim_object.vc 8 blocks
a ./etc/NIM.level 1 blocks
a ./etc/niminfo 2 blocks
a ./etc/NIM.primary.cpuid 1 blocks


root@sentinel(/)# ls | grep -i nimdb
NIMDB.backup

Note: The backup file will be in the current directory.
Move the file on NIM B   
root@robotron(/home)# ls -l | grep -i nim
-rw-r-----    1 root     system        40960 Sep 30 11:08 NIMDB.backup
4. We can now restore the backup on NIM B.
For this we will use the "nim_master_recover" command along with the "-r" and "-i" flags.  
-r nimdb.backup   -  The NIM database backup "tar" file that will be restored.
-i interface  -   Primary network interface of the machine where you are running the command. 
On NIM B
root@robotron(/home)# nim_master_recover -r /home/NIMDB.backup -i en0
x ./etc/objrepos/nim_attr, 8192 bytes, 16 media blocks.
x ./etc/objrepos/nim_attr.vc, 16384 bytes, 32 media blocks.
x ./etc/objrepos/nim_object, 4096 bytes, 8 media blocks.
x ./etc/objrepos/nim_object.vc, 4096 bytes, 8 media blocks.
x ./etc/NIM.level, 8 bytes, 1 media blocks.
x ./etc/niminfo, 814 bytes, 2 media blocks.
x ./etc/NIM.primary.cpuid, 13 bytes, 1 media blocks.
0513-071 The nimesis Subsystem has been added.
0513-071 The nimd Subsystem has been added.
Finished restoring the NIM database
error retrieving nim name, defaulting to host name.
Updating master definition
  Updated master attribute platform to chrp
  Updated master attribute netboot_kernel to 64
  Updated master attribute if1 to ent-Network1 robotron.aus.stglabs.ibm.com 00215EA94106
  Updated master attribute cable_type1 to N/A
0042-001 nim: processing error encountered on "master":
   0042-118 m_chnet: a NIM operation is currently being
        performed on the "instlab163" machine or it has
        resources allocated to it
  Updated ent-Network1 routing1 to default 10.99.0.200
Finished updating master definition
0513-059 The nimesis Subsystem has been started. Subsystem PID is 9175302.
Resetting machines
  Reset master
  Reset instlab163
  Reset chance
Finished resetting machines
Resetting NIM resources
Finished resetting NIM resources
Checking NIM resources
  Keeping 72_03_04_sp
  Keeping instlab163_mksysb
  Keeping instlab163_mksysb_spot
  Removing certificate
    0518-307 odmdelete: 0 objects deleted. from nim_attr (serves attr)
    0518-307 odmdelete: 0 objects deleted. from nim_attr (group memberships)
    0518-307 odmdelete: 6 objects deleted. from nim_attr (resource attributes)
    0518-307 odmdelete: 1 objects deleted. from nim_object (resource object)
  Finished removing certificate
Finished checking NIM resources
Checking NIM SPOTs
  checking instlab163_mksysb_spot
Finished checking SPOTs
nim_master_recover Complete
root@robotron(/home)
Now we have to check and make sure that NIM B is configured with the correct hostname and network. 
On NIM B:
root@robotron(/etc)# lsnim -l master | grep if
   if_defined          = chrp.64.ent
   if1                 = ent-Network1 robotron.aus.stglabs.ibm.com 00215EA94106
root@robotron(/etc)# cat /etc/niminfo
#------------------ Network Install Manager ---------------
# warning - this file contains NIM configuration information
#       and should only be updated by NIM
# machine which controls the NIM environment
export NIM_NAME=master
export NIM_HOSTNAME=robotron.aus.stglabs.ibm.com
export NIM_CONFIGURATION=master
export NIM_MASTER_HOSTNAME=robotron.aus.stglabs.ibm.com
export NIM_MASTER_PORT=1058
export NIM_REGISTRATION_PORT=1059
export NIM_FIPS_MODE=0
export NIM_BOS_IMAGE=/SPOT/usr/sys/inst.images/installp/ppc/bos
export NIM_BOS_FORMAT=rte
export NIM_HOSTS=" 127.0.0.1:loopback:localhost  10.99.1.79:robotron.aus.stglabs.ibm.com "
export NIM_MOUNTS=""
export NFS_RESERVED_PORT=yes
export ROUTES=" default:0:10.99.255.255 "
We have the correct hostname (Robotron) in the /etc/niminfo file and the correct ent-Network1 as our NIM network.
We can now see all of the resources available for use on NIM B.

On NIM B:
root@robotron(/home)# lsnim
master                     machines        master
boot                       resources       boot
nim_script                 resources       nim_script
master_net                 networks        ent
72_03_04_sp                resources       lpp_source
instlab163                 machines        standalone
instlab163_mksysb          resources       mksysb
instlab163_mksysb_spot     resources       spot
certificate                resources       certificate
chance                     machines        standalone
ent-Network1               networks        ent

 
If your NIM B is on a different subnet and this subnet is defined in NIM, the procedure is the same. The "nim_master_recover" command will automatically create a new NIM network based on the "-i" flag and install interface specified. 
The last thing left to do, after changing NIM B's hostname is to update the niminfo files on each of our clients, so that they are aware of their new NIM B.
On the NIM client Chance:
root@chance(/)# rm /etc/niminfo
root@chance(/)# niminit -a name=chance -a master=robotron -a connect=nimsh
nimsh:2:wait:/usr/bin/startsrc -g nimclient >/dev/console 2>&1
0513-044 The nimsh Subsystem was requested to stop.
0513-059 The nimsh Subsystem has been started. Subsystem PID is 6553658.
Successful connection from NIM B to the NIM client(s) can be tested as follows:
On NIM B:
root@robotron(/home)# nim -o lslpp chance | grep mp64
  bos.mp64                  7.1.4.30  COMMITTED  Base Operating System 64-bit
  bos.mp64                  7.1.4.30  COMMITTED  Base Operating System 64-bit

Thank you for the time to read through this guide. I hope you found the information useful and helpful. If you feel there were any mistakes or inconsistencies, please email me at boris.borisov@bg.ibm.com. If there are any technical questions, regarding this document, please follow support procedures and open a software support case by calling 1-800-426-7378 and select the option for software support.

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB08","label":"Cognitive Systems"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"ARM Category":[{"code":"a8m0z000000cvz2AAA","label":"Install-\u003ENIM"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"}],"Version":"All Versions"}]

Document Information

Modified date:
01 March 2022

UID

ibm16496793