dissect.hypervisor.backup.xva
#
Module Contents#
Classes#
Attributes#
- dissect.hypervisor.backup.xva.BLOCK_SIZE#
- class dissect.hypervisor.backup.xva.XVA(fh)#
XVA reader.
XenCenter export format. Basically a tar file with “blocks” of 1MB.
- property ova#
- disks()#
- open(ref, verify=False)#
- class dissect.hypervisor.backup.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.