=============== LIBRARY RULES =============== From library maintainers: - This is unofficial documentation - always verify against official Veeam Help Center # Veeam Plug-in for Nutanix AHV Veeam Plug-in for Nutanix AHV is a software component integrated with Veeam Backup & Replication that provides comprehensive data protection and disaster recovery capabilities for Nutanix AHV virtualization environments. The plug-in enables administrators to create image-level backups of Nutanix AHV virtual machines, store them in backup repositories, and perform various restore operations including full VM recovery, instant recovery, file-level restore, disk restore, and application item restore. The plug-in leverages Nutanix AHV's native Changed Block Tracking (CBT) mechanism through the REST API to efficiently perform incremental backups by reading only changed data blocks. It supports multiple backup methods including forever forward incremental and forward incremental backups, with configurable retention policies. The solution uses Linux-based worker VMs deployed within Nutanix clusters to process backup workloads and distribute traffic when transferring data to repositories. Version 13.9.0.212 is compatible with Veeam Backup & Replication 13.0.1.180 and supports Nutanix AOS 6.8.1.6+ and Prism Central pc.2022.6 through pc.2024.3.1.10. ## Adding Nutanix AHV Cluster to Backup Infrastructure Before performing any backup or restore operations, you must add your Nutanix AHV cluster or Prism Central to the Veeam backup infrastructure. This establishes the connection between Veeam Backup & Replication and your Nutanix environment, enabling resource discovery and protection. ```powershell # PowerShell example using Veeam PowerShell module # Connect to Veeam Backup Server Connect-VBRServer -Server "veeam-backup-server.domain.com" # Add Nutanix AHV cluster to backup infrastructure # Step 1: Create credentials for Nutanix cluster access $nutanixCreds = Get-VBRCredentials -Name "NutanixAdmin" # If credentials don't exist, add them first # Add-VBRCredentials -Type Linux -User "admin" -Password (ConvertTo-SecureString "password" -AsPlainText -Force) -Description "Nutanix Admin" # Step 2: Add Nutanix AHV server (cluster or Prism Central) Add-VBRAHVServer -Name "prism-central.domain.com" -Credentials $nutanixCreds -Port 9440 # Verify the cluster was added successfully Get-VBRAHVServer | Format-Table Name, Type, Version # Output: # Name Type Version # ---- ---- ------- # prism-central.domain.com PrismCentral pc.2024.1 ``` ## Deploying and Managing Workers Workers are Linux-based VMs that process backup workloads in Nutanix AHV environments. Each worker can handle up to 4 concurrent backup and restore tasks with the default configuration (6 vCPU, 6 GB RAM, 100 GB disk). ```powershell # Deploy a new worker to the Nutanix AHV cluster $cluster = Get-VBRAHVCluster -Name "Production-Cluster" $container = Get-VBRAHVContainer -Cluster $cluster -Name "Default-Container" $network = Get-VBRAHVNetwork -Cluster $cluster -Name "VM-Network" # Add worker with automatic host selection (recommended for load balancing) Add-VBRAHVWorker -Cluster $cluster ` -Name "veeam-worker-01" ` -Container $container ` -Network $network ` -AutomaticHostSelection $true ` -MaxConcurrentTasks 4 # Add worker with manual host selection $host = Get-VBRAHVHost -Cluster $cluster -Name "ahv-node-01" Add-VBRAHVWorker -Cluster $cluster ` -Name "veeam-worker-02" ` -Container $container ` -Network $network ` -Host $host ` -MaxConcurrentTasks 6 # Test worker configuration Test-VBRAHVWorker -Worker (Get-VBRAHVWorker -Name "veeam-worker-01") # List all workers and their status Get-VBRAHVWorker | Format-Table Name, Status, Cluster, MaxTasks # Output: # Name Status Cluster MaxTasks # ---- ------ ------- -------- # veeam-worker-01 Configured Production-Cluster 4 # veeam-worker-02 ShutDown Production-Cluster 6 ``` ## Creating Backup Jobs Backup jobs define which VMs to protect, where to store backups, retention policies, and scheduling options. The plug-in supports forever forward incremental and forward incremental backup methods. ```powershell # Create a new backup job for Nutanix AHV VMs $cluster = Get-VBRAHVCluster -Name "Production-Cluster" $repository = Get-VBRBackupRepository -Name "Backup-Repository-01" # Get VMs to include in the backup job $vm1 = Get-VBRAHVVirtualMachine -Cluster $cluster -Name "Web-Server-01" $vm2 = Get-VBRAHVVirtualMachine -Cluster $cluster -Name "DB-Server-01" # Create backup job with forever forward incremental method Add-VBRAHVBackupJob -Name "Production-VMs-Backup" ` -BackupRepository $repository ` -Entity @($vm1, $vm2) ` -RetentionPolicy 14 ` -RetentionType Days ` -Description "Daily backup of production VMs" # Configure job schedule - daily at 2:00 AM $job = Get-VBRJob -Name "Production-VMs-Backup" Set-VBRJobSchedule -Job $job ` -Daily ` -At "02:00" ` -DailyKind Everyday # Enable the job schedule Enable-VBRJobSchedule -Job $job # Configure retry settings for failed items Set-VBRJobOptions -Job $job ` -RetryTimes 3 ` -RetryTimeout 10 # Start the backup job manually Start-VBRJob -Job $job # Monitor job session progress Get-VBRSession -Job $job -Last | Format-List Name, State, Progress, Result # Output: # Name : Production-VMs-Backup # State : Working # Progress : 45% # Result : None ``` ## Creating VeeamZIP Backups VeeamZIP allows you to create ad-hoc full backups of VMs without configuring backup jobs. This is useful for archiving VMs before decommissioning or creating quick backups. ```powershell # Create VeeamZIP backup of a single VM $cluster = Get-VBRAHVCluster -Name "Production-Cluster" $vm = Get-VBRAHVVirtualMachine -Cluster $cluster -Name "Test-VM-01" $repository = Get-VBRBackupRepository -Name "Archive-Repository" # Create VeeamZIP backup to repository Start-VBRZip -Entity $vm ` -Folder $repository ` -Compression 5 ` -DisableQuiesce:$false # Create VeeamZIP backup to network share Start-VBRZip -Entity $vm ` -Folder "\\fileserver\backups\veeamzip" ` -Compression 5 # Create VeeamZIP for multiple VMs $vms = Get-VBRAHVVirtualMachine -Cluster $cluster | Where-Object { $_.Name -like "Dev-*" } foreach ($vm in $vms) { Start-VBRZip -Entity $vm -Folder $repository -RunAsync } # Check VeeamZIP backup status Get-VBRSession -Name "VeeamZIP*" -Last 5 | Format-Table Name, CreationTime, State, Result ``` ## Performing Full VM Restore Full VM restore allows you to recover entire virtual machines from backups to the original or a new location in any Nutanix AHV cluster added to the infrastructure. ```powershell # Restore VM to original location $backup = Get-VBRBackup -Name "Production-VMs-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "Web-Server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Restore to original location with original settings Start-VBRAHVRestoreVM -RestorePoint $restorePoint ` -PowerOnAfterRestore $true ` -Reason "Disaster recovery - corrupted OS" # Restore to new location with different settings $targetCluster = Get-VBRAHVCluster -Name "DR-Cluster" $targetContainer = Get-VBRAHVContainer -Cluster $targetCluster -Name "DR-Container" $targetNetwork = Get-VBRAHVNetwork -Cluster $targetCluster -Name "DR-Network" Start-VBRAHVRestoreVM -RestorePoint $restorePoint ` -Server $targetCluster ` -Container $targetContainer ` -VMName "Web-Server-01-Restored" ` -Network $targetNetwork ` -PowerOnAfterRestore $false ` -Reason "Test restore for DR validation" # Restore multiple VMs at once $restorePoints = Get-VBRRestorePoint -Backup $backup | Group-Object Name | ForEach-Object { $_.Group | Sort-Object CreationTime -Descending | Select-Object -First 1 } foreach ($rp in $restorePoints) { Start-VBRAHVRestoreVM -RestorePoint $rp ` -Server $targetCluster ` -VMName "$($rp.Name)-DR" ` -RunAsync } ``` ## Performing Instant Recovery Instant Recovery allows you to immediately restore VMs by running them directly from backup files, minimizing downtime. The VM runs from the backup while data is migrated to production storage. ```powershell # Perform Instant Recovery to Nutanix AHV $backup = Get-VBRBackup -Name "Production-VMs-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "Critical-App-Server" | Sort-Object CreationTime -Descending | Select-Object -First 1 $targetCluster = Get-VBRAHVCluster -Name "Production-Cluster" $targetContainer = Get-VBRAHVContainer -Cluster $targetCluster -Name "Fast-Storage" $targetNetwork = Get-VBRAHVNetwork -Cluster $targetCluster -Name "Production-Network" # Start Instant Recovery session $irSession = Start-VBRAHVInstantRecovery -RestorePoint $restorePoint ` -Server $targetCluster ` -Container $targetContainer ` -VMName "Critical-App-Server-IR" ` -Network $targetNetwork ` -Reason "Production server failure - immediate recovery required" # Monitor Instant Recovery session Get-VBRInstantRecovery | Format-Table VMName, State, StartTime # Output: # VMName State StartTime # ------ ----- --------- # Critical-App-Server-IR Running 2024-01-15 10:30:00 # Migrate the instantly recovered VM to production storage (finalize) Stop-VBRAHVInstantRecovery -InstantRecovery $irSession -Migrate # Or discard the recovery if it was just for testing # Stop-VBRAHVInstantRecovery -InstantRecovery $irSession -Discard ``` ## Performing File-Level Restore File-level restore (FLR) allows you to recover individual files and folders from VM backups without restoring the entire VM. ```powershell # Start file-level restore session $backup = Get-VBRBackup -Name "Production-VMs-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "File-Server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Start FLR session - this mounts the backup and opens the file browser $flrSession = Start-VBRWindowsFileRestore -RestorePoint $restorePoint # The backup is mounted and accessible via the Veeam Backup Browser # Files can be restored via GUI or PowerShell # Restore specific files to original location $filesToRestore = @( "C:\Data\Reports\quarterly-report.xlsx", "C:\Data\Documents\contracts\" ) # Restore files using the mounted session Copy-VBRRestorePointFile -Session $flrSession ` -Source $filesToRestore ` -Destination "C:\Restored\" ` -Overwrite $false # Stop the FLR session when done Stop-VBRWindowsFileRestore -FileRestore $flrSession # For Linux VMs, use the appropriate restore method $linuxRestorePoint = Get-VBRRestorePoint -Backup $backup -Name "Linux-Server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 Start-VBRLinuxFileRestore -RestorePoint $linuxRestorePoint ``` ## Performing Disk Restore Disk restore allows you to recover individual virtual disks from backups and attach them to existing VMs in your Nutanix AHV environment. ```powershell # Get restore point for disk restore $backup = Get-VBRBackup -Name "Production-VMs-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "DB-Server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Get target VM to attach the restored disk $cluster = Get-VBRAHVCluster -Name "Production-Cluster" $targetVM = Get-VBRAHVVirtualMachine -Cluster $cluster -Name "DB-Server-02" # Restore disk and attach to target VM Start-VBRAHVDiskRestore -RestorePoint $restorePoint ` -DiskName "scsi0:1" ` -TargetVM $targetVM ` -Reason "Recovering database disk to secondary server" # Export disk to VMDK format instead of attaching Start-VBRDiskExport -RestorePoint $restorePoint ` -DiskName "scsi0:0" ` -OutputPath "\\fileserver\exports\" ` -Format VMDK # Export to VHD format for Hyper-V compatibility Start-VBRDiskExport -RestorePoint $restorePoint ` -DiskName "scsi0:0" ` -OutputPath "\\fileserver\exports\" ` -Format VHD ``` ## Performing Application Item Restore Application item restore enables granular recovery of application data including Active Directory objects, Exchange mailboxes, SQL databases, Oracle databases, and PostgreSQL databases. ```powershell # Restore Microsoft SQL Server database $backup = Get-VBRBackup -Name "Production-VMs-Backup" $restorePoint = Get-VBRRestorePoint -Backup $backup -Name "SQL-Server-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 # Launch Veeam Explorer for SQL Server Start-VBRSQLDatabaseRestore -RestorePoint $restorePoint # The Veeam Explorer GUI opens for granular database recovery # Supports: database restore, table restore, point-in-time recovery # Restore Active Directory objects $adRestorePoint = Get-VBRRestorePoint -Backup $backup -Name "DC-01" | Sort-Object CreationTime -Descending | Select-Object -First 1 Start-VBRADObjectRestore -RestorePoint $adRestorePoint # Opens Veeam Explorer for Active Directory # Supports: user, group, OU, GPO, and other AD object recovery # Restore Oracle database $oracleRestorePoint = Get-VBRRestorePoint -Backup $backup -Name "Oracle-Server" | Sort-Object CreationTime -Descending | Select-Object -First 1 Start-VBROracleRestore -RestorePoint $oracleRestorePoint # Opens Veeam Explorer for Oracle # Supports: database restore, tablespace restore, point-in-time recovery ``` ## Creating Backup Copy Jobs Backup copy jobs create additional copies of backups in secondary repositories for disaster recovery and long-term retention purposes. ```powershell # Create backup copy job $sourceBackup = Get-VBRBackup -Name "Production-VMs-Backup" $targetRepository = Get-VBRBackupRepository -Name "DR-Repository" Add-VBRBackupCopyJob -Name "Production-VMs-Copy-to-DR" ` -BackupJob $sourceBackup.JobId ` -Repository $targetRepository ` -RetentionPolicy 30 ` -RetentionType Days # Configure GFS (Grandfather-Father-Son) retention for long-term archival $copyJob = Get-VBRJob -Name "Production-VMs-Copy-to-DR" Set-VBRJobGFSOptions -Job $copyJob ` -KeepWeeklyFullBackup $true ` -WeeklyBackups 4 ` -KeepMonthlyFullBackup $true ` -MonthlyBackups 12 ` -KeepYearlyFullBackup $true ` -YearlyBackups 5 # Enable and start the backup copy job Enable-VBRJob -Job $copyJob Start-VBRJob -Job $copyJob # Monitor backup copy progress Get-VBRSession -Job $copyJob -Last | Format-List State, Progress, Result ``` ## Configuring Retention Policies Retention policies control how long backup restore points are kept before being removed. The plug-in supports both simple retention (by days/restore points) and GFS retention for long-term archival. ```powershell # Configure simple retention policy $job = Get-VBRJob -Name "Production-VMs-Backup" # Set retention to 14 days Set-VBRJobOptions -Job $job ` -RetentionPolicy 14 ` -RetentionType Days # Set retention to specific number of restore points Set-VBRJobOptions -Job $job ` -RetentionPolicy 7 ` -RetentionType RestorePoints # Configure GFS (Grandfather-Father-Son) retention Set-VBRJobGFSOptions -Job $job ` -KeepWeeklyFullBackup $true ` -WeeklyBackups 5 ` -WeeklyBackupDay Friday ` -KeepMonthlyFullBackup $true ` -MonthlyBackups 12 ` -MonthlyBackupDay Last ` -KeepYearlyFullBackup $true ` -YearlyBackups 7 ` -YearlyBackupMonth December # View current retention settings Get-VBRJobOptions -Job $job | Select-Object RetentionPolicy, RetentionType Get-VBRJobGFSOptions -Job $job | Format-List # Output: # KeepWeeklyFullBackup : True # WeeklyBackups : 5 # KeepMonthlyFullBackup : True # MonthlyBackups : 12 # KeepYearlyFullBackup : True # YearlyBackups : 7 ``` ## Summary Veeam Plug-in for Nutanix AHV provides a complete data protection solution for Nutanix AHV environments, offering multiple backup methods (forever forward incremental, forward incremental, VeeamZIP) and comprehensive restore capabilities. The main use cases include protecting production VMs with scheduled backup jobs, creating ad-hoc backups with VeeamZIP for archival purposes, performing disaster recovery with full VM restore or instant recovery, recovering individual files through file-level restore, restoring application items for SQL Server, Oracle, Active Directory, and other enterprise applications, and implementing 3-2-1 backup strategies using backup copy jobs to secondary sites. Integration with existing Veeam Backup & Replication infrastructure is seamless through the Veeam Backup & Replication console and PowerShell cmdlets. Organizations can leverage existing backup repositories, including on-premises storage, object storage, and cloud repositories. The plug-in integrates with Nutanix Prism Central for centralized management of multiple clusters and supports cross-platform restore scenarios, enabling recovery of workloads from VMware vSphere, Microsoft Hyper-V, AWS, Azure, Google Cloud, and physical machine backups to Nutanix AHV, as well as recovery of Nutanix AHV backups to these platforms.