
* Update to QEMU v9.0.0 --------- Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> Signed-off-by: Ido Plat <ido.plat@ibm.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Gregory Price <gregory.price@memverge.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Lorenz Brun <lorenz@brun.one> Signed-off-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Signed-off-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Glenn Miles <milesg@linux.ibm.com> Signed-off-by: Oleg Sviridov <oleg.sviridov@red-soft.ru> Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Signed-off-by: Yajun Wu <yajunw@nvidia.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Pierre-Clément Tosi <ptosi@google.com> Signed-off-by: Lei Wang <lei4.wang@intel.com> Signed-off-by: Wei Wang <wei.w.wang@intel.com> Signed-off-by: Martin Hundebøll <martin@geanix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Wafer <wafer@jaguarmicro.com> Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com> Signed-off-by: Zack Buhman <zack@buhman.org> Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Yuquan Wang wangyuquan1236@phytium.com.cn Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Signed-off-by: Cindy Lu <lulu@redhat.com> Co-authored-by: Peter Maydell <peter.maydell@linaro.org> Co-authored-by: Fabiano Rosas <farosas@suse.de> Co-authored-by: Peter Xu <peterx@redhat.com> Co-authored-by: Thomas Huth <thuth@redhat.com> Co-authored-by: Cédric Le Goater <clg@redhat.com> Co-authored-by: Zheyu Ma <zheyuma97@gmail.com> Co-authored-by: Ido Plat <ido.plat@ibm.com> Co-authored-by: Ilya Leoshkevich <iii@linux.ibm.com> Co-authored-by: Markus Armbruster <armbru@redhat.com> Co-authored-by: Marc-André Lureau <marcandre.lureau@redhat.com> Co-authored-by: Paolo Bonzini <pbonzini@redhat.com> Co-authored-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Co-authored-by: David Hildenbrand <david@redhat.com> Co-authored-by: Kevin Wolf <kwolf@redhat.com> Co-authored-by: Stefan Reiter <s.reiter@proxmox.com> Co-authored-by: Fiona Ebner <f.ebner@proxmox.com> Co-authored-by: Gregory Price <gregory.price@memverge.com> Co-authored-by: Lorenz Brun <lorenz@brun.one> Co-authored-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Co-authored-by: Philippe Mathieu-Daudé <philmd@linaro.org> Co-authored-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Co-authored-by: BALATON Zoltan <balaton@eik.bme.hu> Co-authored-by: Igor Mammedov <imammedo@redhat.com> Co-authored-by: Akihiko Odaki <akihiko.odaki@daynix.com> Co-authored-by: Richard Henderson <richard.henderson@linaro.org> Co-authored-by: Sven Schnelle <svens@stackframe.org> Co-authored-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Co-authored-by: Helge Deller <deller@kernel.org> Co-authored-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Co-authored-by: Benjamin Gray <bgray@linux.ibm.com> Co-authored-by: Nicholas Piggin <npiggin@gmail.com> Co-authored-by: Avihai Horon <avihaih@nvidia.com> Co-authored-by: Michael Tokarev <mjt@tls.msk.ru> Co-authored-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Dayu Liu <liu.dayu@zte.com.cn> Co-authored-by: Zhao Liu <zhao1.liu@intel.com> Co-authored-by: Glenn Miles <milesg@linux.vnet.ibm.com> Co-authored-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Co-authored-by: Yajun Wu <yajunw@nvidia.com> Co-authored-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Co-authored-by: Pierre-Clément Tosi <ptosi@google.com> Co-authored-by: Wei Wang <wei.w.wang@intel.com> Co-authored-by: Martin Hundebøll <martin@geanix.com> Co-authored-by: Michael S. Tsirkin <mst@redhat.com> Co-authored-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Co-authored-by: Wafer <wafer@jaguarmicro.com> Co-authored-by: lyx634449800 <yuxue.liu@jaguarmicro.com> Co-authored-by: Gerd Hoffmann <kraxel@redhat.com> Co-authored-by: Nguyen Dinh Phi <phind.uet@gmail.com> Co-authored-by: Zack Buhman <zack@buhman.org> Co-authored-by: Keith Packard <keithp@keithp.com> Co-authored-by: Yuquan Wang <wangyuquan1236@phytium.com.cn> Co-authored-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Co-authored-by: Cindy Lu <lulu@redhat.com>
159 lines
6.8 KiB
Plaintext
159 lines
6.8 KiB
Plaintext
= License =
|
|
|
|
Copyright (c) 2015-2017, Virtuozzo, Inc.
|
|
Authors:
|
|
2015 Denis Lunev <den@openvz.org>
|
|
2015 Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
|
2016-2017 Klim Kireev <klim.kireev@virtuozzo.com>
|
|
2016-2017 Edgar Kaziakhmedov <edgar.kaziakhmedov@virtuozzo.com>
|
|
|
|
This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
See the COPYING file in the top-level directory.
|
|
|
|
This specification contains minimal information about Parallels Disk Format,
|
|
which is enough to proper work with QEMU. Nevertheless, Parallels Cloud Server
|
|
and Parallels Desktop are able to add some unspecified nodes to xml and use
|
|
them, but they are for internal work and don't affect functionality. Also it
|
|
uses auxiliary xml "Snapshot.xml", which allows to store optional snapshot
|
|
information, but it doesn't influence open/read/write functionality. QEMU and
|
|
other software should not use fields not covered in this document and
|
|
Snapshot.xml file and must leave them as is.
|
|
|
|
= Parallels Disk Format =
|
|
|
|
Parallels disk consists of two parts: the set of snapshots and the disk
|
|
descriptor file, which stores information about all files and snapshots.
|
|
|
|
== Definitions ==
|
|
Snapshot a record of the contents captured at a particular time,
|
|
capable of storing current state. A snapshot has UUID and
|
|
parent UUID.
|
|
|
|
Snapshot image an overlay representing the difference between this
|
|
snapshot and some earlier snapshot.
|
|
|
|
Overlay an image storing the different sectors between two captured
|
|
states.
|
|
|
|
Root image snapshot image with no parent, the root of snapshot tree.
|
|
|
|
Storage the backing storage for a subset of the virtual disk. When
|
|
there is more than one storage in a Parallels disk then that
|
|
is referred to as a split image. In this case every storage
|
|
covers specific address space area of the disk and has its
|
|
particular root image. Split images are not considered here
|
|
and are not supported. Each storage consists of disk
|
|
parameters and a list of images. The list of images always
|
|
contains a root image and may also contain overlays. The
|
|
root image can be an expandable Parallels image file or
|
|
plain. Overlays must be expandable.
|
|
|
|
Description DiskDescriptor.xml stores information about disk parameters,
|
|
file snapshots, storages.
|
|
|
|
Top The overlay between actual state and some previous snapshot.
|
|
Snapshot It is not a snapshot in the classical sense because it
|
|
serves as the active image that the guest writes to.
|
|
|
|
Sector a 512-byte data chunk.
|
|
|
|
== Description file ==
|
|
All information is placed in a single XML element Parallels_disk_image.
|
|
The element has only one attribute "Version", that must be 1.0.
|
|
Schema of DiskDescriptor.xml:
|
|
|
|
<Parallels_disk_image Version="1.0">
|
|
<Disk_Parameters>
|
|
...
|
|
</Disk_Parameters>
|
|
<StorageData>
|
|
...
|
|
</StorageData>
|
|
<Snapshots>
|
|
...
|
|
</Snapshots>
|
|
</Parallels_disk_image>
|
|
|
|
== Disk_Parameters element ==
|
|
The Disk_Parameters element describes the physical layout of the virtual disk
|
|
and some general settings.
|
|
|
|
The Disk_Parameters element MUST contain the following child elements:
|
|
* Disk_size - number of sectors in the disk,
|
|
desired size of the disk.
|
|
* Cylinders - number of the disk cylinders.
|
|
* Heads - number of the disk heads.
|
|
* Sectors - number of the disk sectors per cylinder
|
|
(sector size is 512 bytes)
|
|
Limitation: Product of the Heads, Sectors and Cylinders
|
|
values MUST be equal to the value of the Disk_size parameter.
|
|
* Padding - must be 0. Parallels Cloud Server and Parallels Desktop may
|
|
use padding set to 1, however this case is not covered
|
|
by this spec, QEMU and other software should not open
|
|
such disks and should not create them.
|
|
|
|
== StorageData element ==
|
|
This element of the file describes the root image and all snapshot images.
|
|
|
|
The StorageData element consists of the Storage child element, as shown below:
|
|
<StorageData>
|
|
<Storage>
|
|
...
|
|
</Storage>
|
|
</StorageData>
|
|
|
|
A Storage element has following child elements:
|
|
* Start - start sector of the storage, in case of non split storage
|
|
equals to 0.
|
|
* End - number of sector following the last sector, in case of non
|
|
split storage equals to Disk_size.
|
|
* Blocksize - storage cluster size, number of sectors per one cluster.
|
|
Cluster size for each "Compressed" (see below) image in
|
|
parallels disk must be equal to this field. Note: cluster
|
|
size for Parallels Expandable Image is in 'tracks' field of
|
|
its header (see docs/interop/parallels.txt).
|
|
* Several Image child elements.
|
|
|
|
Each Image element has following child elements:
|
|
* GUID - image identifier, UUID in curly brackets.
|
|
For instance, {12345678-9abc-def1-2345-6789abcdef12}.
|
|
The GUID is used by the Snapshots element to reference images
|
|
(see below)
|
|
* Type - image type of the element. It can be:
|
|
"Plain" for raw files.
|
|
"Compressed" for expanding disks.
|
|
* File - path to image file. Path can be relative to DiskDescriptor.xml or
|
|
absolute.
|
|
|
|
== Snapshots element ==
|
|
The Snapshots element describes the snapshot relations with the snapshot tree.
|
|
|
|
The element contains the set of Shot child elements, as shown below:
|
|
<Snapshots>
|
|
<TopGUID> ... </TopGUID> /* Optional child element */
|
|
<Shot>
|
|
...
|
|
</Shot>
|
|
<Shot>
|
|
...
|
|
</Shot>
|
|
...
|
|
</Snapshots>
|
|
|
|
Each Shot element contains the following child elements:
|
|
* GUID - an image GUID.
|
|
* ParentGUID - GUID of the image of the parent snapshot.
|
|
|
|
The software may traverse snapshots from child to parent using <ParentGUID>
|
|
field as reference. ParentGUID of root snapshot is
|
|
{00000000-0000-0000-0000-000000000000}. There should be only one root
|
|
snapshot. Top snapshot could be described via two ways: via TopGUID child
|
|
element of the Snapshots element or via predefined GUID
|
|
{5fbaabe3-6958-40ff-92a7-860e329aab41}. If TopGUID is defined, predefined GUID is
|
|
interpreted as usual GUID. All snapshot images (except Top Snapshot) should be
|
|
opened read-only. There is another predefined GUID,
|
|
BackupID = {704718e1-2314-44c8-9087-d78ed36b0f4e}, which is used by original and
|
|
some third-party software for backup, QEMU and other software may operate with
|
|
images with GUID = BackupID as usual, however, it is not recommended to use this
|
|
GUID for new disks. Top snapshot cannot have this GUID.
|