Linux KVM在线迁移实战

KVM热迁移实现需要使用共享的存储池,最简便的方法是使用NFS共享。更为复杂且高可用、高性能的是使用共享的分布式文件系统,如Ceph。

本实践采用CentOS 7系统构建的NFS服务作为共享存储

构建NFS共享存储

以下操作在作为NFS服务的主机上执行

  • NFS服务器上创建共享目录

mkdir -p /var/lib/nfs-data/images
  • 使用以下命令安装 NFS 支持

yum install nfs-utils nfs-utils-lib
  • 设置nfs相关服务在操作系统启动时启动

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
  • 启动nfs服务

systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
  • 服务器端设置NFS卷输出,即编辑 /etc/exports 添加:

  • 服务器端输出NFS

NFS客户端挂载

  • 编辑需要挂载共享NFS磁盘的设置/etc/fstab配置将共享NFS卷挂载到/var/lib/libvirt/nfs-images

  • 客户端挂载

所有使用共享存储的KVM主机都挂载好这个NFS共享

配置libvirt的VM存储池

将默认的/var/lib/libvirt/images目录对应的default存储池修改到新的共享存储

  • 先关闭运行的虚拟机

  • 检查所有虚拟机运行状态,确保所有虚拟机都已经关闭

  • 检查存储池

显示输出

  • 检查存储池信息 - 可以看到存储池容量

  • 检查存储池路径

输出显示

  • 检查有哪些VM镜像存储在这个路径中

输出显示

  • 停止存储池

  • 编辑存储池配置

编辑内容,将其中的存储路径修改成新的NFS共享存储路径

  • 启动存储池

  • 再次检查存储路径

确认修改路径正确

  • 将VM镜像从旧路径迁移到新路径

  • 编辑VM配置文件更新到新的存储池路径

将存储路径修改到共享存储目录

  • 然后启动虚拟机

KVM热迁移

  • 测试环境:将虚拟机 centos7 从KVM物理服务器 test-1-3 迁移到 test-1-4 上,我们要先打通test-1-3登录到test-1-4的免密码ssh,并验证ssh登录无误

显示输出

  • 在虚拟机内部启动ping,验证网络是否会有影响

  • 从KVM主机,test-1-3上发起热迁移

提示信息

要避免这个报错,需要关闭每个VM的disk I/O cache功能,即编辑vm

driver行添加`cache='none'

然后再次启动vm

然后再次迁移。

另外一种方法是使用 --unsafe ,这样对于非关键应用可以适合。

  • 然后在test-1-4物理服务器上可以看到迁移后正常运行的虚拟机

参考

Last updated

Was this helpful?