Navigation
InfrastructureUpdated July 3, 2026

Azure NetApp Files SnapMirror Migration Guide

azure-netapp-filessnapmirrormigrationnasepichealthcaredata-protection

Azure NetApp Files SnapMirror Migration Guide

Step-by-step procedure for migrating NAS data from on-premises NetApp to Azure NetApp Files using SnapMirror for Epic healthcare systems.


๐ŸŽฏ Overview

This guide provides the complete procedure for migrating Epic NAS data from on-premises NetApp clusters to Azure NetApp Files (ANF) using SnapMirror replication. This migration maintains Epic certification requirements and ensures minimal impact to clinical operations.

Critical Considerations

  • Clinical Impact: Coordinate with Epic team for maintenance windows
  • Data Protection: PHI data requires encryption in transit and at rest
  • Performance: Maintain Epic-required IOPS and latency during migration
  • Compliance: Audit trail required for all PHI data movement

๐Ÿ“‹ Prerequisites

Technical Requirements

ComponentRequirementEpic Consideration
Source NetApp ClusterONTAP 9.7+ with SnapMirror licenseEpic-certified storage configuration
Azure SubscriptionANF service enabled with Premium tierEpic performance requirements
Network ConnectivitySite-to-site VPN or ExpressRoute<2ms latency for Epic applications
PermissionsContributor access to ANF resourcesChange management approval

Pre-Migration Validation

# Verify on-premises NetApp cluster readiness
cluster::> snapmirror show-destinations
cluster::> network interface show -role data
cluster::> vserver show -type data

# Verify Azure NetApp Files prerequisites
az netappfiles account show --resource-group $RESOURCE_GROUP --name $ANF_ACCOUNT
az netappfiles pool show --resource-group $RESOURCE_GROUP --account-name $ANF_ACCOUNT --name $CAPACITY_POOL

๐Ÿ”ง Step-by-Step Migration Procedure

Phase 1: ANF Volume Creation

Step 1: Create ANF Volume for SnapMirror Destination

# Create ANF volume with Epic-specific configuration
PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}?api-version=2024-09-01

# Request Body:
{
  "location": "West US 3",
  "properties": {
    "creationToken": "epic-nas-migration",
    "serviceLevel": "Premium",  # Epic requires Premium performance
    "usageThreshold": 500000000000,  # 500GB initial size
    "exportPolicy": {
      "rules": [
        {
          "ruleIndex": 1,
          "unixReadOnly": false,
          "unixReadWrite": true,
          "cifs": false,
          "nfsv3": true,
          "nfsv41": true,
          "allowedClients": "10.1.0.0/16",  # Epic subnet range
          "kerberos5ReadOnly": false,
          "kerberos5ReadWrite": false,
          "kerberos5iReadOnly": false,
          "kerberos5iReadWrite": false,
          "kerberos5pReadOnly": false,
          "kerberos5pReadWrite": false,
          "hasRootAccess": true
        }
      ]
    },
    "protocolTypes": ["NFSv3", "NFSv4.1"],
    "subnetId": "/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{anf-subnet}",
    "tags": {
      "epic-app": "nas-storage",
      "epic-stamp": "production",
      "DataClassification": "PHI",
      "migration-source": "on-premises-netapp",
      "Component": "Epic NAS Storage"
    }
  }
}

Phase 2: Cluster Peering Configuration

Step 2: Initiate Cluster Peering from Azure

# Establish cluster peering relationship
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/peerExternalCluster?api-version=2024-09-01

# Request Body:
{
  "peerClusterName": "epic-prod-cluster",
  "peerClusterIpAddress": "192.168.1.100",  # On-premises cluster management IP
  "peerClusterApplications": ["snapmirror"]
}

Step 3: Monitor Cluster Peering Status

# Get operation status
GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.NetApp/locations/{location}/operationResults/{operation-id}?api-version=2024-09-01

# Expected Response:
{
  "status": "Succeeded",
  "properties": {
    "peerClusterPassphrase": "generated-passphrase-for-acceptance"
  }
}

Step 4: Accept Cluster Peering on On-Premises

# Execute on on-premises NetApp cluster
cluster::> cluster peer create -address-family ipv4 -peer-addrs 10.1.1.100 -passphrase {generated-passphrase}
cluster::> cluster peer show

# Verify peering status
cluster::> cluster peer show -instance

Phase 3: SVM Peering and Replication Authorization

Step 5: Authorize External Replication (SVM Peering)

# Authorize SVM peering for SnapMirror
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/authorizeExternalReplication?api-version=2024-09-01

# Request Body:
{
  "remoteVolumeResourceId": "epic-prod-svm:epic_nas_volume_001"
}

Step 6: Accept SVM Peering on On-Premises

# Execute SVM peering command from Azure response
cluster::> vserver peer accept -vserver epic-prod-svm -peer-vserver {ANF-SVM-Name}

# Verify SVM peering
cluster::> vserver peer show

Phase 4: SnapMirror Relationship and Data Transfer

Step 7: Initialize SnapMirror Relationship

