客户反馈虚拟机做快照时一直无法连接(后端存储使用的为ceph),远程测试发现做快照时无法ping通,vnc无法登录.
如上图,在做快照期间,ping虚拟机的ip中间会出现"请求超时"
如上图,快照期间,vnc也无法登录了.
在虚拟机所在的计算节点,用watch -n1 "virsh list --all",发现虚拟机在快照期间的状态为shutoff.
观察虚拟机所在的计算节点nova-compute日志,发现日志输出为"Begining cold snapshot process"
问题原因也在于快照方式了.OpenStack默认的快照方式都是cold snapshot,虚拟机会被关机.
在nova后端为ceph的情况下,虚拟机的快照大致分为以下几步:
1,ceph里面给虚拟机系统盘的rbd镜像文件创建一个快照并进行protect.
2.从上面创建的rbd快照克隆一个rbd文件,rbd文件名为nova 快照对应的uuid
3 flatten操作,将上面克隆的rbd文件拍平.
4 拍平后,删除虚拟机系统盘的rbd快照
步骤截图如下:
如上图,一个虚拟机快照正处于保存状态.
如上图,虚拟机快照的rbd文件(其中rbd文件名为快照的id),parent为虚拟机系统盘rbd的快照.
如上图,nova 快照的rbd文件,已经被flatten.
具体分析可以参考如下链接:
问题解决:
为了避免虚拟机快照期间的shutoff状态,修改快照方式为live snapshot方式,具体为编辑计算节点nova.conf,修改disable_libvirt_livesnapshot=false并重启nova-compute服务.再次做快照时,发现nova-compute日志已经显示"Begining live snapshot process"
注意:
libvirt版本低于1.2.2不支持启用热快照
官方说明:
# When using libvirt 1.2.2 live snapshots fail intermittently under load
# (likely related to concurrent libvirt/qemu operations). This config
# option provides a mechanism to disable live snapshot, in favor of cold
# snapshot, while this is resolved. Cold snapshot causes an instance
# outage while the guest is going through the snapshotting process.
参考: