Skip to content

Tag: veeam

[Veeam] Manually remove restore points

Veeam does not have a built-in function to remove restore points manually, it took me a while but after trying a lot of different ways and scripts I have found a way to do it. (Please note that this is a last resort, Veeam should clean-up old restore points by itself)

  1. Go to Backup & Replication -> Backups.
  2. Right-click the job you want to edit and click ‘Remove from configuration’ (Do not delete from disk!).
  3. Open the Windows Explorer and browse to the job’s folder in the backup repository.
  4. Delete the restore points you want to remove, and delete the .VBM file.
  5. Re-import the most recent .VBK file in the Veeam.
  6. Run the following script using the Veeam Powershell to generate a new .VBM file:
    #[Veeam.Backup.Core.CCredentilasStroreInitializer]::InitLocal() to work with Lin repository
    $backupName = Read-Host "Enter backup name for meta regeneration"
    Add-Type -Path "C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.Core.dll"
    $backup = [Veeam.Backup.Core.CBackup]::GetAll() | Where { $_.Name.Equals($backupName) } | Select -index 0
        if ($backup -eq $null)
            throw ("There is no backup with specified name : " + $backupName)
    $storageAccessor = [Veeam.Backup.Core.CStorageAccessorFactory]::Create($backup)
    $metaUpdater = New-Object Veeam.Backup.Core.CSimpleBackupMetaUpdater
    $metaEx = new-object Veeam.Backup.Core.CBackupMetaEx -ArgumentList $backup, $storageAccessor, $metaUpdater
    $metaFilePath = $backup.GetMetaFilePath($storageAccessor.FileCommander)
    Write-Host "Successfully saved meta for backup $($backupName) on $($storageAccessor.Name) : $($metaFilePath)"
    Write-Host $_.Exception.Message
    Write-Host $_.Exception.StackTrace
    Write-Host $_.Exception.InnerException.Message
    Write-Host $_.Exception.InnerException.StackTrace
    $Reader = [System.IO.StreamReader] $metaFilePath 
    $MyString = $Reader.ReadToEnd();
    $removeString = 'LinkId="00000000-0000-0000-0000-000000000000"';
    $index = $MyString.IndexOf($removeString);
    $lengh = $removeString.Length;
    $start = $MyString.Substring(0, $index);
    $end  = $MyString.Substring($index + $lengh);
    $clean = $start + $end;
    $writer = [System.IO.StreamWriter] $metaFilePath
  7. Remove the imported backup from Veeam
  8. Re-scan the backup repository (Backup Infrastructure -> Backup Repositories)
  9. Go to the associated backup job and re-map the backup. You can do this by editing the job, going to the Storage-tab and click Map backup.

And that’s it! Now you’ve reclaimed the disk space you needed, removed corrupted backups, or whatever reason you had for removing the restore points.

[Veeam] Repeatedly failing replica-jobs, fixed!

So, let’s take a break from all the Powershell creativity and take a look at everybody’s favourite thing in IT: Backups! Failed backups!

(The screenshots are unclear and censored to protect customer information)

The problem here is that Veeam’s replication jobs started failing, stating that an ‘Invalid Snapshot Configuration’ was the problem. Sounds easy, right?
Well, it turns out that this can cause a lot of work to get this fixed, so to save you some time I documented the solution for you.

First I tried consolidation the snapshots, but it greeted me with the following error:


A CID mismatch.. not on my watch! Let’s check this out and start an SSH connection to the ESX-host where these VMs are placed and run some checks:

So, for some reason the snapshots have registered themselves as the parent CID instead of the actual base disk:

We can fix this! Open the .vmdk-files using VIM and simply edit the parent CID to the CID of the base disk.

Now consolidate the snapshots again, restart your replica jobs, problem solved!

Stefan van Bruggen - 2019