解决了在一台host上部署大于20个OSDs的linux系统参数的修改。
ceph部署环境:
硬件环境:4台4U的服务器,服务器配置信息如下:
1)CPU是Intel Xeon E5-2650(32核心);
2)内存大小是128GB;
3)服务器内共有35块HDD,其中一块HDD用于安装操作系统,另外34块HDD用于ceph存储;
4)网络采用public/cluster类型的网络;
软件环境。
1)操作系统:4台服务器都采用ubuntu-14.04.1;
2)ceph软件版本:Firefly最新版(0.80.11);
出现的问题:
当启动集群时,ceph集群中出现大量的非active+clean的PGs并且osdmap也不稳定,osd的状态在up和doan之间来回的切换。这样导致ceph集群迟迟不能处于可用状态。
问题原因:
由于在一个host上启动的osd数量太多了(34个OSDs),导致在ceph集群启动时以及ceph集群在recovery和rebalance时,由于产生大量的线程,该线程数量已经远远超越了linux内核默认配置的系统最大线程数。
解决方案:
linux内核默认的最大线程数是32768,可以通过命令#sysctl kernel.pid_max来查看。该最大线程数是针对桌面系统的,而对于服务器以及集群的系统来说,这个值是不够的。因此最好将该值设置成最大值,即:#sysctl -w kernel.pid_max=4194303。或者修改/etc/sysctl.conf文件,将kernel.pid_max = 4194303填写在/etc/sysctl.conf文件的末尾。
SUSE Linux Enterprise Server 11 SP3上轻松搭建Ceph集群:http://www.linuxdiyf.com/linux/10281.html