天天看点

kvm冷热迁移

nfs配置文件写的

vi /etc/exports
/public	*(rw,sycn,no_root_quash)
           

kvm冷迁移

先将原主机需要迁移的虚拟机关机,然后在目标主机创建与原主机磁盘文件相同的目录,然后复制磁盘文件和xml文件放入目标主机与原主机目录相同的目录中

然后倒入xml虚拟机

define xml(导入的xml文件名)
           

然后就可以开机拉!

kvm热迁移

原理

​ 如果源宿主机和目的宿主机共享存储系统,则只需要通过网络发送客户机的 vCPU 执行状 态、内存中的内容、虚机设备的状态到目的主机上。否则,还需要将客户机的磁盘存储发到目的主 机上。共享存储系统指的是源和目的虚机的镜像文件目录是在一个共享的存储上的。

动态迁移具体过程:

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

具体实施步骤

环境准备:

源主机 192.168.1.100

nfs服务器 192.168.1.101

目标主机 192.168.1.102

1.统一关闭防火墙,selinux,并设置主机名 分别为test1,nfs,test2

2.源主机与目标主机ssh秘钥对相互配对

ssh-key -t rsa 
ssh-copy-id [email protected]/100
           

3.修改主机名并主机名解析

vi /etc/hosts
192.168.1.100 test1
192.168.1.102 test2
scp /etc/hosts [email protected]:/etc/hosts
           

4.搭建nfs服务器

yum -y install rpcbind nfs-utils
mkdir /nfs
vi /etc/exports
/nfs *(rw,sync,no_root_squash)
systemctl start rpcbind
systemctl start nfs

           

5.源主机创建池,磁盘

先试下能否挂载
virsh pool-define-as nfspool --type netfs --source-host 192.168.1.101 --source-path /nfs --target /mykvm/nfspool/
virsh pool-build nfspool 
virsh pool-start nfspool
virsh pool-autostart nfspool
virsh vol-create-as nfspool test01 5G --format qcow2
           

6.创建虚拟机,搭建一服务

virt-install -n test01 -r 512 --vcpus 1 -l /mykvm/iso/centos7.iso --disk /mykvm/nfspool/test01 --nographics -x 'console=ttyS0'
           

7.搭建网桥

cp ifcfg-ens33 ifcfg-virbr1

vi ifcfg-virbr1
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
GATEWAY=192.168.1.254
DNS1=8.8.8.8
NAME=virbr5
DEVICE=virbr5
ONBOOT=yes

vi ifcfg-ens33
TYPE=Ethernet
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=virbr5
重启网卡即可
           

8.搭建一个服务,以httpd服务为例

为虚拟机配置网桥
virsh attach-interface test1 --type bridge --sourve virbr1 --current
yum -y install httpd
echo "hello" > /var/www/html/index.html
systemctl start httpd
           

目前为止环境搭建完成,然后热迁移开始

9.为目标主机配置网桥

scp /etc/sysconfig/network-scrips/ifcfg-virbr1 root@test2:/etc/sysconfig/network-scrips/ifcfg-virbr1 
改一下地址不能冲突,再去修改一下ifcfg-ens33

           
mkdir -p /mykvm/nfspool
virsh pool-define-as nfspool --type netfs --source-host 192.168.1.101 --source-path /nfs --target /mykvm/nfspool/
virsh pool-build nfspool 
virsh pool-start nfspool
virsh pool-autostart nfspool
           
virsh migrate test1 qemu+ssh://192.168.1.102/system --live --unsafe --verbose