设为首页 收藏本站
查看: 1407|回复: 0

[经验分享] KVM 动态迁移

[复制链接]

尚未签到

发表于 2015-4-10 13:06:15 | 显示全部楼层 |阅读模式
  最近开始写博客,记录一些学习、实验、测试的结果,帮助自己记忆,也方便与大家分享,开始会将之前在论坛有意义的帖子转移过来,中间会加上自己新的理解、论证和修改之前出的一些纰漏。
  
本文主要以解决问题的方式介绍KVM(在线)迁移虚拟机的方法,可能内容包含的不是很全面,这些只是我在实验的时候遇到的问题(我操作之前是裸环境,一步一步debug到成功,如果按照下述方法,基本不会出太大差错),当然如果遇到的问题没有被包含可以留言回复或加入QQ群:93146027。。。
  之前一直以为KVM虚拟机迁移需要共享存储,虚拟机的镜像放到共享存储中,迁移的过程相当于启动一个监听虚拟机,将内存数据copy到目标服务器上,然后销毁source上的虚拟机,启动target上的机器。
  但是只从qemu-0.12.2版本以后,支持block migrate,就可以通过virsh 命令直接将虚拟机迁移而不需要共享存储。
  详情参见:KVM 虚拟机在物理主机之间迁移的实现  LiveBlockMigration   
  
废话不多说,直入正题(被迁移的机器成为:vmtest,所在服务器:source,目标服务器:target,#后是shell命令)
实验环境:
RedHat 6.2
# virsh version
Compiled against library: libvir 0.9.4
Using library: libvir 0.9.4
Using API: QEMU 0.9.4
Running hypervisor: QEMU 0.12.1
主要用两种方式,命令行virsh migrate
命令行比较简单:
#virsh migrate vmtest qemu+ssh://target/system --live --storage-all
  (如果ssh的端口不是默认22,可以写为 qemu+ssh://target:port/system)
Question 1:
error: internal error hostname on destination resolved to localhost, but migration requires an FQDN
解决办法很简单,因为默认情况下hostname 是 localhost,我们需要把目标的hostname修改一下,临时的也可以。
#hostname target
Question 2:
error: internal error Attempt to migrate guest to the same host 00020003-0004-0005-0006-000700080009
这个在mail list 中有大牛说是服务器提供商的问题,
你可以用#dmidecode -s system-uuid 查看一下这个ID,理论上是#virsh sysinfo | grep uuid 及# virsh capabilities | grep uuid
这三个ID是一样的。(之前看论坛里发的解决方法是需要下载一个dmidecode 命令的文件去替换系统的,达到修改的目的,不过我只是修改了libvirt的配置文件就可以了,可能是版本的问题)
我们修改一下libvirtd的配置文件
#sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\"" /etc/libvirt/libvirtd.conf
重启一下libvirtd 服务
# /etc/init.d/libvirtd restart
然后再查看一下
# virsh capabilities | grep uuid
Question 3:
error: unable to set user and group to '107:107' on '/image/vmtest/disk.img': No such file or directory
如果顺利进入到这步的话,就很简单了,没有directory 直接创建一个就可以,没有disk.img 直接create一个
注:创建的磁盘应该和源虚拟机的磁盘是一样的大小(更大应该是可以)和格式(raw还是qcow2)
  qemu-img create /image/vmtest/disk.img +sizeG
Question 4:
error: Unable to resolve address 'target' service '49155': Name or service not known
《《Name or service not known》》这个相信大家都知道如何解决,/etc/hosts 添加解析的ip和target的域名即可
  
再次执行迁移命令的时候,就基本不会报错了,我的实验环境是,如果你还有其他问题,请贴图回复,谢谢
  
虚拟机迁移和网络的带宽、虚拟机镜像的大小有直接关系,但是在线迁移最关心的应该是宕机时间,我测试的方法是一直ping target 服务器,大概停顿1s。

  迁移的问题大概就这么多。
剩下的是一些有关于迁移和其他的小细节:
在设置vnc监听端口时基本上有3种,
127.0.0.1 (默认):只有本机能访问,也就是virt-mange和virt-view
host_ip :除了本机的所有机器都可以访问
0.0.0.0: 以上两种的合集
在迁移时,需要把监听地址改为0.0.0.0,端口为-1 自动分配,因为如果不出意外的话,指定的端口会冲突!!!
  
我们也可以用tcp代替ssh连接到目标服务器上,很多管理工具(webvirt)也是使用的tcp作为连接的方式。
方法如下:
1 修改/etc/libvirt/libvirtd.conf中
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "sasl"
2 去掉/etc/sysconfig/libvirtd 中LIBVIRTD_ARGS="--listen" 的注释
3 修改/etc/libvirt/qemu.conf 中listen 为0.0.0.0 ,去掉password注释
4 运行以下命令可以添加用户
# saslpasswd2 -a libvirt admin
Password: xxxxxx
Again (for verification): xxxxxx
通过以下命令可以查看已经创建的用户
# sasldblistusers2 -f /etc/libvirt/passwd.db
fred@t60wlan.home.berrange.com: userPassword
5 重启libvirtd 服务 ok!
原文引用:xiaoli110 的BLOG
在的ssh的位置选择tcp,如果端口没有修改可以不填端口
测试连接的时候可以用 #virsh -c qemu+tcp://target/system list
还有一个问题是,迁移的时候可以拉服务器吗?正常的迁移时大多是推过去的,就想scp 和rsync一样,以拉虚拟机的方式迁移是可以的
迁移虚拟机对服务器的要求,之前看必须是两个相同的Cpu才可以,今天我测试的时候是发现可以从source迁移到target,回来就出问题了,发现时sourcce 少了一些指令集,所以可以说不同的cpu也是可以做迁移的,只是目标服务器必须包含源服务器cpu的所有指令集。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55681-1-1.html 上篇帖子: 挂载KVM Guest操作系统磁盘 下篇帖子: QEMU KVM libvirt 手册(3)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表