内存不足导致OSD卡D状态

问题现象 && 问题原因

OSD进程占⽤内存会随着进程的运⾏时间增⻓⽽增⼤,当操作系统分配不出来内存时, ⼀般情况会通过OOM

Killer(Out Of Memory killer)机制杀掉进程达到释放空间的 ⽬的。但xfs为内核态进程oom killer机制仅对⽤户态进程⽣效,所以xfs进程⽆法 被kill,再次分配内存时由于操作系统内存不⾜⽽分配失败,导致进程卡死(D状

态), 进程D状态之后只能通过硬重启来解除D状态。

D状态

操作系统 message ⽇志

适⽤版本

所有版本通⽤

解决⽅法

确认为上述问题之后设置 noout 标志位 重启这台服务器即可

设置标志位

ceph osd set noout

关闭所有 OSD 进程参考 ceph 管理员⼿册

关闭其他服务,例如 ceph-mon ceph-mgr ceph-rgw等⽤户进程参考管理员⼿册

关闭服务器

通过带外关闭电源,或者其他⽅式关闭电源

启动服务器

启动服务器之后启动所有OSD -- 参考ceph管理员⼿册

等集群所有pg 恢复状态 active+clean 去除 noout标志位

ceph osd unset noout

验证步骤

ceph -s 状态 HEALTH_OK

优化建议

增⼤内存 内存计算公式如下:

OSD个数*6G+10G/(60%)

每个OSD规划使⽤6G内存,10G操作系统使⽤内存,平时使⽤率为40%

在OSD服务器上使⽤crontab定时执⾏脚本 files/cephx-osd-freemem.sh 释放OSD内存,每天晚上

24:00 执⾏⼀次,执⾏过程中会导致OSD IO有所下降, 该操作只能缓解

posted @ 2023-04-25 10:00  XU-NING  阅读(101)  评论(0编辑  收藏  举报