您好,欢迎来到站长目录(28sn.com)!


kvm冷热状态迁移

来源:网络整理 浏览:278次 时间:2020-09-16
KVM迁移

静态迁移(冷迁移)
对于静态迁移,你可以在宿主机上保存一个完成的客户机镜像快照,然后在宿主机中关闭或者暂停该客户机,然后将客户机的镜像文件复制到另一台宿主机中,使用在源主机中启动该客户机时的命令来启动复制过来的镜像。

动态迁移(热迁移)
如果宿主机和目的宿主机共享存储系统,则只需要通过网络发送客户机的vCPU执行状态,内存中的内容,虚机设备的状态到目的主机上。共享存系统指的时源和目的虚机的镜像文件目录是在一个共享的存储上的。

在基于共享存储系统时,KVM动态迁移的具体过程为:

  • 1、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。
  • 2、QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内存页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容。
  • 3、QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期(默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。
  • 4、至此,KVM 的动态迁移操作就完成了。迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。

    注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。

迁移注意事项:
1、最好迁移的服务器cpu品牌一样
2、64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机
3、宿主机中的虚拟机名字不能冲突
4、目的宿主机和源宿主机软件配置尽可能的相同,如 有相同的桥接网卡,资源池等。
5、两台迁移的主机 cat /proc/cpuinfo |grep nx 的设置是相同的.

一,静态迁移

环境描述:

主机名IP地址操作系统kvm01172.16.1.30centos7kvm02172.16.1.40centos7

1,准备工作
1)在kvm01和kvm02主机上安装kvm

环境要求:
1、如果是物理服务器,需要在BIOS中打开虚拟化功能(Virtualization Technology),一般的服务器默认是打开这个功能的。
2、如果是用VMware Workstation做实验,建立的虚拟机的CPU要勾选虚拟化功能,这样虚拟机才会支持KVM虚拟化

#验证cpu是否支持虚拟化:
kvm冷热状态迁移

#安装虚拟化软件:[root@kvm01 ~]# yum -y install qemu-kvm qemu-kvm-tools qemu-img libvirt virt-install virt-manager  bridge-utils

各工具包的作用:

qemu-kvm  //KVM核心模块qemu-kvm-tools //KVM调试工具,可选择性安装qemu-img  //创建,转换和修改镜像,能处理被qemu支持的所有镜像格式libvirt //管理虚拟机的工具包virt-install  //libvirt库构建新虚拟机的命令行工具virt-manager //图形化界面管理虚拟机 bridge-utils //配置linux以太网桥

#如果是最小化安装,则还需要安装GNOME桌面环境 yum -y groupinstall "GNOME 桌面" .

 #启动libvirtd工具: [root@kvm01 ~]# systemctl start libvirtd[root@kvm01 ~]# systemctl status libvirtd

kvm冷热状态迁移
kvm02主机操作与上边相同。

2)创建一个虚拟机(那就创建kvm01主机上)

#创建存放磁盘文件和centos镜像的目录:[root@kvm01 ~]# mkdir /kvm-vm[root@kvm01 ~]# mkdir /iso[root@kvm01 ~]# ls /iso/CentOS-7-x86_64-DVD-1708.iso    #上传centos镜像

#kvm命令行安装:

[root@kvm01 ~]# virt-install --os-type=linux --os-variant centos7.0 --name web01 --ram 1024 --vcpus 1 --disk /kvm-vm/web01.qcow2,format=qcow2,size=10 --location /iso/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsoleStarting install...Retrieving file .treeinfo...                                                       |  354 B  00:00:00     Retrieving file vmlinuz...                                                         | 5.6 MB  00:00:00     Retrieving file initrd.img...                                                      |  46 MB  00:00:00     Allocating 'web01.qcow2'                                                           |  10 GB  00:00:00     Domain installation still in progress. You can reconnect to the console to complete the installation process.

参数解释:

通过virt-install命令创建新虚拟机并进行安装 --os-type= linux  #系统类型为linux --os-variant=  #指定操作系统版本    --name  #指定虚拟机名称 --ram   #以MB为单位为客户端事件分配的内存 --vcpus  #配置虚拟机的虚拟CPU(vcpu)数量 --disk   #指定虚拟机的存储位置,磁盘文件的格式及大小(单位GB) --location  #选择安装源 --network   #配置客户网络接口 --graphics #配置虚拟机显示设置(vnc) listen=0.0.0.0  #表示所有网段都可以连接该虚拟机 --noautoconsole #不管是否部署成功,执行完都会退出,如果不加的话,将会一直卡在终端

