Ceph分布式存储实践应用之Ceph性能调优

1. 系统配置调优

  1. 设置磁盘的预读缓存

    echo "8192" > /sys/block/sda/queue/read_ahead_kb 
  2. 设置系统的进程数量

    echo 4194303 > /proc/sys/kernel/pid_max
  3. 调整CPU性能

    注意: 虚拟机和部分硬件CPU可能不支持调整。

    1) 确保安装了内核调整工具:

    yum -y install kernel-tools

    2)调整为性能模式

    可以针对每个核心做调整:

    echo performance > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor

    或者通过CPU工具进行调整:

    cpupower frequency-set -g performance

    支持五种运行模式调整:

    performance :只注重效率,将CPU频率固定工作在其支持的最高运行频率上,该模式是对系统高性能的最大追求。

    powersave:将CPU频率设置为最低的所谓“省电”模式,CPU会固定工作在其支持的最低运行频率上,该模式是对系统低功耗的最大追求。

    userspace:系统将变频策略的决策权交给了用户态应用程序,并提供相应接口供用户态应用程序调节CPU 运行频率使用。

    ondemand: 按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率。

    conservative: 它是平滑地调整CPU频率,频率的升降是渐变式的, 会自动在频率上下限调整,和ondemand模式的主要区别在于它会按需渐进式分配频率,而不是一味追求最高频率.。

    3) 部分硬件可能不支持,调整会出现如下错误:

    [root@CENTOS7-1 ~]# cpupower frequency-set -g performance
    Setting cpu: 0
    Error setting new values. Common errors:
    - Do you have proper administration rights? (super-user?)
    - Is the governor you requested available and modprobed?
    - Trying to set an invalid policy?
    - Trying to set a specific frequency, but userspace governor is not available,
       for example because of hardware which cannot be set to a specific frequency
       or because the userspace governor isn't loaded?
  4. 优化网络参数

    修改配置文件:

    vi  /etc/sysctl.d/ceph.conf 

    配置内容:

    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 16384 16777216
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216

    执行生效:

    sysctl -p /etc/sysctl.d/ceph.conf

2. Ceph集群优化配置

  1. Ceph的主要配置参数

    FILESTORE配置参数:

参数名描述默认值建议值
filestore xattr use omap为XATTRS使用object map,EXT4文件系统时使用,XFS或者btrfs也可以使用falsetrue
filestore max sync interval从日志到数据盘最大同步间隔(seconds)515
filestore min sync interval从日志到数据盘最小同步间隔(seconds)0.110
filestore queue max ops数据盘最大接受的操作数50025000
filestore queue max bytes数据盘一次操作最大字节数(bytes)100 << 2010485760
filestore queue committing max ops数据盘能够commit的操作数5005000
filestore queue committing max bytes数据盘能够commit的最大字节数(bytes)100 << 2010485760000
ilestore op threads并发文件系统操作数232

journal 配置参数:

参数名描述默认值建议值
osd journal sizeOSD日志大小(MB)512020000
journal max write bytesjournal一次性写入的最大字节数(bytes)10 << 201073714824
journal max write entriesjournal一次性写入的最大记录数10010000
journal queue max opsjournal一次性最大在队列中的操作数50050000
journal queue max bytesjournal一次性最大在队列中的字节数(bytes)10 << 2010485760000

osd config tuning 配置参数:

参数名描述默认值建议值
osd max write sizeOSD一次可写入的最大值(MB)90512
osd client message size cap客户端允许在内存中的最大数据(bytes)5242880002147483648
osd deep scrub stride在Deep Scrub时候允许读取的字节数(bytes)524288131072
osd op threadsOSD进程操作的线程数28
osd disk threadsOSD密集型操作例如恢复和Scrubbing时的线程14
osd map cache size保留OSD Map的缓存(MB)5001024
osd map cache bl sizeOSD进程在内存中的OSD Map缓存(MB)50128

osd - recovery tuning 配置参数:

参数名描述默认值建议值
osd recovery op priority恢复操作优先级,取值1-63,值越高占用资源越高104
osd recovery max active同一时间内活跃的恢复请求数1510
osd max backfills一个OSD允许的最大backfills数104

osd - client tuning 配置参数:

