kvm热迁移
一、迁移简介
迁移:
系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。
最终我们迁移的目的就是:
简化系统维护管理
高系统负载均衡
增强系统错误容忍度
优化系统电源管理
二、热迁移 ---Live Migration
KVM 虚拟机的热迁移 ---Live Migration:
服务器虚拟化技术是当前的热点,而虚拟机的“热迁移( Live Migration )”技术则是虚拟化技术当中的热点。
热迁移(又叫动态迁移、实时迁移),即虚拟机保存( save ) / 恢复 (restore) :将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
迁移的种类:
P2P :物理机之间的迁移
V2P :虚拟机迁到物理机
P2V :物理机迁到虚拟机
V2V :虚拟机迁到虚拟机
三、热迁移的应用
1. 虚拟机的热迁移技术最初是被用于双机容错或者负载均衡:当宿主机出现软硬件故障导致服务异常时,虚拟机可漂移到另外主机上,或者在集群中依据工作负载量的大小,选择更换宿主机与否来保证自身良好的服务提供性。
2. 系统硬件维护:当前很多操作系统都能够稳定支持 7×24 运行,但是硬件却需要定期的进行维护。如果使用虚拟机的动态迁移技术,将虚拟机从需要维护的物理机器迁移到另外一主器,等维护完成后,在将其迁回到原来的物理机器。所有的系统服务和应用程序在迁移 & 恢复后仍旧正常运行,用户不会察觉到由于硬件维护造成的中断。最终实现了我们服务不受硬件维护干扰的 7*24 小时的工作愿望。
3. 数据库备份:对于一些大型、关键的数据库应用,备份是一项重要但复杂的工作。虚拟机的保存/ 恢复可以将数据库运行在虚拟机中,如需备份就保存虚拟机,这样数据库中的所有数据、状态都做了备份。如果数据库崩溃了,就可以通过恢复虚拟机来恢复整个数据库。
4. 环境重现:进行性能测试或程序调试时,都需要重现当时复杂庞大并且与实时完全一致的网络环境 , 不仅仅是重启、配置软件,而且常常需要一定的运行时间。我们可以将各服务安装到独立的各个虚拟机,然后利用各个独立虚拟机部署我们所需的工作环境,可以大大缩短环境重现时间。
5. 计算机共享: 在一些公共场合用户需要共享计算机,但是由于不同的系统配置和软件需要花费大量的时间来配置和恢复。这时使用虚拟机的保存 /恢复可以很好地解决这个问题。或者也可以,在物理机上运行多个逻辑虚拟机帮助我们分配给每一个需要者一个独立,安全,稳定的环境。当因为宿主机出现问题影响虚拟机使用时,我们可以让该虚拟机漂移到其他宿主机以此来保持正常工作。
四、热迁移的优势
1. 首先是可伸缩性比较强, IT 管理者可以在合理时间段让运行某些关键业务的服务器适当减少工作量,以便进行更新操作系统,给应用程序打补丁等。而到了服务高峰期,又可以弹性地进行大负载量的运算。虚拟机迁移过程完全透明,几乎不影响使用。
2. 其次,现在的数据中心都追求环保节能, 工作量负载大的应用程序必然会令服务器能耗增加,有了虚拟机热迁移技术,当一台物理服务器负载过大时,系统管理员可以将其上面的虚拟机迁移到其他服务器,可有效减低数据中心服务器的总体能耗,再通过冷却系统将数据中心的温度保持在正常水平。
五、热迁移的局限
进行虚拟机的热迁移也有不少的限制。例如,
VMotion 在进行迁移之前,管理软件会检测目标服务器的 X86 架构是否与原服务器兼容。包括存储设备以及处理器,虚拟机必须放到共享的存储里, CPU 的类型也要一样,不仅不能一个是英特尔,一个是 AMD ,甚至相同厂商不同产品线的CPU 也不行,比如英特尔至强和奔腾
六、衡量虚拟机迁移的效率
1. 整体迁移时间:从源主机中迁移操作开始到目的主机上客户机服务处于不可用状态的时间,此时源主机上客户机已经暂停服务,目的主机上的客户机还未恢复服务。
2. 服务器停机时间:在迁移过程中,源主机和目的主机上的客户机都处于不可用状态的时间,此时源主机上客户机已暂停,目的目的主机上客户还未恢
复服务。
3. 对服务的性能影响:不仅包括迁移后的客户机中应用程序的性能与迁移前相对比是否有所降低,还包括迁移后对目的主机上的其他服务的性能影响。
Kvm 动态迁移,也有如下几个建议和注意事项:
1. 源宿主机和目的宿主机直接尽量用网络共享的存储系统来保存客户机磁盘镜像。例如 NFS , ISCSI , Glusterfs 等。
2. 为了提高动态迁移的成功率,尽量在同类型 cpu的主机上面进行动态迁移,尽管 kvm 动态迁移也支持从 Intel 平台迁移到 amd 平台。 但,从安全性,稳定度考虑不建议这样去操作!!!
3. 64 位的客户机只能运行在 64 宿主机之间的迁移,而 32 位客户机可以在 32 宿主机和 64 位宿主机之间迁移。
4. 在进行动态迁移时,被迁移客户机的名称是唯一的,在目的宿主机上不能有与源宿主机被迁移客户机同名的客户机存在。
5. 目的宿主机和源宿主机的软件尽可能的相同。也就是同为 Vmware , KVM , Xen 等。
七、v2v迁移实践
安装前准备工作:
迁移需要识别 source&target 主机的主机名所以需要我们搭建 DNS Ser 或者将 IP& 域名 & 主机名的对应条目写入到 hosts 文件中去。
实验环境:
Source Ser ---- VM
Target Ser
NFS Server 共享存储服务器
实验步骤:
第一步:下载nfs客户端配置
[root@zxw6 /]# yum install nfs-utils rpcbind -y
[root@zxw6 /]# mkdir /centos
[root@zxw6 /]# vim /etc/exports
/centos *(rw)
第二步:重启并查看
[root@zxw6 /]# systemctl restart nfs rpcbind
[root@zxw6 /]# showmount -e 192.168.126.6
Export list for 192.168.126.6:
/centos *
第三步:给予权限
[root@zxw6 /]# chown -R nfsnobody: /centos
[root@zxw6 centos]# chmod -R 777 /centos/
[root@zxw6 centos]# ls
zxw.qcow2 zxw.xml
第四步:移动光盘到共享目录
[root@zxw6 /]# mv /var/lib/libvirt/images/zxw.qcow2 /centos/
第五步:修改配置文件
[root@zxw6 /]# virsh edit zxw
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<source file='/centos/zxw.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
</disk>
第六步:移动配置文件到共享目录
[root@zxw6 centos]# mv /etc/libvirt/qemu/zxw.xml /centos/
第七步:另一个虚拟机查看共享
[root@zxw66 ~]# showmount -e 192.168.126.6
Export list for 192.168.126.6:
/centos *
[root@zxw66
[root@zxw66 ~]# mkdir /centos
第八步:挂载共享目录到本地文件
[root@zxw66 ~]# mount -t nfs 192.168.126.6:/centos /centos
[root@zxw66 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 26G 21G 5.6G 79% /
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 9.0M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda1 1014M 141M 874M 14% /boot
/dev/sr0 4.1G 4.1G 0 100% /mnt
tmpfs 302M 0 302M 0% /run/user/0
192.168.126.6:/centos 26G 14G 13G 54% /centos
第八步:俩个主机都配置主机ip和主机名字
[root@zxw66 centos]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.126.6 zxw6
192.168.126.66 zxw66
第九步:测试
[root@zxw66 centos]# ping zxw6
PING zxw6 (192.168.126.6) 56(84) bytes of data.
64 bytes from zxw6 (192.168.126.6): icmp_seq=1 ttl=64 time=0.411 ms
64 bytes from zxw6 (192.168.126.6): icmp_seq=2 ttl=64 time=0.411 ms
[root@zxw6 centos]# ping zxw66
PING zxw66 (192.168.126.66) 56(84) bytes of data.
64 bytes from zxw66 (192.168.126.66): icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from zxw66 (192.168.126.66): icmp_seq=2 ttl=64 time=1.25 ms
激活图形化
[root@zxw66 centos]# startx
xauth: file /root/.serverauth.3648 does not exist