点击蓝字丨关注我们
《VC君讲技术》
技术分享第12期
作者:磨渣、乐枫
前言
在使用kvm与ceph组合的时候,存储环境因为各种各样的问题(网络,磁盘,或者其它各种异常),引起了集群状态变化,然后会出现某些虚拟机正常,某些虚拟机无法启动的情况。
特别是win server2008 ,会一直卡在启动界面滚动条位置,曾经某个环境遇到过一次无法启动,通过导出导入的方式得到解决,但没有找到原因。后来内部复现问题,通过关闭rbd的属性后,就可以正常启动,但是根因还没有找到,需要进一步的分析问题。
复现的方法比较简单,机器时间往回调整了十几分钟,集群出现mon选举,osd出现闪断以后,部分虚拟机就会出现无法启动的情况。
问题分析
导入导出或者克隆可以启动虚拟机,基本可以判断数据是没有问题的。那么应该就是其它问题,通过关闭属性可以解决,大概能够定位到这几个属性相关的features:
layering, exclusive-lock, object-map, fast-diff, deep-flatten。
而锁文件是最大的怀疑,之前处理ctdb的时候,就有过锁没有加上超时时间,然后ctdb挂掉以后,锁不会自动释放的问题,怀疑这个地方类似。我们的rbd的镜像如下
[root@lab101 vm]# rbd info rbd/windows-server-8-base-clone
rbd image 'windows-server-8-base-clone':
size 50GiB in 12800 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.102376b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
create_timestamp: Fri Dec 18 11:56:27 2020
parent: rbd/windows-server-8-base@for-clone
overlap: 50GiB
这个地方会有两个对象被上锁
[root@lab101 ceph]# rbd lock ls rbd/windo