I ran into this issue as well and I was able to figure out a solution.
Explanation
Some explanation to start with,
This issue is caused by booting Windows that has access to the datastore drives, in every partition Windows sees it creates a $RECYCLE:BIN folder, but the $ symbol creates problems with linux so we need to remove it.
So if you ever have to booted to Windows I recommend cleaning these up before upgrading, or better yet after you boot into Windows.
Fixing the root cause
The first step is to clean up the $RECYCLING.BIN folders.
- Enable SSH and connect to the host
- Run
cd /vmfs/volumes/
- Run
ls -allh
this will list all of your volumes
- Run the following for each volume and take note of which ones have the $RECYCLING.BIN folder
ls -allh [volume id]
(replace [volume id] with each volume listed before)
Now that we've identified which volumes have the folders we need to clean them up.
- Navigate to the volume with
cd [volume id]
- We first will rename the folder to get rid of the $, run
mv '$RECYCLING.BIN' REC
(including the single quotes) (I don't think this is required but I did it anyway)
- Now we delete the folder with
rm -rf REC
The folder should be gone now, I ran ls again to ensure the folder was gone but it's optional, I also ran ls REC/
to ensure there wasn't anything else in the directory before deleting.
Finishing the upgrade
Now we will deal with actually finishing the upgrade
Since we've essentially "burned" the upgrade from DVD option we need another way, fortunately there are a few ways to upgrade.
- First we will need to shut down your VMs and put the host into maintenance mode
- Enable SSH if it is not already from before
- We need to enable the firewall rule httpclient, you can either do this from the gui or with the command
esxcli network firewall ruleset set -e true -r httpClient
Now for the actual upgrade, there are two ways to do this, a. let the host download the required files or b. download the upgrade zip from VMWare's site and upload to the host (this requires the appropriate license on your MyVMWare account).
- Run the command
esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.5.0-4564106-standard
In this command I am upgrading to 6.5, if you are upgrading to a newer version then you will need to know the profile name, fortunately you can get this off VMWare site or the iso image, on the root of the disk there is an XML file called PROFILE.XML, if you open this up you will see the <name>
tag, this is the version on the disk, replace this in the last part of the command.
If you are upgrading from the ZIP you will use the command
esxcli software vib update -d /vmfs/volumes/DATASTORE/VMware-ESXi-6.0.0-2494585-depot.zip
- Now reboot and when the host comes back up you should be on the latest version
- Finally disable the httpclient firewall rule from the gui or with the command
esxcli network firewall ruleset set -e false -r httpClient
, exit maintenance mode, and don't forget to disable SSH
I know this is 4 years old but it is still one of the top results on Google and also there is only one other relevant result so this is for anyone that comes along.
Best Answer
The mistake I made was assigning a virtual adapter to my "VM Network". I thought that my "VM Network" needed an IP. This is a basic misunderstanding of how ESXi works. Apparently, you can either assign a vmk(VM NIC) or VMs to a port group but not both. After I deleted the new vmk1 (VM NIC) that I made the port group became available to install vCenter in to.
I hope you can learn from my stupid mistake and fix this easier than I did. The default setup that ESXi comes with should work out of the box. If you added a vmk1 to your "VM Network" port group just delete the vmk1.