5.6.1 基于共享存储的动态迁移
如上图所示,有两台设备一台设备名称为"host1" ,ip地址为IP1, 创建有名为"Guest1"的虚拟机;另一台设备名称为 "host2",ip地址为IP2.现在要将设备"host1"上的虚拟机"Guest1"动态迁移到设备"host2"上(这里首先需要保证设备"host1"和设备"host2"之间路由可达,即可以相互ping通),具体操作如下:
1.1. "host1" 设备上的配置
1.关闭防火墙服务
[root]# systemctl stop firewalld
2.安装nfs和rpcbind软件
Loongnix-Server OS:
[root]# yum install -y nfs-utils rpcbind
Loongnix-Desktop OS:
[root]# apt install -y nfs-kernel-server rpcbind
3.创建目录并设置权限
[root]# mkdir /home/kvm-nfs
[root]# chmod 777 /home/kvm-nfs
4.编辑/etc/exports文件,添加如下语句:
/home/kvm-nfs *(rw,no_root_squash,no_all_squash,sync)
5.使配置生效
$ exportfs -r
6.启动rpcbind服务和nfs服务
Loongnix-Server OS:
[root]# systemctl start rpcbind
[root]# systemctl start nfs
[root]# systemctl status rpcbind
[root]# systemctl status nfs
Loongnix-Desktop OS:
[root]# systemctl start rpcbind
[root]# systemctl start nfs-kernel-server
[root]# systemctl status rpcbind
[root]# systemctl status nfs-kernel-server
7.测试是否配置成功,可以联机
[root]# showmount -e localhost
正常显示
Export list for localhost.localdomain:
/home/kvm-nfs *
8.下载qcow2文件系统至/home/kvm-nfs目录
[root]# cd /home/kvm-fs
[root]# ls
kvm-test.qcow2
chmod 777 kvm-test.qcow2 #使对端具有读写权限
9.使用virsh新建虚拟机,virtdisk指向/home/kvm-nfs/kvm-test.qcow2
1.2. 虚拟机当前运行情况如下:
[root]#virsh
virsh # list
Id 名称 状态
--------------------------
35 Guest1 running
1.3. "host2"设备上的配置
1.启动rpcbind服务
[root]# systemctl start rpcbind
[root# systemctl status rpcbind
2.创建挂载目录
[root]# mkdir /home/kvm-nfs
[root]# chmod 777 /home/kvm-nfs
3.防火墙设置
$[root]# firewall-cmd --add-port=49152-49215/tcp --permanent
[root]# firewall-cmd --reload
这里配置允许49152-49215的tcp端口
4.将设备"host1"的共享路径挂载到设备"host2"上的/home/kvm-nfs
[root]# mount -t nfs IP1:/home/kvm-nfs /home/kvm-nfs
5.检验是否挂载成功,看/home/kvm-fs目录下是否有kvm-test.qcow2文件系统
[root]# ls /home/kvm-nfs
kvm-test.qcow2
1.4. 迁移
1.迁移 在"host1"设备上输入下面命令进行虚拟机迁移,然后输入设备"host2"的root用户密码
[root]#virsh
virsh # migrate kvm-test qemu+ssh://IP2/system tcp://IP2 --unsafe --live --verbose
root@host2's password:
迁移: [ 91 %]
迁移: [100 %]
- virsh migrate –live:动态迁移
- –verbose:显示迁移详情
- kvm-test:需要迁移的虚拟机
- qemu+ssh:通过ssh连接到目的物理机上的system实例,具有最大权限来管理远程节点上的虚拟机资源
- /system: 以root身份进行状态迁移
- tcp:使用tcp连接
- IP2:目的物理机IP地址
- –unsafe:跳过安全检测
- 注:可以指定身份访问远程主机,如远程主机用户名为kvm,则可以使用 qemu+ssh://kvm@IP2/system,若不添加kvm,默认使用root访问
等到迁移进度达到100%时,查看本地虚拟机,发现"host1"设备上的"Guest1"虚拟机已经不存在了
[root]#virsh
virsh # list
Id 名称 状态
-------------------
在"host2"设备上查看,结果如下,表明迁移成功.
[root]#virsh
virsh # list
Id 名称 状态
--------------------------
31 Guest1 running
2.固化虚拟机配置文件 在"host2"设备上输入以下命令,固化迁移过来的配置数据,并使用配置数据创建虚拟机;否则迁移后"host2"设备上没有虚拟机"Guest1"的配置文件,关闭"Guest1"后,"Guest1"就没有了,命令如下:
[root]# virsh dumpxml Guest1 > Guest1.xml
[root]# virsh define Guest1.xml
定义域 Guest1(从Guest1.xml)