home       moa       vmx       vmdk       about         donate        forum        downloads  

 



Disk-type table


VMware understands several different formats of vmdk-files.

monolithicSparse
monolithicFlat
twoGbMaxExtentSparse
twoGbMaxExtentFlat
fullDevice
partitionedDevice
custom
streamOptimized

vmfs
vmfssparse
vmfsPassthroughRawDeviceMap


Workstation can use all that are listed but it can not create the vmfs* formats
ESX can only use the vmfs* formats but it can import a few more.


I have listed the different types in 3 groups:

regular vmdks
vmdks used to access physical disks
snapshots or redologs

The syntax and the parameters are described here

In case you must recover a lost vmdk-description look here

regular vmdks


Regular vmdks means that this are really virtual disks = one or more files that represent the harddisk of a guest.

VMware-name plat-
form
files max
size
desc-
riptor
as
text-
file
type

see *
extension
of
data-chunk
 

monolithicSparse

 

WS 1 950Gb
or 2 Tb
no 0 *.vmdk This is a growing disk in one piece - the only disk type that uses no external descriptor but an embedded one
monolithicFlat
WS 2 950Gb
or
2Tb
yes 2 *-flat.vmdk This is a pre-allocated disk in one piece
twoGbMaxExtentSparse
WS 1 +
x
2Gb yes 1 *-s001.vmdk this is a growing disk split into 2Gb chunks
twoGbMaxExtentFlat
WS 1 +
x
2Gb yes 3 *-f001.vmdk this is a preallocated disk split into 2Gb chunks
vmfs ESX
WS
2 depends on
block size
of VMFS
on ESX

256 = 1 Mb
512 = 2 Mb
1024 = 4 Mb
2048 = 8 Mb

on
Workstation
upto 2 Tb
yes 4

/

6
*-flat.vmdk this is a variant of "monolithicFlat" used on ESX. The max size depends on the block size used to format the VMFS3

This type can appear as thin provisioned or thick provisioned.
For this discussion this subtypes make no difference.

Thin provision is a feature of VMFS - not of this disktype itself.

Don't mix thin provisioned VMFS-type with monolithicSparse
custom WS     yes     used to mount v2i-format
streamOptimized   1   no     used with ovf-xml files

actually this is a variant of the monolithiocSparse format



* = The type column shows the disktype that can be entered when creating vmdks with vmware-vdiskmanager on a Workstation host.. Note that older versions can only handle 0 - 3


vmdks used to access physical disks

this types use a small textfile to describe a physical disk

VMware-name plat-
form
files max
size
desc-
riptor
as
text-
file
extension
of
description
 
fullDevice
WS 1
+
physical disk
2kb yes *.vmdk this is a physical disk useing the full disk
this type is used by Workstation
partitionedDevice
WS 1
+
copy of MBR
+
physical disk
2kb yes *.vmdk this is a physical disk and you can allow access per partition
this type is used by Workstation
vmfsPassthroughRawDeviceMap ESX 1
+
physical disk
? yes *.vmdk this is a physical disk useing the full disk
this type is used by ESX
it only works when the disk is connected to a supported HBA adapter



 

snapshots or redologs


Snapshots - I prefer to call them REDOlogs - can be stored in this 3 different formats.
You can mix different formats in one snapshot-chain but this is NOT recommended !
Usually you let VMware decide which format to use for the REDOlogs.

VMware-name plat-
form
files max
size
desc-
riptor
as
text-
file
extension
of
data-chunk
 
monolithicSparse
snapshot
WS 1 950Gb
or
2 TB
no *.vmdk monolithic snapshot - can grow to nominal size
twoGbMaxExtentSparse
snapshot
WS 1 + x 2Gb yes *.vmdk snapshot split in chunks - max size 2Gb
vmfsSparse
snapshot
ESX
WS
2 depends on
block size
of VMFS
on ESX

256 = 1 Mb
512 = 2 Mb
1024 = 4 Mb
2048 = 8 Mb
yes *-delta.vmdk monolithic snapshot used by ESX


 

top


Syntax ...



note that the parameters that are listed in a vmdk differ depending on the version of VMware that created them.

