KVM 主机迁移
前言
vm1运行了1台kvm 虚机,vm2采用nfs挂载vm1共享的虚机磁盘路径,当我在vm1进行热迁移后,在vm2启动发现磁盘损坏,而当我在vm3创建nfs共享磁盘给vm1,vm2挂载后,创建的虚机,在vm1和vm2之间进行迁移是完全不会发生磁盘问题,同样在冷迁移也是不会发生磁盘问题。
综合以上,建议使用专门的nfs等共享存储服务器供kvm主机挂载。
前提条件:
1. vm2...vmn主机需要安装kvm虚拟化软件,版本需一致;
2. 桥接模式需要创建桥接网卡,并将eth0桥接到br0;
3. 挂载路径必须一致。
冷迁移
缺点:
- 迁移过程中虚拟机需要关闭,导致业务中断(也可以不关机,但是或导致mac地址冲突,会导致短暂业务中断)。
- 迁移时间较长,尤其是磁盘文件较大的虚拟机。
拷贝磁盘与虚机xml文件到对应主机
[root@kafka-1 kvm]# scp /etc/libvirt/qemu/qianyi-bridge-vm.xml kafka-2:/etc/libvirt/qemu/qianyi-bridge-vm.xml [root@kafka-1 kvm]# scp /opt/kvm/vm/qianyi-bridge-vm.qcow2 kafka-2:/opt/kvm/vm/qianyi-bridge-vm.qcow2
定义主机
virsh define /tmp/<vm-name>.xml
启动主机
virsh list --all
virsh start <vm-name>
测试访问
vm1
可以看到同一个ip解析出来俩mac地址。
关掉kvm1的虚机,只解析出来一个mac地址
参数解释
arping VIP -s 源地址为IP 目标ip -c 1 查看结果,是否解析出来两个mac地址
热迁移
vm3安装nfs
https://www.cnblogs.com/rtnb/p/15584847.html
vm1,2查看挂载
[root@kafka-1 kvm]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 9.2M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root 56G 5.7G 50G 11% / /dev/sda1 1014M 183M 832M 19% /boot 192.168.64.12:/opt/kvm 36G 5.1G 31G 15% /opt/kvm tmpfs 392M 8.0K 392M 1% /run/user/0
[root@kafka-2 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 9.2M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root 36G 24G 12G 69% / /dev/sda1 1014M 183M 832M 19% /boot 192.168.64.12:/opt/kvm 36G 5.1G 31G 15% /opt/kvm tmpfs 392M 4.0K 392M 1% /run/user/0
迁移
# 热迁移命令,不断网 virsh migrate --live --verbose domain qemu+ssh://192.168.64.11/system --unsafe virsh migrate --live --verbose test2-nat-network-2 qemu+ssh://192.168.64.11/system --unsafe # 迁移 virsh migrate --live --verbose test2-nat-network-2 qemu+ssh://192.168.64.14/system --unsafe # 回迁 virsh migrate --live --persistent --undefinesource --verbose myvm qemu+ssh://root@192.168.64.11/system --unsafe
参数解释
--live 在线迁移
--verbose 启用详细模式,迁移过程中会显示详细的输出信息,了解迁移的进度和状态。
qemu+ssh://192.168.64.11/system:表示要将虚拟机迁移到192.168.64.11 的主机上,并使用 SSH 连接进行迁移。system 表示目标连接到 libvirt 的系统实例。
IP 目标IP,必须和对面做主机名host解析。
--unsafe 此参数允许在未启用共享存储的情况下进行迁移。正常情况下,为确保数据一致性,迁移通常需要源和目标主机之间共享存储。
--undefinesource 迁移完成在源kvm删除虚机定义,但不删除磁盘文件。
--persistent 目标主机上使虚拟机定义为持久性,即当目标宿主机重启,依然生效,不指定只是当前生效,当宿主机重启,虚机失效。
注意: 两边xml文件配置里的磁盘路径需要指向共享存储目录。
配置hosts解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 kafka-1 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.64.14 kafka-1 192.168.64.11 kafka-2 192.168.64.12 kafka-3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统