KVM迁移

kvm迁移分为冷迁移和热迁移。

冷迁移:虚拟机在关机情况下从hostA迁移至hostB

热迁移:虚拟机在开机情况下从hostA迁移至hostB


本文以centos6.5为例,介绍冷/热迁移的方法。


1. 冷迁移

① 导出虚拟机xml文件(配置文件)

# virsh dumpxml vm-name > dump.xml

vm-name 为你的虚拟机名称


② 拷贝虚拟机磁盘和xml文件(从hostA -> hostB)

# scp /path-to-image/vm-image hostB:/root

# scp dump.xml hostB:/root

vm-image的默认路径为/var/lib/libvirt/images/ (libvirt管理的虚拟机)


③ 登录hostB,修改dump.xml

根据B的硬件环境,修改dump.xml的文件内容。

比如<interface>中bridge名称,<disk>中<source file>的路径。


④ 加载虚拟机

# virsh define dump.xml

切记不能用virsh create。否则虚拟机关闭后,该虚拟机从虚拟机列表删除。

如果你要再次使用该虚拟机的话:则必须重新进行create/define操作。


2. 热迁移

英文名称live-migrate,也叫在线迁移。即虚拟机在运行时进行无缝迁移。

本文以centos6为例(被迁移的虚拟机,hostA,hostB均为centos6)进行说明。


① hostA共享虚拟机磁盘目录给hostB

默认情况下,虚拟机磁盘目录为/var/lib/libvirt/image/centos6.img。

把此目录(/var/lib/libvirt/image)设置成nfs共享(这里不详细阐述如何设置nfs)。

hostB通过mount命令把hostA目录挂载至相同路径下(/var/lib/libvirt/image)。

这里有TX肯定会问,如果挂载至hostB的/var/lib/libvirt/image目录下,那么hostB

原目录下的虚拟机文件不就无法读取了?确实是这样的!一旦你挂载了,那么hostB

上原本的虚拟机就无法访问了。除非你自定义磁盘目录到其他路径下,否则无其他方法。

同理,如果你hostA的虚拟机修改了默认磁盘路径,那么你在hostB上必须也创建相同的路径,

用于挂载hostA上的虚拟机磁盘。


② 迁移虚拟机

在hostA上执行下列命令:

# virsh migrate --live vm-name qemu+ssh://hostB/system

然后会提示你输入hostB的root密码,输入完成后就开始迁移了。


这里记录几个live migrate过程中遇到的problem及其workaround

A. error: Unable to resolve address '***" service "**" : Name or service not know

B. error: Unable to resolve address '***" service "**" : Temporary failure in name resolution

这两个问题都是因为hostname没有设置的原因。

解决方法是 :1. hostA和hostB都设置hostname 2. 在/etc/hosts文件中配置对方hostname解析


C. error: unsupport configuration: Unable to find security driver for label selinux

这个问题是因为hostA和hostB的selinux状态不一样。可能hostA是permission/enforce而hostB是disabled。

这个问题修改方法如下:(假设hostA是permissive ,hostB是disabled)

1. 修改hostA的/etc/selinux/config,selinux改成disabled

2. 修改/etc/libvirt/qemu.conf文件,把selinux-dirver改成none

3. 重启hostA

4. virsh start vm --force-boot (必须加上force-boot参数,否则无法启动vm)

5. 执行迁移命令


关于这点我还有个想法:那就是把hostB的selinux开启,是不是也能解决问题。

这个我还没有试验,mark一下。欢迎试验过得TX留言补充~~

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