If you want to enable virtualisation in a VM that is running inside Hyper-V (itself a hypervisor). Then you need to expose the virtualisation elements of the physical hosts processor to the nested VM.
I had a client machine struggling to get an DHCP address, and when I looked in DHCP the scope it was full of this;
BAD_ADDRESS This address Is Already in Use
Solution
A tour of Google and forums is full of posts by people with this problem, and other than, ‘Oh I looked in the logs and fixed it’ (with no mention of what log, or where this log was), or ‘Yeah I used Wireshark and located a problem client‘, then no follow up on what they did, or scanned for. So I pretty much had to slog through and work it out for myself. I’ll detail each step I took below, most of which didn’t help, or sent me in the wrong direction, but for you that may be a better solution.
And I will give you enough information to at least be helpful!
Firstly Common Sense Check: If this has just happened what have you changed? Have you added any Wireless Controllers, or Access Points? Have you deployed any new Switches or Firewalls. In my case, it was my test network so it could have been happening for months!
The most frequent cause of this error is simply because someone has setup another DHCP server on the network. That will be easy to diagnose, simply ‘Stop’ your DHCP Server;
Then on a DHCP client, issue an ifconfig /release and ifconfig /renew, If it gets an IP address, issue an ifconfig /all and look for the IP of the DHCP server it’s using, that’s your culprit. However as you can see, mine didn’t get an IP address so this wasn’t my problem.
The next most popular suggestion is to enable ‘Conflict Detection‘, though in most places the information on where to find this, is incorrect, (as it’s been copied and pasted around the forums without actually checking it!) See below, you locate it on the properties of the Protocol not the Server > Advanced Tab > You are supposed to set it between 1 and 6 so I went for 5, (but after deleting all the BAD_ADDRESS entries, they were all back after 30 minutes or so, so this didn’t work for me either).
Look in the logs: Well they were useless also, DHCP creates a new log every day in C:\Windows\System32\Dhcp called ‘DHCPSrvLog-DAY.log’ as you can see it was not helpful.
At this point I put my networking head on, and ‘thought outside the box’, If DHCP is detecting these as BAD ADDRESSES, then they must be in the arp cache on the DHCP server right? Well look at this;
[box]
arp -a
[/box]
Well that’s encouraging, at least now I’ve got a suspect MAC address, lookup up that MAC address online, and it comes back as VMWare (which sent me off in the wrong direction, it was not a VMware virtual machine in my vSphere in the end). Ive got a decent Cisco Switch so I thought I’d see which interface it was connected to, (but it wasn’t there).
[box]
show mac address-table
[/box]
At this point I was still thinking it was a VMware virtual machine, so I used PowerCLI (Thats PowerShell for VMware), to query for that MAC address, but that revealed nothing.
So, my last hope was Wireshark, I fired it up on the DHCP server, and set the filter to;
[box]
bootp.option.type == 53
[/box]
Then I deleted all the BAD_ADDRESS entries, left Wireshark ‘sniffing’, and went for lunch. I returned to this (see below). Now 192,168,100,107 was one of the BAD_ADDRESS entries, and I did not know what it was. The other entries on there for 192.168.100.3 are understandable, (that’s my DHCP server!) So now I had a Layer 3 address to hunt.
When I RDP connected to it, I got prompted for a password, so now I know it’s a Windows box! I hunted all through my VMware virtual machines, it was not there. Just as an afterthought I remembered I have a Hyper-V server, could that be running a virtual machine? BOOM! There is a SCVMM server, I was using for some Zerto testing a couple of months ago! Turned it off, problem solved!
Hope you find your culprit quicker than I did!
Related Articles, References, Credits, or External Links
Normally if you saw this error, it would mean that you didn’t have the advanced virtual extensions turned on, in the physical machine’s BIOS. But here I’m installing on Hyper-V in a vSphere/ESX environment;
Validation Results
The validation process found problems on the server which you want to install features. The selected features are not compatible with the current configuration of your selected server. Click OK to select different features.
Hyper-V cannot be installed: The processor does not have required virtualisation capabilities.
Solution
The VM in question needs to be ‘Powered Off’. Then edit its settings > VM Options > Expand CPU > Hardware virtualisation > Tick “Expose hardware assisted virtualisation to the guest” > OK.
Power on the VM, and then install the Hyper-V role.
Virtualising Hyper-V on Hyper-V
You need to expose the underlying virtualisation extensions on Hyper-V as well, with the following command;
Natively with Veeam Backup and Restore, the only way to do this, is to perform an Agent Based backup of your VMware VM. If you are unfamiliar with doing this, you create a Protection Group, and add the machines to that protection group. It’s really designed for backing up physical machines, but there’s no reason you can’t backup a VM in the same way.
Just so you know it’s not smoke and mirrors. here’s my VM in vSphere.
Perform an ‘Agent Based‘ backup off this VM.
Restore > Agent Restore > Instant Recovery.
Select the VM > Next > Set the Hyper-V server as the ‘Host’.
Finish the ‘Wizard’, and perform the restore.
You will need to complete the process by ‘Migrating to production’.
Wait for the process to complete.
And now it’s running in Hyper-V.
I’d run devmgmt.msc and make sure all the drivers are OK. That being said, anything after server 2008 should have the correct drivers for Hyper-V, and Veeam does not support agent-based backups on Server 2008 (or earlier) so all ‘should’ be fine.
Related Articles, References, Credits, or External Links
Recently I’ve looked a lot at converting VMware resources to either Hyper-V, or Azure. But what if you want to take a Microsoft machine (or workload) and run it in VMware?
Well the easiest way is to use some freeware, “StarWind V2V Image Converter”. These days I’m dubious about any piece of freeware, because it’s either a) Not Free when you actually want to use it in anger, b) Full of adware and nastiness, c) Just a vehicle to get your email address to send you marketing and junk.
Well you do need to supply an email address to get it but, other than suggesting I might want to take a look at their free VSAN software, they have left me alone (ThanQ).
Solution
Launch the software, and browse to the folder containing your .vhd to .vhdx file. (Note: You can connect directly to a Hypervisor if you wish).
Again I’m going to output to a local file, (faster) but as above, you can output to a Hypervisor. (I’ll simply just SCP the image into VMware and create a VM with it, when I’m finished).
Select your output type, basically they are; VMware Workstation (thick or thin), Stream optimised (.OVA), or the one we want, ESXi.
Note: You can also output to RAW file or GQCOW2 (Handy for if you run EVE-NG and what to upload a server/workstation into it!)
Time for a coffee! Hopefully this is what you will see.
Related Articles, References, Credits, or External Links
If your OS is 2008R2 or newer then you wont need to do this as the drivers are already included. But what if you have a machine that you want to put the drivers in before you virtualise or migrate it. Well if you mount the ISO and run it this happens;
Unsupported Guest Environment
The Hyper-V integration services can only be installed inside of a virtual machine running Hyper-V
Bah! You are not the boss of me! I want the drivers in here because I’m about to virtualise it!
Solution
Mount the Integrations Services ISO on the machine (or open it with 7Zip and treat it like a zip file)
If you have Hyper-V 2016 or newer and cant find the iso, Microsoft handily don’t include any more, because it’s a massive 29Mb is size? (Yeah I don’t understand either?) Here’s a copy. Go to the x86 or amd64 directory depending on whether you are x32 or x64 bit. locate the Windows{Version}-HyperVIntegrationServices-{processor-version}.cab that matches your machine and copy it to your desktop. Then open it, select all the files.
Open an administrative command prompt, then change directory to the folder you extracted all the files into. Run the following command;
[box]for /f %i in (‘dir /b /s *.inf’) do pnputil.exe -i -a %i[/box]
It will run though and install all the drivers, you may get some warnings that some of the drivers are unsafe or unsigned. Just say install them anyway.
Note: If you are on Server 2003, then there are a bunch of KB updates on the CD that you will also need to install.
Related Articles, References, Credits, or External Links
OK, I love VMware, vSphere has put food on my table for the past 10 years! But the fact remains plenty of people are now using Hyper-V. Recently I’ve been looking at migrating VMs from VMware into Azure, and while looking at the MVMC (Microsoft Virtual Machine Converter), to do the task, I thought I’d run thought the Hyper-V conversion route first.
MVMC has actually been depreciated now, but you can still download and use it, and it works fine with Server 2016.
Solution
Obviously you need a working Hyper-V server to Migrate into, I’m using Server 2016.
Download the MVMC
I’m going to install it on the Hyper-V server itself, (you don’t have to, but it keeps things nice and simple). I wont bore you with the install, run the installer and accept all the defaults.
Older VM Operating System Warning
Not until Server 2008 R2 did Microsoft include all the drivers and files needed for a Windows installation to run on a Microsoft Hypervisor. So If you are planning to convert Windows server 2008 (or earlier) then make sure you have applied all the windows updates before you start. With Server 2008 make sure you are (at least,) at SP2.
Note: Don’t try and be clever and install the Integration Services CD into the server before you migrate it. It will just complain it’s not being ran on a Microsoft Hypervisor and do nothing, (I know, I tried!)
Convert VMware vSphere Virtual Machine to Hyper-V
Launch the MVMC > Next.
Virtual Machine Conversion > Next.
Note: If you convert a physical machine it will convert each disk partition (including the 350Mb one,) into a separate virtual disk (.vhd to .vhdx). It will do the same with a Virtual disk but who is partitioning VMDKs?
Migrate to Hyper-V > Next.
Specify the name of your Hyper-V server and credentials > Next.
Enter a UNC path to the folder in which the converted virtual disks will live > Choose fixed/dynamic disks, (that’s Thick or Thin provisioned If you are a VMware type) > Select the disk type VHD or VHDX* > Next.
*Note: 2TB or 64TB Limit, (and vhdx will only run in Hyper-V).
Provide the access details for your vCenter, (or ESXi Server) > Next.
Select the VM you with to convert > Next.
My VM is not a domain member so I’m supplying the local administrator credentials > I want to power the source VM off when conversion is done, and power on the converted VM > Next.
Warning: At this point the VM being converted needs to have its windows firewall off, and be able to be resolved in DNS (or when you click next it will error!)
Supply a folder with sufficient capacity, (twice the site of the source VM) in which to perform the migration > Next.
Check the details > Finish.
Note: If it fails with a descriptor error see the following article;
All being well, you should see something like this
‘Another’ Older VM Operating System Warning
Unlike Hyper-V 2012 R2 (and earlier) now there’s no option to insert the Integration Services disk, and it’s no longer installed with Hyper-V 2016 (Thanks Microsoft!) As you can see my 2008 x32 server is missing a few drivers and it is complaining.
As I’m a top bloke I’ve got the CD iso below for you, download it and present it to your OLDER (pre 2008R2) Operating system. If you have a modern OS the drivers will all be in there anyway!
Seen when attempting to convert a VMware disk (.vmdk) file to a Microsoft disk (.vhd or .vhdx) with Microsoft Virtual Machine Converter.
Microsoft Virtual Machine Converter encountered an error while attempting to convert the virtual machine.
Details: The entry “{value}’ is not a supported disk database entry for the descriptor.
If you click on the ‘Log‘ link you will see something line this;
The entry 1 is not a supported disk database entry for the descriptor.
You will see a similar error ,if you use the ConvertT0-MvmcVirtualHardDisk PowerShell command;
[box]
ConvertTo-MvmcVirtualHardDisk : The entry 1 is not a supported disk database entry for the descriptor.
At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath $Winfolder\$VMDK -Vh …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel…nversionService:DriveConversionService) [ConvertTo-MvmcVirtualHardDisk], VmdkDescriptorParseException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
ConvertTo-MvmcVirtualHardDisk : One or more errors occurred. At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath $Winfolder\$VMDK -Vh …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel…nversionService:DriveConversionService) [ConvertTo-MvmcVi rtualHardDisk], AggregateException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
[/box]
Solution
I did some searching and found this was a common error, and that most people were fixing it with a tool called dsfok and using that to extract the descriptor file, and then edit it. Which is great, but all the examples had paths to the vmdk on Windows machines?
My VMDK was on an ESXi Datastore, (where you would expect it to be). I wasn’t about to start copying vmdk files off to Windows and back again. So I needed a solution that would work in LINUX and was quicker and easier, (I am lazy after all).
There’s two ways I found to fix this, if you are happy using a vi editor in Linux then use option 1, if you are a Windows type and prefer doing things with a GUI then use option 2.
Background: In an ESX environment VM-Name.vmdk is not actually the hard disk, that’s usually called VM-Name-flat.vmdk, the descriptor in your error message, you can find in the VM-Name.vmdk file. (which you can edit in a text editor).
Option 1 – Linux and Vi
SSH into your ESXi host, then change directory to the datastore that has the VM in it;
Change directory to the folder with your VM in it, and here you can see the VM-Name.vmdk and the VM-Name-flat.vmdk file I was taking about. Edit the file using vi (vi vm-name.vmdk).
OK, remember my initial error? It was talking about a value of “1” I’ve only got one entry with that value ‘ddb.toolsInstallType = “1”‘, simply comment that line out by prefixing it with a hash, (or pound sign if you’re American). Save and exit the file, then retry the conversion.
Note: If it wont let you edit the file, you may need to shut down the guest VM.
Download WinSCP and use it to connect to your ESXi host (SSH needs to be enabled). Navigate to vmfs > volumes > {Datastore-name} > {vm-name} locate the VM-Name.vmdk file and download it to your Windows machine.
You can now edit the file, as above locate the offending line, prefix it with a hash (pound) symbol so that it is ignored, then simply save and upload the file back again, (choosing ‘yes‘ when prompted to overwrite the file). Then retry the conversion.
Related Articles, References, Credits, or External Links
I’ve been rebuilding some Hyper-V hosts over the last few weeks, and one thing I learned rebuilding VMware ESX hosts is, ‘make sure you know what all the network cards are doing before you flatten it!’
The same is true of storage as well but here I’m just concentrating on networking.
List Network Cards and MAC Addresses
If you have these documented you can rename the network card correctly after the rebuild and the mac addresses ensure you have the right names assigned to the right NICs. (Without having to go and check all the cabling afterwards!)
From the names of the network connections above we can see we are using network teaming, but even if yours dont have sensible names, you can get the team names and the NICs that are a member of each team with the following command;
[box]Get-NetLbfoTeam[/box]
List NICs and IP addresses
To see what IP addresses are in use on which NICs, (physical or virtual) use the following;
If you have a Hyper V cluster, then you should add virtual machines with ‘Failover Cluster Manager’ but if someone does not, (i.e. they add them directly to a host), then you wont see them in the list! So how do you add them in?
Solution
In Cluster Failover Manager > Right Click the failover node > Configure Role.
Next.
Scroll down and select Virtual Machine > Next.
Non clustered VM’s will be shown select the VM(s) as required > Next.
Next.
Finish
Related Articles, References, Credits, or External Links