dissect.archive.xva

Module Contents

Classes

XVA

XVA reader.

XVAStream

XVA stream.

Attributes

dissect.archive.xva.BLOCK_SIZE = 1048576
class dissect.archive.xva.XVA(fh)

XVA reader.

XenCenter export format. Basically a tar file with “blocks” of 1MB.

tar
property ova
disks()
open(ref, verify=False)
class dissect.archive.xva.XVAStream(xva, ref, size, verify=False)

Bases: dissect.util.stream.AlignedStream

XVA stream.

XenServer usually just streams an XVA file right into an output file, so our use-case requires a bit more trickery. We generally don’t stream directly into an output file, but try to create a file-like object for other code to use.

The numbers for the block files (weirdly) don’t represent offsets. It’s possible for a block file to be 0 sized, in which case you should “add” that block to the stream, and continue on to the next. The next block might have a number + 1 of what your current offset is, but it will still contain the data for that current offset. For this reason we build a lookup list with offsets.

xva
ref
verify = False