典型硬件资源配置建议:后端
组件 | CPU | 内存 | 网络 | 存储空间 |
---|---|---|---|---|
Monitor | 1vCore | 2GB | 1x 1GbE+ NICs | 单个Mon 10GB+ |
OSD | 1vCore | BlueStore后端,单个OSD 至少3 GB。裸容量每增长1 TB,则内存相应增长1 GB | 1x 1GbE+ NICs (建议10GbE+) | 一个OSD 对应一块独立的硬盘 |
对于采用的BlueStore的Ceph,将SSD 用在合适的地方通常能够显著提高性能:缓存
根据采用的硬件和集群规模,应当对集群有个大体的性能估算。集群性能影响因素主要有:硬盘(单个硬盘的性能和硬盘总数)、网络性能、内存和CPU。其中前两个是估算集群总体性能的主要因素,而根据场景,性能主要是IOPS和带宽。
通常:性能优化
集群读取性能:W*n*μ,不管在FileStore仍是BlueStore下 其中, W: 单块裸盘读带宽 n: OSD数量 μ: 损耗系数 通常为0.7~0.8
集群写入性能:[(W*n)/WAF]*μ W: 单块裸盘写入带宽 n: OSD数量 WAF: 写放大系数 μ: 损耗系数 X: 写入数据块大小(KiB) N: 多副本Size大小 K: 纠删码K值 M: 纠删码M值 FileStore 5: 5KiB, FileStore中transaction元数据的数据量大小(推测值) BlueStore 5: 5KiB, BlueStore中RocksDB的WAL数据大小(推测值) BlueStore 20: 20KiB, BlueStore小文件写入时产生的Zero-filled数据块大小
通过对集群的性能评估,结合主要的影响因素,试着找出性能瓶颈的大方向。网络
排除硬件瓶颈的可能,则能够从常见的几项对照排查修改。性能
使用缓存分层,能够根据需求在热层和冷层之间自动迁移数据,从而提升群集的性能。
采用的cache-tiering的前提是要搞清业务场景,由于cache-tiering 是工做负载相关的,不合适的场景匹配不合适的缓存模式(cache mode)反而会让总体性能降低。优化
write-back
:Ceph 客户端写数据至cache tier,随后会将数据迁移至storage tier。客户端读取数据也是直接读取cache tier,若cache tier 没有会从storage tier 中获取并迁移至cache tier。客户端的读写始终不直接跟storage tier 关联。 这种模式适用于可变数据的存储访问。首先,除storage pool 外,须要建立一个全SSD 的cache pool(经过修改 crushmap)。
根据实际场景:操作系统
必要操做步骤:
1)关联cache pool 和后端存储池:ceph osd tier add代理
2)设置cache-mode:ceph osd tier cache-mode writeback日志
3)将原storage pool的流量指向cache pool:ceph osd tier set-overlaycode
4)必要的缓存阈值设置,全部的请求在达到target_max_bytes 或target_max_objects 设定值时会被阻塞
ceph osd pool set target_max_bytes {#bytes} ceph osd pool set target_max_objects {#objects}
常见配置优化项及建议值,根据实际场景可再作调整。
默认应将RGW Cache 和RBD cache打开。
osd_scrub_begin_hour = 1 #根据业务实际设置在非业务时间scrub osd_scrub_end_hour = 5 osd_recovery_op_priority = 3 osd_client_op_priority = 63 osd_recovery_max_active = 10 osd_recovery_sleep = 0 osd_max_backfills = 10
rgw_cache_enabled = true # 开启RGW cache rgw_thread_pool_size = 2000 rgw_cache_lru_size = 20000 rgw_num_rados_handles = 128
rbd_cache_enabled = true # 开启RBD cache rbd_cache_size = 268435456 rbd_cache_max_dirty = 134217728 rbd_cache_max_dirty_age = 5