@xen-orchestra/vmdk
parse and produce vmdk files
Install
Installation of the npm package:
npm install --save @xen-orchestra/vmdk
Usage
Generate a stream optimized VMDK from any Disk of @xen-orchestra/disk-transform:
import { toVmdkStream } from '@xen-orchestra/vmdk'
const stream = await toVmdkStream(disk, { diskName: 'my-disk.vmdk' })
By default the grain directory and the grain tables are written after the data, like any stream
optimized disk: nothing is padded, and the size of the output is only known once it has been fully
generated, so stream.length is left undefined.
With the withLength layout, the same grains are followed by a single block of padding, sized so
that the file reaches a length computed before anything is generated: stream.length is then the
exact size of the output, which an HTTP upload or a tar entry needs in advance — vSphere's
HttpNfcLease refuses a chunked body, for instance. It weights the uncompressed size of the
allocated grains, plus 0.78%, whatever the content compresses to:
const stream = await toVmdkStream(disk, { layout: 'withLength' })
console.log(stream.length) // exact size of the file
The format itself, and the reading side to come, are described in docs/vmdk.md.
Contributions
Contributions are very welcomed, either on the documentation or on the code.
You may:
- report any issue you've encountered;
- fork and create a pull request.