SnapMirror data between cDOT 8.1 and cDOT 8.2

I wanted to quickly put this together as I had some data I wanted to move from a cDOT 8.1 cluster to a cDOT 8.2 cluster. At the time of writing, you cannot do this procedure with OnCommand System Manager GUI — it has to be done through the command-line. Big thanks to Doug & Khalif for providing me some troubleshooting help.

Although this seems like a long post, the process is quite simple:

  1. Create the inter-cluster logical interfaces (LIFs) on each cluster
  2. Create a peer relationship between clusters
  3. Create SnapMirror relationships between clusters for volumes to be transferred
  4. Initialize that SnapMirror relationships to transfer the data
  5. Quiesce, break and remove that SnapMirror relationships

As you can see, the naming scheme I’m using is very simple. The cDOT 8.1 cluster is called dot81cm, and the cDOT 8.2 cluster is called dot82cm. On both sides of the cluster, the name of the Vserver is vserver1, and the volume will be called newDatastore on both the source and destination clusters. Of course, any or all of these parameters can be changed in your environment — the Vserver names don’t need to be the same, nor do the volume names. However, you will need to ensure that DNS resolution works between the two clusters.

First, we’ll probably need to create the inter-cluster LIFs to connect the two clusters together. Note that you can use dedicated inter-cluster LIFs or you can use shared ones. Here, I’m creating dedicated LIFs:

dot81cm::> network interface create -vserver dot81cm-01 -lif migration_iclif_81 -role intercluster -home-node dot81cm-01 -home-port e3a -address -netmask
dot82cm::> network interface create -vserver dot82cm-01 -lif migration_iclif_82 -role intercluster -home-node dot82cm-01 -home-port e0a -address -netmask

Note that the inter-cluster LIFs are created on the node Vserver (i.e., the node dot81cm-01) and not a data Vserver. In a larger environment, if you’re concerned about traffic load or failover resources, you may want to create more than one LIF. Also note that you’ll need to select your own home-node (e.g., e0a) values. And, in my case, the two LIFs are on the same network, so I didn’t need to bother about having them routed. You can find some useful information about creating the LIFs in the Clustered Data ONTAPĀ® 8.2 Cluster and Vserver Peering Express Guide.

Create the cluster peer in cDOT 8.2 first:

dot82cm::> cluster peer create -peer-addrs

Notice: Successfully configured the local cluster. Execute this command on the
        remote cluster to complete the peer setup.

Now, create the cluster peer in cDOT 8.1:

dot81cm::> cluster peer create -peer-addrs

Verify the existence of the peer relationship:

dot82cm::> cluster peer show
Peer Cluster Name          Cluster Serial Number Availability
-------------------------- --------------------- ---------------
dot81cm                    1-80-000011           Available
dot81cm::> cluster peer show
Peer Cluster Name          Cluster Serial Number Availability
-------------------------- --------------------- ---------------
dot82cm                    1-80-000013           Available

Create the destination volume and configure it for data protection:

dot82cm::> vol create -vserver vserver1 -vol newDatastore -aggr aggr1_node1 -size 100GB -type DP 

Create the SnapMirror relationship. A key point here is that you must create the relationship on the cDOT 8.2 cluster:

dot82cm::> snapmirror create -source-path dot81cm://vserver1/newDatastore -destination-path dot82cm://vserver1/newDatastore -type DP

Initialize the SnapMirror relationship:

dot82cm::> snapmirror initialize -source-path dot81cm://vserver1/newDatastore -destination-path dot82cm://vserver1/newDatastore -type DP

You should see that a job is created. Find the job:

dot82cm::> job show
Job ID Name                 Vserver    Node           State
------ -------------------- ---------- -------------- ----------
1820   SnapMirror initialize 
                            dot82cm    dot82cm-01     Running
       Description: snapmirror initialize of destination dot82cm://vserver1/newDatastore

Find more status about the job:

dot82cm::> job watch-progress 1820
3.75GB sent for 1 of 1 Snapshot copies, transferring Snapshot copy snapmirror.aa

…and that’s pretty much it! Hit Ctrl-C to exit out of the job watch. If you’re only planning on transferring the data once, you can now finalize the migration by quiescing, breaking and deleting the SnapMirror relationship. (You can consider quiescing as an optional step.)

dot82cm::> snapmirror quiesce -source-path dot81cm://vserver1/newDatastore -destination-path dot82cm://vserver1/newDatastore

Now you can break the SnapMirror relationship:

dot82cm::> snapmirror break -source-path dot81cm://vserver1/newDatastore -destination-path dot82cm://vserver1/newDatastore

And now you can delete the relationship:

dot82cm::> snapmirror delete -source-path dot81cm://vserver1/newDatastore -destination-path dot82cm://vserver1/newDatastore

And we’re done!