• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

技术栈 lixian 4年前 (2020-07-31) 1562次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、冷迁移和热迁移

1.KVM虚拟机的迁移有两种方法:

1、静态迁移(冷迁移):对于冷迁移,就是在虚拟机关闭状态下,将虚拟机的磁盘文件及.xml配置文件(这两个文件组成了一个虚拟机)复制到要迁移到的目标主机上,然后在目标主机上使用“virsh define *.xml”命令重新定义虚拟机即可。
2、动态迁移(热迁移):对于热迁移,比较常用,通常是这台服务器上正在跑着一些业务,而这些业务又不允许中断,那么就需要使用热迁移了,这篇博文将详细写出热迁移的步骤。

2.冷迁移

通常我们存放虚拟机磁盘的目录都是挂在的一个nfs文件系统的磁盘,而这个磁盘通常是LVM文件系统。所以需要进行冷迁移时,只要在目标主机上挂载这个nfs文件系统,就可以看到要迁移的那个虚拟机的磁盘文件,通常以.qcow2或.raw结尾的,然后,只需将虚拟机的.xml配置文件发送到目标服务器上,然后重新定义一下即可通过“virsh list –all”命令查看到迁移过来的虚拟机。

3.热迁移

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

在基于 共享存储系统 时,KVM 动态迁移的具体过程为:
1、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。
2、QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容。
3、QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期(默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。
4、至此,KVM 的动态迁移操作就完成了。迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。
Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

4.迁移的注意事项

迁移前目标服务器的要求如下:

(1)最好迁移的服务器cpu品牌一样;
(2)64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机;
(3)宿主机中的虚拟机名字不能冲突;
(4)目的宿主机和源宿主机软件配置尽可能的相同,如 有相同的桥接网卡,资源池等;
(5)两台迁移的主机 cat /proc/cpuinfo |grep nx 的设置是相同的NX,全名为“No eXecute”,即“禁止运行”,是应用在CPU的一种技术,用作把存储器区域分隔为只供存储处理器指令集,或只供数据使用。任何使用NX技术的存储器,代表仅供数据使用,因此处理器的指令集并不能在这些区域存储。这种技术可防止大多数的缓冲溢出,即一些恶意程序,把自身的恶意指令集放在其他程序的数据存储区并运行,从而把整台计算机控制。

二、冷迁移实战

1.准备环境

#IP地址:10.0.0.110
[root@kvm-test /opt]# yum install libvirt  virt-install qemu-kvm -y
[root@kvm-test /opt]# systemctl restart libvirtd.service
[root@kvm-test /opt]# systemctl enable libvirtd.service
[root@kvm-test /opt]# virsh   list --all
 Id    Name                           State
----------------------------------------------------

2.关闭被迁移的虚拟机

​[root@kvm /opt]# virsh shutdown web01 
Domain web01 is being shutdown

[root@kvm /opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     web01                          shut off

3.导出配置信息

[root@kvm /opt]# virsh dumpxml web01 > web01.xml

4.将磁盘格式转换为qcow2

[root@kvm /opt]# qemu-img  convert  -f  raw  -O qcow2  web01.raw  web01.qcow2
[root@kvm /opt]# ll
-rw-r--r-- 1 root root  1737818112 Jul 31 13:06 web01.qcow2

5.将磁盘文件和配置信息传送到另一台虚拟机

[root@kvm /opt]# scp -rp /opt/web01.qcow2 root@10.0.0.110:/opt
root@10.0.0.110's password: 
web01.qcow2                                                       100% 1657MB  39.7MB/s   00:41    
[root@kvm /opt]# scp -rp /opt/web01.xml  root@10.0.0.110:/opt
root@10.0.0.110's password: 
web01.xml

6.导入配置

[root@kvm-test /opt]# virsh define /opt/web01.xml 
Domain web01 defined from /opt/web01.xml

[root@kvm-test /opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     web01                          shut off

7.启动并连接测试

[root@kvm-test /opt]# virsh start web01 
Domain web01 started

[root@kvm-test /opt]# virsh console web01 
Connected to domain web01
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

kvm login: root
Password: 
Last login: Thu Jul 30 21:55:35 on ttyS0
[root@kvm ~]# ls /
bin   data  etc   lib	 media	opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt	proc  run   srv   tmp  var

[c:\~]$ ssh 10.0.0.101

Connecting to 10.0.0.101:22...
Connection established.
To escape to local shell, press Ctrl+Alt+].

Last failed login: Fri Jul 31 01:18:09 EDT 2020 from 10.0.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Jul 31 01:17:33 2020
[root@kvm ~]# 

三、热迁移实战

1.环境准备

实现kvm虚拟机热迁移核心:共享存储,在这里使用的是NFS共享存储。
10.0.0.100==kvm01
10.0.0.110==kvm02
10.0.0.120==nfs服务器

2.nfs服务器部署

[root@nfs ~]# yum  install -y nfs-utils rpcbind
[root@nfs ~]# vim /etc/exports
/opt 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)
[root@nfs ~]# systemctl  restart rpcbind
[root@nfs ~]# systemctl  restart nfs

3.kvm01部署

[root@kvm /opt]# yum  install -y nfs-utils
[root@kvm /opt]# showmount -e 10.0.0.120
Export list for 10.0.0.120:
/opt 10.0.0.0/24
[root@kvm /opt]# 
[root@kvm /opt]# mkdir /data
[root@kvm /opt]# mount -t nfs 10.0.0.120:/opt /data/
[root@kvm /opt]# df -h
[root@kvm /opt]# cd /data/
[root@kvm /data]# cp -a /opt/web01.qcow2 ./
[root@kvm /data]# ll
total 1479880
-rw-r--r-- 1 qemu qemu 1737818112 Jul 31 14:01 web01.qcow2
[root@kvm /data]# mv web01.qcow2 web02.qcow2
[root@kvm /data]# virsh dumpxml web01 > /opt/web02.xml

#修改配置文件
[root@kvm /data]# vim /opt/web02.xml 
<name>web02</name>
​    删除uuid和mac行
      <driver name='qemu' type='qcow2'/>
      <source file='/kvm_disk/web04.qcow2'/>
​
      <driver name='qemu' type='qcow2'/>
​
    <interface type='bridge'>
​
      <source bridge='br0'/>
​
#导入配置文件
[root@kvm /data]# virsh define /opt/web02.xml 
Domain web02 defined from /opt/web02.xml

#启动虚拟机
[root@kvm /data]# virsh start web02 
Domain web02 started

4.kvm02部署

[root@kvm-test /opt]# yum  install -y nfs-utils
[root@kvm-test /opt]# showmount -e 10.0.0.120
Export list for 10.0.0.120:
/opt 10.0.0.0/24
[root@kvm-test /opt]# mkdir /data
[root@kvm-test /opt]# mount -t nfs 10.0.0.120:/opt/ /data
[root@kvm-test /opt]# vim /etc/hosts
10.0.0.100 kvm

5.开始热迁移

#配置hosts解析
[root@kvm /data]# vim /etc/hosts
10.0.0.110  kvm-test

#热迁移命令
[root@kvm /data]# virsh  migrate  --live --verbose  web02 qemu+ssh://10.0.0.110/system  --unsafe
root@10.0.0.110's password: 
Migration: [100 %]

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

四、virt-manager管理工具热迁移虚拟机

#1.安装图形界面
​[root@kvm01 ~]# yum  groupinstall  -y  "GNOME  Desktop"
​
#2.安装vnc的服务端
​[root@kvm01 ~]# yum install -y tigervnc-server
​
#3.给vnc设置个密码
​[root@kvm01 ~]# vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
​
#4.开启vnc
[root@kvm01 ~]# vncserver  :1
xauth:  file /root/.Xauthority does not exist
​
New 'kvm01:1 (root)' desktop is kvm01:1
​
Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/kvm01:1.log
​
[root@kvm01 ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      16460/Xvnc                    
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      16460/Xvnc                                
tcp6       0      0 :::5901                 :::*                    LISTEN      16460/Xvnc                   
tcp6       0      0 :::6001                 :::*                    LISTEN      16460/Xvnc          

#安装管理工具
[root@kvm01 ~]# yum  install -y  virt-manager

#安装ssh插件
[root@kvm01 ~]# yum install -y openssh-askpass

1.连接源宿主机

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

2.进入终端

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

3.添加connection

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

4.kvm02的服务器密码

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

5.开始热迁移

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】

Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Kvm虚拟机冷迁移和热迁移【显哥出品,必为精品】
喜欢 (0)

您必须 登录 才能发表评论!