安装成功后,在命令行输入virt-manager打开kvm图形化管理界面,如下所示:
kvm冷热状态迁移
点击进入安装centos系统。安装完成后,查看虚拟机的一个状态:

[root@kvm01 ~]# virsh list --all Id    Name                           State----------------------------------------------------  -     web01                          shut off     #安装完成后,默认保持关闭状态

配置kvm虚拟机为桥接网络(使其能够访问外网):

#关闭宿主机的网络控制台:[root@kvm01 ~]# systemctl stop NetworkManager#在宿主机上创建br0(桥接网卡):[root@kvm01 ~]# virsh iface-bridge ens33 br0Created bridge br0 with attached device ens33Bridge interface br0 started#修改实例的配置文件:[root@kvm01 ~]# virsh edit web01      69     <interface type='bridge'>    #修改网卡类型为桥接     70       <mac address='52:54:00:dc:0f:d0'/>     71       <source bridge='br0'/>   #指定桥接网卡#启动实例:[root@kvm01 ~]# virsh start web01 Domain web01 started[root@kvm01 ~]# virsh list  Id    Name                           State---------------------------------------------------- 2     web01                          running

配置web01主机的网络配置信息,并测试ping通外网:
kvm冷热状态迁移

2,静态迁移
静态迁移主要分为两个步骤:
1)拷贝镜像文件和虚拟机配置文件
2)重新定义此虚拟机

1)关闭或挂起虚拟机:[root@kvm01 ~]# virsh shutdown web01 Domain web01 is being shutdown[root@kvm01 ~]# virsh list  Id    Name                           State----------------------------------------------------

2)拷贝镜像文件和配置文件至kvm02主机:
#在拷贝之前先准备好kvm02主机上的环境,省得待会再去修改配置文件对应的参数(麻烦)。

[root@kvm02 ~]# mkdir /kvm-vm   //创建对应的镜像文件目录[root@kvm02 ~]# systemctl stop NetworkManager  [root@kvm02 ~]# virsh iface-bridge ens33 br0   //创建桥接网卡Created bridge br0 with attached device ens33Bridge interface br0 started
#拷贝:[root@kvm01 ~]# scp /kvm-vm/web01.qcow2 172.16.1.40:/kvm-vm/[root@kvm01 ~]# scp /etc/libvirt/qemu/web01.xml  172.16.1.40:/etc/libvirt/qemu/

3)在kvm02主机上定义该虚拟机:

[root@kvm02 ~]# virsh define /etc/libvirt/qemu/web01.xml Domain web01 defined from /etc/libvirt/qemu/web01.xml#启动虚拟机:[root@kvm02 ~]# virsh start web01 Domain web01 started[root@kvm02 ~]# virsh list --all Id    Name                           State---------------------------------------------------- 1     web01                          running[root@kvm02 ~]# 

成功完成静迁移。。。

二,动态迁移(热迁移)

动态迁移主要分为5个步骤:
1,创建共享存储
2,两台机器挂载共享存储(手动挂载;使用资源池)
3,启动动态迁移
4,创建迁移后的虚拟机配置文件
5,重新定义虚拟机

环境描述:

主机名IP地址操作系统nfs172.16.1. 10centos7kvm01172.16.1.30centos7kvm02172.16.1.40centos7
1)第一步,关闭所有主机的selinux(一定要关)及防火墙;[root@kvm01 ~]# vim /etc/selinux/configSELINUX=disabled[root@kvm01 ~]# reboot  #重启生效[root@kvm01 ~]# systemctl stop firewalld     

注意:不要使用setenforce 0(临时关闭),否则迁移时还会报错。

2)部署nfs(在nfs服务器上)

[root@nfs ~]# yum -y install nfs-utils[root@nfs ~]# vim /etc/exports/nfs-share 172.16.1.0/24(rw,sync,no_root_squash)[root@nfs ~]# mkdir /nfs-share[root@nfs ~]# systemctl start rpcbind[root@nfs ~]# systemctl start nfs-server[root@nfs ~]# systemctl enable nfs-server

#kvm01和kvm02测试是否能够进行远程挂载

[root@kvm01 ~]# showmount -e 172.16.1.10Export list for 172.16.1.10:/nfs-share 172.16.1.0/24[root@kvm02 ~]# showmount -e 172.16.1.10Export list for 172.16.1.10:/nfs-share 172.16.1.0/24

3)设置主机名,/etc/hosts 互相解析,以及两台kvm主机配置免密登录