The SVM peering authorization in Step 5 automatically initiates the baseline SnapMirror transfer. Monitor progress:

# Monitor SnapMirror status on on-premises
cluster::> snapmirror show -destination-path {ANF-SVM}:epic-nas-migration

# Check transfer progress
cluster::> snapmirror show-history -destination-path {ANF-SVM}:epic-nas-migration

Step 8: Perform Final Delta Sync (Pre-Cutover)

# Trigger final incremental update before cutover
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/performReplicationTransfer?api-version=2024-09-01

# Monitor completion
GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.NetApp/locations/{location}/operationResults/{operation-id}?api-version=2024-09-01

Phase 5: Cutover and Production Activation

Step 9: Break SnapMirror Relationship (Activate ANF Volume)

# Break replication to make ANF volume read-write
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/breakReplication?api-version=2024-08-01

# Verify volume is now read-write
az netappfiles volume show \
  --resource-group {resource-group} \
  --account-name {anf-account} \
  --pool-name {pool-name} \
  --name {volume-name} \
  --query "properties.mirrorState"

๐Ÿฅ Epic-Specific Considerations

Clinical Downtime Coordination

PhaseEpic ImpactCoordination Required
Phases 1-4None - read-only replicationEpic team notification
Phase 5 (Cutover)5-15 minutes downtimeEpic maintenance window
Post-CutoverPerformance validationEpic team verification

Epic NAS Mount Point Updates

# Update Epic application servers to use ANF mount points
# Example for Epic Hyperspace servers

# Old on-premises mount
# /mnt/epic/hyperspace mounted from 192.168.1.50:/epic_hyperspace

# New ANF mount
# /mnt/epic/hyperspace mounted from 10.1.1.100:/epic-nas-migration

# Update /etc/fstab on Epic servers
10.1.1.100:/epic-nas-migration /mnt/epic/hyperspace nfs4 defaults,_netdev,sec=sys 0 0

Performance Validation

# Validate Epic storage performance requirements
# IOPS: >50,000 4K random read/write
# Latency: <2ms average
# Throughput: >1GB/s sequential

# Performance testing from Epic servers
fio --name=epic-perf-test \
    --directory=/mnt/epic/hyperspace \
    --size=10G \
    --ioengine=libaio \
    --direct=1 \
    --rw=randread \
    --bs=4k \
    --numjobs=4 \
    --runtime=300 \
    --group_reporting

๐Ÿ”„ Optional: Replication Resync and Cleanup

For Testing Scenarios (Resync)

If the break operation was for testing, you can re-establish replication:

# Resync replication relationship
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/resyncReplication?api-version=2024-07-01-preview

Final Cleanup (Production Cutover Complete)

# Finalize migration and clean up on-premises resources
POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.NetApp/netAppAccounts/{anf-account}/capacityPools/{pool-name}/volumes/{volume-name}/finalizeExternalReplication?api-version=2024-07-01-preview

# Remove on-premises SnapMirror relationships
cluster::> snapmirror delete -destination-path {ANF-SVM}:epic-nas-migration
cluster::> snapmirror release -destination-path {ANF-SVM}:epic-nas-migration

๐Ÿšจ Troubleshooting Guide

Common Issues and Resolutions

Problem: Cluster peering fails with network connectivity error

Diagnosis: Network connectivity between on-premises and Azure Resolution:

  1. Verify ExpressRoute or VPN connectivity
  2. Check firewall rules for NetApp intercluster ports (11104, 11105)
  3. Validate DNS resolution for cluster management interfaces

Problem: SnapMirror initialization extremely slow

Diagnosis: Network bandwidth or source volume size Resolution:

  1. Check available bandwidth to Azure (minimum 1Gbps recommended)
  2. Consider throttling SnapMirror to avoid impacting Epic production
  3. Schedule initial sync during Epic maintenance window

Problem: Epic applications can't access ANF volume after cutover

Diagnosis: Network configuration or NFS export policy Resolution:

  1. Verify Epic servers can reach ANF subnet (10.1.1.x)
  2. Check NFS export policy allows Epic subnet ranges
  3. Validate DNS resolution for ANF volume mount target

Performance Issues

Problem: Epic reports slow NAS performance post-migration

Diagnosis: ANF service level or volume configuration Resolution:

  1. Verify Premium service level is configured
  2. Check volume size meets Epic throughput requirements (16TB minimum for full throughput)
  3. Monitor ANF metrics for IOPS and latency

๐Ÿ”— Related Documentation

Related Infrastructure Documentation

Epic Integration Standards

Compliance Framework


๐Ÿ“ž Support & Contacts

Migration Support Team

DomainContactAvailability
Epic Storage Issues[email protected]24/7 during migration
Azure NetApp Files[email protected]Business hours
Network Connectivity[email protected]24/7
Clinical Coordination[email protected]Business hours

Emergency Escalation


๐Ÿ’พ Migration Excellence: Seamless Epic NAS migration to Azure NetApp Files maintaining clinical system performance and PHI data protection.