KVM虚拟机的热迁移---Live Migration
KVM虚拟机的热迁移---Live Migration:
- 服务器虚拟化技术是当前的热点,而虚拟机的“热迁移(Live Migration)”技术则是虚拟机的运行状态完整保存下来,同时可以快速的回复到原有硬件平台甚至是不同硬件平台上。恢复后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
迁移的种类:
- P2P:物理机之间的迁移
- V2P:虚拟机迁到物理机
- P2V:物理机迁到虚拟机
- V2V:虚拟机迁到虚拟机
热迁移的优势
- 首先是可伸缩性比较强,IT管理者可以在合理时间段让运行某些关键业务的服务器适当减少工作量,以便进行新操作系统,给应用程序打补丁等。而到了服务高峰期,又可以弹性的运行大负载量的运算。虚拟机迁移过程完全透明,几乎不影响使用。
- 其次,现在的数据中心都追求环保节能,工作量负载大的应用程序必然会令服务器能耗增加,有了虚拟机热迁移技术,当一台物理机服务器负载过大时,系统管理员可以将其上面的虚拟机热迁移到其他服务器,可有效降低数据中心服务器的总体能耗,再通过冷却系统将数据中心的温度保持在正常水平。
热迁移的局限
进行虚拟机的热迁移也有不少的限制。例如:
VMotion在进行迁移之前,管理软件检测目标服务器的X86架构是否与源服务器兼容。包括存储设备以及处理器,虚拟机必须放到共享的存储里,CPU的类型也要一样,不仅不能一个是英特尔,一个是AMD,甚至相同厂商不同产品线的CPU也不行,比如英特尔至强和奔腾。
KVM动态迁移,也有如下几个建议和注意事项:
- 源宿主机和目的宿主机尽量用网络共享的存储系统来保存客户机磁盘镜像。例如:NFS,ISCSI,Glusterfs等。
- 为了提高动态迁移的成功率,尽量在同类型CPU的主机上面进行动态迁移,尽管KVM动态迁移也支持从intel平台迁移到AMD平台,但,从安全性,稳定度考虑不建议这样去操作
- 64位客户机只能运行在64位宿主机之间的迁移,而32位客户机可以在32位宿主机和64位宿主机之间迁移。
- 进行动态迁移时,被迁移客户机的名称是唯一的,在目的宿主机上不能有与源宿主机被迁移客户机同名的客户机存在。
- 目的宿主机和源宿主机的软件尽可能的相同。也就是同为Vmware,kvm,xen等。
V2V迁移
- 部署NFS服务器实现Linux与Linux之间的文件共享,NFS通常运行于2049端口
由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序。
服务器端配置:
- 下载nfs和rpcbind
1 [root@localhost ~]# yum install nfs-utils rpcbind -y
- 配置nfs的文件
[root@localhost ~]# mkdir /nfsdate [root@localhost ~]# vim /etc/exports /nfsdate 192.168.127.133/24(rw)
- 重启nfs和rpcbind
1 [root@localhost ~]# systemctl restart rpcbind nfs
客户端配置:
- 下载nfs-utils
1 [root@localhost ~]# yum install nfs-utils -y
- 查看共享文件
1 [root@localhost ~]# showmount -e 192.168.127.130 2 Export list for 192.168.127.130: 3 /nfsdate 192.168.127.133/24
- 挂在服务端nfs至本地
1 [root@localhost ~]# mkdir /nfsdate 2 [root@localhost ~]# mount -t nfs 192.168.127.130:/nfsdate /nfsdate 3 [root@localhost ~]# df -h 4 文件系统 容量 已用 可用 已用% 挂载点 5 /dev/mapper/cl-root 17G 8.3G 8.8G 49% / 6 devtmpfs 478M 0 478M 0% /dev 7 tmpfs 489M 0 489M 0% /dev/shm 8 tmpfs 489M 7.1M 482M 2% /run 9 tmpfs 489M 0 489M 0% /sys/fs/cgroup 10 /dev/sda1 1014M 141M 874M 14% /boot 11 tmpfs 98M 0 98M 0% /run/user/0 12 192.168.127.130:/nfsdate 17G 10G 7.1G 59% /nfsdate
- 服务端把要迁移虚拟机的配置文件(启动文件)/etc/libvirt/qemu/备份到/root下和磁盘文件/var/lib/libvirt/images/移动到刚刚创建的共享文件/nfsdate中
- 把vm1的磁盘文件移动到共享文件中
1 [root@localhost ~]# cd /var/lib/libvirt/images/ 2 [root@localhost images]# ls 3 centos7.0.qcow2 CentOS-7-x86_64-DVD-1611.iso test.qcow2 vm1.qcom2 vm2.qcow2 4 [root@localhost images]# mv vm1.qcom2 /nfsdate
- 把vm1的配置文件备份到/root下
[root@localhost ~]# cd /etc/libvirt/qemu/ [root@localhost qemu]# ls centos7.0.xml networks test.xml vm1.xml vm2.xml [root@localhost qemu]# cp vm1.xml /root
- 删除vm1虚拟机域
1 [root@localhost qemu]# ls 2 centos7.0.xml networks test.xml vm1.xml vm2.xml 3 [root@localhost qemu]# virsh undefine vm1 4 域 vm1 已经被取消定义 5 6 [root@localhost qemu]# ls 7 centos7.0.xml networks test.xml vm2.xml
- 切换到/root下修改vm1配置文件,修改其磁盘文件路径
1 [root@localhost ~]# vim vm1.xml 2 <disk type='file' device='disk'> 3 <driver name='qemu' type='qcow2'/> 4 <source file='/nfsdate/vm1.qcom2'/> #把源路径修改为/nfsdate 5 <target dev='vda' bus='virtio'/> 6 <boot order='1'/> 7 <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> 8 </disk>
- 恢复vm1
1 [root@localhost ~]# virsh define vm1.xml 2 定义域 vm1(从 vm1.xml) 3 4 [root@localhost ~]# virsh list --all 5 Id 名称 状态 6 ---------------------------------------------------- 7 - centos7.0 关闭 8 - test 关闭 9 - vm1 关闭 10 - vm2 关闭
- 服务端和客户端都需要做域名解析
1 [root@localhost ~]# vim /etc/hosts 2 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 3 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 4 192.168.127.130 yun1 5 192.168.127.133 yun2
- 客户端查看共享文件
[root@localhost ~]# cd /nfsdate
[root@localhost nfsdate]# ls
vm1.qcom2
在宿主机中进行验证
- 首先在宿主机中创建连接,是两台宿主机能共享。
- 建议修改两台宿主机的主机名,避免两台主机名相同。防止产生一些不必要的错误。
hostnamectl set-hostname 主机名 exit
- 点击连接,然后分别输入yes、账户密码,连接创建完成
- 因为是热迁移,所以要把迁移的虚拟机开启;然后点击迁移