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?