文档章节

Xen学习之——使用xl migrate 进行虚拟机域的动态迁移

 宋小八
发布于 2017/07/07 21:52
字数 2690
阅读 386
收藏 0

最近在做xen上虚拟机的迁移,说实话这个问题已经困扰小编我很久很久了,每次都是以失败告终。今天,就在激动人心的今天终于是迁移成功了,不过最后又发现了一个小问题,最后再说。今天就写下这篇博客以此纪念并记录当时的操作。

以前一直都是自己遇到问题,在网上百度,谷歌查找满天飞的资料,最后发现也没几篇文章能够对得上号,很多问题其实大家都应该遇到过,最后肯定也解决了,不过大家都习惯了搭便车,晒出自己最后怎么解决的却没几个,不是忘记就是太高兴了。希望今天的这篇文章,能够给以后遇到同样问题的你一点帮助。

废话就不多说了,直接上操作,总结吧。

一、实验环境

先说明一下,网上很多迁移的教程都是用三台xen主机做的,一台做共享存储器可以是nfs也可以是isis,其它两台分别是源主机和目的主机。我这边的话由 于种种原因只安装了两台机器,此次实验是基于两台电脑来做的。主机A既是nfs服务器也是xen源主机,主机B是xen目的主机,环境如下:

二、迁移前的准备

1.首先,必须保证你所有实验的机器的体系架构一样(操作系统完全一致,版本,位数什么的),xen版本一样,必须一致,重中之重,小编在这里可栽了不少跟头。

2.下载一个迷你,小型的系统镜像,centos也好,WinXP也好,主要用于一会儿安装domain客户虚拟机用

3.确保源主机和目的主机都有足够的空间。

4.确保两台机器之间能够ping通。

tips:如果ping的时候ping不通,请检查一下,网线是否插好,IP地址是否在同一网段,还有防火墙是否关闭,每台机器的网线是否插在正确的网口(小编之前的台式机有两个网口,插在了亮红灯的上面,一直ping不同,后来换在发萤黄色的网口上,就ping通了)。

5.安装nfs服务

sudo apt-get install nfs-kernel-server

sudo apt-get install nfs-common

安装好后修改vim /etc/exports文件,添加 /share *(rw,sync,no_root_squash)

注意这里的/share 目录就是一会要拿来做共享存储的目录。我们必须在源主机和目的主机都建立这个相同的目录,mkdir /share

启动nfs服务,service nfs-kernel-server start ,然后利用mount命令进行挂载测试即可。

mount -t nfs IP地址:要挂在的路径   本机路径,举个例子 mount -t nfs 169.254.9.88:/share  /share这样我就能在我本机的/share的目录下访问169.254.9.88主机上的/share目录了

6.安装SSH服务

利用xl migrate domainid 目的主机IP地址,其实这里是利用SSH连接的,所以我们要配置ssh。

sudo apt-get install openssh-client

sudo apt-get install openssh-server

启动ssh服务  /etc/init.d/shh start

生成密钥对 ssh-keygen -t rsa

发送公钥 ssh-copy-id  -i  id-rsa.pub  root@对方IP地址,出现提示直接yes即可,一切没问题会让你输入对方目的机器的root用户的密码,如果不知道密码可以利用sudo passwd root 来修改root用户的密码(目的主机上操作)。

tips: root@IP地址,默认连接root用户,当然也可以换成其他用户如songmin@ip地址,这样就会提示你输入songmin用户的密码,或者你直接 ssh-copy-id -i id-rsa.pub ip地址,这样是默认连接root用户的。

一切操作完成后,就可以使用ssh  ip地址去远程连接对方目的主机了,注意这里是默认连接root用户,如果出现错误可能是你的网线没插,或者输入密码错误,又或者是root用户默认不允许远程的登录。如果是第三个原因,请修改目标主机的vim /etc/ssh/sshd_config文件将PermitRootLogin  without-password  这里改为PermitRootLogin yes保存退出后重启ssh服务/etc/init.d/ssh restart  即可生效。

三、迁移步骤

1.创建一个建立在共享存储上的虚拟机域

安装Apache(http)服务,具体的操作请网上自行查阅,篇幅太小不够写,安装好后,我将/var/www作为了根目录。

2.创建存放domainU的文件cd  /share 在/share目录下进行

dd if=/dev/zero of=cen.img oflag=direct seek=102399 bs=1M count=1  这里创建了100G

3.将下载好的iso镜像复制到/share 目录,我用的是centos-6.3.iso  

4. 建立iso目录,mkdir /var/www/iso

  挂载目录 mount -o loop /share/xx.iso  /var/www/iso

  将vmlinuz,initrd.img解压   cp  /var/www/iso/isolinux/{vmlinuz,initrd.img}   /share

5.编写配置文件

 先将工作目录切换到xen下,cd /etc/xen  

 然后vim cen.cfg,写入以下配置信息

注意,我这里的配置文件是安装好之后的了,请大家把kernel和ramdisk前面的注释符去掉,将bootloader那一行前面前面加上注释。然后保存退出。

然后 xl create -c cen.cfg 安装即可。一路根据提示就行了,不清楚可以参考网址:

http://luochen2015.blog.51cto.com/9772274/1751540

创建好之后,xl list 看一下,刚创建的虚拟机是否在运行。

6.在目标主机上挂载共享目录

mount -t nfs 169.154.12.45:/share  /share

7.进行迁移

xl migrate cen 169.254.12.125

出现下图,说明没什么问题啦。

然后在目的主机上 xl list 发现多了一个虚拟机,而源主机上已经找不到刚才迁移的虚拟机了。

四.总结

我之前遇到很多问题,造成我没有迁移成功在这里详细总结一下。

