jjzjj

【ceph相关】ceph常见问题处理

Luxf0 2023-04-12 原文

一、pg相关

1、xx objects unfound

- 问题描述:

dmesg查看磁盘发现读写异常,部分对象损坏(处于objects nofound状态),集群处于ERR状态

root@node1101:~# ceph health detail
HEALTH_ERR noscrub,nodeep-scrub flag(s) set; 13/409798 objects unfound(0.003%);17 stuck requests are blocked > 4096 sec. Implicated osds 38
OSDMAP_FLAGS noscrub,nodeep-scrub flag(s) set
OBJECT_UNFOUND 13/409798 objects unfound (0.003%)
  pg 5.309 has 1 unfound objects
  pg 5.2da has 1 unfound objects
  pg 5.2c9 has 1 unfound objects
  pg 5.1e2 has 1 unfound objects
  pg 5.6a has 1 unfound objects
  pg 5.120 has 1 unfound objects
  pg 5.148 has 1 unfound objects
  pg 5.14b has 1 unfound objects
  pg 5.160 has 1 unfound objects
  pg 5.35b has 1 unfound objects
  pg 5.39c has 1 unfound objects
  pg 5.3ad has 1 unfound objects
REQUEST_STUCK 17 stuck requests are blocked > 4096 sec. Implicated osds 38
  17 ops are blocked > 67108.9 sec
  osd.38 has stuck requests > 67108.9 sec

- 处理措施:

将unfound pg强制删除,参考命令:ceph pg {pgid} mark_unfound_lost delete
注:如需批量删除unfound pg,则参考命令如下

for i in `ceph health detail | grep pg | awk '{print $2}'`;do ceph pg $i mark_unfound_lost delete;done

2、Reduced data availability: xx pgs inactive

- 问题描述:

磁盘出现读写异常,osd无法启动,强制替换故障盘为新盘加入到集群,出现pgs inactive(unkown)

root@node1106:~# ceph -s
  cluster:
    id:     7f1aa879-afbb-4b19-9bc3-8f55c8ecbbb4
    health: HEALTH_WARN
            4 clients failing to respond to capability release
            3 MDSs report slow metadata IOs
            1 MDSs report slow requests
            3 MDSs behind on trimming
            noscrub,nodeep-scrub flag(s) set
            Reduced data availability: 25 pgs inactive
            6187 slow requests are blocked > 32 sec. Implicated osds 41


  services:
    mon: 3 daemons, quorum node1101,node1102,node1103
    mgr: node1103(active), standbys: node1102, node1101
    mds: ceph-3/3/3 up  {0=node1103=up:active,1=node1102=up:active,2=node1104=up:active}, 2 up:standby
    osd: 48 osds: 48 up, 48 in
         flags noscrub,nodeep-scrub


  data:
    pools:   6 pools, 2888 pgs
    objects: 474.95k objects, 94.5GiB
    usage:   267GiB used, 202TiB / 202TiB avail
    pgs:     0.866% pgs unknown
             2863 active+clean
             25   unknown


root@node1101:~# ceph pg dump_stuck inactive
ok
PG_STAT STATE   UP UP_PRIMARY ACTING ACTING_PRIMARY 
1.166   unknown []         -1     []             -1 
1.163   unknown []         -1     []             -1 
1.26f   unknown []         -1     []             -1 
1.228   unknown []         -1     []             -1 
1.213   unknown []         -1     []             -1 
1.12f   unknown []         -1     []             -1 
1.276   unknown []         -1     []             -1 
1.264   unknown []         -1     []             -1 
1.32a   unknown []         -1     []             -1 
1.151   unknown []         -1     []             -1 
1.20d   unknown []         -1     []             -1 
1.298   unknown []         -1     []             -1 
1.306   unknown []         -1     []             -1 
1.2f7   unknown []         -1     []             -1 
1.2c8   unknown []         -1     []             -1 
1.223   unknown []         -1     []             -1 
1.204   unknown []         -1     []             -1 
1.374   unknown []         -1     []             -1 
1.b5    unknown []         -1     []             -1 
1.b6    unknown []         -1     []             -1 
1.2b    unknown []         -1     []             -1 
1.9f    unknown []         -1     []             -1 
1.2ac   unknown []         -1     []             -1 
1.78    unknown []         -1     []             -1 
1.1c3   unknown []         -1     []             -1 
1.1a    unknown []         -1     []             -1 
1.d9    unknown []         -1     []             -1 

- 处理措施:

强制创建unkown pg,参考命令:ceph osd force-create-pg {pgid}
注:如需批量创建unkown pg,则参考命令如下:

for i in `ceph pg dump_stuck inactive | awk '{if (NR>2){print $1}}'`;do ceph osd force-create-pg $i;done

二、OSD相关

1、osd端口与其他服务固定绑定端口冲突

- 问题描述:

osd先行启动,占用其他服务固定绑定端口,导致其他服务绑定端口失败,无法启动

- 处理措施:

考虑到其他服务涉及组件太多,担心修改不完全导致其他问题发生,尝试修改osd启动端口范围为其他服务之外

  • 修改osd作为服务端的启动端口范围
    ceph可通过ms_bind_port_minms_bind_port_max参数限制osd和mds守护进程使用端口范围,默认范围为6800:7300
    设置端口使用范围为9600:10000,追加参数设置至/etc/ceph/ceph.conf文件中[global]字段内
[root@node111 ~]# cat /etc/ceph/ceph.conf | grep ms_bind_port
ms_bind_port_min = 9600
ms_bind_port_max = 10000
[root@node111 ~]#
[root@node111 ~]# ceph --show-config | grep ms_bind_port
ms_bind_port_max = 10000
ms_bind_port_min = 9600
  • 修改osd作为客户端的启动端口范围
    osd作为客户端的启动端口为随机分配的,可通过内核去限制随机端口分配范围
    默认端口范围为1024:65000,修改端口范围为7500:65000
--默认端口范围为1024:65000
[root@node111 ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
1024    65000
--修改范围为7500:65000
[root@node111 ~]# sed -i 's/net.ipv4.ip_local_port_range=1024 65000/net.ipv4.ip_local_port_range=7500 65000/g' /etc/sysctl.conf 
[root@node111 ~]# sysctl -p

2、磁盘热插拔,osd无法上线

- 问题描述:

使用bluestore部署ceph集群,对osd所在磁盘进行热插拔操作,当重新插回之后,osd对应lvm不能自动恢复,导致osd无法上线成功

- 处理措施:

  • 查找故障osd对应uuid:
ceph osd dump | grep {osd-id} | awk '{print $NF}'
参考示例:查找osd.0对应uuid
[root@node127 ~]# ceph osd dump | grep osd.0 | awk '{print $NF}'
57377809-fba4-4389-8703-f9603f16e60d
  • 查找故障osd对应lvm路径:
ls /dev/mapper/ | grep `ceph osd dump | grep {osd-id} | awk '{print $NF}' | sed 's/-/--/g'`
参考示例:通过uuid查找对应lvm路径
注:由于lvm路径对uuid做了处理,需要sed 's/-/--/g'`将-替换为--
[root@node127 ~]# ls /dev/mapper/ | grep `ceph osd dump | grep osd.0 | awk '{print $NF}' | sed 's/-/--/g'`
ceph--3182c42e--f8d8--4c13--ad92--987463d626c8-osd--block--57377809--fba4--4389--8703--f9603f16e60d
  • 删除故障osd对应lvm路径
dmsetup remove /dev/mapper/{lvm-path}
参考示例:删除故障osd对应lvm路径
[root@node127 ~]# dmsetup remove /dev/mapper/ceph--3182c42e--f8d8--4c13--ad92--987463d626c8-osd--block--57377809--fba4--4389--8703--f9603f16e60d 
  • 重新激活所有lvm卷组
    注:此时可以查看到对应故障osd的lvm信息
vgchange -ay
  • 重新启动osd使得osd上线
systemctl start ceph-volume@lvm-{osd-id}-{osd-uuid}

三、集群相关

1、clock skew detected on mon.node2

- 问题描述:

集群mon节点时间偏差过大,出现clock skew detected on mon.node2 告警信息

- 处理措施:

1、检查集群mon节点时间偏差,使用chronyd时间进行集群时间同步
2、调大集群参数阈值,调整mon_clock_drift_allowed 参数值为2,调整mon_clock_drift_warn_backoff 参数值为30

sed -i "2 amon_clock_drift_allowed = 2" /etc/ceph/ceph.conf
sed -i "3 amon_clock_drift_warn_backoff = 30" /etc/ceph/ceph.conf
ceph tell mon.* injectargs '--mon_clock_drift_allowed 2'
ceph tell mon.* injectargs '--mon_clock_drift_warn_backoff 30'

注:相关参数说明如下:

[root@node147 ~]# ceph --show-config | grep mon_clock_drift
mon_clock_drift_allowed = 0.050000
--当mon节点之间时间偏移超过0.05秒,则不正常
mon_clock_drift_warn_backoff = 5.000000
--当出现5次偏移,则上报告警

有关【ceph相关】ceph常见问题处理的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  4. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  5. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  6. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  7. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  8. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  9. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  10. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

随机推荐