[root@kvm01 ~]# vim /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.1.10 nfs172.16.1.30 kvm01172.16.1.40 kvm02
#拷贝给其他主机:[root@kvm01 ~]# for i in 10 40; do scp /etc/hosts 172.16.1.$i:/etc/; done
#配置免密登录:[root@kvm01 ~]# ssh-keygen -t rsa[root@kvm01 ~]# ssh-copy-id kvm02[root@kvm01 ~]# ssh kvm02 hostnamekvm02

4)两个kvm主机进行挂载共享存储:

#需要将kvm01上的镜像文件,拷贝至nfs的共享目录中:[root@kvm01 ~]# scp /kvm-vm/web01.qcow2  nfs:/nfs-share[root@nfs ~]# ls /nfs-share/web01.qcow2
kvm01:  [root@kvm01 ~]# vim /etc/fstab    //添加以下内容:172.16.1.10:/nfs-share          /kvm-vm                 nfs     defaults        0 0[root@kvm01 ~]# mount -a     //重新加载[root@kvm01 ~]# ls /kvm-vm/web01.qcow2kvm02:[root@kvm02 ~]# mkdir /kvm-vm[root@kvm02 ~]# vim /etc/fstab172.16.1.10:/nfs-share          /kvm-vm                 nfs     defaults        0 0[root@kvm02 ~]# mount -a[root@kvm02 ~]# ls /kvm-vm/web01.qcow2#创建桥接网络:[root@kvm02 ~]# systemctl stop NetworkManager[root@kvm02 ~]# virsh iface-bridge ens33 br0 Created bridge br0 with attached device ens33Bridge interface br0 started

4)进行动态迁移:
#在动态迁移之前,模拟web01虚拟机正常工作中:
kvm冷热状态迁移

kvm提供了迁移工具migrate:[root@kvm01 ~]# virsh migrate --live --unsafe --verbose web01 qemu+ssh://172.16.1.40/systemMigration: [100 %]     #迁移成功

参数解释:

--live #热迁移
--unsafe #即使不安全也要强制迁移
--verbose #显示迁移过程
web01则表示当前的域名(虚拟机),后边则指向目标主机的地址。

#迁移成功后,在kvm02主机上查看虚拟机状态:

[root@kvm02 ~]# virsh list  Id    Name                           State---------------------------------------------------- 2     web01                          running

可以看到虚拟机的状态为运行状态。

#登录虚拟机,查看工作状态是否不间断:
kvm冷热状态迁移

可以看到通过热迁移,虚拟机会一直保持工作,并不会丢失数据,并且QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上。至此,迁移目标已经实现了。

在生产环境中,接下来我们可以选择一个合适的时间来重新定义虚拟机:

#将虚拟机的配置文件拷贝至新机上(或自己创建配置文件):[root@kvm01 ~]# scp /etc/libvirt/qemu/web01.xml kvm02:/etc/libvirt/qemu/web01.xml                                                               100% 4047     4.0KB/s   00:00   [root@kvm02 ~]# ls /etc/libvirt/qemu  #在web02上查看networks  web01.xml
#重新定义虚拟机:[root@kvm02 ~]# virsh shutdown web01 Domain web01 is being shutdown[root@kvm02 ~]# virsh define /etc/libvirt/qemu/web01.xml Domain web01 defined from /etc/libvirt/qemu/web01.xml[root@kvm02 ~]# virsh start web01   #启动虚拟机Domain web01 started[root@kvm02 ~]# virsh list --all Id    Name                           State---------------------------------------------------- 3     web01                          running    [root@kvm02 ~]# 

至此,热迁移工作结束。。

常见错误:

1、迁移时遇到的错误描述:# virsh migrate centos --live qemu+ssh://192.168.30.132/systemerror: unable to connect to server at 'KVM-2:49152': No route to host    原因:你的免密登录没有成功解决方法:重新做免密登录即可2、迁移时的存储错误:# virsh migrate centos --live qemu+ssh://192.168.30.132/system error: Failed to open file '/mnt/CentOS6.8.qcow2': Input/output error  原因:存储没有挂载成功  解决方法:mount -o remount /dev/sdb /mnt3、迁移时FQDN错误:# virsh migrate centos --live qemu+ssh://192.168.30.132/system error: internal error hostname on destination resolved to localhost, but migration requires an FQDN  原因:两台宿主机无法解析主机名  解决方法:重新配置主机名和ip的解析4、迁移时语法错误:# virsh migrate centos --live qemu+ssh://192.168.30.132:/systemerror: internal error Unable to parse URI qemu+ssh://192.168.30.132:/system  原因:qemu+ssh语法写错了  解决方法:正确的应该是:virsh migrate centos --live qemu+ssh://192.168.30.132/system

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号