首页 > 其他 > 详细

在线迁移存储

时间:2015-09-30 16:20:25      阅读:161      评论:0      收藏:0      [点我收藏+]

http://www.udpwork.com/item/12674.html

Block Copy指的是虚拟机存储迁移。迁移时,采用Snapshot+Block stream完成存储迁移。首先通过对虚拟机进行在线外部快照,然后通过BlockStream技术合并快照,完成存储热迁移。BlockStream可以将backing file合并至active


示例:

qemu 运行虚拟机

qemu-system-x86_64 -m 1024 1.img

ctrl+alt+2切换到qemu命令行下

使用info block 查看块设备信息

技术分享

块设备为 ide-hd0 使用的镜像是1.img

创建一个外置快照

技术分享

再使用info block 查看块设备,此时ide0-hd0 使用的文件已经是刚才创建的快照文件了,下面还有一行注意,backing file 1.img说明 这个快照文件是依赖原来的镜像文件的

接下来使用 block_stream 命令把backing file 合并到快照中

技术分享

此时马上使用info block查看可以看到快照还是依赖原来的镜像文件,稍等一会再使用info block查看,此时快照已经不再依赖原来的镜像文件了

技术分享

此时存储迁移已经完成


迁移后的镜像格式只能为qcow2,源文件格式可以为qcow2和raw


已测试从本地文件系统迁到本地文件系统,本地文件系统和nfs之间相互迁


xml格式

http://www.libvirt.org/formatsnapshot.html


测试代码

python

import libvirt

conn=libvirt.open("qemu:///system")

p = conn.lookupByName()

flags=libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY

p.blockJobAbort("/var/lib/oe-instances-disk/7733b525-62d4-44b9-bf06-a2fe361d8f63",0)


xml="

<domainsnapshot> \

  <name>snap1</name> \

  <description>snap1-desc</description> \

  <disks> \

    <disk name='hdb' snapshot='external'> \

      <source file='/root/1359.img'/> \

    </disk> \

  </disks> \

</domainsnapshot> "


p.snapshotCreateXML(xml, flags)

p.blockPull("hdb", 0, 0)

p.blockJobInfo("hdb", 0)


//获取进度信息,输出

 p.blockJobInfo("hdb", 0)

{'end': 21474836480L, 'bandwidth': 0L, 'type': 1, 'cur': 7534346240L}

>>> p.blockJobInfo("hdb", 0)

{'end': 21474836480L, 'bandwidth': 0L, 'type': 1, 'cur': 7556366336L}

>>> p.blockJobInfo("hdb", 0)

{'end': 21474836480L, 'bandwidth': 0L, 'type': 1, 'cur': 7577337856L}

>>> p.blockJobInfo("hdb", 0)

{'end': 21474836480L, 'bandwidth': 0L, 'type': 1, 'cur': 12414615552L}

>>> p.blockJobInfo("hdb", 0)

{}








在线迁移存储

原文:http://www.cnblogs.com/sj9524437/p/4849218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!