免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1368 | 回复: 0
打印 上一主题 下一主题

[OpenStack] 在openstack中虚拟机实例的备份和恢复操作 [复制链接]

论坛徽章:
18
IT运维版块每日发帖之星
日期:2016-06-07 06:20:0015-16赛季CBA联赛之北控
日期:2016-06-30 21:19:06IT运维版块每日发帖之星
日期:2016-06-29 06:20:00每日论坛发贴之星
日期:2016-06-28 06:20:00IT运维版块每日发帖之星
日期:2016-06-28 06:20:00数据库技术版块每日发帖之星
日期:2016-06-23 06:20:00每日论坛发贴之星
日期:2016-06-22 06:20:00IT运维版块每日发帖之星
日期:2016-06-22 06:20:00IT运维版块每日发帖之星
日期:2016-06-21 06:20:00wusuopu
日期:2016-06-17 17:43:45IT运维版块每日发帖之星
日期:2016-06-16 06:20:00IT运维版块每日发帖之星
日期:2016-06-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-06-25 23:18 |只看该作者 |倒序浏览
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中,虚拟机实例一般是放在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文件的设置,启动虚拟机了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP