【现象】
云平台的虚拟机被自动关闭了,手动开机后又很快关闭,无法正常启动。
【分析】
虚机刚开机又自动关闭且大批量这样,按经验一般是后端存储异常, 当然也可排查nova-compute.log日志。 此处为节省时间,直接排查底层分布式存储健康状态。
【排查】
1、检查ceph,发现12块盘有10块osd down,此时ceph集群处于不可写状态。
2、查看3个节点时间一致、且ceph网络正常。 再检查osd down的日志,发现以下问题,提示找不到lv卷(此套ceph部署的lvmcache + filestore)
3、检查节点pv,发现pv丢失,提示unknow
4、由于Linux的LVM会默认存储用户对PV/VG/LV的操作,并把信息自动备份到一个文件,位置:/etc/lvm/backup/VGNAME
基于此,我们可通过这份备份文件,来恢复磁盘与pv uuid对应关系。
5、根据找到pv uuid对应关系,根据备份文件来创建pv
pvcreate 盘符名 -u pv_uuid --restorefile /etc/lvm/backup/vgname
6、将vg中所有pv都创建后,再恢复vg以及激活vg
vgcfgrestore vgname
vgchange -ay vgname
7、将所有节点osd都恢复后,等待ceph同步完成,集群恢复正常。
【总结】
当集群的服务组件或虚拟机出现大批量异常时,优先考虑公共部分,比如公共组件数据库mariadb、消息队列rabbitmq,比如后端存储设备(分布式存储、磁盘阵列)等等, 会有助于更快找到问题真实原因。
【参考】