动态迁移(Live Migration):也叫在线迁移(Online Migration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。 目前主流的动态迁移工具,他们都依赖于物理机之间采用 SAN(storage area network)或 NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要进行虚拟机系统内存执行状态的迁移,从而获得较好的迁移性能。 三台dell R710,两台做宿主机上面安装kvm虚拟机,一台通过iscsi模拟共享存储,主要实验kvm的vm动态迁移过程,两台宿主机还继续使用上一节静态迁移的环境,不过需要安装iscsi客户端,在存储上面安装iscsi服务端。 三台机器的名称分别是:Ubuntu-src、Ubuntu-dst、Ubuntu-store 安装iscsi软件: 在Ubuntu-src和Ubuntu-dst上安装客户端
apt-get install open-iscsi 在Ubuntu-store上安装服务端
apt-get install iscsitarget iscsitarget-source iscsitarget-dkms
apt-get install module-assistant debhelper build-essential 在安装完服务端后,默认服务是不启动的,要修改配置文件/etc/default/iscsitarget
ISCSITARGET_ENABLE=false --> ISCSITARGET_ENABLE=true 启动iscsitarget:
使用Ubuntu-store上的/dev/sda6作为共享存储,修改/etc/iet/ietd.conf文件,在文件末尾追加以下配置:
Target iqn.2012-10.com.guol:storage.lun1 Lun 0 Path=/dev/sda6,Type=fileio
在Ubuntu-src上获取共享存储的资源 连接到服务端,查看提供了那些共享存储资源:
iscsiadm -m discovery -t st -p 10.1.6.89 挂载服务端提供的共享存储资源:
iscsiadm -m node iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -l
在共享存储上划分分区:
可以看到共享存储资源被识别为/dev/sdb设备,划分整个/dev/sda为/dev/sdb1分区,并在上面创建卷:
pvcreate /dev/sdb1 vgcreate store /dev/sdb1 lvcreate -L 5G -n kvm-mig store
在Ubuntu-src上使用virt-install把虚拟机安装到kvm-mig卷中:
virt-install -d -n kvm-mig -r 2048 --disk path=/dev/store/kvm-mig,bus=virtio,cache=none --network bridge=br0,model=virtio --vnc --cdrom=/opt/debian-6.0.2.1-amd64-CD-1.iso
安装完毕后,启动虚拟机,并登录查看,如下图:
在Ubuntu-dst上获取共享存储的资源
iscsiadm -m discovery -t st -p 10.1.6.89 iscsiadm -m node iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -l 如下图:
使用fdisk -l就可以看到在Ubuntu-src上划分的/edv/sdb1及相关的lvm卷
下面开始把kvm-mig从Ubuntu-src动态迁移到Ubuntu-dst上: 先查看虚拟机在Ubuntu-src和Ubuntu-dst上的状态
virsh list
可以看到kvm-mig运行在Ubuntu-src上,而Ubuntu-dst上并没有运行虚拟机。 下面把Ubuntu-src上的kvm-mig动态的迁移到Ubuntu-dst上面。 在Ubuntu-src上执行如下命令,提前在Ubuntu-src和Ubuntu-dst之前使用ssh key登录,并确保域名解析正确,可以设置/etc/hosts。
virsh migrate --live kvm-mig qemu+ssh://10.1.6.228/system
大概等待1~2分钟,迁移消耗的时间依赖于虚拟机使用的内存,因为动态迁移只是把在源中的内存拷贝一份到目的机器上面,结果如下对比图:
可以看到刚开始kvm-mig运行在Ubuntu-src上面,几分钟后,kvm-mig就移动到Ubuntu-dst上面了,不过刚开始处于中止状态,几秒钟后会变为运行状态。
在Ubuntu-dst上面登录kvm-mig虚拟机:
有个问题,使用virsh迁移只是把内存拷贝一份到目的机器上面,其启动配置文件并没有拷贝到目的主机,所以如关闭了虚拟机以后,是不能在目的机器上再次启动它的,为了可以在目的机器上启动迁移过来的虚拟机,可以把源主机上/etc/libvirt/qemu目录下的相关虚拟机配置文件也拷贝到目的机器上面。
可以看到中间的中断时间是很短的,可以看到基于共享存储的虚拟机迁移是比较方便的且不宜影响客户的使用,不过存贮的价格你懂的,在一般的小公司不一定愿意投入,所以下面一篇文章才是我实验vm动态迁移的目的。
(责任编辑:IT) |