参数名描述默认值建议值
rbd cacheRBD缓存truetrue
rbd cache sizeRBD缓存大小(bytes)33554432268435456
rbd cache max dirty缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through25165824134217728
rbd cache max dirty age在被刷新到存储盘前dirty数据存在缓存的时间(seconds)15
  1. 优化配置示例

    [global]#全局设置
    fsid = xxxxxxxxxxxxxxx                           #集群标识ID 
    mon initial members = CENTOS7-1, CENTOS7-2, CENTOS7-3  #初始monitor (由创建monitor命令而定)
    mon host = 10.10.20.11,10.10.20.12,10.10.20.13         #monitor IP 地址
    auth cluster required = cephx                    #集群认证
    auth service required = cephx                           #服务认证
    auth client required = cephx                            #客户端认证
    osd pool default size = 2                             #默认副本数设置 默认是3
    osd pool default min size = 1                           #PG 处于 degraded 状态不影响其 IO 能力,min_size是一个PG能接受IO的最小副本数
    public network = 10.10.20.0/24                            #公共网络(monitorIP段) 
    cluster network = 10.10.20.0/24                           #集群网络
    max open files = 131072                                 #默认0#如果设置了该选项,Ceph会设置系统的max open fds
    
    ##############################################################
    [mon]
    mon data = /var/lib/ceph/mon/ceph-$id
    mon clock drift allowed = 1                             #默认值0.05 #monitor间的clock drift
    mon osd min down reporters = 13                         #默认值1 #向monitor报告down的最小OSD数
    mon osd down out interval = 600      #默认值300 #标记一个OSD状态为down和out之前ceph等待的秒数
    ##############################################################
    [osd]
    osd data = /var/lib/ceph/osd/ceph-$id
    osd journal size = 20000                                #默认5120  #osd journal大小
    osd journal = /var/lib/ceph/osd/$cluster-$id/journal    #osd journal 位置
    osd mkfs type = xfs                                     #格式化系统类型
    osd max write size = 512                   #默认值90 #OSD一次可写入的最大值(MB)
    osd client message size cap = 2147483648   #默认值100    #客户端允许在内存中的最大数据(bytes)
    osd deep scrub stride = 131072                      #默认值524288  #在Deep Scrub时候允许读取的字节数(bytes)
    osd op threads = 16                                         #默认值2 #并发文件系统操作数
    osd disk threads = 4                                         #默认值1 #OSD密集型操作例如恢复和Scrubbing时的线程
    osd map cache size = 1024                              #默认值500                 #保留OSD Map的缓存(MB)
    osd map cache bl size = 128                            #默认值50                #OSD进程在内存中的OSD Map缓存(MB)
    osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier"   #默认值rw,noatime,inode64  #Ceph OSD xfs Mount选项
    osd recovery op priority = 2                 #默认值10              #恢复操作优先级,取值1-63,值越高占用资源越高
    osd recovery max active = 10              #默认值15              #同一时间内活跃的恢复请求数 
    osd max backfills = 4                           #默认值10                  #一个OSD允许的最大backfills数
    osd min pg log entries = 30000           #默认值3000           #修建PGLog是保留的最大PGLog数
    osd max pg log entries = 100000         #默认值10000         #修建PGLog是保留的最大PGLog数
    osd mon heartbeat interval = 40           #默认值30            #OSD ping一个monitor的时间间隔(默认30s)
    ms dispatch throttle bytes = 1048576000 #默认值 104857600 #等待派遣的最大消息数
    objecter inflight ops = 819200                   #默认值1024           #客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限
    osd op log threshold = 50                            #默认值5                  #一次显示多少操作的log
    osd crush chooseleaf type = 0                       #默认值为1              #CRUSH规则用到chooseleaf时的bucket的类型
    filestore xattr use omap = true                         #默认false#为XATTRS使用object map,EXT4文件系统时使用,XFS或者btrfs也可以使用
    filestore min sync interval = 10                          #默认0.1#从日志到数据盘最小同步间隔(seconds)
    filestore max sync interval = 15                          #默认5#从日志到数据盘最大同步间隔(seconds)
    filestore queue max ops = 25000                        #默认500#数据盘最大接受的操作数
    filestore queue max bytes = 1048576000            #默认100   #数据盘一次操作最大字节数(bytes
    filestore queue committing max ops = 50000       #默认500     #数据盘能够commit的操作数
    filestore queue committing max bytes = 10485760000 #默认100 #数据盘能够commit的最大字节数(bytes)
    filestore split multiple = 8                                               #默认值2         #前一个子目录分裂成子目录中的文件的最大数量
    filestore merge threshold = 40                                        #默认值10       #前一个子类目录中的文件合并到父类的最小数量
    filestore fd cache size = 1024                                         #默认值128              #对象文件句柄缓存大小
    filestore op threads = 32                                                  #默认值2                    #并发文件系统操作数
    journal max write bytes = 1073714824                           #默认值1048560    #journal一次性写入的最大字节数(bytes)
    journal max write entries = 10000                                   #默认值100         #journal一次性写入的最大记录数
    journal queue max ops = 50000                                      #默认值50            #journal一次性最大在队列中的操作数
    journal queue max bytes = 10485760000                       #默认值33554432   #journal一次性最大在队列中的字节数(bytes)
    ##############################################################
    [client]
    rbd cache = true       #默认值 true      #RBD缓存
    rbd cache size = 335544320       #默认值33554432           #RBD缓存大小(bytes)
    rbd cache max dirty = 134217728     #默认值25165824      #缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through
    rbd cache max dirty age = 30     #默认值1                #在被刷新到存储盘前dirty数据存在缓存的时间(seconds)
    rbd cache writethrough until flush = false     #默认值true  #该选项是为了兼容linux-2.6.32之前的virtio驱动,避免因为不发送flush请求,数据不回写
    #设置该参数后,librbd会以writethrough的方式执行io,直到收到第一个flush请求,才切换为writeback方式。
    rbd cache max dirty object = 2     #默认值0              #最大的Object对象数,默认为0,表示通过rbd cache size计算得到,librbd默认以4MB为单位对磁盘Image进行逻辑切分
    #每个chunk对象抽象为一个Object;librbd中以Object为单位来管理缓存,增大该值可以提升性能
    rbd cache target dirty = 235544320   #默认值16777216    #开始执行回写过程的脏数据大小,不能超过 rbd_cache_max_dirty

