XVA(Xen Virtual Appliance)的格式其实很简单,就是一个tar文件,我们可以用file命令来检查其文件类型。
# file lochdns-2.0.2-x86_64.xva
lochdns-2.0.2-x86_64.xva: POSIX tar archive
这个包中主要包含以下文件,还是以上面的这个文件为例子:
# tar tvf lochdns-2.0.2-x86_64.xva
-rw-r--r-- root/root 527 2009-01-29 10:32:10 ova.xml
-rw-r--r-- root/root 130688573 2009-01-29 10:32:16 xvda/chunk-000000000.gz
-rw-r--r-- root/root 18074944 2009-01-29 10:32:28 xvda/chunk-000000001.gz
ova.xml文件是关于虚拟机的元数据,主要包括内存信息,磁盘信息等。上面这个例子中ova.xml的文件内容如下:
<?xml version="1.0" ?>
<appliance version="0.1">
<vm name="vm">
<label>lochDNS Appliance</label>
<shortdesc>Created by rPath rBuilder</shortdesc>
<config mem_set="134217728" vcpus="1"/>
<hacks is_hvm="false" kernel_boot_cmdline="root=/dev/xvda1 ro ">
</hacks>
<vbd device="xvda" function="root" mode="w" vdi="vdi_xvda" />
</vm>
<vdi name="vdi_xvda" size="1209729024" source="file://xvda" type="dir-gzipped-chunks" variety="system" />
</appliance>
xvda目录下面的文件则代表这个虚拟机的磁盘映像。 整个虚拟机磁盘被划分成1000000000大小的块,每个块存到一个文件中,文件名则从000000000开始顺序递增。每个文件都用gzip进行了压缩。另外需要注意的一点是,如果一个文件中没有任何数据(即对应虚拟机磁盘上某个部分有个“空洞”,即全部是0x0),则这个文件不会被创建,其序号也会被跳过。比如,xvda目录下有如下两个文件chunk-000000000.gz, chunk-0000000002.gz则表示磁盘上1000000001至2000000000处全部为0x0,因此这个文件就不需创建。这么做主要是出于节省空间的考虑。
可以用dd将xva中的文件系统复制到物理磁盘上,做法就是将xvda目录下的文件解压缩后顺序dd到目标磁盘上即可,当然要注意磁盘中间有空洞的情况,dd的时候也需要相应的跳过(skip)。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linaxing/archive/2009/02/10/3873886.aspx