Netapp and Veeam – Combining Snapmirror and Snapvault

I have been trying out a few different configurations in my lab with a Netapp and Veeam setup running snapmirror and snapvault on the same volume.

Traditional if you wish to utilize offsite backups you would use Netapp Snapvault and if you were to utilize disaster recovery you would use Netapp Snapmirror.

There is nothing wrong with doing it that way, however the challenge we saw was the double up of storage, 1 destination volume for snapvault and 1 destination volume for snapmirror.

The configuration I’m going to outline below, utilizes 1 destination volume for both snapmirror and snapvault, which could save you a heap of storage and money.

Combining Snapmirror and Snapvault

Let’s set the scenario. We have a VMware environment with 1 datastore called nfsdatastore1. By the name you can tell this is an nfs mount. This datastore contains a hand full of virtual machines.

What we want to achieve is, disaster recovery and offsite backups using the minimal amount of space in our offsite location as possible.

To do this we will create a snapvault relationship.

Ensure that the 2 Netapp’s are peered together

SourceFiler::> cluster peer create -peer-address 1.1.1.1 (Change the IP to suite your environment)

SourceFiler::> vserver peer create -peer-vserver destinationvfiler -peer-cluster destinationcluster -applications snapmirror

Create a Snapmirror relationship with type XDP

DestinationFiler::> snapmirror create -source-path sourcevfiler:nfsdatastore1 -destination-path destinationvfiler:nfsdatastore1_sv -type XDP

DestinationFiler::> snapmirror initialize -source-path sourcevfiler:nfsdatastore1 -destination-path destinationvfiler:nfsdatastore1_sv -type XDP

Veeam Backup and Recovery to Drive Snapvault

We are going to use Veeam Backup and Recovery to drive the Netapp Snapvault component. Within the backup job – Storage – select configure secondary destinations for this job

Veeam Secondary Destination
Veeam Secondary Destination

You will now have an option to select Secondary Target. Within here click Add and select Netapp Snapvault. Click edit and select the number of offsite backups you would like to retain

Veeam Snapvault Retention
Veeam Snapvault Retention

Now that we have Veeam setup to control our Netapp Snapvault (offsite backups), we can now start on the configuration for Disaster Recovery

Netapp Disaster Recovery Setup

We will create a schedule of when we would like the source volume snapshots taken

SourceFiler::> schedule cron create -name nfsdatastore1_dr -minute 05

Next, create a snapshot policy.

SourceFiler::> snapshot policy create -vserver SourceVfiler -policy nfsdatastore1_dr -enabled true -schedule1 nfsdatastore1_dr -count1 2 -prefix1 nfsdatastore1_dr -snapmirror-label1 nfsdatastore1_dr

Now we will apply this snapshot policy to the volume

SourceFiler::> volume modify -vserver SourceVfiler -volume nfsdatastore1 -snapshot-policy nfsdatastore1_dr

What we have now is a Snapshot policy that will create a snapshot every hour on the volume nfsdatastore1 and retain 2 snapshot copies.

We’ll now get started on the config at the destination side.

First up lets create a schedule. The schedule will be applied to the snapmirror relationship later on. One IMPORTANT note with the schedule, is that we must leave out the hour at which the Veeam Backup runs. If Veeam detects that there is an existing snapmirror transfer going on, it will skip trying to transfer the snapvault snapshot and throw up a warning at the end of the backup job. Currently there is no retry settings for snapmirror/snapvault within Veeam (including version 9)

DestinationFiler::> schedule cron create -name nfsdatastore1_dr -hour 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 -minute 15 (Notice here that I have left out our 11pm or 23 due to the Veeam backups running at 11pm from the source side)

Next up is to create a snapmirror policy

DestinationFiler::> snapmirror policy create -vserver DestinationVserver -policy nfsdatastore1_dr

The snapmirror policy rule below, transfers the snapshot with label nfsdatastore1_dr (with the appended time and date) from source to destination and keeps the last 2 snapshots

DestinationFiler::> snapmirror policy add-rule -vserver DestinationVserver -policy nfsdatastore1_dr -snapmirror-label nfsdatastore1_dr -keep 2

Now we can tie all this together in the existing snapmirror relationship

DestinationFiler::> snapmirror modify -source-path sourcevfiler:nfsdatastore1 -destination-path destinationvfiler:nfsdatastore1_sv -policy nfsdatastore1_dr -schedule nfsdatastore1_dr

CAVEAT: There is 1 caveat with this setup and that is, it will be crash consistent when you bring up your vm’s on the disaster recovery side.

If you have any questions feel free to leave comments below