How to migrate volumes between aggregates on a NetApp

There are two sets of instructions in this post. Follow the first for migrating regular volumes. Follow the second set for migrating SnapMirror Targets.

To keep things simple I use the original volume name and append ‘NEW’ at the end for the new volume and rename the original volume and append ‘OLD’ to the end of it. In the below examples I’m going to move a 100gb volume called ‘shares’ from aggr0 to aggr1.

 

Migrate a volume from one aggregate to another (NOT A SNAPMIRROR TARGET)

1.    Determine the size and name of the volume you are going to migrate

netapp> df -h

Filesystem                 total       used       avail capacity  Mounted on
/vol/shares/               100GB       10GB       90GB       10%  /vol/shares/

2.    Create a new volume the same size as the old volume

netapp> vol create <VOLUME NAME>NEW aggr1 <VOLUME SIZE>g

EXAMPLE
netapp> vol create sharesNEW aggr1 100g

3.    NDMP copy the data from the old volume to the new volume

netapp> ndmpcopy <ORIGINAL VOLUME> <NEW VOLUME>

EXAMPLE
netapp> ndmpcopy shares sharesNEW

4.    Once the copy is complete rename the original volume to a temporary name

netapp> vol rename <ORIGINAL VOLUME> <ORIGINAL VOLUME>OLD

EXAMPLE
netapp> vol rename shares sharesOLD

5.    Rename the new volume to match the original volumes name

netapp> vol rename <NEW VOLUME> <ORIGINAL VOLUME NAME>

EXAMPLE
netapp> vol rename sharesNEW shares

6.    Offline the olds volume

netapp> vol offline <OLD VOLUME NAME>

EXAMPLE
netapp> vol offline sharesOLD

7.    After doing a sanity check to verify all the data was properly copied delete the old volume

netapp> vol destroy <OLD VOLUME NAME>

EXAMPLE
netapp> vol destroy sharesOLD

8.    If your volume was exported or configured as a CIFS share verify functionality of that export or share. They should still work.

 

Migrate a volume from one aggregate to another (SNAPMIRROR TARGET)

1.    Determine the size of the volume you are going to migrate

netapp> df -h

Filesystem                 total       used       avail capacity  Mounted on
/vol/shares/               100GB       10GB       90GB       10%  /vol/shares/

2.    Create a new volume the same size as the old volume

netapp> vol create <VOLUME NAME>NEW aggr1 <VOLUME SIZE>g

EXAMPLE
netapp> vol create sharesNEW aggr1 100g

3.    Once the copy is complete rename the original volume to a temporary name

netapp> vol rename <ORIGINAL VOLUME> <ORIGINAL VOLUME>OLD

EXAMPLE
netapp> vol rename shares sharesOLD

4.    Rename the new volume to match the original volumes name

netapp> vol rename <NEW VOLUME> <ORIGINAL VOLUME NAME>

EXAMPLE
netapp> vol rename sharesNEW shares

5.    Offline the old volume

netapp> vol offline <OLD VOLUME NAME>

EXAMPLE
netapp> vol offline sharesOLD

6.    Delete the old volume

netapp> vol destroy <OLD VOLUME NAME>

EXAMPLE
netapp> vol destroy sharesOLD

7.    Restrict the new volume

netapp> vol restrict <NEW VOLUME NAME>

EXAMPLE
vol restrict shares

8.    Re-initialize the Snapmirror relationship

netapp> snapmirror initialize <SNAPMIRROR TARGET>

EXAMPLE
netapp> snapmirror initialize netapp:shares

4 thoughts on “How to migrate volumes between aggregates on a NetApp”

  1. Hi,

    I hope you’re still around.  Can I use ndmpcopy while the nfs is still mounted? Whats the timeframe to do this, so that I can plan a maintenance window?

    Reply
    • The time will depend on how much data you’re moving.

      If you’re going across NetApps or Controllers you could SnapMirror instead which would reduce your cut-over time to a final sync and re-mapping your NFS.

      You can probably ndmpcopy while the data is still being accessed via NFS but you’ll still have that final outage for disabling, re-exporting and re-connecting your NFS storage plus a final sync of the data from the old volume to the new.

      Reply

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.