KVM虚拟机的迁移

在宿主机上进行虚拟机迁移有两种方法:
1、冷迁移(静态迁移、线下迁移)
2、热迁移(动态迁移、线上迁移)
冷迁移(静态迁移)
冷迁移是指在虚拟机关闭的情况下,将一个虚拟机系统从一台物理主机移动到另一台物理主机的过程。实际上就是复制磁盘文件与配置文件到另一台物理主机中。
实验中需要两台宿主机,redhat和node2。
redhat:192.168.217.139
node2:192.168.217.146
需要从redhat宿主机中将vm01虚拟机迁移到node2宿主机上。
在redhat宿主机中,将vm01虚拟机关闭,查看其磁盘文件。通过dumpxml命令生成vm01虚拟机配置文件。

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     rhel_ftp                       shut off
 -     vm01                           shut off
 -     vm02                           shut off
[root@localhost ~]# virsh domblklist vm01
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/vm01.dsk
vdb        /var/lib/libvirt/images/storage_pool/newone.qcow2
[root@localhost ~]# virsh dumpxml vm01 >vm01.xml
[root@localhost ~]# ll
total 12
-rw-------. 1 root root 1867 Feb 24 15:42 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Desktop
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Documents
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Downloads
-rw-r--r--. 1 root root 1960 Feb 24 15:47 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Music
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Pictures
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Public
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Templates
drwxr-xr-x. 2 root root    6 Feb 24 15:47 Videos
-rw-r--r--. 1 root root 4052 Apr 15 09:28 vm01.xml

查看宿主机node2的ip地址。

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:3d:0e:a1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.217.143/24 brd 192.168.217.255 scope global dynamic ens33
       valid_lft 1794sec preferred_lft 1794sec
    inet6 fe80::bf76:89b5:da4a:14e0/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------

回到宿主机redhat中,使用命令scp进行远程文件拷贝。将当前vm01的配置文件拷贝到另一台宿主机node2的虚拟机配置文件所在目录中(/etc/libvirt/qemu/)。

[root@localhost ~]# scp vm01.xml root@192.168.217.143:/etc/libvirt/qemu/
The authenticity of host '192.168.217.143 (192.168.217.143)' can't be established.
ECDSA key fingerprint is 54:4d:88:1f:7a:41:2e:7b:cd:a4:75:ce:df:f7:cf:a6.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.217.143' (ECDSA) to the list of known hosts.
root@192.168.217.143's password: 
vm01.xml                                      100% 4052     4.0KB/s   00:00   

同时将redhat中vm01的虚拟机硬盘文件也进行迁移。(耗时)

[root@localhost ~]# scp /var/lib/libvirt/images/vm01.dsk root@192.168.217.143:/var/lib/libvirt/images/
root@192.168.217.143's password: 
vm01.dsk                                                                        vm01.dsk                                      100% 8194MB  15.6MB/s   08:44 

完成拷贝后,去到node2宿主机中查看虚拟机情况。此时看到虚拟机还是空白。

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------

确认node2中虚拟机的文件是否到位。发现文件都已经拷贝到指定位置。

[root@localhost ~]# ll /etc/libvirt/qemu
total 4
drwx------. 3 root root   42 Mar 11 14:55 networks
-rw-r--r--. 1 root root 4052 Apr 14 22:11 vm01.xml
[root@localhost ~]# ll /var/lib/libvirt/images/
total 8390148
-rw-------. 1 root root 8591507968 Apr 14 22:23 vm01.dsk

通过virsh define命令在node2上定义虚拟机。