In all versions a vmdk description file MUST at least define this parameters to be recognized as a valid virtual disk:

version=
CID=
parentCID=
createType=
ddb.virtualHWVersion =
ddb.geometry.cylinders =
ddb.geometry.heads =
ddb.geometry.sectors =
ddb.adapterType =

 




Here some examples for the Extend Description section:

 

# Extent description
RW 18432000 SPARSE "test.vmdk"

# Extent description
RW 63 FLAT "test-pt.vmdk" 0
RW 24579387 FLAT "\\.\PhysicalDrive0" 63
RW 131716935 ZERO
RW 5103 ZERO

# Extent Description
RDONLY 63 ZERO
RDONLY 156296322 V2I "import.v2i"
RDONLY 32130 ZERO

 

This section defines where the actual data is stored.
Each line defines - separated by spaces :
<access type> <size> <vmdk-type> <path to datachunk> <offset>

<access type> options are RW or RDONLY
<size> gives the nominal size in sectors
<vmdk-type> options are FLAT , SPARSE , VMFS , V2I , ZERO
<path to data-chunk> examples are "test.vmdk" or "\\.\PhysicalDrive0"
<offset> offset is given in sectors.

Paths can be absolute or relative - of course it is highly recommended to use relative paths.

Recent VMware versions also use this (optional) parameters :

encoding=
isNativeSnapshot=
ddb.uuid =
ddb.longContentID =


If you must create a descriptor from scratch you can skip this parameters - they are not required.
Do not mess with the encoding parameter unless you really have to !



Examples ...

The following table lists examples for the different types:

 

# Disk DescriptorFile
version=1
CID=fffffffe
parentCID=ffffffff
createType="monolithicSparse"

# Extent description
RW 18432000 SPARSE "test.vmdk"

# The Disk Data Base
#DDB
ddb.virtualHWVersion = "3"
ddb.geometry.cylinders = "16383"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"


"monolithicSparse"

This type uses an embedded descriptor
Avoid absolute paths with embedded descriptors!
Extract it from test.vmdk like this:
dsfo.exe test.vmdk 512 800 descriptor.txt
In case you need to edit it - inject it again like this:
dsfi.exe test.vmdk 512 800 descriptor.txt

Required files:


"test.vmdk"

 

# Disk DescriptorFile
version=1
CID=fffffffe
parentCID=ffffffff
createType="monolithicFlat"

# Extent description
RW 27648000 FLAT "test-flat.vmdk" 0

# The Disk Data Base
#DDB
ddb.virtualHWVersion = "3"
ddb.geometry.cylinders = "16383"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

 


"monolithicFlat"

Required files:

"test.vmdk"
"test-flat.vmdk"


This type can be redefined as VMFS
so it is directly usable with ESX.

Instead of assigning a regular *-flat.vmdk
you can also assign *.img files like used with Starwind iSCSI - or assign dd-images created with Linux

 

# Disk DescriptorFile
version=1
CID=fffffffe
parentCID=ffffffff
createType="twoGbMaxExtentSparse"

# Extent description
RW 4192256 SPARSE "test-s001.vmdk"
RW 4192256 SPARSE "test-s002.vmdk"
RW 4192256 SPARSE "test-s003.vmdk"
RW 1759232 SPARSE "test-s004.vmdk"

# The Disk Data Base
#DDB
ddb.virtualHWVersion = "3"
ddb.geometry.cylinders = "14222"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"


 

Required files:

"test.vmdk"
"test-s001.vmdk"
"test-s002.vmdk"
"test-s003.vmdk"
"test-s004.vmdk"

 

# Disk DescriptorFile
version=1
CID=fffffffe
parentCID=ffffffff
createType="twoGbMaxExtentFlat"

# Extent description
RW 3072000 FLAT "test-f001.vmdk" 0
RW 3072000 FLAT "test-f002.vmdk" 0
RW 3072000 FLAT "test-f003.vmdk" 0
RW 3072000 FLAT "test-f004.vmdk" 0
RW 3072000 FLAT "test-f005.vmdk" 0
RW 3072000 FLAT "test-f006.vmdk" 0
RW 3072000 FLAT "test-f007.vmdk" 0
RW 3072000 FLAT "test-f008.vmdk" 0

