=head1 NAME

B<snmove> - Move xCAT compute nodes to a different xCAT service node.

=head1 SYNOPSIS

B<snmove> I<noderange> [B<-V>] [B<-l>|B<--liteonly>] [B<-d>|B<--dest> I<sn2>] [B<-D>|B<--destn> I<sn2n>] [B<-i>|B<--ignorenodes>] [B<-P>|B<--postscripts> I<script1,script2...>|I<all>]

B<snmove> [B<-V>] [B<-l>|B<--liteonly>] B<-s>|B<--source> I<sn1> [B<-S>|B<--sourcen> I<sn1n>] [B<-d>|B<--dest> I<sn2>] [B<-D>|B<--destn> I<sn2n>] [B<-i>|B<--ignorenodes>] [B<-P>|B<--postscripts> I<script1,script2...>|I<all>]

B<snmove> [B<-h>|B<--help>|B<-v>|B<--version>]

=head1 DESCRIPTION

The B<snmove> command may be used to move a node or nodes from one service node to another backup service node.

The use of backup service nodes in an xCAT hierarchical cluster can
help improve the overall reliability, availability, and serviceability
of the cluster.

Before you run the B<snmove> command it is assumed that the backup
service node has been configured properly to manage the new node
or nodes. (See the xCAT document named
"Using xCAT Service Nodes with AIX" for information on how to set
up backup AIX service nodes.).

The B<snmove> command can use the information stored in the xCAT
database or information passed in on the command line to determine
the current service node and the backup service node.

To specify the primary and backup service nodes you can set the
"servicenode" attribute of the node definitions.

The B<servicenode> attribute is the hostname of the xCAT service node
as it is known by the management node. The B<xcatmaster> attribute
is the hostname of the xCAT service node as known by the node.
The B<servicenode> attribute should be set to a comma-separated list
so that the primary service node is first and the backup service
node is second.  The B<xcatmaster> attribute must be set to the
hostname of the primary service node as it is known by the node.

When the B<snmove> command is run it modifies the xCAT database to
switch the the primary server to the backup server.

It will also check the other services that are being used for the
node (tftpserver, monserver, nfsserver, conserver), and if they were set 
to the original service node they will be changed to point to the backup
service node. 

By default the command will modify the nodes so that they will be able to be managed by the backup service node.

If the -i option is specified, the nodes themselves will not be modified.

You can also have postscripts executed on the nodes by using the -P option if needed.

The xCAT B<snmove> command may also be used to synchronize statelite persistent files from the primary service node to the backup service node without actually moving the nodes to the backup servers.

If you run the command with the "-l" option it will attempt to use rsync to update the statelite persistent directory on the backup service node. This will only be done if the server specified in the "statelite" table is the primary service node. 

When the B<snmove> command is executed the new service node must be running but
the original service node may be down.

Note: On a Linux cluster, for NFS statelite nodes that do not use external NFS server, if the original service node is down, the nodes it manages will be down too. You must run nodeset command and then reboot the nodes after running snmove. For stateless nodes and RAMDisk statelite nodes, the nodes will be up even if the original service node is down. However, make sure to run nodeset command if you decide to reboot the nodes later.   

=head1 OPTIONS

=over 10

=item B<-d|--dest>

Specifies the hostname of the new destination service node as known by (facing) the management node. 

=item B<-D|--destn>

Specifies the hostname of the destination service node as known by (facing) the nodes.

=item B<-h|--help>

Display usage message.

=item B<-i|--ignorenodes>

No modifications will be made on the nodes. If not specified, several xCAT postscripts will be run on the nodes to complete the switch to the new service node.

=item B<-l|--liteonly>

Use this option to ONLY synchronize any AIX statelite files from the primary server to the backup server for the nodes. It will not do the actual moving of thre nodes the the backup servers.

=item B<-P|--postscripts>

Specifies a list of extra postscripts to be run on the nodes after the nodes are moved over to the new serive node. If 'all' is specified, all the postscripts defined in the postscripts table will be run for the nodes. The specified postscripts must be stored under /install/postscripts directory. 

=item B<-s|--source>

Specifies the hostname of the current (source) service node sa known by (facing)
 the management node.

=item B<-S|--sourcen>

Specifies the hostname of the current service node adapter as known by (facing)
the nodes.

=item B<-V|--verbose>

Verbose mode.

=item B<-v|--version>

Command Version.

=back

=head1 EXAMPLES

=over 3

=item 1.

Move the nodes contained in group "group1" to the service node named "xcatsn02".

B<snmove group1 -d xcatsn02 -D xcatsn02-eth1>

=item 2.

Move all the nodes that use service node xcatsn01 to service node xcatsn02.

B<snmove -s xcatsn01 -S xcatsn01-eth1 -d xcatsn02 -D xcatsn02-eth1>

=item 3.

Move any nodes that have sn1 as their primary server to the backup service node set in the xCAT node definition.

B<snmove -s sn1>

=item 4.

Move all the nodes in the xCAT group named "nodegroup1" to their backup SNs.

B<snmove nodegroup1>

=item 5.

Move all the nodes in xCAT group "sngroup1" to the service node named "xcatsn2".

B<snmove sngroup1 -d xcatsn2>

=item 6.

Move all the nodes in xCAT group "sngroup1" to the SN named "xcatsn2" and run extra postscripts.

B<snmove sngroup1 -d xcatsn2 -P test1>

=item 7.

Move all the nodes in xCAT group "sngroup1" to the SN named "xcatsn2" and do not run anything on the nodes.

B<snmove sngroup1 -d xcatsn2 -i>

=item 8.

Synchronize any AIX statelite files from the primary server for compute03 to the backup server.  This will not actually move the node to it's backup service node.

B<snmove compute03 -l -V>

=back

=head1 FILES

/opt/xcat/sbin/snmove

=head1 SEE ALSO

L<noderange(3)|noderange.3>

