当仍有可用存储空间时,为什么Ceph将状态转为Err

问题描述 投票:1回答:1

我最近建立了一个3节点的Ceph集群。每个节点都有七个用于OSD的1TB HDD。总共,我有21 TB的Ceph存储空间。

但是,当我进行工作负载以继续将数据写入Ceph时,它变成Err状态,无法再写入任何数据。

ceph -s的输出是:

 cluster:
    id:     06ed9d57-c68e-4899-91a6-d72125614a94
    health: HEALTH_ERR
            1 full osd(s)
            4 nearfull osd(s)
            7 pool(s) full

  services:
    mon: 1 daemons, quorum host3
    mgr: admin(active), standbys: 06ed9d57-c68e-4899-91a6-d72125614a94
    osd: 21 osds: 21 up, 21 in
    rgw: 4 daemons active

  data:
    pools:   7 pools, 1748 pgs
    objects: 2.03M objects, 7.34TiB
    usage:   14.7TiB used, 4.37TiB / 19.1TiB avail
    pgs:     1748 active+clean

[基于我的理解,由于仍然有4.37 TB的空间,Ceph本身应注意如何平衡工作负载并使每个OSD处于fullnearfull状态。但是结果不符合我的预期,显示1 full osd4 nearfull osd,运行状况为HEALTH_ERR

我再也无法用hdfss3cmd访问Ceph,所以问题来了:1,关于当前问题有什么解释吗?2,如何从中恢复?直接使用ceph-admin删除Ceph节点上的数据,然后重新启动Ceph吗?

hadoop bigdata ceph
1个回答
1
投票

[3天没有得到答案,我取得了一些进展,让我在这里分享我的发现。

1,不同的OSD具有尺寸间隙是正常的。如果用ceph osd df列出OSD,则会发现不同的OSD具有不同的使用率。

2,要从此问题中恢复过来,这里的问题是指由于OSD已满而导致群集崩溃。请按照以下步骤操作,主要是从redhat开始。

  • 通过ceph health detail获取ceph集群的健康信息。不必要,但是您可以获取失败的OSD的ID。
  • 使用ceph osd dump | grep full_ratio获得当前的全比率。不要使用上面链接中列出的语句,它已过时。输出可以像

full_ratio 0.95 backfillfull_ratio 0.9 nearfull_ratio 0.85

  • 将OSD完整比例设置为ceph osd set-full-ratio <ratio>稍高一些。通常,我们将比率设置为0.97
  • 现在,群集状态将从HEALTH_ERR更改为HEALTH_WARN或HEALTH_OK。删除一些可以释放的数据。
  • 将OSD全比例更改回先前的比例。不能始终将其设为0.97,因为这会带来一些风险。

希望此线程对遇到相同问题的人有所帮助。有关OSD配置的详细信息,请参见ceph

© www.soinside.com 2019 - 2024. All rights reserved.