Veeam: A VSS critical writer has failed
While deploying Veeam Backup & Replication recently for a customer, we came across the following error message while backing up a domain controller:
Unable to release guest. Error: Unfreeze error: [Backup job failed.
Cannot create a shadow copy of the volumes containing writer’s data.
A VSS critical writer has failed. Writer name: [NTDS]. Class ID: [{b2014c9e-8711-4c5c-a5a9-
3cf384484757}]. Instance ID: [{bcc3ddec-3a1b-4bbd-bb5c-2da62e9bcb4d}]. Writer’s state: [VSS_WS_FAILED_AT_POST_SNAPSHOT]. Error code: [0x800423f4].]
Running VSSAdmin List Writers showed in fact that the NTDS Writer was in an Error state with [11] Failed, “Non-retryable error”.
The issue was due to a conflict with Shadow Protect, which was also doing VSS Backups. As Veeam was going to be replacing ShadowProtect, the fix for this was to remove the Shadow Protect VSS Provider:
First re-run the ShadowProtect backup which restored the NTDS Writer to a Ready State.
Open Regedit
Browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Providers\
You should see the GUID {24602736-bed9-4619-91b0-243447c6409c} listed. Clicking on it shows “StorageCraft Volume Snapshot Software Provider”
Backup this registry key, then delete it.
Open Windows services and restart the “Volume Shadow Copy” service. It may be stopped to begin with, that’s okay.
Check and see if the provider is gone from: vssadmin list providers
Reboot the server when next possible.
Re-run Veeam backup and all should be successful!
Remove Exchange 2010 Archive Database from Provisioning
After creating an Archive Database in Exchange 2010, you find that Exchange will put new user mailboxes on this database, in order to balance mailboxes across stores. The easiest way to avoid this is to exclude the Archive Database from your mailbox provisioning.
Using Exchange 2010 Powershell, get a list of your mailbox databases by running Get-MailboxDatabase:
Once you confirm the name of your archive database, exclude it from automatic provisioning by running the following PowerShell command: Set-MailboxDatabase -Identity “Archive Database” -IsExcludedFromProvisioning $True