Rook Ceph PVC创建失败与PG长期undersized异常问题咨询
问题1:PVC创建失败处于Pending状态
根因
从PVC事件的报错信息multi node access modes are only supported on rbd 'block' type volumes可以直接定位冲突点:
- 你配置的PVC
accessModes为ReadWriteMany(支持多节点读写) - PVC未指定
volumeMode时默认值为Filesystem,而RBD类型存储不支持Filesystem模式下的多节点挂载,仅Block模式的RBD卷支持ReadWriteMany访问模式。
解决方法
根据业务需求二选一即可:
- 若无需多节点同时读写该卷,将PVC的
accessModes修改为ReadWriteOnce,修改后配置如下:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: avl-vam-pvc-media-ceph spec: storageClassName: "rook-ceph-block" accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
- 若确实需要多节点同时读写,将PVC的
volumeMode修改为Block,注意Block模式的卷需要在Pod中直接挂载为块设备,不会自动格式化文件系统,修改后配置如下:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: avl-vam-pvc-media-ceph spec: storageClassName: "rook-ceph-block" accessModes: - ReadWriteMany volumeMode: Block resources: requests: storage: 10Gi
如果需要Filesystem模式的多节点共享存储,建议改用CephFS作为存储后端。
问题2:Ceph PG长期处于undersized状态
根因
Ceph集群默认配置为3副本,且默认CRUSH规则要求不同副本分布在不同主机上以保证冗余,你当前集群仅2台存储主机(hostname1、hostname2),无法满足3副本的分布要求,每个PG最多只能存放2个副本,因此触发undersized告警,从你提供的PG状态也可看到每个PG的acting集合仅包含2个OSD,符合2副本的状态。
解决方法
根据实际资源情况二选一:
- 方案1:新增第3台存储主机,部署至少1个OSD,满足3副本的分布要求,CRUSH会自动将PG补充为3副本,告警将自动消除。
- 方案2:若暂时无法新增主机,将对应存储池的副本数修改为2,执行以下命令即可:
# 先查询RBD存储池名称,rook默认创建的RBD池名为replicapool ceph osd pool ls # 修改对应池的副本数为2,以下以默认池名replicapool为例 ceph osd pool set replicapool size 2 # 可选:若允许单副本状态下池可写,可设置min_size为1(不建议生产环境配置) ceph osd pool set replicapool min_size 1
执行完成后等待PG数据回填完成,告警即可消除。
内容的提问来源于stack exchange,提问作者Timothy Sutton
相关产品推荐
相关产品推荐

