KVM热迁移 原生API进行

这篇文章将持续更新,实验环境为CentOS 6.5

首先配置在源主机和目的主机上共享存储NFS,可参考这篇博客《CentOS 6 nfs共享存储配置》,配置共享存储的目的是让源主机和目的主机都可以访问虚拟机镜像文件,这样,在进行热迁移的时候就只需要复制虚拟机内存,磁盘文件就不需要复制了。

安装KVM是必须的了,参考《KVM简单教程》,只是参考啊,其实没必要这么麻烦。

安装vncserver和vncview,前者参考《CentOS中vncserver的使用》,后者可通过:sudo yum install vnc 安装

用KVM为要创建的虚拟机准备一个镜像文件,就是磁盘文件:

/usr/bin/qemu-img create -f qcow2 ubuntuTest.img 10G

创建好的镜像文件ubuntuTest.img可以随意复制,只需要在启动虚拟机的时候指定镜像文件所在的目录即可

创建虚拟机:

sudo /usr/libexec/qemu-kvm -m 512 -drive file=./ubuntuTest.img -boot d -cdrom /home/qi/images/ubuntu-12.04.4-server-amd64.iso -smp 2
其中qemu-kvm命令在/usr/libexec目录下面,你可以使用 sudo ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm 来创建一个软连接,这样就不用每次都是用绝对路径。命令运行后最后一行显示:VNC server running on ::1:5900,这时我们可以通过命令vncviewer :5900(注意中间有个空格)来控制虚拟机的安装过程,跟普通装操作系统一个样。

启动虚拟机:

sudo /usr/libexec/qemu-kvm -m 512 -hda /var/lib/libvirt/images/ubuntuTest.img -smp 2
注意,因为要进行热迁移,所以要使源主机和目的主机共享磁盘文件,在我的电脑中源主机和目的主机的共享目录为/var/lib/libvirt/images,所以我将磁盘文件复制到了这个目录,-smp 2的意思是使用两个虚拟CPU。

可以使用 ps -aux | grep qemu-kvm来查看虚拟机进程

以上操作都是在源主机上进行的。

目的主机上启动虚拟机,并多添加一个参数 -incoming tcp:0:6666,这个额外的参数表示在6666端口建立一个TCP socket连接用于接收来自源主机的动态迁移的数据。

qemu-kvm -m 512 -hda ./kvmUbuntu.img -smp 2 -incoming tcp:0:6666
这个时候,通过vncviewer :5900将只会看到一个黑框框,因为还没有启动迁移。

在源主机上进入QEMU monitor界面(在vncviewer界面上按 Ctrl+Alt+2),使用命令:

migrate tcp:server005:6666
来进行热迁移,server005表示目的主机的名字,也可以使用IP,迁移完成后,使用

info migrate查看迁移状态,包括迁移总时间,停机时间,传输的数据等。


你可能感兴趣的:(KVM热迁移 原生API进行)