KVM虚拟机冷/热迁移的方法

    /    2018-12-27

在进行迁移之前需要准备一台与KVM配置相同的机器(KVM02),部署好kvm环境。

1. 虚拟机冷迁移

在kvm02中安装kvm组件

[root@kvm02 ~]# yum install libvirt* virt-* qemu-kvm* -y

配置桥接网络

[root@kvm02 ~]# virsh iface-bridge eth0 br0
[root@kvm02 ~]# mkdir -p /data

将虚拟机关机,导出配置文件

[root@kvm data]# virsh dumpxml oldboy7 >oldboy7.xml

将虚拟机文件传输到kvm02上

[root@kvm data]# scp -rp  oldboy7.xml oldboy.qcow2  10.0.0.201:/data

导入配置文件

[root@kvm02 ~]# virsh define oldboy7.xml

启动虚拟机

[root@kvm02 ~]# virsh start oldboy7

查看虚拟机状态

[root@kvm02 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
 5     oldboy7                          running

至此,一次KVM冷迁移就完成了

2. virt-manager和kvm虚拟机热迁移(准备)

实现kvm虚拟机热迁移核心:共享存储。

1)安装virt-manager所需桌面及vnc-server

[root@kvm ~]# yum groupinstall "GNOME Desktop" -y
# vnc-server端
[root@kvm ~]# yum install tigervnc-server -y
# virt-manager需要软件
[root@kvm ~]# yum install openssh-askpass -y

2)配置vnc服务

复制vnc配置文件

[root@kvm ~]# vi /usr/lib/systemd/system/vncserver@.services
[root@kvm ~]# \cp /usr/lib/systemd/system/vncserver@.service  /usr/lib/systemd/system/vncserver@\:1.service

修改配置文件,主要修改<USER>参数。

[root@kvm ~]# egrep -v "^#|^$" /usr/lib/systemd/system/vncserver@\:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=root
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/root/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
# 用户为root,家目录为root

官方提供修改方法

# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@.service
# 2. Replace <USER> with the actual user name and edit vncserver
#    parameters appropriately
#   ("User=<USER>" and "/home/<USER>/.vnc/%H%i.pid")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`

设置vnc连接时的密码

[root@kvm ~]# vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n  
# y为创建只读用户,n为非只读用户。

启动vnc服务,设置开机自启动

[root@kvm ~]# systemctl start vncserver@\:1.services
[root@kvm ~]# systemctl enable vncserver@\:1.services

查看密码文件及其他配置文件位置

[root@kvm ~]# ll ~/.vnc/

3)配置NFS存储

安装软件

[root@kvm ~]# yum install nfs-utils rpcbind -y

修改配置文件

[root@kvm ~]# cat /etc/exports
/data   172.16.1.0/24(rw,sync,all_squash,anonuid=0,anongid=0)

启动nfs程序

[root@kvm ~]# systemctl restart rpcbind 
[root@kvm ~]# systemctl restart nfs
# 设置开机自启动
[root@kvm ~]# systemctl enable rpcbind 
[root@kvm ~]# systemctl enable nfs

在kvm02上安装nfs

[root@kvm02 ~]#  yum install nfs-utils rpcbind -y

查看共享信息

[root@kvm02 ~]# showmount -e 172.16.1.240
Export list for 172.16.1.240:
/data 172.16.1.0/24

挂载目录

[root@kvm02 ~]# mount.nfs 172.16.1.240:/data /data
# 加入开机自启动
[root@kvm02 ~]# echo  'mount.nfs 172.16.1.240:/data /data' >>/etc/rc.local
[root@kvm02 ~]# chmod +x /etc/rc.d/rc.local

3. KVM虚拟机热迁移(实现)

vnc连接KVM宿主机:

图 - 连接地址

图 - 输入vnc密码

图 - 使用vmm 虚拟系统管理器

添加KVM02宿主机

图 - 添加新连接

注:连接上KVM02机器即可

图 - 添加上kvm02主机

图 - 主机添加完成

主机热迁移

图 - 迁移1

图 - 迁移2,选择要迁移到目的主机

图 - 迁移过程

图 - 迁移完成

在kvm02上查看虚拟机状态

[root@kvm02 ~]# virsh list --all 
 Id    名称                         状态
----------------------------------------------------
 7     oldboy7                          running

虚拟机配置查看方法:

图 - oldboy7 虚拟机配置信息

说明:在热迁移的过程中可能会参数丢包的情况,一般不会超过1个包。

[C:\~]$ ping 10.0.0.110 -t
来自 10.0.0.110 的回复: 字节=32 时间=1ms TTL=64
来自 10.0.0.110 的回复: 字节=32 时间=13ms TTL=64
来自 10.0.0.110 的回复: 字节=32 时间=11ms TTL=64
请求超时。
来自 10.0.0.110 的回复: 字节=32 时间=4ms TTL=64
来自 10.0.0.110 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.110 的回复: 字节=32 时间<1ms TTL=64

至此,一次热迁移就完成了!

(10)

分享至