共计 1743 个字符,预计需要花费 5 分钟才能阅读完成。
背景
集群状态报错,如下:
# ceph -s
cluster 1d64ac80-21be-430e-98a8-b4d8aeb18560
health HEALTH_WARN <-- 报错的地方
too many PGs per OSD (912 > max 300)
monmap e1: 1 mons at {node1=109.105.115.67:6789/0}
election epoch 4, quorum 0 node1
osdmap e49: 2 osds: 2 up, 2 in
flags sortbitwise,require_jewel_osds
pgmap v1256: 912 pgs, 23 pools, 4503 bytes data, 175 objects
13636 MB used, 497 GB / 537 GB avail
912 active+clean
分析
问题原因是集群 osd 数量较少,在我的测试过程中,由于搭建 rgw 网关、和 OpenStack 集成等,创建了大量的 pool,每个 pool 要占用一些 pg,ceph 集群默认每块磁盘都有默认值,好像每个 osd 为 300 个 pgs,不过这个默认值是可以调整的,但调整得过大或者过小都会对集群的性能产生一定影响。因为我们这个是测试环境,只要能消除掉报错即可。查询当前每个 osd 下最大的 pg 报警值:
$ ceph --show-config | grep mon_pg_warn_max_per_osd
mon_pg_warn_max_per_osd = 300
解决方案
在配置文件中,调大集群的此选项的告警阀值;方法如下,在 mon 节点的 ceph.conf(/etc/ceph/ceph.conf)配置文件中添加:
$ vi /etc/ceph/ceph.conf
[global]
.......
mon_pg_warn_max_per_osd = 1000
重启 monitor 服务:
$ systemctl restart ceph-mon.target
再次查看 ceph 集群状态。
$ ceph -s
cluster 1d64ac80-21be-430e-98a8-b4d8aeb18560
health HEALTH_OK
monmap e1: 1 mons at {node1=109.105.115.67:6789/0}
election epoch 6, quorum 0 node1
osdmap e49: 2 osds: 2 up, 2 in
flags sortbitwise,require_jewel_osds
pgmap v1273: 912 pgs, 23 pools, 4503 bytes data, 175 objects
13636 MB used, 497 GB / 537 GB avail
912 active+clean
“`
更多 Ceph 相关教程见以下内容:
在 CentOS 7.1 上安装分布式存储系统 Ceph http://www.linuxidc.com/Linux/2015-08/120990.htm
Ceph 环境配置文档 PDF http://www.linuxidc.com/Linux/2013-05/85212.htm
CentOS7 下部署 Ceph 集群(版本 10.2.2)http://www.linuxidc.com/Linux/2017-02/140728.htm
Ceph 的安装过程 http://www.linuxidc.com/Linux/2013-05/85210.htm
如何升级 Ceph 版本及注意事项 http://www.linuxidc.com/Linux/2017-02/140631.htm
HOWTO Install Ceph On FC12, FC 上安装 Ceph 分布式文件系统 http://www.linuxidc.com/Linux/2013-05/85209.htm
实验环境 Ceph 9.2.1 部署笔记 http://www.linuxidc.com/Linux/2016-11/137094.htm
Ubuntu 16.04 快速安装 Ceph 集群 http://www.linuxidc.com/Linux/2016-09/135261.htm
Ceph 的详细介绍:请点这里
Ceph 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142518.htm