1.virtual-manager不支持xen的迁移

一开始做实验实验的时候,我是利用virtual-manager这个图形化界面创建虚拟机的。它支持xen和KVM+qemu两种连接方式。在上面创建好虚拟机右键,你会发现有一个迁移的选项,但并不能点击。这是因为你没有在virt-manager连接其他主机,所以不能迁移,连接也是用的ssh,配好ssh之后,就可以连接其他的xen主机啦。

当我点击迁移时,报错是这样说的,连接驱动器不支持这个功能。但kvm是可以迁移得,截图如下:

2.迁移时虚拟域配置文件没有,或者格式不正确。

通过virt-manager创建的xen虚拟机的配置文件位于/var/lib/xen下,一般运行时才会有个对应的xml格式配置文件。而通过virt-manager创建的kvm+qemu虚拟机的配置文件放在/etc/libvirt/qemu下。

一开始我还不知到用xl create 配置文件来创建虚拟机,就只有用virt-manager来创建。

于是我就直接用xl migrate IP地址开始迁移,报错提示说缺乏配置文件。

然后我又 xl migrate -C IP地址,还是报错,说的是配置文件的格式不被识别。

后来我发现这样是不行的,于是就放弃了用virt-manager创建虚拟机,也因此开始了漫长的创建虚拟机之路。

3.没有配置SSH

4.创建的虚拟机不对

我尝试使用virt-install,virsh,virt-manager,xen-tools, xl create等创建虚拟机。后来在不断的尝试中我发现使用virt-install和virtual-manager创建是一样的,迁移时会不识别配置文件。而xen-tool创建的虚拟机也没有成功建好。最后在不断的试验中终于利用xl create创建好了虚拟机

5.不会写用 xl create 创建虚拟机的配置文件

一开始我并不知道这个配置文件怎么写,也尝试将xml格式的转化过来,不过最后都失败了,后来查阅了一些资料,慢慢研究才终于懂得了配置文件怎么写。

6.存放虚拟机的文件没有共享或目的主机不存在这个文件

当虚拟机成功建好,ssh配置好,配置文件也没有错之后,我再一次进行迁移实验。最终结果仍然是失败。提示:xx.img no sunch file or direction

决绝办法就是cp 复制到目标主机,这样的结果就是太慢了,耗时,耗力。

拷过去之后,再次迁移又报错说 :message to long ,思考了半天应该是没有用共享存储的问题,而要迁移的虚拟机也应该建立在共享存储上。

7.看源码没突破

遇到上述的那个问题的时候,师兄建议我去分析源码,于是我就分析了好长一段时间的源码,大概1个周,不过最后我也没有分析出个所以然,然后也不知道问题在哪儿,浪费了很长一段时间。

可以参考http://blog.csdn.net/bearox/article/details/69388926,我还评论交了好久。

虽然源码使用C语言+Python写的,但我觉得看起来还是有点费力,毕竟一开始我都不知道从哪个文件哪个函数开始是迁移相关的代码,也不知道函数中莫名出现的变量是从哪儿来的。毕竟要看懂别人的思想和套路还是要花时间琢磨。

途中还遇到一个:qemu  signature :internal error 这个问题我不知道是为什么,后来直接重新做了一边实验,就没出现这个问题而是其他问题了。

8.系统体系架构问题

经过一段时间分析源代码无果之后,我们导师就让师兄指导我做一下实验。于是我又放弃分析源码,开始从头做一遍实验。

这一次出现的问题是mmap faild

和师兄一起检查讨论了好久,后来发现自己两台机子的操作系统为数竟然不一致,一个是32位,一个是64位。这样迁移肯定是有影响的。于是就决定重新装一遍环境。装成一样的之后,就成功迁移了。

9.最后还有一个很奇怪的现象,就是成功迁移过去的虚拟机,在目的主机上运行一段时间后,竟然莫名奇妙的就消失了,xl list 就没有对应显示运行的信息了,现在还不知道是怎么回事。

 

 

 

 

© 著作权归作者所有

粉丝 2
博文 19
码字总数 37798
作品 0
成都
私信 提问
xen动态迁移问题

使用xl migrate 迁移虚拟机时出错,有没有哪位大牛遇到过,求指教,求讨论!!! root@songmin-K45VD:/home/songmin# xl create /etc/xen/centos.cfg Parsing config from /etc/xen/centos....

songmin1
2017/06/08
87
0
xen实现虚拟化(二)

本文将介绍virt-manager、virt-install等工具在xen的半虚拟化平台上安装虚拟机,及xen的一些高级应用 一、virt-manager安装Guest虚拟机 # yum -y install virt-manager libvirt virt-viewer ...

jungege1216
2014/05/25
0
0
虚拟化学习笔记-KVM 虚拟机在物理主机之间迁移的实现(p2p)

版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396686 SLES11 SP1 发布于 2010 年 5 月 19 日基于 Linux 内核 2.6.32.1......

z奶油面包
2018/02/28
0
0
KVM虚拟机的热迁移---Live Migration

KVM虚拟机的热迁移---Live Migration: 服务器虚拟化技术是当前的热点,而虚拟机的“热迁移(Live Migration)”技术则是虚拟机的运行状态完整保存下来,同时可以快速的回复到原有硬件平台甚至...

crucis
07/30
0
0
进入开源虚拟机 XEN 的世界

XEN 的发展与现状 XEN 最初是作为剑桥大学的一个项目,目前 XEN.ORG 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。XEN 是一种直接运行在硬件上一层软件,它可以让电脑硬件...

IBMdW
2011/06/10
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
25分钟前
2
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
36分钟前
2
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
44分钟前
6
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部