How to Remove (Unjoin) Nodes from a NetApp ONTAP Cluster

Note: This was written with ONTAP 9.1 in mind but not much has changed in later versions of 9.x. For the official document see here.

Image: Cluster Unjoin

Move any data volumes off aggregates owned by the nodes-you-want-to-unjoin-from-the-cluster (unused volumes can be offlined and deleted.)


volume move start –vserver vserver –volume volume –destination-aggregate dest_aggr
volume move show


Offline and delete data aggregates from the nodes-you-want-to-unjoin-from-the-cluster.


storage aggregate show
storage aggregate offline –aggregate node_to_unjoin’s_data_aggr
storage aggregate delete –aggregate node_to_unjoin’s_data_aggr
storage aggregate show


Data LIFs would normally get moved to other nodes in the cluster, since they might be serving data (otherwise you may want to delete them):


network interface modify –vserver vserver –lif lifname –home-node not_node_being_unjoined –home-port port
network interface revert –vserver vserver –lif lifname


Delete intercluster LIFs for the nodes-you-want-to-unjoin-from-the-cluster, and update the cluster peer relationships on the peer clusters.


cluster peer show –fields cluster
network interface delete –lif ic_lif_to_remove –vserver vserver

PEER_CLUSTER::> cluster peer show –cluster CLUSTER –fields ip-addrs
PEER_CLUSTER::> cluster peer modify –cluster CLUSTER –peer-addrs {use output from above}


Note: You may find other things to be removed that have not been listed above. The cluster unjoin will error if this is the case.

Verify cluster health (all nodes should show health = true):


cluster show –fields health


Send AutoSupports:


autosupport invoke –node * -type all –message "MAINT=2H Removing node_to_unjoin_A and node_to_unjoin_B from the cluster "


If epsilon is one on of the nodes-you-want-to-unjoin-from-the-cluster move it to one of the other nodes:


set –priv advanced
cluster show –epsilon true
cluster modify –node with_epsilon –epsilon false
cluster modify –node epsilon_new_home –epsilon true
cluster show –epsilon true


Disable cluster replication ring eligibility for the nodes-you-want-to-unjoin-from-the-cluster (if one of the nodes is the master, this will force the master to move to another node, which is what you want):


set –priv advanced
cluster ring show –online master
system node modify –node node_to_unjoin_A –eligibility false
system node modify –node node_to_unjoin_B –eligibility false
cluster ring show –online master


Disable Storage Failover for the nodes-you-want-to-unjoin-from-the-cluster:


storage failover show
storage failover modify –node node_to_unjoin_A
storage failover show


Verify cluster health from one of the nodes that will remain in the cluster:


cluster show -eligibility true –fields health


Remove node-you-want-to-unjoin-from-the-cluster_A (from a different node in the cluster):


set –priv advanced
cluster unjoin –node node_to_unjoin_A


When the cluster unjoin has succeeded for node-you-want-to-unjoin-from-the-cluster_A, verify cluster health from one of the nodes that will remain in the cluster:


cluster show -eligibility true –fields health


Remove node-you-want-to-unjoin-from-the-cluster_B (from a different node in the cluster):


set –priv advanced
cluster unjoin –node node_to_unjoin_B


Verify cluster health (all nodes should show health = true):


cluster show –fields health


Send AutoSupports:


autosupport invoke –node * -type all –message "MAINT=END Removed node_to_unjoin_A and node_to_unjoin_B from the cluster "


Other references:

This following link was blocked from where I was working, but provided some inspiration:

Comments