当前位置: > 虚拟化 Virtualization > KVM >

Ubuntu 12.04 KVM之VM动态迁移-基于LVM

时间:2016-05-29 23:13来源:linux.it.net.cn 作者:IT

  动态迁移(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)
------分隔线----------------------------