# The Disk Data Base
#DDBddb.virtualHWVersion = "3"
ddb.geometry.cylinders = "16383"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"



"twoGbMaxExtentFlat"

Required files:

"test.vmdk"

"test-f001.vmdk"
"test-f002.vmdk"
"test-f003.vmdk"
"test-f004.vmdk"
"test-f005.vmdk"
"test-f006.vmdk"
"test-f007.vmdk"
"test-f008.vmdk"

 

# Disk DescriptorFile
version=1
CID=54bcc741
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 156296385 FLAT "\\.\PhysicalDrive0" 0

# The Disk Data Base
#DDB
ddb.virtualHWVersion = "6"
ddb.geometry.cylinders = "9729"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.geometry.biosCylinders = "9729"
ddb.geometry.biosHeads = "255"
ddb.geometry.biosSectors = "63"
ddb.adapterType = "lsilogic"
ddb.toolsVersion = "0"


"fullDevice"

Required files:

"test.vmdk"
PhysicalDrive0

VMserver 2 can handle this format but it no longer can create it.

VMserver 1 can handle and create this format.

 

# Disk DescriptorFile
version=1
CID=526c949e
parentCID=ffffffff
createType="partitionedDevice"

# Extent description
RW 63 FLAT "test-pt.vmdk" 0
RW 24579387 FLAT "\\.\PhysicalDrive0" 63
RW 131716935 ZERO
RW 5103 ZERO

# The Disk Data Base
#DDB
ddb.adapterType = "ide"
ddb.geometry.biosSectors = "63"
ddb.geometry.biosHeads = "255"
ddb.geometry.biosCylinders = "1024"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "16"
ddb.geometry.cylinders = "16383"
ddb.virtualHWVersion = "4"
ddb.toolsVersion = "0"


 


"partitionedDevice"

Required files:

"test.vmdk"
"test-pt.vmdk"
PhysicalDrive0

"test-pt.vmdk" is a copy of the MBR of the original disk.



VMserver 2 can handle this format but it no longer can create it.

VMserver 1 can handle and create this format.

 

# Disk DescriptorFile
version=1
CID=7341dd22
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 16777216 VMFS "test-flat.vmdk"

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.toolsVersion = "0"
ddb.geometry.cylinders = "1044"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "lsilogic"



"vmfs"

Required files:

"test.vmdk"
"test-flat.vmdk"

this type can be redefined as monolithicFlat
so it can be easily be used with Workstation.

Workstation can handle this format.

# Disk DescriptorFile
version=1
CID=33333333
parentCID=22222222
createType="vmfsSparse"
parentFileNameHint="test.vmdk"

# Extent description
RW 146800640 VMFSSPARSE "test-000001-delta.vmdk"

# The Disk Data Base
#DDB

ddb.toolsVersion = "7202"

 

"vmfsSparse"

Required files:

"test-000001-delta.vmdk"
"test-000001.vmdk"

used for snapshots on ESX.

Workstation can handle this format but it can not create it.

 

# Disk Descriptor file
version=1
CID=e323f28b
parentCID=ffffffff
CreateType="custom"

# Extent Description
RDONLY 63 ZERO
RDONLY 156296322 V2I "virtual-pc-diskformat.v2i"
RDONLY 32130 ZERO

# The disk database
# DDB
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "9731"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "buslogic"



"custom"

used for v2i disk format

note the usage of "RDONLY"

Required files:

"test.vmdk"
"virtual-pc-diskformat.v2i"

 

# Disk DescriptorFile
version=1
CID=fa4e4198
parentCID=77ae5c02
createType="twoGbMaxExtentSparse"
parentFileNameHint="test.vmdk"

# Extent description
RW 4192256 SPARSE "test-000001-s001.vmdk"
RW 4192256 SPARSE "test-000001-s002.vmdk"
RW 4192256 SPARSE "test-000001-s003.vmdk"
RW 4192256 SPARSE "test-000001-s004.vmdk"
RW 8192 SPARSE "test-000001-s005.vmdk"

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "6"
ddb.toolsVersion = "0"

 