3. 调优最佳实践

  1. MON建议

    Ceph 集群的部署必须要正确规划,MON 性能对集群总体性能至关重要。MON 通常应位于专用节点上。为确保正确仲裁,MON 的数量应当为奇数。

  2. OSD建议

    每一 个Ceph OSD 都具有日志。OSD 的日志和数据可能会放置于同一存储设备上。当写操作提交至 PG 中所有 OSD 的日志后,标志写操作已经完成。因此,更快的日志性能可以改进响应时间。

    在典型的部署中,OSD 使用延迟较高的传统机械硬盘。为最大化效率,Ceph 建议将单独的低延迟 SSD 或 NVMe 设备用于 OSD 日志。 管理员必须谨慎,不可将过多 OSD 日志放在同一设备上,因为这可能会成为性能瓶颈。应考虑以下SSD规格的影响:

    • 受支持写入次数的平均故障间隔时间 (MTBF)
    • IOPS 能力
    • 数据传输速率
    • 总线/SSD 耦合能力

    Red Hat 建议每个 SATA SSD 设备不超过 6 个 OSD 日志,或者每个 NVMe 设备不超过 12 个 OSD 日志。

  3. RBD建议

    RBD块设备上的工作负载通常是 I/O 密集型负载,例如在 OpenStack 中虚拟机上运行的数据库。对于 RBD,OSD 日志应当位于 SSD 或 NVMe 设备上。对于后端存储,可以根据用于支持 OSD 的存储技术(即 NVMe SSD、SATA SSD 或 HDD),提供不同的服务级别。

  4. 对象网关建议

    Ceph 对象网关上的工作负载通常是吞吐密集型负载。如果是音频和视频资料,可能会非常大。不过,bucket 索引池可能会显示更多的 I/O 密集型工作负载模式。管理员应当将这个池存储在 SSD 设备上。

    Ceph 对象网关为每个 bucket 维护一个索引,Ceph 将这一索引存储在一个 RADOS 对象中。当 bucket 不断增长, 数量巨大时(超过 100,000 个),索引性能会降低(因为只有一个 RADOS 对象参与所有索引操作)。

    为此, Ceph 可以在多个 RADOS 对象或者是分片 中保存大型索引。管理员可以通过在 ceph.conf 配置文件中设置 rgw_override_bucket_index_max_shards 配置参数来启用这项功能。此参数的建议值是 bucket 中预计对象数量除以 100,000。

  5. CephFs建议

    存放目录结构和其他索引的元数据池可能会成为 CephFS 的瓶颈。可以将 SSD 设备用于这个池。

    每一个CephFS 元数据服务器 (MDS) 会维护一个内存中缓存,用于索引节点等不同种类的项目。Ceph 使用 mds_cache_memory_limit 配置参数限制这一缓存的大小。其默认值以绝对字节数表示,等于 1 GB,可以在需要时调优。


