Hostname:输入将要连接的主机名或 IP 地址,这里填写目的主机名 victory4。 图 8. 添加远程 VMM 连接
点击 Connect,输入 SSH 连接的密码后,将显示源主机和目的主机上的虚拟机列表。 图 9. 管理远程 VMM
从源主机动态迁移 KVM 虚拟机到目的主机。
在源主机上启动虚拟机 Windwos 2008 R2。
在虚拟机中,开启实时网络服务(用来验证迁移过程中服务的可用性)。
开启远程连接服务 remote access,在其他主机上远程连接此虚拟机。
开启网络实时服务。例如打开浏览器并且播放一个实时网络视频。
准备动态迁移,确保所有的虚拟存储设备此时是共享的,包括 ISO 和 CDROM。
在源主机的 virt-manager 窗口中,右键点击等待迁移的虚拟机,选择“Migrate ”。
New host:选择目的主机的 hostname。
Address:填入目的主机的 IP 地址。
Port and Bandwith:指定连接目的主机的端口和传输带宽,本文中没有设定,使用默认设置。
图 10. 虚拟机迁移设置点击“Migrate”和“Yes”开始动态迁移虚拟机。 图 11. 虚拟机迁移进度
动态迁移的时间与网络带宽、物理主机的性能和虚拟机的配置相关。本实验中的网络连接基于 100Mbps 的以太网,整个迁移过程大约耗时 150 秒。使用 RDC(Remote Desktop Connection)远程连接虚拟机在迁移过程中没有中断;虚拟机中播放的实时网络视频基本流畅,停顿的时间很短,只有 1 秒左右。如果采用 1000Mbps 的以太网或者光纤网络,迁移时间将会大大减少,而虚拟机服务停顿的时间几乎可以忽略不计。
迁移完成后,目的主机的 VMM 中自动创建了一个同名的 Windows 2008 R2 虚拟机,并且继续提供远程连接服务和播放在线视频。源主机上的虚拟机变为暂停状态,不再提供服务。至此,动态迁移胜利完成。
基于数据块的动态迁移从 qemu-kvm-0.12.2 版本,引入了 Block Migration (块迁移)的特性。上一小节“基于共享存储的动态迁移”中,为了实现动态迁移,源主机和目的主机需要连接共享存储服务。有了块迁移技术以后,可以在动态迁移过程中,把虚拟磁盘文件从源主机迁移至目的主机。QEMU-KVM 有了这个特性以后,共享存储不再是动态迁移的必要条件,从而降低了动态迁移的难度,扩大了动态迁移的应用范围。SLES11 SP1 集成了 kvm-0.12.3,支持块迁移特性。但是 SLES11 SP1 上的 libvirt-0.7.6、virt-manager-0.8.4 暂时没有引入块迁移的功能。所以本文下面的块迁移实验仅基于 QEMU-KVM 的命令行模式。
设置实验环境块迁移过程中,虚拟机只使用本地存储,因此物理环境非常简单。只需要源主机和目的主机通过以太网连接,如”图 2. 本地存储的动态迁移示意图”所示。
QEMU 的控制终端和迁移命令
QEMU 控制终端的开启,可以在 QEMQ-KVM 的命令中加参数“-monitor”。
-monitor stdio: 输出到文本控制台。
-monitor vc: 输出到图形控制台。
图形控制台和虚拟机 VNC 窗口的切换命令是:
Ctrl+Alt+1: VNC window
Ctrl+Alt+2: monitor console
Ctrl+Alt+3: serial0 console
Ctrl+Alt+4: parallel0 console
QEMU-KVM 提供了的“-incoming”参数在指定的端口监听迁移数据。目的主机上需要此参数接收来自源主机的迁移数据。
清单 4. 迁移相关的 QEMU 命令(qemu) help migrate migrate [-d] [-b] [-i] uri -- migrate to URI (using -d to not wait for completion) -b for migration without shared storage with full copy of disk -i for migration without shared storage with incremental copy of disk (base image shared between src and destination)
使用 QEMU-KVM 进行数据块动态迁移在源主机上创建和启动虚拟机。
在本地磁盘上创建虚拟机镜像文件。本文创建了大小为 10G,qcow2 格式的本地镜像文件。 清单 5. 源主机上创建虚拟机
victory3:~ # qemu-img create -f qcow2 /var/lib/kvm/images/sles11.1ga/disk0.qcow2 10G
在镜像文件上安装虚拟机。本文在虚拟机中安装了 SLES11SP1 系统。 清单 6. 源主机上安装虚拟机