"twoGbMaxExtentSparse-snapshot"

Required files:

"test-000001.vmdk"
"test-000001-s001.vmdk"
"test-000001-s002.vmdk"
"test-000001-s003.vmdk"
"test-000001-s004.vmdk"
"test-000001-s005.vmdk"

 

# Disk DescriptorFile
version=1
CID=e1649e95
parentCID=e1649e95
createType="monolithicSparse"
parentFileNameHint="test.vmdk"

# Extent description
RW 16777216 SPARSE "test-000001.vmdk"

# The Disk Data Base
#DDB

 

 


"monolithicSparse-snapshot"

Required files:

"test-000001.vmdk"

This type uses an embedded descriptor
Avoid absolute paths with embedded descriptors!

You can extract the descriptor from this type of snapshots the same way as mentioned with "monolithicSparse"

 

# Disk Descriptor file
version=1
CID=e323f28b
parentCID=ffffffff
CreateType="custom"

# Extent Description
RDONLY 63 ZERO
RDONLY 156296322 V2I "virtual-pc-diskformat.v2i"
RDONLY 32130 ZERO

# The disk database
# DDB
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "9731"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "buslogic"



"custom"

used for v2i disk format
or other third-party images

note the usage of "RDONLY"

Required files:

"test.vmdk"
"virtual-pc-diskformat.v2i"

 

# Disk Descriptor file
version=1
CID=e323f28b
parentCID=ffffffff
CreateType="custom"

# Extent Description
RDONLY 63 ZERO
RDONLY 160521417 SPF "C_VOL-b001.spf"
RDONLY 2048 ZERO

# The disk database
# DDB
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "9992"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "buslogic"


"custom"

used by


StorageCraft ShadowProtect backup


Required files:

the *.spf image itself and a vmdk descriptor like this one

# Disk DescriptorFile
version=1
CID=3a7b3c99
parentCID=e323f28b
createType="twoGbMaxExtentSparse"
parentFileNameHint="drive-0.vmdk.rdonly"
# Extent description
RW 4192256 SPARSE "drive-0-s001.vmdk"
RW 4192256 SPARSE "drive-0-s002.vmdk"

....

....
RW 4192256 SPARSE "drive-0-s037.vmdk"
RW 4192256 SPARSE "drive-0-s038.vmdk"
RW 1217800 SPARSE "drive-0-s039.vmdk"

# The Disk Data Base
#DDB

ddb.encoding = "windows-1252"
ddb.geometry.biosCylinders = "9992"
ddb.geometry.biosSectors = "63"
ddb.geometry.biosHeads = "255"

 

this is a snapshot for the Stoarge Craft Shadow protect from above

# Disk DescriptorFile
version=1
encoding="windows-1252"
CID=f19b298e
parentCID=ffffffff
createType="streamOptimized"

# Extent description
RW 16777216 SPARSE "test.vmdk"

# The Disk Data Base
#DDB
ddb.geometry.biosSectors = "63"
ddb.geometry.biosHeads = "255"
ddb.geometry.biosCylinders = "1044"
ddb.adapterType = "lsilogic"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "1044"
ddb.uuid = "60 00 C2 9f 9b b0 9d 17-15 6c 54 9c 40 8d 33 71"
ddb.virtualHWVersion = "7"
ddb.toolsVersion = "0"

 

this type is used along with an ovf file

which can be regarded as an "obscured" version of the regular vmx-file - this time in xml-format.

This type uses an embedded descriptor
Avoid absolute paths with embedded descriptors!
Extract it from test.vmdk like this:
dsfo.exe test.vmdk 512 800 descriptor.txt
In case you need to edit it - inject it again like this:
dsfi.exe test.vmdk 512 800 descriptor.txt

# Disk DescriptorFile
version=1
CID=c56639e1
parentCID=ffffffff
createType="vmfsPassthroughRawDeviceMap"
# Extent description
RW 251658240 VMFSRDM "EX2_1-rdmp.vmdk"

# The Disk Data Base
#DDB
ddb.toolsVersion = "6310"
ddb.adapterType = "lsilogic"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "15665"
ddb.virtualHWVersion = "4"

 

 

 

 

top