You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ceph erasure coding 3+2场景下单节点下线致写入失效求助

3+2纠删码集群单节点下线导致写入阻塞的排查方案

环境信息

  • 集群规模:5台主机,每台搭载24块9.1TiB HDD,总存储容量1.2PiB,当前可用容量700TiB
  • 存储配置:纠删码(EC)3+2,共128个placement group(PG),4个存储池,min_size设为3

问题现象

单节点下线后,集群写入操作完全被禁用,不符合3+2纠删码可容忍2台节点故障的理论预期。


排查步骤

1. 检查PG状态与分片分布

  • 执行 ceph pg stat 查看整体PG健康状态,确认是否存在大量undersized或degraded的PG;用 ceph pg dump_stuck unclean 定位异常PG。
  • 对异常PG执行 ceph pg map <pg-id>,查看该PG的3个数据分片是否集中在已下线的节点上——这种极端分布会导致单节点下线后可用数据分片数低于min_size=3,直接触发写入阻塞。

2. 验证存储池核心配置

  • 执行以下命令确认存储池的size和min_size配置:
    ceph osd pool get <pool-name> size
    ceph osd pool get <pool-name> min_size
    
    3+2纠删码的size应等于5(3数据分片+2校验分片),min_size=3需确保可用数据分片数达标。若size配置错误(如小于5)或min_size过高,会触发写入保护机制。

3. 确认OSD状态与集群健康

  • 用 ceph osd tree 检查下线节点的OSD是否被标记为out:
    • 若OSD仅处于down状态未被标记为out,集群会持续等待其上线,无法启动分片重建,导致PG无法满足min_size要求,进而阻塞写入。可手动执行 ceph osd out <osd-id> 标记OSD为下线状态。
  • 查看集群健康状态 ceph health detail,排除容量不足、网络分区等其他导致写入阻塞的因素。

4. 检查PG数量合理性

  • 当前4个池共128个PG,单池仅32个PG,对于120个OSD(5*24)的集群来说数量过少,极易导致分片分布不均。EC池推荐PG数计算公式为:(总OSD数 * 100) / 纠删码总分片数,即(120*100)/5=2400,建议每个池调整为600个PG(总2400),重新均衡分片分布。

5. 验证纠删码配置细节

  • 执行 ceph osd erasure-code-profile get <profile-name> 确认:
    • k=3(数据分片数)、m=2(校验分片数)配置正确;
    • crush-failure-domain设置为host,确保每个分片分散在不同主机上。若该参数设置为osd,可能出现同一主机承载多个数据分片的情况,单节点下线会丢失多份数据分片。

内容的提问来源于stack exchange,提问作者Deba Dey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:55:55