ceph性能调优

传统存储面临的挑战

  • 性能和容量不能兼顾
  • 利旧
  • 架构扩展

TOPIC

  • 硬件选型
    • 原则
      • 企业存储需求
        使用场景(负载类型)
    • 企业渴望什么、需要什么
      • TCO低
      • 高性能
      • 高可靠
    • 历程
      • 硬件选型
      • 部署调优
      • 性能测试
      • 架构灾备
      • 业务上线测试
      • 运行维护(故障处理、预案演练)
    • 企业场景
      • 高性能场景
        • 低TCO
        • 高IOPS
        • SSD PCIe/SSD NVMe。通常用于块存储,或者高IOPS工作负载。
      • 通用场景
        SSD PCIe SSD作为OSD 日志盘。
      • 大容量场景
        • 经济存储、廉价存储
        • 单机架8-14台
        • 每台服务器24T-72T(消费级硬盘即可:低功耗,大存储容量)
    • 硬件选型依赖的几个因素
      • CPU
        每个OSD至少有一个CPU核(建议)。
      • RAM
        • OSD日常操作需要内存500MB左右。
        • OSD数据恢复时需要更多的内存,实际值设置是4G。
      • 数据存储文件系统
        • 规划数据存储时考虑成本和性能的权衡。进行系统操作,同时多个后台程序对单个驱动器进行读写操作会显著降低性能。
        • 文件系统限制的考量
          • BTRFS对于生产环境不稳定,但是有能力记录journal和并行写入数据
          • XFS稳定性更好
          • EXT4稳定性更好
      • 网络
        生产环境存储集群集群网络是20G,业务网络是20G。
        外部业务网络:10G
      • 硬盘
        • 日志盘
          • SSD作为日志盘
          • 减少访问时间
          • 降低写延迟
          • 大幅提升吞吐量
          • 可以对每个物理SSD创建多个逻辑分区,每个逻辑分区映射一个OSD数据盘。通常10-20G日志大小足以满足大多数场景。
          • 更大的SSD,不要忘记为OSD增加filestore的最大和最小同步时间间隔。
          • SSD和OSD的比例:SATA/SAS SSD 1:4 PCIE/NVME上1:12或1:18(4个OSD共享一个SSD,12个OSD共享一个NVME)。
          • 单个SSD多个日志分区的问题(单个SSD故障,可能会导致数据丢失的问题。)
        • 数据盘
          • 数据盘接口(需要确认支持速率和协商速率是代表接口还是硬盘)
            • SATA3.0最大传输速度600MB。
              SATA3 12Gbps/s,10%的带宽折扣:12000Gbps/8*(1-10%)≈1350MB/s
              SAS 6Gps/s,10%带宽折扣:6000Gbps/8*(1-10%)=675MB
              • 双重SAS端口提供冗余,允许并行读写
              • SAS设备比SATA更低的URE,PG修复操作更少
          • OSD节点密度
            通常大量的小容量节点比少量的大容量节点要好。单个节点的容量尽量小于总容量的10%。
  • 小结
    - 正确认识企业IT环境:对立/共存
    - 在存储集群和底层基础设施上,企业拥有完全控制权
    - 场景驱动,做自己擅长的
    - 与时间赛跑

性能调优层面分析

