openstack中 虚拟机实例的备份 与 恢复

openstack中,虚拟机实例一般是放在nova/instances目录底下.

该目录的典型结构如下所示:

root@node77:~# ls /opt/stack/nova/instances/
_base instance-0000001a

 

其中

_base目录中存放的是虚拟机实例的base image

而instance-0000001a存放的是虚拟机实例镜像的增量部分。

 

instance-0000001a目录有如下的一些文件:

root@node77:~# ls /opt/stack/nova/instances/instance-0000001a/
console.log disk disk.local libvirt.xml

 

其中

console.log 保存虚拟机启动的日志信息

disk 和 disk.local为虚拟机实例的镜像文件

libvirt.xml为配置文件。

 

这其中需要注意的是,disk和disk.local并没有包含该虚拟机的所有数据,它们只是基于base image的增量部分

我们通过kvm-image 工具可以查看该信息,如下:

root@node77:/opt/stack/nova/instances/instance-0000001a# kvm-img info disk
image: disk
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 1.6G
cluster_size: 2097152
backing file: /opt/stack/nova/instances/_base/5dcb736a3fbb7f5b92657095aa77a877f4039ec0_10 (actual path: /opt/stack/nova/instances/_base/5dcb736a3fbb7f5b92657095aa77a877f4039ec0_10)

 

root@node77:/opt/stack/nova/instances/instance-0000001a# kvm-img info disk.local 
image: disk.local
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 4.0M
cluster_size: 2097152
backing file: /opt/stack/nova/instances/_base/ephemeral_0_40_None (actual path: /opt/stack/nova/instances/_base/ephemeral_0_40_None)

其中backing file 即是base image

 

因此我们在备份虚拟机实例的时候,不仅要备份instance-0000001a目录下的数据,而且要备份该虚拟机相关的base image数据,即backing file给出的文件。

 

对于该例子:

我们需要备份如下的文件:

(1)console.log

(2)disk

(3)disk.local

(4)libvirt.xml

(5)/opt/stack/nova/instances/_base/ephemeral_0_40_None

(6)/opt/stack/nova/instances/_base/5dcb736a3fbb7f5b92657095aa77a877f4039ec0_10

 

如何根据备份的文件,在另外一台机器上恢复该虚拟机:

方法1:

我们将disk 和 disk.local磁盘文件分别和它们的base image合并,生成两个新的磁盘文件,那么这两个磁盘文件将包含虚拟机所有的数据。

 qemu-img convert [-c] [-f format] [-o options] [-O output_format] filename output_filename
qemu-img convert disk –O qcow2 newdisk
 qemu-img convert disk.local –O qcow2 newdisk.local

 

方法2:

我们修改disk和disk.local文件中backing file的位置,为当前base image的位置

qemu-img rebase [-f format] [-u] -b backing_file [-F backing_format] filename
正确处理完磁盘文件后,剩下的工作就是按照libvirt.xml文件的设置,启动虚拟机了。
这一部分,网上有很多的文档可供参考。

你可能感兴趣的:(openstack中 虚拟机实例的备份 与 恢复)