]> git.proxmox.com Git - pve-qemu-kvm.git/blobdiff - vma_spec.txt
refer to the new repository
[pve-qemu-kvm.git] / vma_spec.txt
diff --git a/vma_spec.txt b/vma_spec.txt
deleted file mode 100644 (file)
index a99f5f9..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-= Virtual Machine Archive format (VMA) =
-
-This format contains a header which includes the VM configuration as
-binary blobs, and a list of devices (dev_id, name).
-
-The actual VM image data is stored inside extents. An extent contains
-up to 64 clusters, and start with a 512 byte header containing
-additional information for those clusters.
-
-We use a cluster size of 65536, and use 8 bytes for each
-cluster in the header to store the following information:
-
-* 1 byte dev_id (to identity the drive)
-* 1 byte not used (reserved)
-* 2 bytes zero indicator (mark zero regions (16x4096))
-* 4 bytes cluster number
-
-We only store non-zero blocks (such block is 4096 bytes).
-
-Each archive is marked with a uuid. The archive header and all
-extent headers includes that uuid and a MD5 checksum (over header
-data).
-
-All numbers in VMA archive are stored in Big Endian byte order.
-
-== VMA Header ==
-
-    Byte  0 -  3:   magic
-                    VMA magic string ("VMA\x00")
-
-         4 -  7:   version
-                    Version number (valid value is 1)
-
-          8 - 23:   uuid
-                   Unique ID, Same uuid is used to mark extents.
-
-         24 - 31:   ctime
-                   Backup time stamp (seconds since epoch)
-
-         32 - 47:   md5sum
-                   Header checksum (from byte 0 to header_size). This field
-                   is filled with zero to generate the checksum.
-
-         48 - 51:   blob_buffer_offset
-                   Start of blob buffer (multiple of 512)
-
-         52 - 55:   blob_buffer_size
-                   Size of blob buffer (multiple of 512)
-
-         56 - 59:   header_size
-                   Overall size of this header (multiple of 512)
-
-        60 - 2043: reserved
-
-       2044 - 3067: uint32_t config_names[256]
-                           Offsets into blob_buffer table
-
-       3068 - 4091: uint32_t config_data[256]
-                           Offsets into blob_buffer table
-
-       4092 - 4095: reserved
-
-      4096 - 12287: VmaDeviceInfoHeader dev_info[256]
-                    The offset in this table is used as 'dev_id' inside
-                   the data streams.
-
-      12288 - header_size: Blob buffer
-
-
-=== Devive Info Header (VmaDeviceInfoHeader) ===
-
-This is use to store details about the contained disk images.
-
-    Byte  0 -  3:   devive name (offsets into blob_buffer table)
-
-         4 -  7:   reserved
-
-         8 - 15:   device size in bytes
-
-        16 - 31:   reserved
-
-Note: Devive name 'vmstate' is reserved to store VM RAM state.
-
-=== Blob buffer ===
-
-The blob buffer is used to store both configuration file names and
-configuration data.
-
-This region contain a list of binary data blobs. Each blob starts with
-a 2 byte size field, followed by the actual data.
-
-== Image Data Streams ==
-
-The VMA header is followed by the image data stream. Image data is grouped
-with extents, which contains up to 59 clusters from different images.
-
-=== VMA Extent Header ===
-
-    Byte  0 -  3:   magic
-                    VMA extent magic string ("VMAE")
-
-         4 -  5:   reserved
-
-         6 -  7:   block_count
-                   Overall number of contained 4K block
-
-          8 - 23:   uuid
-                   Unique ID, Same uuid as used in the VMA header.
-
-         24 - 39:   md5sum
-                   Header checksum (from byte 0 to header_size). This field
-                   is filled with zero to generate the checksum.
-
-        40 - 511:   blockinfo[59]
-
-
-Each 'blockinfo' (8 bytes) give further details about contained clusters:
-
-    Byte  0 - 1:   mask
-                  Bitmap used to indicate non-zero 4K blocks inside the
-                  cluster.
-
-              2:   reserved
-
-              3:   dev_id
-                  Device ID (offset into dev_info table)
-
-          4 - 7:   cluster_num
-
-The extend header if followed by the actual cluster data, where we only
-store non-zero 4K blocks.
-