This issue occurs if an esxconsole.vmdk file is missing in which the service console resides. We will need to recreate esxconsole.vmdk file and associate with esxconsole-flat.vmdk.
- Identify the location esxconsole.vmdk by running this command #grep -i cosvmdk /etc/vmware/esx.conf
- Output will similar to /boot/cosvmdk = "/vmfs/volumes/<uuid>/<dir>/esxconsole.vmdk" .
- Make note of the <uuid> and the <dir> values in the output.
- Verify that the files exist by running the command: #ls -al /vmfs/volumes/<uuid>/<dir>/*.vmdk The output is similar to:
- Navigate to the directory that contains the virtual machine disk with the missing descriptor file using the command: #cd "/vmfs/volumes/<uuid>/<dir>
- Identify the type of SCSI controller the virtual disk is using. You can do this by examining the virtual machine configuration file (.vmx). The controller is identified by the line scsi#.virtualDev, where # is the controller number; there may be more than one controller and controller type attached to the virtual machine. This example uses bslgic:
- Identify and record the exact size of the -flat file using a command similar to: # ls -l vmdisk0-flat.vmdk
- Use the vmkfstools command to create a new virtual disk:
- Delete temp-flat.vmdk, as it is not needed. Run the command:# rm temp-flat.vmdk
- Rename temp.vmdk to the name that is required to match the orphaned .flat file (or esxconsole.vmdk,in this example): # mv temp.vmdk esxconsole.vmdk
- Edit the descriptor file with a text editor (VI) : a) Under Extent Description section, change the name of the .flat file to match the orphaned .flat file you have. b) Find and remove the line ddb.thinProvisioned = "1" if the original .vmdk was not a thin disk. If it was, retain this line.
- Restart the host to make the changes get affected.
drwxr-xr-x 1 root root 840 May 21 00:45 .
drwxr-xr-t 1 root root 2660 Oct 21 09:10 ..
-rw------- 1 root root 8095006720 Oct 26 15:37 esxconsole-flat.vmdk
-rw------- 1 root root 475 May 21 00:32 esxconsole.vmdk
drwxr-xr-x 1 root root 980 May 21 00:45 logs
scsi0.present = "true"
scsi0.sharedBus = "none"
scsi1.present = "true"
scsi1.sharedBus = "virtual"
scsi1.virtualDev = "buslogic”
-rw------- 1 root root 4294967296 Oct 11 12:30 vmdisk0-flat.vmdk
# vmkfstools -c 4294967296 –a buslogic temp.vmdk
This command uses these flags:
-c <size> (This is the size of the virtual disk).
-a <virtual controller> (Whether the virtual disk was configured to work with BusLogic or LSILogic).
-d thin (This creates the disk in a thin-provisioned format).
Note: To save disk space, we create the disk in a thin-provisioned format using the type thin. The resulting flat file then consumes minimal amounts of space (1MB) instead of immediately assuming the capacity specified with the -c switch. The only consequence, however, is the descriptor file contains an extra line that must be removed manually in a later step.
The files temp.vmdk and temp-flat.vmdk are created as a result.
# Disk DescriptorFile
# Extent description
RW 4294967296 VMFS "esxconsole-flat.vmdk"
# The Disk Data Base
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "522"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "buslogic”
ddb.consoleOsDisk = "True"
ddb.thinProvisioned = “1”