PVE添加Ceph存储因权限不足导致无法移除磁盘-快照被保护的问题

PVE添加Ceph存储因权限不足导致无法移除磁盘-快照被保护的问题

Deng YongJie's blog 244 2024-07-16

背景:

由于云控制台上面,客户需要对云主机保存当前镜像的功能,所以有了创建镜像功能,创建镜像之后一直处于创建中状态。

image-20240126154505705
于是开始了深入排查,云控制台点击创建之后,后端的流程:先有1台模板机,然后链接克隆模板成为1台VM,并且新增1块磁盘。然后再完整克隆这台带有数据盘的VM,把二次克隆的VM转为新的模板,新的模板数据盘分离后,删除数据盘,提示无法删除,提示需要解除保护快照,导致VM出现未使用的磁盘长期置留在控制台,在云控制台显示一直处于创建中,无法完成创建,属于PRD故障。

image-20240125204117336
image-20240126152349871
image-20240126152526015

解决方法:

下面是RBD的介绍:

https://docs.ceph.com/en/latest/rbd/rbd-snapshot/

image-20240125204127812

  1. 临时人工解除快照保护处理,手动移除
  2. 把整个流程重新复现跑一遍,同时观察PVE控制台任务详情,然后找到关键报错信息,授权Ceph普通用户组件权限,解决此故障。

解决过程:

临时手动解决方法:

  1. 列出image的快照
    rbd snap ls hz_c1_xds_kvm_data/base-526475968-disk-1
    image-20240125204140924

  2. 查找过滤出快照

    rbd ls -l -p hz_c1_xds_kvm_data |grep “base-526475968-disk-1”
    image-20240125204154023

  3. 解除快照保护
    rbd snap unprotect hz_c1_xds_kvm_data/base-526475968-disk-1@base

  4. 清理所有快照可以使用purge子命令rbd snap purge hz_c1_xds_kvm_data/base-526475968-disk-1

罗列某个快照的子孙:

rbd children {pool-name}/{image-name}@{snapshot-name}

彻底解决方法:

代码调用PVE时,到了转成模板,分离数据盘,移除数据盘这步骤,就出现了报错,下图是PVE控制台查看的任务详情,可以看出是不允许操作,感觉是权限问题

image-20240126153649228

然后去查看用户权限,核对Ceph的用户权限,怀疑是不是各组件缺少权限,所以解除快照保护这步骤失败,因为PVE是调用ceph的rados接口,同样的rbd操作。然后重新授权权限为所有组件

image-20240126153738412
image-20240126153940080

ceph auth caps client.hz_c1_xds_kvm_user mon ‘allow *’ osd ‘allow *’ mgr ‘allow *’ mds ‘allow *’

image-20240126153956872

最后重新去云平台触发保存当前镜像的操作,同时在PVE控制台观察任务详情,显示成功了,验证了是权限问题导致。新的模板数据盘分离后,数据盘消失,代表移除成功。

image-20240126154216318

总结:

在Ceph-RBD存储来说,镜像快照就是PVE上层的链接克隆,对于底层存储来说,就是一堆快照儿子,一旦父镜像被删除,这些快照儿子就没了

有些看起来的报错是A的问题,实际上可能是B引起的,或者是B的流程、逻辑有问题,然后B的问题本质是C配置有误,导致这种级联故障。所以还需融合贯通整个链路,深入排查分析,处处找线索、蛛丝马迹,然后顺藤摸瓜,此排查过程又会引入其它问题,也会被其它问题所干扰,所以必须要看透问题的本质,才能串联起A B C三者之间的所有细节,综合分析出到底是哪个环节出问题!切勿停留在表面,表面就是烟雾弹,不能被 “形” 所困惑了,一定要从 “神” 的层面去思考,不能知其然而不知其所以然!