一般的虚拟机镜像文件,比较直接的做法是存放在一个img镜像文件里,或者直接使用/dev/sda*分区。但是万一把虚拟机分区“玩坏”了就不好恢复了。
qemu支持一种镜像格式qcow2,能够创建增量镜像,这样可以把修改存在新文件里,当出错时可以保护原始镜像。这个功能非常有用,【xen似乎支持qcow2,待查】但是Xen自身不支持。
Xen想要使用增量镜像,只能使用LVM文件系统的snapshot快照功能。(note:Xen
HVM虚拟机因为使用qemu做前端,所以同样可以用qcow2格式。但是PV虚拟机就只能用LVM snapshot)
LVM可以对一个分区创建多个快照(snapshot),作为分区的增量镜像。在快照里的修改不会影响到源分区。
在创建快照时,需要指定快照的大小。当snapshot的空间被填满时,LVM会丢弃这个快照(奇怪的设定),所以尽量不要塞满……而比较新的lvm版本支持把snapshot与本体分区合并,如果建立了快照又想同时修改本体和快照,可以使用这个merge功能。
下面是具体的配置。
环境:
LVM版本为2.02.54。这个版本比较老。比较新的版本支持把snapshot与本体分区合并。
GUI使用KDE的kvpm,和Gnome下的system-config-lvm
LVM的文件系统可以定义在物理分区上,或者镜像文件里。我使用的是/dev/sda*分区。建立lvm分区:
sudo pvcreate /dev/sda11 -v其他的预留给hvm虚拟机和snapshot
安装配置好镜像pv里的所有内容后,使用GUI建立两个snapshot:pv-shot1和pv-shot2,大小均为2GB
然后把虚拟机配置文件做相应的修改:
xm_vars.var('volume', use="Specify the logical volume (snapshot) used")