硬件层面

  • 硬件规划:CPU、内存、网络
  • SSD选择:SATA SSD作为journal,Intel S3500是目前方案中的首选。预算足够的情况下,推荐使用PCIS SSD。性能会得到进一步提升,延迟有很大的改善。
    • Intel s3500性能参数
      在这里插入图片描述
    • 三星SATA 固态性能参数(待补充)
  • BIOS设置
    • 超线程(实际开启)
    • 关闭节能(实际关闭)。
    • NUMA设置
      查询方式:numactl --hardware
      建议关闭(实际开启)。如果要用可以通过cgroup将ceph-osd进程与某一个CPU Core以及同一Node下的内存进行绑定。
  • 系统层面
    • kernel
      • IO调度:使用Noop调度器替代默认的CFQ(针对机械盘则是设置deadline)
      echo noop > /sys/block/ssx/queue/schedule
      
      SATA SSD实际:
      cat /sys/block/sdg/queue/scheduler 
      [mq-deadline] kyber bfq none
      
      SATA HDD实际:
      cat /sys/block/sdf/queue/scheduler 
      [mq-deadline] kyber bfq none
      
      • 预读:read_ahead_kb
        • 建议:8192或更大
        • 实际:
        blockdev --getra /dev/sdg
        256
        blockdev --getra /dev/sdf
        256
        
      • 进程:pid_max
        • 建议:194303或更大
        • 实际:
        cat /proc/sys/kernel/pid_max 
        4194304
        
    • 调整CPU频率,使其运行在更高性能下
    • 内存
      • SMP(对称)和NUMA(建议关闭)
      • SWAP: vm.swaooiness=0:非活动内存页置换到交换分区里面(交换分区使用策略:0代表尽可能避免换页操作,/etc/sysctl.conf),实际如下:
      cat /proc/sys/vm/swappiness 
      60
      
      全闪内存支持,增加TCmalloc(非全闪默认采用该项)的Cache大小或者使用jemalloc替换(需要重新编译打包CEPH)TCmalloc
      • Cgroup
        在对程序做CPU绑定或者使用Cgroups(尽量别跨CPU)进行隔离时,主要不要跨CPU以便更好的命中内存和缓存
        Ceph进程和其他进程会相互抢占资源,使用Cgroup最好隔离措施。
        为Ceph预留足够多的CPU和内存资源,防止影响性能。
  • 网络层面
    • 巨型帧
      调整MTU=9000开启巨型帧,可以极大的提高性能(1522字节:1500负载+14以太网头部+4CRC+4vlantag)
      默认:
    cat /sys/class/net/bond0/mtu 
    1500
    
    • 中断亲和(在传输数据需要进行网络IO的时候都要触发网络中断,默认情况下网络中断都是CPU0,大量网络IO出现,处理IO中断会导致CPU0处于满负荷状态,更多IO的时候就无法处理,出现丢包和系统瓶颈)
      Linux 2.4内核之后引入了将特定中断绑定到指定的CPU技术,称为中断亲和。慎用irqbalance服务,建议还是根据系统规划,通过手动设置中断亲和。隔离部分CPU处理网卡中断。
    • 硬件加速
      • TOE网卡:可以将这些计算工作交给网卡上的协处理器完成。
      • RDMA:可以让应用程序在用户态直接将buffer(缓冲区)中的数据写入网卡(NIC)的内存中,以网络为载体,发送到远程网卡,直接写入应用缓存中。
      • DPDK(intel主推,社区还在实验中):抛弃了传统使用CPU中断处理数据包的方式,采用了轮询方式实现数据包处理过程,零拷贝存入用户态内存中,类似RDMA,避免内存拷贝,上下文切换的时间。
  • CEPH层面(filestore)
    • filestore max inline xattr size xfs,默认值:65536 #未确认项
    • filestore max inline xattrs xfs,默认值:10 #未确认项
    • filesotre xattr use omap: 为XATTRS使用object map,EXT4文件系统使用,XFS或者btrfs也可以使用。
      • 默认值:false
      • 建议值:true
      • 实际值:N版无该配置项
    • filestore max sync interval:从日志到数据盘最大同步间隔
      • 默认值:5
      • 建议值:15
      • 实际值 :15
    • filestore min sync interval:从日志到数据盘最小时间间隔
      • 默认值:0.1
      • 建议值:10
      • 实际值:5
    • filestore queue max ops:数据盘最大接受的操作数
      • 默认值:500
      • 建议值:25000
      • 实际值:25000
    • filestore queue max bytes:数据盘一次操作最大字节数(bytes)
      • 默认值:100<<20
      • 建议值:10485760
      • 实际值:104857600
    • filestore queue committing max ops:数据盘能够commit的操作数
      • 默认值:500
      • 建议值:5000
      • 实际值:N版无该项配置
    • filestore queue committing max bytes:数据盘能够commit的最大字节数
      • 默认值:100<<20
      • 建议值:10485760000
      • 实际值:N版无该项配置
    • filestore op threads:并发文件系统操作数
      • 默认值:2
      • 建议值:32
      • 实际值:32
    • PG Number调整
      Total PGs=(Total_number_of_OSD*100)/replicas

