So far in this series of articles I’ve covered the following items.
Part 1 – initial setup and creating a VM
Part 2 – add a license key, enable VM automatic startup and shutdown and unregister a VM
Part 3 – create a virtual switch and configure a firewall VM
Part 4 – install an update for ESXi
Part 5 – Creating a datastore and migrating VMs
This article started with a need to add a VMDK to a VM for some performance testing. Part of the process was to hot add the disk to a VM and when I found that I couldn’t I choose to reset the license for the host back to evaluation mode to accomplish this.
1) I created a folder for disk file and then ran the below command to create the VMDK.
vmkfstools -c 255G -d eagerzeroedthick -a lsilogic IOMETER.vmdk
2) If the VM had been powered down, I could have added the below to the VMX file for the VM and then powered it on.
scsi0:1.fileName = "/vmfs/volumes/4a68046d-2159a120-ebac-001a9253e68f/IOMETER/IOMETER.vmdk" scsi0:1.mode = "persistent" scsi0:1.ctkEnabled = "FALSE" scsi0:1.deviceType = "scsi-hardDisk" scsi0:1.present = "TRUE" scsi0:1.redo = ""
3) Instead I wanted to hot-add the disk so I ran the below commands. The first run shows the syntax of the command and with the second command I added the VMDK to the VM as device 1 on SCSI controller 0. If I had wanted to remove the virtual disk from the VM I would have used the device.diskremove option as shown below.
vim-cmd vmsvc/device.diskaddexisting Insufficient arguments. Usage: device.diskaddexisting vmid 'disk file' 'controller number' 'unit number' Add an existing disk to this virtual machine. vim-cmd vmsvc/device.diskaddexisting 272 /vmfs/volumes/datastore1/IOMETER/IOMETER.vmdk 0 1 vim-cmd vmsvc/device.diskremove Insufficient arguments. Usage: device.diskremove vmid 'controller number' 'unit number' 'delete file' Remove a disk from this virtual machine. vim-cmd vmsvc/device.diskremove 272 0 1 n
To get information about the controller and device ID for disks, you can execute the command vim-cmd vmsvc/device.getdevices <vm ID> and you’ll get an output as shown below.
(vim.vm.device.VirtualDisk) { dynamicType = <unset>, key = 2001, deviceInfo = (vim.Description) { dynamicType = <unset>, label = "Hard disk 2", summary = "267386880 KB", }, backing = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) { dynamicType = <unset>, fileName = "[datastore1] IOMETER/IOMETER.vmdk", datastore = 'vim.Datastore:4a68046d-2159a120-ebac-001a9253e68f', diskMode = "persistent", split = false, writeThrough = false, thinProvisioned = false, eagerlyScrub = <unset>, uuid = "6000C292-7b91-a7ed-5386-161b52701478", contentId = "1c86e62103b24c83b27711726578c835", changeId = <unset>, parent = (vim.vm.device.VirtualDisk.FlatVer2BackingInfo) null, }, connectable = (vim.vm.device.VirtualDevice.ConnectInfo) null, controllerKey = 1000, unitNumber = 1, capacityInKB = 267386880, shares = (vim.SharesInfo) { dynamicType = <unset>, shares = 1000, level = "normal", }, },
4) Now when I checked the VM, the new virtual disk was not present so I checked /var/log/messages and found the below error.
Nov 13 07:54:42 Hostd: [2009-11-13 07:54:42.538 77381B90 info 'vm:/vmfs/volumes/4aea17ed-5267d790-647d-001a9253e63a/DC05/DC05.vmx'] No hot-plug license available. Nov 13 07:54:42 Hostd: [2009-11-13 07:54:42.538 77381B90 info 'TaskManager'] Task Completed : haTask-272-vim.VirtualMachine.reconfigure-1852796427 Status error Nov 13 07:54:42 Hostd: [2009-11-13 07:54:42.538 77381B90 warning 'vm:/vmfs/volumes/4aea17ed-5267d790-647d-001a9253e63a/DC05/DC05.vmx'] Reconfigure worker failed to validate device spec
5) As shown above I was not able to add the disk as my license was not configured for hot add, so I decided to change the ESXi temporarily back to evaluation mode. Using what I had done in Part 2, I did the following:
a) Edited /etc/vmware/vmware.lic and deleted the license key.
b) Deleted the file /etc/vmware/license.cfg
c) Ran the command services.sh restart
d) I then queried the license information to check the status. The file /etc/vmware/license.cfg was automatically recreated. You’ll note that for the 1st attempt of the command I got the “514 Error connecting” error. This was due to the services restart sequence completing, but the hostd service not yet being fully up yet.