hadoop—当仍有可用存储空间时,ceph为什么会将状态变为err

bn31dyow  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(518)

我最近建立了一个3节点的ceph集群。每个节点都有7个1tb的OSD硬盘。我总共有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不处于最佳状态 full 或者 nearfull 状态。但结果并不像我预期的那样, 1 full osd 以及 4 nearfull osd 出现了,健康 HEALTH_ERR .
我不能和你一起去ceph hdfs 或者 s3cmd 所以问题来了:
1、对当前问题有何解释?
2、我怎样才能从中恢复过来?直接用ceph admin删除ceph节点上的数据,然后重新启动ceph?

w46czmvw

w46czmvw1#

三天没有得到答案,我取得了一些进展,让我在这里分享我的发现。
1、不同osd有尺寸差距是正常的。如果你把osd列为 ceph osd df ,你会发现不同的osd有不同的使用率。
2.要从这个问题中恢复,这里的问题是指由于osd已满而导致的群集崩溃。按照下面的步骤,它主要来自redhat。
获取ceph群集运行状况信息 ceph health detail . 这是不必要的,但你可以得到失败的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\u err更改为health\u warn或health\u ok。删除一些可以发布的数据。
将osd完全比率更改回以前的比率。不可能是0.97,因为这有点冒险。
希望这篇文章对遇到同样问题的人有所帮助。有关osd配置的详细信息,请参阅ceph。

5us2dqdw

5us2dqdw2#

ceph需要空闲的磁盘空间来在不同的磁盘之间移动存储块(称为pgs)。由于这个空闲空间对底层功能非常关键,ceph将进入 HEALTH_WARN 一旦任何osd到达 near_full 比率(通常为85%已满),并将通过输入 HEALTH_ERR 一旦osd到达 full_ratio .
但是,除非您的集群在所有osd之间完全平衡,否则很可能会有更多的可用容量,因为osd的利用率通常是不均衡的。要检查总体利用率和可用容量,可以运行 ceph osd df .
输出示例:

ID CLASS WEIGHT  REWEIGHT SIZE    RAW USE DATA    OMAP    META    AVAIL    %USE  VAR  PGS STATUS 
 2   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB  72 MiB 3.6 GiB  742 GiB 73.44 1.06 406     up 
 5   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB 119 MiB 3.3 GiB  726 GiB 74.00 1.06 414     up 
12   hdd 2.72849  1.00000 2.7 TiB 2.2 TiB 2.2 TiB  72 MiB 3.7 GiB  579 GiB 79.26 1.14 407     up 
14   hdd 2.72849  1.00000 2.7 TiB 2.3 TiB 2.3 TiB  80 MiB 3.6 GiB  477 GiB 82.92 1.19 367     up 
 8   ssd 0.10840        0     0 B     0 B     0 B     0 B     0 B      0 B     0    0   0     up 
 1   hdd 2.72849  1.00000 2.7 TiB 1.7 TiB 1.7 TiB  27 MiB 2.9 GiB 1006 GiB 64.01 0.92 253     up 
 4   hdd 2.72849  1.00000 2.7 TiB 1.7 TiB 1.7 TiB  79 MiB 2.9 GiB 1018 GiB 63.55 0.91 259     up 
10   hdd 2.72849  1.00000 2.7 TiB 1.9 TiB 1.9 TiB  70 MiB 3.0 GiB  887 GiB 68.24 0.98 256     up 
13   hdd 2.72849  1.00000 2.7 TiB 1.8 TiB 1.8 TiB  80 MiB 3.0 GiB  971 GiB 65.24 0.94 277     up 
15   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB  58 MiB 3.1 GiB  793 GiB 71.63 1.03 283     up 
17   hdd 2.72849  1.00000 2.7 TiB 1.6 TiB 1.6 TiB 113 MiB 2.8 GiB  1.1 TiB 59.78 0.86 259     up 
19   hdd 2.72849  1.00000 2.7 TiB 1.6 TiB 1.6 TiB 100 MiB 2.7 GiB  1.2 TiB 56.98 0.82 265     up 
 7   ssd 0.10840        0     0 B     0 B     0 B     0 B     0 B      0 B     0    0   0     up 
 0   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB 105 MiB 3.0 GiB  734 GiB 73.72 1.06 337     up 
 3   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB  98 MiB 3.0 GiB  781 GiB 72.04 1.04 354     up 
 9   hdd 2.72849        0     0 B     0 B     0 B     0 B     0 B      0 B     0    0   0     up 
11   hdd 2.72849  1.00000 2.7 TiB 1.9 TiB 1.9 TiB  76 MiB 3.0 GiB  817 GiB 70.74 1.02 342     up 
16   hdd 2.72849  1.00000 2.7 TiB 1.8 TiB 1.8 TiB  98 MiB 2.7 GiB  984 GiB 64.80 0.93 317     up 
18   hdd 2.72849  1.00000 2.7 TiB 2.0 TiB 2.0 TiB  79 MiB 3.0 GiB  792 GiB 71.65 1.03 324     up 
 6   ssd 0.10840        0     0 B     0 B     0 B     0 B     0 B      0 B     0    0   0     up 
                    TOTAL  47 TiB  30 TiB  30 TiB 1.3 GiB  53 GiB   16 TiB 69.50                 
MIN/MAX VAR: 0.82/1.19  STDDEV: 6.64

正如您在上面的输出中所看到的,使用的osd从56.98%(osd19)到82.92%(osd14)不等,这是一个显著的差异。
因为只有一个osd full ,21个osd中只有4个是 nearfull 集群中可能还有大量可用的存储空间,这意味着现在是执行重新平衡操作的时候了。这可以通过重新调整osd的权重来手动完成,也可以通过运行命令让ceph尽最大努力重新平衡 ceph osd reweight-by-utilization . 一旦重新平衡完成(即没有对象放错位置) ceph status )您可以再次检查变化(使用 ceph osd df )如果需要,触发另一个再平衡。
如果你在夜光或更新,你可以启用平衡器插件来处理osd自动倒带。

相关问题