[root@localhost ~]# virsh define /etc/libvirt/qemu/vm01.xml 
Domain vm01 defined from /etc/libvirt/qemu/vm01.xml
[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     vm01                           shut off

[root@localhost ~]# virsh start vm01
error: Failed to start domain vm01
error: internal error: process exited while connecting to monitor: Cannot set up guest memory 'pc.ram': Cannot allocate memory

此时在node2上启动虚拟机vm01失败,原因是内存不够。在vm01的设置上,我们内存是要求1G。
在这里插入图片描述

[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# vi vm01.xml 
[root@localhost qemu]# cat vm01.xml |grep memory
  <memory unit='KiB'>524288</memory>
[root@localhost qemu]# virsh define /etc/libvirt/qemu/vm01.xml 
Domain vm01 defined from /etc/libvirt/qemu/vm01.xml

[root@localhost qemu]# virsh start vm01
Domain vm01 started

虚拟机可以开启,打开查看信息,一切正常。
在这里插入图片描述
热迁移(动态迁移)
热迁移是在保证虚拟机正常运行的同时,将其从一个物理机迁移到另外一个物理机的过程,这个是基于共享存储的,在共享存储上保存虚拟机的磁盘文件。
实验准备:
该实验在node2主机上安装NFS服务,分享一个共享的文件系统,作为KVM虚拟机的存储池。
node2的ip地址为:192.168.217.146
redhat的ip地址为:192.168.217.139
在node2主机上部署NFS。

[root@node2~]# setenforce 0
[root@node2~]# getenforce 
Permissive
[root@node2 ~]# vi /etc/selinux/config 
[root@node2~]# systemctl stop firewalld.service
[root@node2~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@node2~]# yum install -y nfs-utils
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package 1:nfs-utils-1.3.0-0.33.el7.x86_64 already installed and latest version
Nothing to do
[root@node2~]# mkdir -p /kvm/images
[root@node2~]# ll -d /kvm/images/
drwxr-xr-x. 2 root root 6 Apr 15 01:41 /kvm/images/
[root@node2~]# chmod o+w /kvm/images/
[root@node2~]# ll -d /kvm/images/
drwxr-xrwx. 2 root root 6 Apr 15 01:41 /kvm/images/
[root@node2~]# vi /etc/exports
[root@node2~]# cat /etc/exports
/kvm/images	192.168.217.0/24(rw,no_root_squash)
[root@node2~]# systemctl restart rpcbind
[root@node2~]# systemctl restart nfs-server.service 

到主机redhat中测试node2主机上的NFS共享情况。测试是可以访问到的。

[root@redhat~]# showmount -e 192.168.217.146
Export list for 192.168.217.146:
/kvm/images 192.168.217.0/24

将NFS共享添加到redhat的虚拟机存储池中。
在这里插入图片描述

在redhat主机上再新建虚拟机,选择网络的方式安装操作系统。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在安装时网络要选择桥接模式,这样虚拟机和外面的宿主机在同一个网段才能方便访问共享,如果没有选择网络形式,可以在安装后进行调整。

在线迁移
目前vm03虚拟机是在redhat宿主机中,现在把其迁移到node2宿主机去,首先要在node2上创建存储池。
在这里插入图片描述
在这里插入图片描述
在redhat和node2两台宿主机上查看虚拟机,虚拟机在redhat中正在运行,在node2中并没有。
回到redhat宿主机中,使用migrate命令进行迁移。

[root@localhost network-scripts]# virsh migrate --live --verbose vm03 qemu+ssh://192.168.217.146/system tcp://192.168.217.146 --unsafe
root@192.168.217.146's password: 
Migration: [100 %]

迁移完成后,redhat宿主机上的vm03虚拟机不再运行。
在这里插入图片描述
到宿主机node2中查看到vm03已经开启。但此时vm03的配置文件还没有在node2中出现,需要生成新的配置文件。

[root@node2 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 8     vm03                          running
[root@node2 ~]# ll /etc/libvirt/qemu
total 4
drwx------. 3 root root   42 Mar 11 14:55 networks
-rw-------. 1 root root 3987 Apr 14 23:44 vm01.xml
[root@node2 ~]# virsh dumpxml vm03 > /etc/libvirt/qemu/vm03.xml
[root@node2 ~]# virsh define /etc/libvirt/qemu/vm03.xml 
Domain vm03 defined from /etc/libvirt/qemu/vm03.xml

进入node2中的虚拟机vm03,查看情况,一切正常。
在这里插入图片描述

这里需要注意,因为我们redhat使用的是桥接模式,网桥是br2,所以在迁移的宿主机node2中也要配置与其对应的网桥br2,否则会出现以下报错。当在node2中也配置了br2设备后,报错信息不再出现。

[root@localhost ~]# virsh migrate --live --verbose vm03 qemu+ssh://192.168.217.146/system tcp://192.168.217.146 --unsafe
root@192.168.217.146's password: 
error: Cannot get interface MTU on 'br2': No such device

在使用migrate动态迁移过程中,可能会出现以下情况报错:
internal error: Attempt to migrate guest to the same host localhost.localdomain
解决办法:在要迁移的宿主机中使用命令hostname临时变更一下即可。hostname name。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值