This guide walks through configuring Veeam Backup & Replication (v12.3.x) from a working perspective: adding a Linux hardened (immutable) repository, building a scale-out backup repository, creating a VMware backup job, and adding a backup copy job for an offsite/second-media copy. We show both the console workflow and the equivalent Veeam PowerShell cmdlets so you can automate. Every cmdlet below is from the official Veeam PowerShell module.
Prerequisites
- Veeam Backup & Replication server installed and licensed.
- A Linux host (XFS file system recommended) intended as the hardened repository, with a dedicated single-use account that has sudo only for deployment.
- vCenter or an ESXi host already added under Backup Infrastructure > Managed Servers.
- The Veeam PowerShell module is installed with the console. Open PowerShell as Administrator on the backup server.
Step 1 — Start a Veeam PowerShell session
Import the module and connect to the backup server. With no server specified you connect to the local backup server:
Import-Module Veeam.Backup.PowerShell
Connect-VBRServer -Server "localhost"To connect to a remote backup server with explicit credentials:
$cred = Get-Credential
Connect-VBRServer -Server "vbr01.corp.local" -Credential $credStep 2 — Prepare the Linux hardened (immutable) repository
The hardened repository relies on the XFS file system, which gives Veeam both Fast Clone (reflink-based synthetic fulls) and immutability via the Linux immutable attribute. On the Linux host, format and mount the data volume with reflink enabled before adding it in Veeam. Example (run on the Linux repository host):
# Format the data disk as XFS with block-cloning (reflink) support
sudo mkfs.xfs -m reflink=1,crc=1 /dev/sdb
# Create a mount point and mount it
sudo mkdir -p /backups
sudo mount /dev/sdb /backups
# Verify reflink is enabled
sudo xfs_info /backups | grep reflinkWhen you register this host as a hardened repository in Veeam, you enable Make recent backups immutable for N days. The minimum immutability period is 7 days and the maximum is 9999 days. Veeam sets the Linux immutable attribute on each backup file and records the period in a per-file .veeam.N.lock file; the local veeamimmureposvc service sets and later clears the attribute when the period expires. While immutable, files cannot be modified or deleted by anyone, including root.
Step 3 — Add the hardened repository
In the console: Backup Infrastructure > Backup Repositories > Add Repository > Direct attached storage > Linux (Hardened Repository), point it at /backups, and enable immutability for, e.g., 14 days.
To add a repository via PowerShell, first register the Linux server, then add the repository:
# Add the Linux server to the infrastructure (single-use credentials prompted)
$cred = Get-VBRCredentials -Name "veeam-deploy"
$linux = Add-VBRLinux -Name "hardened01.corp.local" -Credentials $cred
# Add the hardened repository on that server (immutability is enabled in the console wizard)
Add-VBRBackupRepository -Name "Hardened-Repo-01" `
-Server $linux `
-Folder "/backups" `
-Type LinuxLocalConfirm the repository exists:
Get-VBRBackupRepository -Name "Hardened-Repo-01"Step 4 — (Optional) Build a Scale-Out Backup Repository
A SOBR combines a fast performance tier with a capacity tier on object storage (with S3 Object Lock immutability) and an optional archive tier. After adding your performance extent(s) and an object-storage repository, create the SOBR:
# Performance tier extent(s)
$perf = Get-VBRBackupRepository -Name "Hardened-Repo-01"
# Object-storage capacity extent (already added as an object repo)
$cap = Get-VBRObjectStorageRepository -Name "S3-Capacity"
Add-VBRScaleOutBackupRepository -Name "SOBR-Main" `
-PolicyType DataLocality `
-PerformanceTier $perf `
-CapacityTier $capNote: if you use immutability and have several extents in the performance tier, you must enable immutability on all of them — mixed configurations are not allowed.
Step 5 — Create a VMware backup job
In the console, run Home > Backup Job > Virtual machine > VMware vSphere, add VMs, choose the repository, set retention and enable application-aware processing.
Via PowerShell, find the VM entities first, then create the job:
# Locate the vCenter/host and the VMs to protect
$vc = Get-VBRServer -Name "vcenter01.corp.local"
$vm1 = Find-VBRViEntity -Server $vc -Name "SQL-PROD-01"
$vm2 = Find-VBRViEntity -Server $vc -Name "APP-PROD-01"
# Target repository
$repo = Get-VBRBackupRepository -Name "Hardened-Repo-01"
# Create the backup job
Add-VBRViBackupJob -Name "Daily-Prod-VMs" `
-Entity $vm1,$vm2 `
-BackupRepository $repoEnable application-aware processing and guest credentials in the job's Guest Processing step so SQL, Exchange and Active Directory restores are transaction-consistent.
Step 6 — Add a backup copy job (offsite / second media)
To satisfy the 3-2-1 part of the rule, copy restore points to a second repository (offsite or different media) with GFS weekly/monthly/yearly retention:
# Source job and the offsite/second-media target repository
$job = Get-VBRJob -Name "Daily-Prod-VMs"
$offsite = Get-VBRBackupRepository -Name "DR-Repo-Jeddah"
Add-VBRBackupCopyJob -Name "Copy-Prod-Offsite" `
-BackupJob $job `
-Repository $offsiteStep 7 — Run and verify
Start the primary job on demand and check status:
$job = Get-VBRJob -Name "Daily-Prod-VMs"
Start-VBRJob -Job $job
# Review the last session result
Get-VBRBackupSession | Where-Object { $_.JobName -eq "Daily-Prod-VMs" } |
Sort-Object CreationTime -Descending | Select-Object -First 1 |
Format-List Name, State, Result, CreationTime, EndTimeA Result of Success with no warnings is your baseline. For true verified recoverability, configure a SureBackup job to boot the protected VMs in an isolated Virtual Lab on a schedule — this is the '0' (zero recovery errors) in 3-2-1-1-0.
Step 8 — Protect the configuration and disconnect
Always enable and test configuration backup so you can rebuild the Veeam server itself, then close the session:
Disconnect-VBRServerTroubleshooting quick reference
- Immutable files won't clear: check the
veeamimmureposvcservice on the hardened repository and confirm the immutability period has actually elapsed. - Slow jobs: review the bottleneck stats (Source / Proxy / Network / Target) in the session and adjust transport mode or proxy count.
- Synthetic fulls slow on the repository: verify XFS reflink (Fast Clone) is active with
xfs_info | grep reflink.
Need this designed and operated for you across Saudi Arabia? See our Veeam Backup & Replication deployment & support services, read the strategy guide Veeam backup best practices: 3-2-1-1-0 for Saudi enterprises, browse the cloud & infrastructure category, or contact us on +966 50 993 9334.
Comments
0 total · 0 threads