Flat VMDK on vSAN
search cancel

Flat VMDK on vSAN

book

Article ID: 315551

calendar_today

Updated On:

Products

VMware vSAN

Issue/Introduction

Symptoms:

A Virtual Machine is running from a flat VMDK on vSAN.

The following errors may be seen on the VM

Any reconfiguration to the VM's disk fails with error "Error: A general system error occurred: PBM error occurred during PreReconfigureCallback: Fault cause: vmodl.fault.SystemError"

The operation cannot be allowed at the current time because the virtual machine has a question pending:
'msg.hbacommon.outofspace:There is no more space for virtual disk 'VM-NAME.vmdk'. You might be able to continue this session by freeing disk space on the relevant volume, and clicking Retry. Click Cancel to terminate this session.

Environment

VMware vSAN 8.0.x
VMware vSAN 7.0.x

Cause

During a standard Storage vMotion operation from traditional storage to a vSAN datastore, the virtual disk flat file is automatically converted into a vSAN object.
However, if the VM files are manually copied from traditional storage to the vSAN datastore, this conversion does not occur, and the flat file remains unchanged.

Traditional VMFS Storage:-
Descriptor VM-NAME.vmdk
flat.vmdk

vSAN Storage:-
Descriptor VM-NAME.vmdk
vSAN object UUID

In VSAN's object-based storage, -flat.vmdk and -delta.vmdk files are not directly addressable as datastore paths.
 
Following is an sample copy of the VMDK ( VMDK-flat  ) on vSAN datastore ( unsupported ) 
 
cat VM-NAME.vmdk
# Disk DescriptorFile
version=4
encoding="UTF-8"
CID=cc3bf2ee
parentCID=ffffffff
createType="vmfs"
# Extent description
RW 734003200 VMFS "VM-NAME-flat.vmdk"    >> The flat file and VMFS format ( unsupported in vSAN ) 
# Change Tracking File
changeTrackPath="VM-NAME-ctk.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "buslogic"
ddb.deletable = "true"
ddb.geometry.cylinders = "45689"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "000xxxxxxxxxxxxxxxxxxxxxxxxxxx"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "1"
ddb.toolsVersion = "12449"
ddb.uuid = "60 00 XX XX XX XX XX XX-XX XX XX XX XX XX XX XX"
ddb.virtualHWVersion = "14"
 
Following is an sample copy of the VMDK ( DOM-UUID ) on vSAN datastore ( Supported ) 

cat VM-NAME.vmdk
# Disk DescriptorFile
version=4
encoding="UTF-8"
CID=cc3bf2ee
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 734003200 VMFS "vsan://5268f38c45abe2bb-25f75a0eba3c9bf8/6f9a8864-b4ce-e8bc-6abc-e4434bae357c    >> DOM UUID of the VMDK ( Supported in vSAN ) 

# Change Tracking File
changeTrackPath="VM-NAME-ctk.vmdk"

# The Disk Data Base
#DDB
ddb.adapterType = "buslogic"
ddb.deletable = "true"
ddb.geometry.cylinders = "45689"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "000xxxxxxxxxxxxxxxxxxxxxxxxxxx"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "1"
ddb.toolsVersion = "12449"
ddb.uuid = "60 00 XX XX XX XX XX XX-XX XX XX XX XX XX XX XX"
ddb.virtualHWVersion = "14"

Resolution

Migrate the VM to traditional storage, then migrate it back to vSAN using storage migration (offline or SvMotion) from vCenter to ensure the conversion to vSAN objects occurs.

The below video can assist with migrating VMs from traditional storage to vSAN.

Additional Information

  • Failed to power on virtual machine. Storing “flat” VMDK files directly on a vSAN datastore can lead to several issues, including unexpected space consumption that may cause space to fill up and VM may become non-responsive.

 

  • Virtual machines running on flat.vmdk files in vSAN can encounter problems such as:
    • Inability to expand virtual disks, which may appear as 0 GB when viewed in the VM’s Edit Settings dialog.
    • Failures when attempting to modify or add hardware (e.g., adding new virtual disks expanding existing disks).
    • Failure to power on if the flat files consume all available space within the VM’s namespace.

To avoid these issues, ensure that VM disks are properly converted into native vSAN objects, for example by using Storage vMotion rather than manual file copy.