本文由mirson创作分享,如需进一步交流,请加QQ群:19310171或访问www.softart.cn

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: CEPH是一种开源的分布式文件系统和对象存储系统,以其高可靠、可扩展和高性能的特点而受到广泛关注。《Ceph分布式存储实战》是一本关于CEPH分布式存储系统的实用指南,内容详细介绍了CEPH的架构、部署和运维等方面的知识,适合对CEPH感兴趣的读者学习和实践。 该书首先介绍了CEPH的基本概念和工作原理,包括集群、数据分布、数据一致性等重要内容。对于初次接触CEPH的读者来说,这些基础知识的讲解非常实用。接着,书中详细探讨了CEPH的架构,包括存储节点、元数据服务器、监控节点等组件的功能和相互关系。通过对CEPH的结构深入了解,读者可以更好地理解其内部工作机制。 此外,《Ceph分布式存储实战》还包含了CEPH的部署和配置指南,以及一些常见问题的解决方案。对于想要实际搭建CEPH集群的读者来说,这些指南非常有用。书中还介绍了CEPH的运维和监控方法,包括集群管理、容错处理、性能化等等。这些内容能帮助读者更好地维护和管理自己的CEPH系统。 总结来说,《Ceph分布式存储实战》是一本实用的CEPH指南,通过对CEPH的架构和运维等方面进行详细讲解,帮助读者深入了解CEPH的工作原理,掌握CEPH的实际应用。对于对CEPH感兴趣的读者来说,这本书是一本不可多得的参考资料。无论是初学者还是有一定经验的运维人员,都能从中获得实用的知识和技巧。 ### 回答2: 《ceph分布式存储实战》是一本介绍ceph分布式存储系统的实践指南,全书共分为六个部分。 第一部分简要介绍了ceph的基本概念和基础知识,包括ceph的架构和工作原理,以及分布式存储系统的设计理念和挑战。读者通过本部分可以了解到ceph的核心概念和基本原理,为后续的实战内容打下基础。 第二部分主要讲解了ceph的部署和配置,包括ceph的安装、环境配置和网络设置。此外,还介绍了如何创建存储集群、配置存储池和设置用户权限等。通过本部分的学习,读者可以掌握ceph的部署和配置方法,为后续的使用和维护工作打下基础。 第三部分重点介绍了ceph的数据管理和存储方案。包括数据分布和均衡、数据迁移和备份、以及故障恢复和容灾等方面。本部分通过具体的操作示例和案例分析,帮助读者理解ceph在实际应用中的数据管理和存储方案。 第四部分讲解了ceph性能和监控。包括如何ceph性能、如何监控ceph集群的状态和性能指标。同时,本部分还介绍了一些常见的问题和故障处理方法。通过本部分的学习,读者可以掌握ceph性能和故障处理的方法和技巧。 第五部分介绍了ceph的高级特性和扩展应用。包括缓存和加速、多租户和多数据中心等方面。本部分通过实战案例和实际应用场景的分析,帮助读者了解ceph的高级特性和扩展应用。 第六部分总结了整本书的内容,并展望了ceph的发展趋势和前景。通过本部分的学习,读者可以对ceph分布式存储技术有一个全面的了解,并能够根据实际需求进行部署和应用。 总的来说,《ceph分布式存储实战》是一本详实的实践指南,通过具体的操作示例和实际应用案例,帮助读者全面了解ceph分布式存储系统的基本原理和实践方法。无论是初学者还是有一定经验的读者,都可以通过阅读本书,掌握ceph的配置部署、数据管理、性能和扩展应用等方面的知识和技能。 ### 回答3: 《Ceph分布式存储实战pdf》是一本介绍Ceph分布式存储技术的实战指南。Ceph是一个开源的分布式存储平台,具有高可靠性、高扩展性和高性能的特点,可以用于构建私有云、公有云以及混合云等存储解决方案。 这本书主要内容包括Ceph的基本概念、架构和工作原理,以及Ceph的部署、配置和管理方法。读者可以从中学习到Ceph的各种组件和功能,如RADOS对象存储、RBD块设备、CephFS文件系统等,并深入了解它们的实际应用场景。 此外,本书还介绍了Ceph在企业中的应用案例,包括容器存储、虚拟化存储、大数据存储等。读者可以通过这些案例了解Ceph在不同场景中的具体应用方法和效果,并可以根据自己的需求选择相应的部署和管理策略。 《Ceph分布式存储实战pdf》除了提供理论知识外,还包含了丰富的实际操作指南和实验实例。读者可以按照书中的步骤进行一系列的实验,从而掌握Ceph的部署、配置和管理技巧,提升自己的实战能力。 总之,这本书是一本系统地介绍Ceph分布式存储技术的实战指南,适合对Ceph感兴趣的读者阅读。无论是初学者还是有一定经验的技术人员,都可以从中获得宝贵的知识和经验,更好地应用Ceph进行分布式存储实践工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦神-mirson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值