Orphaned virtual machines are a common issue in VMware vSphere environments, especially after storage interruptions, HA failures, vCenter communication issues, or unexpected host disconnects.
One of the most frustrating situations occurs when you try to re-register an orphaned VM and receive the error:
“The specified key name or identifier already exists”
This usually means the VM still has stale inventory information cached inside ESXi or vCenter.
In this guide, we’ll walk through how to safely remove stale VM registrations and successfully re-register the virtual machine.
What Causes This Error?
This issue commonly appears when:
- A VM becomes orphaned or inaccessible
- HA or DRS operations fail
- Storage temporarily disconnects
- vCenter loses communication with ESXi
- VM registration metadata becomes corrupted
- Duplicate inventory entries exist
Although the VM files still exist on the datastore, the ESXi host or vCenter believes the VM is already registered.
Symptoms
You may notice:
- VM shown as “Orphaned”
- “Remove from Inventory” fails
- Re-registering
.vmxthrows: “The specified key name or identifier already exists” - VM inventory actions hanging indefinitely
- vSphere HA agent issues
- vCenter tasks stuck in progress
Step 1 — Try Removing the VM from Inventory
From vCenter:
- Right-click the orphaned VM
- Select:
- Remove from Inventory
- Do NOT choose “Delete from Disk”
If successful:
- Open Datastore Browser
- Locate the VM folder
- Right-click the
.vmxfile - Select Register VM
If removal fails, continue with the steps below.
Step 2 — Enable SSH on ESXi
Connect directly to the ESXi host.
Enable SSH:
- Host → Configure → Services
- Start:
- TSM-SSH
SSH into the host using PuTTY or your preferred terminal.
Step 3 — List Registered VMs
Run:
vim-cmd vmsvc/getallvms
Example output:
52 TestVM [datastore1] TestVM/TestVM.vmx
Locate the stale/orphaned VM entry and note the VMID.
Step 4 — Unregister the Stale VM
Run:
vim-cmd vmsvc/unregister 52
Replace 52 with your VMID.
If successful, the command normally returns no output.
Step 5 — Verify the VM Was Removed
Run:
vim-cmd vmsvc/getallvms | grep -i TestVM
If no output appears, the stale inventory entry is gone.
Step 6 — Re-Register the VM
Locate the VMX file:
find /vmfs/volumes/ -name "*.vmx"
Register the VM:
vim-cmd solo/registervm /vmfs/volumes/datastore1/TestVM/TestVM.vmx
The VM should now appear normally in inventory.
What If unregister Hangs Forever?
Sometimes the unregister command freezes due to:
- Stuck
hostd - Zombie VM process
- Storage issues
- APD/PDL conditions
- Broken vCenter communication
Check if the VM Process Exists
Run:
esxcli vm process list
If the VM appears, note the World ID.
Kill the process:
Soft Kill
esxcli vm process kill --type=soft --world-id=12345
Hard Kill
esxcli vm process kill --type=hard --world-id=12345
Force Kill
esxcli vm process kill --type=force --world-id=12345
Retry unregistering afterward.
Restart ESXi Management Agents
A stuck management service is extremely common.
Restart agents:
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
Or restart all management services:
services.sh restart
Wait a few minutes and retry.
Check for Datastore Problems
If storage commands hang, the datastore may be inaccessible.
Test responsiveness:
ls -lah /vmfs/volumes/
Then:
cd /vmfs/volumes/datastore1/TestVM
ls
If these commands freeze:
- investigate storage connectivity
- check iSCSI/NFS/vSAN health
- verify APD/PDL conditions
Advanced Fix — Manually Clean Inventory
If inventory corruption exists, edit the inventory file.
Backup Inventory
cp /etc/vmware/hostd/vmInventory.xml /tmp/vmInventory.xml.bak
Edit File
vi /etc/vmware/hostd/vmInventory.xml
Remove the stale VM block carefully.
Restart services:
services.sh restart
Then re-register the VM.
Useful Troubleshooting Commands
List VMs
vim-cmd vmsvc/getallvms
Find VMX Files
find /vmfs/volumes/ -name "*.vmx"
View Running VM Processes
esxcli vm process list
Restart Management Services
services.sh restart
Monitor Host Logs
tail -f /var/log/hostd.log
Final Thoughts
Orphaned VMs and stale inventory objects are common in large VMware environments using HA, DRS, shared storage, and vCenter clustering.
In most cases, the issue can be resolved by:
- Unregistering stale inventory entries
- Restarting management agents
- Killing stuck VM processes
- Re-registering the VMX file
Direct ESXi troubleshooting is often much more effective than relying solely on vCenter when inventory corruption occurs.
If inventory tasks continue hanging after all steps, a host reboot during a maintenance window is often the fastest final resolution.
