虚拟机迁移
虚拟机在宿主机之间迁移
libvirt虚拟机迁移分类
基于共享存储、在线、直接迁移
基于共享存储、离线、直接迁移
基于共享存储、在线、P2P迁移
基于共享存储、离线、P2P迁移
共享存储与非共享存储迁移
基于共享存储的迁移:只需在源与目的宿主机间传递虚拟机内存等运行数据,无需迁移虚拟磁盘文件——速度快
基于非共享存储的迁移:需要在源与目的宿主机间传递虚拟机所有数据——速度慢
直接迁移过程:由管理主机的libvirt客户端(比如virsh、virt-manager)控制虚拟机迁移的整个过程
1)libvirt客户端(比如virsh )通知源宿主机的libvirtd准备迁移虚拟机
2)ibvirt客户端(比如virsh)通知目的宿主机的libvirtd准备接收虚拟机
3)源宿主机的libvirtd根据libvirt客户端的指令,将虚拟机迁移至目的宿主机
4)libvirt客户端要能够与源宿主机、目的宿主机libivrtd建立连接,即通过源宿主机、目的宿主机的认证
5)在迁移过程中,libvirt客户端需要保持与源宿主机、目的宿主机的连接。如果连接中断或者libvirt客户端软件崩溃了,可能会导致整个迁移的失败
点对点P2P迁移过程:由源宿主机的libvirtd控制虚拟机迁移的大部分过程
1)管理主机的libvirt客户端(比如virsh )通知源宿主机的libvirtd准备迁移虚拟机
2)源宿主机的libvirtd通知目的宿主机的libvirtd准备接收虚拟机
3)源宿主机的libvirtd掌控虚拟机迁移至目的宿主机的步骤
4)在迁移过程中,管理主机的libvirt客户端不需要保持与源宿主机的libvirtd的连接;连接中断或客户端软件崩溃不会影响迁移
5)为了保证安全性,目的宿主机的libvirtd会对源宿主机的libvirtd进行认证;因此需要在源宿主机上配置针对目的宿主机的认证信息。比如迁移使用的是ssh连接,则需要配置源宿主机对目的宿主机的ssh无密钥登录
迁移前条件
源主机要正确解析到目标主机的地址
方法1:架设DNS服务器(生产环境中推荐)或编辑/etc/hosts文件
方法2:在源宿主机的virsh迁移命令中,通过参数明确指定使用目的宿主机的哪个地址进行迁移
比如tcp://目的宿主机的IP地址
虚拟机迁移migrate命令
直接迁移
migrate 虚拟机名 qemu+ssh://目的宿主机的IP/system
P2P迁移
migrate 虚拟机名 qemu+ssh://目的宿主机的IP/system --p2p
在线迁移
migrate 虚拟机名 qemu+ssh://目的宿主机的IP/system --live
注意:如果不指定--live参数,默认采用就是在线迁移
离线迁移
migrate 虚拟机名 qemu+ssh://目的宿主机的IP/system --offline
注意:--offline参数,只能用于基于共享存储的离线迁移。对于非共享存储的离线迁移,只能通过linux命令拷贝虚拟机相关文件到目的宿主机上实现了
基于非共享存储的在线迁移
migrate qemu+ssh://目的宿主机的IP/system --live --copy-storage-all
其它迁移参数
--unsafe:即使迁移中虚拟机数据发生了错误,也强制进行迁移
对于共享存储的在线迁移,如果虚拟机磁盘文件即不位于集群文件系统中,同时如果磁盘缓存方式不是none,则libvirt不会允许在线迁移
--verbose:显示迁移的进度
--persistent:当迁移完成后,在目的宿主机上创建虚拟机的配置文件并进行定义
--undefinesource:当迁移完成后,在源宿主机上取消虚拟机的定义
标签:--,虚拟机,宿主机,libvirt,virsh,libvirtd,迁移
From: https://www.cnblogs.com/tang-learning/p/16797646.html