kvm 热迁移
动态迁移(Live Migration):也叫在线迁移(Online Migration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。
与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。
动态迁移需要将原有的虚拟机镜像放在采用SAN(storage area network)或NAS(network-attached storage)之类的集中式共享外存设备,这样迁移的时候,不是迁移整个硬盘镜像,而是迁移内存的信息,所以迁移起来,速度比较快,停顿时间少。
动态迁移实际上是把虚拟机的配置封装在一个文件中,然后通过高速网路,把虚拟机配置和内存运行状态从一台物理机迅速传到另外一台物理机上,期间虚拟机一直保持运行状态。现有技术条件下,大多虚拟机软件如VMware、Hyper-V、Xen进行动态迁移都需要共享存储的支持。典型的共享存储包括NFS和SMB/CIFS协议的网路文件系统,或者通过ISCSI连接到SAN网络。选用哪一种网络文件系统,需要根据具体情况而定。本文的实验采用了NFS文件系统作为源主机和目的主机之间的共享存储。
####pre


------------+---------------------------+----------------------------------+
            |                           |                                  |
        eth0|192.168.200.51         eth0|192.168.200.52                    | 192.168.2.20 
+-----------+-----------+   +-----------+-----------+           +----------+----------+
|    [ kvm--host1 ]     |   |    [ kvm——host2 ]     |           |      【nfs-server】 |
|                       |   |                       |           |                     |
|      cetntos7         |   |                       |           |                     |
|                       |   |       centos6         |           |                     |
+-----------------------+   +-----------------------+           +---------------------+







#######1.  nfs server 安装

root@ubuntu-RH2288-V3:~# cat /etc/exports 
# /etc/exports: the access control list for filesystems which may be exported
#		to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/nfs 192.168.200.0/24(rw,sync,no_root_squash,no_subtree_check)
root@ubuntu-RH2288-V3:~# exportfs -rv
exporting 192.168.200.0/24:/nfs

#######2. host1,host2,挂载

[root@gpu51 ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  126G     0  126G   0% /dev
tmpfs                   tmpfs     126G     0  126G   0% /dev/shm
tmpfs                   tmpfs     126G   12M  126G   1% /run
tmpfs                   tmpfs     126G     0  126G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       700G  6.1G  694G   1% /
/dev/sda1               xfs      1014M  187M  828M  19% /boot
/dev/mapper/centos-home xfs        50G   40M   50G   1% /home
tmpfs                   tmpfs      26G   52K   26G   1% /run/user/1000
tmpfs                   tmpfs      26G   24K   26G   1% /run/user/0
192.168.2.20:/nfs       nfs4      1.7T   79G  1.5T   6% /nfs
[root@gpu51 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat Aug 29 04:26:27 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=76e80ab5-93c3-44f1-9cfa-e2491bb46338 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

192.168.2.20:/nfs /nfs nfs defaults,_netdev 0 0
#####host1 创建一台centos7 虚拟机在线迁移至 host2 ,使用virt-manager

step1.

kvm只迁移内存数据 kvm在线迁移_centos


step2.

#####host1,host2上 添加相同的共享存储

kvm只迁移内存数据 kvm在线迁移_请求超时_02

step3.

kvm只迁移内存数据 kvm在线迁移_共享存储_03


step4

kvm只迁移内存数据 kvm在线迁移_centos_04

step5

kvm只迁移内存数据 kvm在线迁移_kvm只迁移内存数据_05


step6.

####在host1 新增host2的链接

kvm只迁移内存数据 kvm在线迁移_kvm只迁移内存数据_06


step7

kvm只迁移内存数据 kvm在线迁移_请求超时_07

step8

####迁移

kvm只迁移内存数据 kvm在线迁移_请求超时_08


kvm只迁移内存数据 kvm在线迁移_请求超时_09


kvm只迁移内存数据 kvm在线迁移_共享存储_10


#####迁移中,会出现短暂的丢包

==================================

#######  命令行迁移, centos6 从 host2 迁移至host1

[root@gpu52 ~]# qemu-img create -f qcow2 -o preallocation=metadata /nfs/centos6.qcow2 20G
Formatting '/nfs/centos6.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off 

[root@gpu52 ~]# qemu-img info /nfs/centos6.qcow2 
image: /nfs/centos6.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 3.3M
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false


[root@gpu52 nfs]# virt-install --name centos6 -r 2048 --vcpus=1 --os-type=linux --accelerate -c /root/OS/CentOS-6.8-x86_64-minimal.iso  --disk path=/nfs/centos6.8.img,size=20,format=qcow2,bus=virtio --bridge=br0,model=virtio --vnc --vncport=5991 --vnclisten=0.0.0.0 --force 
WARNING  No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.

Starting install...

(virt-viewer:35090): Gtk-WARNING **: 20:49:56.317: cannot open display: localhost:10.0
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
[root@gpu52 nfs]# 
[root@gpu52 nfs]# 
[root@gpu52 nfs]# virsh list
 Id    Name                           State
----------------------------------------------------
 5     centos7.8                      running
 7     centos6                        running

kvm只迁移内存数据 kvm在线迁移_请求超时_11

[D:\~]$ ssh root@192.168.200.156


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

WARNING! The remote SSH server rejected X11 forwarding request.
[root@centos6 ~]# 
[root@centos6 ~]# 
[root@centos6 ~]# 
[root@centos6 ~]# 
[root@centos6 ~]# ping -c 2 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=71 time=32.1 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=65 time=32.0 ms
#####迁移

[root@gpu52 nfs]# virsh list
 Id    Name                           State
----------------------------------------------------
 5     centos7.8                      running
 8     centos6                        running

[root@gpu52 nfs]# virsh migrate  centos6 --live  qemu+ssh://192.168.200.51/system --unsafe
root@192.168.200.51's password: 

[root@gpu52 nfs]# virsh list
 Id    Name                           State
----------------------------------------------------
 5     centos7.8                      running


###迁移过程中,虚机本身ping114.114.114.114

64 bytes from 114.114.114.114: icmp_seq=33 ttl=90 time=31.9 ms
64 bytes from 114.114.114.114: icmp_seq=34 ttl=92 time=31.4 ms
64 bytes from 114.114.114.114: icmp_seq=35 ttl=80 time=32.9 ms
64 bytes from 114.114.114.114: icmp_seq=36 ttl=71 time=32.0 ms
64 bytes from 114.114.114.114: icmp_seq=37 ttl=85 time=32.0 ms
64 bytes from 114.114.114.114: icmp_seq=45 ttl=87 time=31.3 ms
64 bytes from 114.114.114.114: icmp_seq=46 ttl=84 time=31.4 ms
64 bytes from 114.114.114.114: icmp_seq=47 ttl=79 time=31.7 ms
64 bytes from 114.114.114.114: icmp_seq=48 ttl=67 time=32.0 ms
64 bytes from 114.114.114.114: icmp_seq=49 ttl=74 time=31.9 ms
64 bytes from 114.114.114.114: icmp_seq=50 ttl=64 time=31.9 ms
64 bytes from 114.114.114.114: icmp_seq=51 ttl=64 time=32.0 ms
^C
--- 114.114.114.114 ping statistics ---
51 packets transmitted, 44 received, 13% packet loss, time 50176ms
rtt min/avg/max/mdev = 30.833/31.962/33.819/0.511 ms
[root@centos6 ~]# 

=================37,跳到  45.

###迁移过程中,外面ping 虚机
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
请求超时。
请求超时。
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61
来自 192.168.200.156 的回复: 字节=32 时间=5ms TTL=61

192.168.200.156 的 Ping 统计信息:
    数据包: 已发送 = 39,已接收 = 37,丢失 = 2 (5% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 4ms,最长 = 6ms,平均 = 4ms
==========中间有 两个丢包状态

###引用

https://blog.51cto.com/13871362/2349045