Ceph 的 osd 进程默认情况下是没有做内存限制的,会尽可能使用系统的内存来提高性能,所以很容易出现 Out of memory 从而被系统杀死进程的情况。

生产环境为了保证OSD的稳定,一般需要限制其内存。具体限制多少视主机内存而定,内存越高,性能越好。

首先查看我们的osd的情况

myceph@t-ceph-deploy:~/ceph-cluster$ ceph osd tree
ID   CLASS  WEIGHT    TYPE NAME               STATUS  REWEIGHT  PRI-AFF
 -1         21.00000  root default                                     
 -3          3.00000      host t-ceph-node01                           
  0    hdd   1.00000          osd.0               up   1.00000  1.00000
  1    hdd   1.00000          osd.1               up   1.00000  1.00000
  2    hdd   1.00000          osd.2               up   1.00000  1.00000

假设我们要限制t-ceph-node01节点上osd.2 这个osd,则可以通过下面命令实现:

ceph config set osd.2 osd_memory_target_autotune false
ceph config set osd.2 osd_memory_target 4G

配置完需要重启osd进程(注意要到osd节点上)

systemctl restart ceph-osd@2.service