Parallels 磁盘格式
本文包含足以让 QEMU 正确处理 Parallels 磁盘的最小规范。 Parallels Cloud Server 和 Desktop 可添加未规定的内部 XML 节点,但不影响功能。 还可使用辅助 Snapshot.xml 保存可选快照信息,不影响打开、读取、写入。 QEMU 等软件不得使用本文未描述的字段或 Snapshot.xml,必须原样保留。
磁盘由快照集合及记录所有文件和快照信息的描述文件两部分组成。
定义
- 快照
某个时间点捕获的内容记录,可保存当前状态,具有 UUID 和父 UUID。
- 快照镜像
表示该快照相对某个早期快照差异的覆盖层。
- 覆盖层
保存两个捕获状态之间不同扇区的镜像。
- 根镜像
没有父级的快照镜像,是快照树根。
- 存储
虚拟磁盘子范围的后备存储。一个磁盘含多个存储时称为拆分镜像, 各存储覆盖特定地址空间并有独立根镜像。本文不考虑也不支持拆分镜像。 每个存储含磁盘参数与镜像列表,始终含根镜像,也可含覆盖层。 根镜像可为可扩展 Parallels 或普通格式,覆盖层必须可扩展。
- 描述文件
DiskDescriptor.xml 保存磁盘参数、快照与存储信息。
- 顶层快照
实际状态相对先前快照的覆盖层。 它供客户机当前写入,并非经典意义的静态快照。
- 扇区
512 字节数据块。
描述文件
全部信息置于单一 Parallels_disk_image 元素。 仅有 Version 属性,必须为 1.0。
DiskDescriptor.xml 模式:
<Parallels_disk_image Version="1.0">
<Disk_Parameters>
...
</Disk_Parameters>
<StorageData>
...
</StorageData>
<Snapshots>
...
</Snapshots>
</Parallels_disk_image>
Disk_Parameters 元素
描述虚拟磁盘物理布局及通用设置,必须 包含:
Disk_size:磁盘扇区数,即预期大小。
Cylinders:柱面数。
Heads:磁头数。
Sectors:每柱面扇区数,扇区大小 512 字节。 Heads、Sectors、Cylinders 的乘积 必须 等于 Disk_size。
Padding:必须为 0。Parallels Cloud Server/Desktop 可能使用 1, 但本规范不涵盖,QEMU 等软件不应打开或创建此类磁盘。
StorageData 元素
描述根镜像及全部快照镜像,由 Storage 子元素组成:
<StorageData>
<Storage>
...
</Storage>
</StorageData>
Storage 包含:
Start:起始扇区,非拆分存储为 0。
End:末扇区之后的编号,非拆分存储等于 Disk_size。
Blocksize:簇大小,即每簇扇区数。磁盘内每个 Compressed 镜像必须具有此簇大小。 可扩展镜像的簇大小记录于头部 tracks,见 Parallels 可扩展镜像文件格式。
多个 Image 子元素。
每个 Image 包含:
GUID:带大括号的 UUID,例如
{12345678-9abc-def1-2345-6789abcdef12}.Snapshots 用它引用镜像,见下文。Type:镜像类型。
Plain:raw 文件。
Compressed:可扩展磁盘。
File:镜像路径,可相对 DiskDescriptor.xml,也可绝对路径。
Snapshots 元素
描述快照树内的关系,包含一组 Shot:
<Snapshots>
<TopGUID> ... </TopGUID> /* Optional child element */
<Shot>
...
</Shot>
<Shot>
...
</Shot>
...
</Snapshots>
每个 Shot 包含:
GUID:镜像 GUID。
ParentGUID:父快照镜像 GUID。
可通过 ParentGUID 从子级向父级遍历。根快照的父 GUID 为
{00000000-0000-0000-0000-000000000000},只能有一个根。
顶层快照可由 Snapshots 的 TopGUID 子元素指定,
或使用预定义 {5fbaabe3-6958-40ff-92a7-860e329aab41}。
若定义 TopGUID,预定义值就按普通 GUID 处理。
除顶层外,所有快照镜像应只读打开。
另有预定义 BackupID = {704718e1-2314-44c8-9087-d78ed36b0f4e}, 原软件及部分第三方软件用于备份。 QEMU 等可正常操作此 GUID 的镜像,但不建议为新磁盘使用它,顶层快照不得用此 GUID。