一、静态迁移
静态迁移就是虚拟机在关机状态下,拷贝磁盘文件与配置文件到目标虚拟主机中,实现的迁移。分为以下情况:
- 虚拟主机各自使用本地存储存放虚拟机磁盘文件,本文实现基于本地磁盘存储虚拟机磁盘文件的迁移方式;
- 虚拟主机之间使用共享存储存放虚拟机磁盘文件,该方式只是在目标虚拟主机上重新定义虚拟机就可以了;
迁移过程:
- 拷贝镜像文件和虚拟机配置文件
- 重新定义此虚拟机
迁移步骤:
1)关闭虚拟机;
$ virsh destroy <虚拟机名称>
2)准备磁盘文件、配置文件
查看磁盘文件路径
$ virsh domblklist <虚拟机名称>
准备配置文件
$ virsh dumpxml <虚拟机名称> > /tmp/虚拟机名称.xml
3)拷贝磁盘文件、配置文件到目标主机上
$ scp /tmp/centos7.xml root@192.168.31.23:/etc/libvirt/qemu
$ scp /opt/centos7.qcow2 root@192.168.31.23:/data/vm/
4)在目标主机上启动虚拟机
1.修改配置文件
uuid
磁盘路径
2. 注册虚拟机
$ virsh define /etc/libvirt/qemu/centos7.xml
3. 启动并确认
$ virsh start centos7
$ virsh list --all
5)至此静态迁移就成功了
二、动态迁移
kvm01迁移到kvm02的过程:
- 设置主机名,且相互解析;
- kvm01 作为 nfs 服务端,将虚拟机磁盘文件目录共享;
- kvm02 挂载 kvm01 共享目录至相同目录;
- 执行动态迁移命令;
- 创建迁移后的虚拟机配置文件
- 重新定义虚拟机
迁移步骤:
1)设置主机名,且相互解析,两台 kvm 都要执行;
$ hostname <主机名>
$ vim /etc/hosts
192.168.31.23 kvm01
192.168.31.24 kvm02
2)kvm01 作为 nfs 服务端,将虚拟机磁盘文件目录共享;
$ vim /etc/exports
/opt *(rw,async,no_root_squash,no_all_squash)
$ systemctl restart rpcbind
$ systemctl restart nfs
3)kvm02 挂载 kvm01 共享目录至相同目录;
$ mount -t nfs 10.0.0.31:/opt /opt
确保两节点都有相同的虚拟机磁盘文件存储目录。
4)在 kvm01 上执行迁移命令,将虚拟机 centos7 迁移至 kvm02(192.168.31.24)
$ virsh migrate --live --verbose centos7 qemu+ssh://192.168.31.24/system --unsafe
客户机一直ping查看迁移,可以看到中间有两个包的中断,基本上没有太大影响。迁移完成后,kvm01 上的 centos7 不会自动删除,但是会关机;kvm02 上的 centos7 会保留运行状态;
5)创建迁移后的虚拟机配置文件
$ virsh dumpxml centos7 > /etc/libvirt/qemu/centos7.xml
6)注册虚拟机
$ virsh define /etc/libvirt/qemu/centos7.xml
至此,kvm虚拟机动态迁移就完成了。