问题

  • 持续大量写至95%,既不能写,也不能读
  • 写悬崖的问题
  • 监控与预警

高级特性(缓存分区&QOS)

Cache Partition Manager(高速缓存分区功能)

传统高端存储系统的一个关键特性,可确保不同应用的服务质量。将Cache分为最多16个分区。每个分区的资源访问独立进行,不会互相串扰。根据应用的I/O特性不同,可以用多种不同的方法优化每个分区的分段大小。分段尺寸可设置为4KB、8KB、16KB、64KB、256KB、512KB等等。可调的分段尺寸将大大提高缓存访问的命中率。
根据应用的可靠性要求不同,对Cache的使用率要求不同,可将每个分区的缓存设为镜像模式、无镜像模式;每个分区对应的磁盘LUN可选择不同的条宽大小,尺寸可由16KB–128KB,最终实现分区缓存数据写入磁盘的优化操作。

QOS的控制

一般从优先级,I/O,带宽甚至专门的 缓存分区4个方面来控制。

  • 去重和压缩
    • 实现重复数据删除以及压缩,对存储来说则是个很大的挑战
    • 对于数据的备份与归档,使用重复数据删除技术是非常必要的。重复数据删除的实现,有很多种方式,例如可以后台处理方式,也可以在线处理。
    • 提供了压缩功能,就意味着后续访问需要解压缩,而压缩会带来资源的开销,阵列上有压缩卡,分布式存储呢。

双活和容灾

双活场景下,已经没有主和备的角色分别,是对称式的,两边会相互影响。这种影响很有可能导致一损俱损。双活只会增加运维的难度,而不会降低。双活就得预防脑裂。

异地容灾

通过互联网TCP/IP协议,将本地的数据实时备份到异地服务器中,可以通过异地备份的数据进行远程恢复,也可以在异地进行数据回退。
传统存储的双活利用虚拟化网关,实现起来多一层运维比较复杂,现在的趋势偏向存储阵列的双活。

CEPH优化之其他杂项

  • osd_enable_op_tracker:跟踪op执行时间
    • 默认:true
    • 建议:false(集群性能调整最佳性能后,建议关闭)
    • 实际:true
  • throttler_perf_counter:观察阙值是否瓶颈
    • 默认:true(默认开启)
    • 建议:false(集群性能调整最佳性能后,建议关闭)
    • 实际:true
  • ceph_sign_messages:如果对安全要求不高,可关闭
    • 默认:true
    • 建议:false
  • filestore_fd_cache
    • 默认:128
    • 建议:4096
    • 实际:128
  • filestore_fd_cache_shards
    • 默认:16
    • 建议:256
    • 实际:16

CEPH测试

  • 测试对象
  • 测试指标IOPS/MBPS
  • 测试工具
    • linux:fio、dd、rados bench
  • 测试参数
    • IO
    • 寻址空间
    • 队列深度
    • 读写模式,随机/顺序
  • 测试方法
    • 科学合理测试步骤

如何选用好存储

  • 底层协议
  • 兼容性
  • 产品定位,功能取舍
  • 针对特定市场应用存储
  • 市场认可的存储
    • 稳定性
    • 性能
    • 数据功能

ceph运维

  • 运维手册编制、预案手册
  • 部署、预案演练、故障处理、集群扩容
  • 3分技术7分运维
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IForFree

整理不易,望多支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值