The other day we had to use our Veeam environment together with a customers vSphere environment to migrate, well actually replicate in Veeam terminologies, a couple of virtual machines to our environment.
The vSphere environment was pretty new, which we don’t see that much with our customers. The version was vSphere 6.7 Build 10176752 and vCenter 6.7 Build 9451876.
Like always we started the Veeam replication jobs after configuring the correct virtual machines to replicate. After a couple of minutes I was plagued with the following message:
So as always I started troubleshooting in the job logs to find out what was happening and why it wasn’t replicating. After an hour or so I found basically nothing in the logs except for a verbose message of the one mentioned in the above picture:
[27.11.2018 16:31:17] <53> Error Object reference not set to an instance of an object. (System.NullReferenceException)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.AgentProvider.CVddkLinkSpec.CTransports.ResolveNbdCompressionType(String type, Version vddkVersion)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.AgentProvider.CVddkLinkSpec.CTransports.CreateWithNbdCompression(String type, Version vddkVersion)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.Core.CViDiskBackupObject.CreateVddkLinkSpec(CSoapConnection soapConnection, CViVmTask task, Int32 authdPort, CViProxyResourceDesc proxyResourceDesc, CAutoSnapshot snapshot, CEntity datacenter, String vmdkDatastoreName, String vmdkDatastorePath)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.Core.CViVmSource.GetVddkLink(CViDiskBackupObject viDiskBackupObject, CViProxyResourceDesc proxyDesc)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.Core.CViVmSource.GetSourceDiskLink(CViDiskBackupObject viDiskBackupObject, CViProxyResourceDesc proxyDesc)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.Core.CViVmSource.CreateDiskTaskSource(CDiskTask diskTask)
[27.11.2018 16:31:17] <53> Error at Veeam.Backup.Core.CSnapDiskTransferAlg.ProcessDisk(CDiskTask diskTask, IStopSessionSync sessControl)
So I started googling to find a solution to our problem, and after a couple of minutes I found the following post from Veeam.
Turns out, our Veeam environment wasn’t yet compatible with vSphere 6.7 U1! Our Veeam environment was version 9.5 U3a. It seems that vSphere 6.7 U1 support is coming in Veeam version 9.5 U4, which is expected to be released in Q4 2018/Q1 2019.
So how did we fix this so that we could still keep replicating virtual machines to our environment? Well after some more googling we found the following article.
It turns out that when you create a new registry key on the Veeam Backup and Replication machine, you can tell Veeam to use a previous version of the VMware vCenter API, which in turn enables the replication again. It seems that VMware changed something in the vSphere API that Veeam did not anticipate on.
Simply create the following registry key to keep using Veeam for your vSphere 6.7 U1 environments:
Location: HKEY_LOCAL_MACHINE\SOFTWARE\Veeam\Veeam Backup and Replication
Key type: Multi-String Value (REG_MULTI_SZ)
You should end up with something that looks like the registry key in the picture below:
Make sure there are no spaces in the data field. If there are, it won’t work!
After you created the registry key you should reboot the Veeam Backup and Replication (virtual) machine and you should be up and running again:
Remember to remove this registry key once you have installed a Veeam version that is compatible with vSphere 6.7 U1.
EDIT: The latest released Veeam version 9.5 Update 4 fully supports vSphere 6.7 U1!
EDIT2: This trick also works on Veeam version 9.5 3a and vSphere 6.7 U2! Check this blogpost to find out how!