/ 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)