libvirt笔记 migration

迁移是获取客户域的映像并将其移动到某处的过程,通常是从一个节点上的hypervisor移动到另一个节点上的hypervisor。有两种迁移方法。migrate方法采用已建立的hypervisor连接,并指示域迁移到此连接。migrateToUri方法接受一个指定系统管理程序连接的URI,打开连接,然后指示域迁移到这个连接。可以向这两个方法传递一个参数来指定实时迁移。为了成功地完成迁移,需要在源和目标hypervisor之间共享存储。
迁移方法的第一个参数指定要用于迁移目标的连接。为必选参数。
migrate方法的第二个参数指定一组标志,这些标志控制如何在连接上进行迁移。如果不需要标志,则该参数应设置为零。
VIR_MIGRATE_LIVE
VIR_MIGRATE_PEER2PEER
VIR_MIGRATE_TUNNELLED
VIR_MIGRATE_PERSIST_DEST
VIR_MIGRATE_UNDEFINE_SOURCE
VIR_MIGRATE_PAUSED
VIR_MIGRATE_NON_SHARED_DISK
VIR_MIGRATE_NON_SHARED_INC
VIR_MIGRATE_CHANGE_PROTECTION
VIR_MIGRATE_UNSAFE
VIR_MIGRATE_OFFLINE
migrate方法的第三个参数为迁移目标上的域指定一个新名称。并非所有管理程序都支持此操作。如果不需要重命名域,则该参数应设置为None。
迁移方法的第四个参数指定要用作迁移目标的URI。只有当目标系统支持多个管理程序时,才需要URI。如果目标系统上只有一个虚拟化环境,则该参数可以设置为None。
迁移方法的第5个也是最后一个参数指定了要使用的带宽,单位是MiB/s。如果不需要这个最大值,则将参数设置为零。
要将客户域迁移到已经打开的连接,请使用migrate方法。一个例子:

import sys
​import libvirt
​
​domName = 'Fedora22-x86_64-1'
​
​conn = Nonetry:
​    conn = libvirt.open("qemu:///system")except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​dest_conn = Nonetry:
​    dest_conn = libvirt.open('qemu+ssh://desthost/system')except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​dom = Nonetry:
​    dom = conn.lookupByName(domName)except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​new_dom = Nonetry:
​    new_dom = dom.migrate(dest_conn, 0, None, None, 0)except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​print('Domain was migrated successfully.', file=sys.stderr)
​
​dest_conn.close()
​conn.close()
​exit(0)

migrateToURI方法与此类似,只是目标URI是第一个参数,而不是现有的连接。

import sys
​import libvirt
​
​domName = 'Fedora22-x86_64-1'
​
​conn = Nonetry:
​    conn = libvirt.open("qemu:///system")except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​dom = Nonetry:
​    dom = conn.lookupByName(domName)except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​new_dom = dom.migrateToURI('qemu+ssh://desthost/system', 0, None, 0)if new_dom == None:print('Could not migrate to the new domain', file=sys.stderr)
​    exit(1)
​
​print('Domain was migrated successfully.', file=sys.stderr)
​
​conn.close()
​exit(0)

要实现热迁移到URI,请使用带有VIR_MIGRATE_LIVE标志设置的migrate或migrateToURI。一个例子:

import sys
​import libvirt
​
​domName = 'Fedora22-x86_64-1'
​
​conn = Nonetry:
​    conn = libvirt.open("qemu:///system")except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​dest_conn = Nonetry:
​    dest_conn = libvirt.open('qemu+ssh://desthost/system')except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​dom = Nonetry:
​    dom = conn.lookupByID(6)except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​new_dom = Nonetry:
​    new_dom = dom.migrate(dest_conn, libvirt.VIR_MIGRATE_LIVE, None, None, 0)except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​print('Domain was migrated successfully.', file=sys.stderr)
​
​dest_conn.close()
​conn.close()
​exit(0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值