Azure NetApp Files SnapMirror Migration Guide
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
| Component | Requirement | Epic Consideration |
|---|---|---|
| Source NetApp Cluster | ONTAP 9.7+ with SnapMirror license | Epic-certified storage configuration |
| Azure Subscription | ANF service enabled with Premium tier | Epic performance requirements |
| Network Connectivity | Site-to-site VPN or ExpressRoute | <2ms latency for Epic applications |
| Permissions | Contributor access to ANF resources | Change 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
| Phase | Epic Impact | Coordination Required |
|---|---|---|
| Phases 1-4 | None - read-only replication | Epic team notification |
| Phase 5 (Cutover) | 5-15 minutes downtime | Epic maintenance window |
| Post-Cutover | Performance validation | Epic 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:
- Verify ExpressRoute or VPN connectivity
- Check firewall rules for NetApp intercluster ports (11104, 11105)
- Validate DNS resolution for cluster management interfaces
Problem: SnapMirror initialization extremely slow
Diagnosis: Network bandwidth or source volume size Resolution:
- Check available bandwidth to Azure (minimum 1Gbps recommended)
- Consider throttling SnapMirror to avoid impacting Epic production
- 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:
- Verify Epic servers can reach ANF subnet (10.1.1.x)
- Check NFS export policy allows Epic subnet ranges
- 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:
- Verify Premium service level is configured
- Check volume size meets Epic throughput requirements (16TB minimum for full throughput)
- Monitor ANF metrics for IOPS and latency
๐ Related Documentation
Related Infrastructure Documentation
- Infrastructure Overview: Complete infrastructure automation framework
- VM Deployment Standards: Virtual machine deployment procedures
- Azure Policies: Compliance enforcement framework
Epic Integration Standards
- Epic Environment Standards: Epic-specific infrastructure requirements
- Epic Backup Procedures: Clinical data protection standards
- Epic Performance Monitoring: Clinical system performance tracking
Compliance Framework
- HIPAA Technical Safeguards: Healthcare security controls (coming soon)
- PHI Data Handling: Patient health information protection standards
๐ Support & Contacts
Migration Support Team
| Domain | Contact | Availability |
|---|---|---|
| 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
- Epic Production Impact: [email protected]
- Data Loss/Corruption: [email protected]
- Azure Service Issues: [email protected]
๐พ Migration Excellence: Seamless Epic NAS migration to Azure NetApp Files maintaining clinical system performance and PHI data protection.