Ceph分布式存储性能调优 一、系统配置调优1、设置磁盘的预读缓存echo8192sysblocksdaqueuereadaheadkb 复制代码 2、设置系统的进程数量echo4194303procsyskernelpidmax 复制代码 3、调整CPU性能 注意:虚拟机和部分硬件CPU可能不支持调整。 1)确保安装了内核调整工具:yumyinstallkerneltools 复制代码 2)调整为性能模式 可以针对每个核心做调整:echoperformancesysdevicessystemcpucpu{i}cpufreqscalinggovernor 复制代码 或者通过CPU工具进行调整:cpupowerfrequencysetgperformance 复制代码 支持五种运行模式调整:performance:只注重效率,将CPU频率固定工作在其支持的最高运行频率上,该模式是对系统高性能的最大追求。 powersave:将CPU频率设置为最低的所谓省电模式,CPU会固定工作在其支持的最低运行频率上,该模式是对系统低功耗的最大追求。 userspace:系统将变频策略的决策权交给了用户态应用程序,并提供相应接口供用户态应用程序调节CPU运行频率使用。 ondemand:按需快速动态调整CPU频率,一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率。 conservative:它是平滑地调整CPU频率,频率的升降是渐变式的,会自动在频率上下限调整,和ondemand模式的主要区别在于它会按需渐进式分配频率,而不是一味追求最高频 率。。 3)部分硬件可能不支持,调整会出现如下错误:〔rootCENTOS71〕cpupowerfrequencysetgperformanceSettingcpu:0Errorsettingnewvalues。Commonerrors:Doyouhaveproperadministrationrights?(superuser?)Isthegovernoryourequestedavailableandmodprobed?Tryingtosetaninvalidpolicy?Tryingtosetaspecificfrequency,butuserspacegovernorisnotavailable,forexamplebecauseofhardwarewhichcannotbesettoaspecificfrequencyorbecausetheuserspacegovernorisntloaded? 复制代码 4、优化网络参数 修改配置文件:vietcsysctl。dceph。conf 复制代码 配置内容:net。ipv4。tcprmem40968738016777216net。ipv4。tcpwmem40961638416777216net。core。rmemmax16777216net。core。wmemmax16777216 复制代码 执行生效:sysctlpetcsysctl。dceph。conf 复制代码 二、Ceph集群优化配置1、Ceph的主要配置参数 FILESTORE配置参数: journal配置参数: osdconfigtuning配置参数: osdrecoverytuning配置参数: osdclienttuning配置参数: 2、优化配置示例 三、调优最佳实践1、MON建议 Ceph集群的部署必须要正确规划,MON性能对集群总体性能至关重要。MON通常应位于专用节点上。为确保正确仲裁,MON的数量应当为奇数。2、OSD建议 每一个CephOSD都具有日志。OSD的日志和数据可能会放置于同一存储设备上。当写操作提交至PG中所有OSD的日志后,标志写操作已经完成。因此,更快的日志性能可以改进响应时间。 在典型的部署中,OSD使用延迟较高的传统机械硬盘。为最大化效率,Ceph建议将单独的低延迟SSD或NVMe设备用于OSD日志。管理员必须谨慎,不可将过多OSD日志放在同一设备上,因为这可能会成为性能瓶颈。应考虑以下SSD规格的影响:受支持写入次数的平均故障间隔时间(MTBF)IOPS能力(InputOutputOperationsPerSecond),每秒的读写次数数据传输速率总线SSD耦合能力 RedHat建议每个SATASSD设备不超过6个OSD日志,或者每个NVMe设备不超过12个OSD日志。3、RBD建议 RBD块设备上的工作负载通常是IO密集型负载,例如在OpenStack中虚拟机上运行的数据库。对于RBD,OSD日志应当位于SSD或NVMe设备上。对于后端存储,可以根据用于支持OSD的存储技术(即NVMeSSD、SATASSD或HDD),提供不同的服务级别。4、对象网关建议 Ceph对象网关上的工作负载通常是吞吐密集型负载。如果是音频和视频资料,可能会非常大。不过,bucket索引池可能会显示更多的IO密集型工作负载模式。管理员应当将这个池存储在SSD设备上。 Ceph对象网关为每个bucket维护一个索引,Ceph将这一索引存储在一个RADOS对象中。当bucket不断增长,数量巨大时(超过100,000个),索引性能会降低(因为只有一个RADOS对象参与所有索引操作)。 为此,Ceph可以在多个RADOS对象或者是分片中保存大型索引。管理员可以通过在ceph。conf配置文件中设置rgwoverridebucketindexmaxshards配置参数来启用这项功能。此参数的建议值是bucket中预计对象数量除以100,000。5、CephFs建议 存放目录结构和其他索引的元数据池可能会成为CephFS的瓶颈。可以将SSD设备用于这个池。每一个CephFS元数据服务器(MDS)会维护一个内存中缓存,用于索引节点等不同种类的项目。Ceph使用mdscachememorylimit配置参数限制这一缓存的大小。其默认值以绝对字节数表示,等于1GB,可以在需要时调优。cephosdmapcephfsdatatestcephcephosdlspoolsradoslspdefault。rgw。buckets。data