Ceph分布式存储解决方案汇总

混合硬件架构方案建议

考虑成本,选择SSD与HDD混合硬件架构

  • 方案一:使主本数据放在SSD OSD,副本数据放在HDD OSD,编写新的crush rule
  • 方案二:存储池分配优先级,通过编写crush rule来实现,冷热数据分离
  • 方案三:分层存储,ceph缓存代理技术
  • 方案四:SSD固态盘分配block_db和block_wal分区做加速

参考:Ceph分布式存储混合硬件架构方案

Ceph最佳实践

节点硬件配置

OSD节点配置

针 IOPS 密集型场景,服务器配置建议如下:
OSD:每个 NVMe SSD 上配置四个 OSD(lvm)。
Controller:使用 Native PCIe 总线。
网络:12osd/万兆口
内存:16G + 2G/osd
CPU:5c/ssd

针对高吞吐量型,服务器配置建议如下:
OSD: HDD/7200转
网络:12osd/万兆口
内存:16G + 2G/osd
CPU:1c/hdd

针对高容量型,服务器配置建议如下:
OSDs: HDD/7200转
网络:12osd/万兆口
内存:16G + 2G/osd
CPU:1c/hdd

CPU中的1C = 1GHz

其它各节点配置:
MDS:4C/2G/10Gbps
Monitor:2C/2G/10Gbps
Manager:2C/2G/10Gbps
Bluestore 下:slow、 DB 和 WAL 的配比
slow(SATA):DB(SSD):WAL(NVMe SSD)=100:1:1

ceph集群实践方案

硬件推荐

以1PB为例,高吞吐量型

OSD节点
数量:21
CPU:16c
内存:64G
网络:10Gbps * 2
硬盘:7200转HDD/4T * 12 (12个OSD + 1个系统)
系统:Ubuntu 18.04

Monitor节点
数量:3
CPU:2c
内存:2G
网络:10Gbps * 2
硬盘:20G
系统:Ubuntu 18.04

Manager节点
数量:2
CPU:2c
内存:2G
网络:10Gbps * 2
硬盘:20G
系统:Ubuntu 18.04

MDS(对于cephFS)
数量:2
CPU:4c
内存:2G
网络:10Gbps * 2
硬盘:20G
系统:Ubuntu 18.04

Intel硬件方案白皮书

PCIe/NVMe固态盘: 机械硬盘 1:12。英特尔PCIe/NVMe P3700用作日志盘

SATA固态盘: 机械硬盘 1:4。英特尔SATA P3700用作日志盘

良好配置 更好配置 最好配置
CPU 英特尔至强处理器 E5-2650v3 英特尔至强处理器 E5-2690 英特尔至强处理器 E5-2699v3
网卡 10GbE 10GbE * 2 10GbE*4 + 2 * 40GbE
驱动器 1 * 1.6TB P3700 + 12 * 4T SAS(1:12)(P3700用于日志和高速缓存驱动器) 1 * 800GB P3700 + 4*1.6TB S510(P3700用于日志和高速缓存驱动器) 4-6 个 2TB P3700
内存 64GB 128GB >=128GB

PCIe/NVMe固态盘可用作日志驱动器,大容量低成本SATA固态盘用作OSD数据驱动器。对于需要较高性能、尤其使需要较高IOPS和SLA且具有中等存储容量要求的用例/应用,该配置最为经济高效

参考: 面向Ceph部署的英特尔解决方案

Ceph性能优化的新方法和思路

redhat官网给出不同应用场景时,其推荐的Ceph集群服务器硬件配置(包括CPU/Memory/Disk/Network)。仅作为服务器配置选择时参考,不做推荐使用。

场景包含如下:

场景:一侧重IOPS的(IOPS低延迟),例如实时性要求高的,但数据量不大的。比如订单的生成。

场景二:侧重Throughput的 (吞吐量优先),吞吐量大,但IOPS延时性要求适当。例如,实时流。

场景三:侧重容量和价格Cost/Capacity的(大存储量),例如大文件的存储。

Red Hat CEPH 部署硬件配置指导

企业ceph 应用版本选择以及采用ssd+sata 应用bulestore引擎的建议

(1)一般LTS版本是当前年份往过去退2年左右,所以,现在的稳定版是M版mimic。
(2)wal 是 RocksDB 的write-ahead log, 相当于之前的 journal 数据,db 是 RocksDB 的metadata 信息。在磁盘选择原则是 block.wal > block.db > block。当然所有的数据也可以放到同一块盘上。
(3)默认情况下, wal 和 db 的大小分别是 512 MB 和 1GB, 官方建议调整block.db 是主设备 4% ,而block.wal分为6%左右,2个加起来10%左右。

ceph 分布式存储硬件规划以及运维的考虑

https://www.talkwithtrend.com/Question/433987?order=rec

关于Ceph性能优化与硬件选型|万字长文

http://vlambda.com/wz_x6mXhhxv3M.html

SSD固态硬盘的接口类型

  • SATA
  • PCI-E
  • NVMe

https://blog.csdn.net/shuai0845/article/details/98330290

推荐SSD型号

  • Seagate Nytro 1351/1551
  • HGST SN260
  • Intel P4500
  • Intel P3700
  • Intel S3500
  • Intel S4500
  • Intel SSD 730 series
  • Intel D3-S4510 SSD
  • Micron 5100/5200和soon 5300

Intel S37系列或者S46系列,有钱上Intel P系列

配置表1

为了使ceph集群运行的更稳定,综合性价比,做出如下的硬件配置:

名称 数量 说明
OS Disk 2*600G SAS (SEAGATE 600GB SAS 6Gbps 15K 2.5英寸) 根据预算选择SSD、SAS、SATA。RAID 1 ,防止系统盘故障,引发ceph集群问题
OSD Disk 8*4T SAS (SEAGATE 4T SAS 7200) 根据预算选择SAS或者SATA盘,每台物理机配置8块4T磁盘,用于存放数据。NoRAID
Monitor Disk 1*480G SSD (Intel SSD 730 series) 用于monitor 进程的磁盘,选择ssd,速度更快
Journal Disk 2*480G SSD (Intel SSD 730 series) ssd磁盘,每块分4个区,对应4个osd,一台节点总计8个journal分区,对应8个osd。NoRAID
CPU E5-2630v4 * 2 综合预算,选择cpu,越高越好
Memory >=64G 综合预算,不差钱上128G内存
NIC 40GB * 2 光口 + 公网IP 40GB网卡可以保证数据同步速度(前端网络和后端网络)

CPU

每一个osd守护进程至少有一个cpu核
计算公式如下:

((cpu sockets * cpu cores per socket * cpu clock speed in GHZ)/No. of OSD) >= 1
 
Intel Xeon Processor E5-2630 V4(2.2GHz,10 core)计算:
  1 * 10 * 2.2 / 8 = 2.75  #大于1, 理论上能跑20多个osd进程,我们考虑到单节点的osd过多,引发数据迁移量的问题,所以限定了8个osd进程

内存

1个osd进程至少需要1G的内存,不过考虑到数据迁移内存占用,建议1个osd进程预配2G内存。
在作数据恢复时1TB数据大概需要1G的内存,所以内存越多越好

磁盘

系统盘

根据预算选择ssd、sas、sata磁盘,必须做raid,以防因为磁盘引发的宕机

OSD 磁盘

综合性价比,选择sas或者sata磁盘,每块大小4T。如果有io密集型的业务,也可单独配备性能更高的ssd作为osd磁盘,然后单独划分一个region

Journal 磁盘

用于日志写入,选择ssd磁盘,速度快

Monitor 磁盘

用于运行监控进程的磁盘,建议选择ssd磁盘。如果ceph的monitor单独运行在物理机上,则需要2块ssd磁盘做raid1,如果monitor与osd运行在同一个节点上,则单独准备一块ssd作为monitor的磁盘

NIC

一个osd节点是配置2块10GB网卡,一个作为public网络用于管理,一个作为cluster网络用于osd之间的通信

参考:

ceph-硬件配置

ceph 硬件选型、性能调优

1、应用场景挑选

  • IOPS低延迟——块存储
  • 吞吐量优先——块存储、文件系统、对象存储
  • 大存储量——对象存储、文件系统

2、硬件选型建议与调优

  • CPU:一个OSD进程分配一个CPU核【((cpu sockets * cpu cores per soket * cpu clock speed in GHZ) /No.Of OSD)>=1】

  • 内存:一个OSD进程至少分配1GB,恢复数据时1TB占1GB内存,所以最好是分配2G RAM;节点上有mon和mds进程需要考虑分配2GB以上或更多的内存空间。RAM越高,cephfs性能越好

  • 网卡:大型集群(数十个节点)应使用万兆网卡。数据恢复和重新平衡期间,网络很重要,如果有10G的网络会缩短集群恢复的时间。集群节点内,建议使用双网卡,考虑分离cilent和cluster网络

  • 硬盘:SSD做日志盘,10-20GB;建议4个OSD数据盘配一个SSD;SSD选择:Intel SSD DC S3500 Series。

    在sata/sas ssd上获取高性能,ssd和osd的比例应该为1:4,也就是说4个OSD数据硬盘可共享一个ssd

    PCIe或者NVMe闪存设备的情况取决也设备性能,ssd和osd壁垒可以达到1:12或者1:18

  • OSD节点密度。osd数据分区Ceph osd节点的密度也是影响集群性能、可用容量和TCO的一个重要因素,一般来说大量的小容量量节点比少量的大容量节点要好

  • BIOS开启VT和HT;关闭节能;关闭NUMA

3、操作系统调优

  • read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作
  • 最大进程数调整
  • 关闭交换分区
  • SSD的IO调度使用:NOOP 机械的IO调度使用:deadline
  • CPU频率
  • cgroups——使用cgroup绑定ceph的CPU,以及限制内存

4、网络调优

  • MTU设置9000
  • 手动设置中断亲和或者使用irqbalance
  • 打开TOE:ethtool -K ens33 tso on
  • RDMA
  • DPDK

5、ceph调优

  • PG数调整【Total_PGs=(Total_numbers_of_OSD * 100) / max_replication_count】

  • client参数

  • OSD参数

  • -recovery tuning参数

Ceph性能优化总结v0.94

配置表2

适用场景:热数据应用/虚拟化场景

设备 具体配置 数量
CPU Intel Xeon E5-2650 v3 2
内存 64G DDR4 4
OS盘 2.5英寸Intel S3500系列 240GB SSD(RAID1) 2
SSD盘 Intel S3700 400GB 12
万兆网卡 Intel 双口万兆 (含多模模块) 2

选型考虑

Ceph软件版本对比

版本号具有三个组成部分xyzx标识释放周期(例如,模仿为13)。 y标识发布类型:

  • x.0.z-开发版本(面向早期测试者)
  • x.1.z-候选发布版(对于测试集群用户)
  • x.2.z-稳定/错误修正版本(针对用户)
luminous 12 mimic 13 nautilus 14 Octopus 15
date 2017.10 2018.5 2019.3 2020.3
version 12.2.x 13.2.x 14.2.x 15.2.x
dashboard v1 没有管理功能 v2 具有基本的管理功能 v2 具备更多的管理功能 Restful-API需要Python3支持
bluestore 支持 稳定支持 稳定支持 有改进和性能提升
kernel 4.4.z 4.9.z 4.9.z 4.14.z 4.9.z 4.14.z CentOS8 4.14以上

注:每一个Ceph社区稳定版本(TLS版本)的发布更新周期一般为当前年份往过去退2年左右,也就是说2020年最新的稳定版本应该为mimic 13版本。生成环境建议使用mimic 13.2.x

Ceph O版本升级概况

硬件选型方案1

以服务器PowerEdge R720为例

设备 配置 数量 说明
CPU Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 2 英特尔至强系列处理器 每个OSD守护进程分配1 cores
Memory >=64G 每个OSD守护进程分配1G-2G,进程占用和数据迁移恢复占用内存,内存越大越好
OS Disk Intel DC S3500 240GB 2.5英寸 2 RAID1(系统盘镜像冗余,防止系统盘故障,引发ceph集群问题
OSD Disk Intel DC S4500 1.9TB 2.5英寸 12 NORAID bluestore部署
NIC 千兆网卡+双口万兆(多模光纤) 3 1个公网IP+前端网络(Public Network)+后端网络(Cluster Network)

注:针 IOPS 密集型场景,全部基于SSD进行构建,保证性能最优的同时并充分发挥bluestore针对于SSD的特性优化,而且利于部署和后期集群的维护,且有效降低运维的难度。另外全闪存的应用场景还必须考虑使用到更高性能的CPU。不过因为全部用SSD固态硬盘部署,预算的硬件成本会很高

硬件选型方案2

设备 配置 数量 说明
CPU Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 2 英特尔至强系列处理器 每个OSD守护进程分配1 cores
Memory >=64G 每个OSD守护进程分配1G-2G,守护进程和数据迁移恢复占用内存,内存越大越好
OS Disk SSD / HDD 240GB 2.5英寸 2 RAID1(系统盘的镜像冗余)
SSD Disk Intel DC P3700 2TB (1:12) 2 bulestore日志和高速缓存驱动器;cache pool缓冲存储池
HDD Disk 4T SAS / SATA HDD 2.5英寸 12 NORAID,用于OSD的数据存储
NIC 千兆网卡+双口万兆(多模光纤) 3 1个公网IP+前端网络(Public Network)+后端网络(Cluster Network)

注:针 IOPS 密集型场景,由于使用选择SSD与HDD混合硬件方案,硬件成本会降低,但是性能上由于是混合硬盘方案,bluestore带来的性能优化特性可能不会很明显,还需要考虑混合架构的优化。且使用PCIe物理接口的固态硬盘,后期的硬件更换也是一个问题,也会导致Ceph集群运维难度的大大增加。

硬件选型方案3

设备 配置 数量 说明
CPU Intel Xeon E5-2650 v3/E5-2630v4/E5-2690/Intel Xeon E5-2683 v4 2 英特尔至强系列处理器 每个OSD守护进程分配1 cores
Memory >=64G 每个OSD守护进程分配1G-2G,进程占用和数据迁移恢复占用内存,内存越大越好
OS Disk Intel DC S3500 240GB 2.5英寸 2 RAID1(系统盘镜像冗余,防止系统盘故障,引发ceph集群问题
HDD Disk 7200转 4T SAS / SATA HDD 2.5英寸 12 NORAID,组成OSD的数据存储
NIC 千兆网卡+双口万兆(多模光纤) 3 1个公网IP+前端网络(Public Network)+后端网络(Cluster Network)

注:以1PB为例,高吞吐量型。OSD全部用HDD部署,系统盘SSD做RAID1保障冗余

硬件选型方案4

设备 配置 数量 说明
CPU Intel Xeon E5-2650 v3/E5-2630v4/E5-2690 2 英特尔至强系列处理器 每个OSD守护进程分配1 cores
Memory >=64G 每个OSD守护进程分配1G-2G,进程占用和数据迁移恢复占用内存,内存越大越好
OS Disk Intel DC S3500 240GB 2.5英寸 2 RAID1(系统盘镜像冗余,防止系统盘故障,引发ceph集群问题
SSD Disk PCIe/NVMe 4T 2 一块用于创建cache pool,另一块分区用于给osd disk分配wal和db
HDD Disk 7200转 4T SAS / SATA HDD 2.5英寸 12 NORAID,组成data pool。用于OSD的数据存储
NIC 千兆网卡+双口万兆(多模光纤) 3 1个公网IP+前端网络(Public Network)+后端网络(Cluster Network)

注:使用混合硬盘方案,SSD 盘组成cache pool,HDD组成data pool。利用SSD性能优势,还可以用于部署bluestore时指定wal和db,给HDD osd disk提升性能。

硬件选型方案5

数据参考:鲲鹏分布式存储解决方案

Linux块层SSD cache方案:Bcache

bcache技术+bluestore引擎提升HDD+SSD混合存储的最大性能

  • 安装bcache-tool
  • Linux升级到4.14.x内核
  • 创建后端设备 make-bcache -B /dev/sdx
    • 格式化bcache0
  • 创建前端设备 make-bcache -C /dev/sdx
  • 建立映射关系

bcache配置使用

OSD存储池启用压缩功能

ceph osd pool set compression_

硬件调优

NVMe SSD调优

  • 目的

    为减少数据跨片开销。

  • 方法

    将NVMe SSD与网卡插在统一Riser卡。

内存插法调优

  • 目的

    内存按1dpc方式插将获得最佳性能,即将DIMM0插满,此时内存带宽最大。

  • 方法

    优先插入DIMM 0,即插入DIMM 000、010、020、030、040、050、100、110、120、130、140、150插槽。三位数字中,第一位代表所属CPU,第二位代表内存通道,第三位代表DIMM,优先将第三位为0的插槽按内存通道从小到大依次插入。

系统调优

OS配置参数

参数名称 参数含义 优化建议 配置方法
vm.swappiness swap为系统虚拟内存,使用虚拟内存会导致性能下降,应避免使用。 默认值:60修改完后是否需要重启:否现象:用到swap时性能明显下降修改建议:关闭swap内存的使用,将该参数设定为0。 执行命令sudo sysctl vm.swappiness=0
MTU 网卡所能通过的最大数据包的大小,调大后可以减少网络包的数量以提高效率。 默认值:1500 Bytes修改完后是否需要重启:否现象:可以通过ip addr命令查看修改建议:网卡所能通过的最大数据包的大小设置为9000 Bytes。 执行命令vi /etc/sysconfig/network-scripts/ifcfg-$(Interface),并增加MTU="9000"****说明:${Interface}为网口名称。完成后重启网络服务。service network restart
pid_max 系统默认的“pid_max”值为32768,正常情况下是够用的,但跑重量任务时会出现不够用的情况,最终导致内存无法分配的错误。 默认值:32768修改完后是否需要重启:否现象:通过cat /proc/sys/kernel/pid_max查看修改建议:设置系统可生成最大线程数为4194303。 执行命令echo 4194303 > /proc/sys/kernel/pid_max
file-max “file-max”是设置系统所有进程一共可以打开的文件数量。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,则应该增加这个值。 默认值:13291808修改完后是否需要重启:否现象:通过cat /proc/sys/fs/file-max查看修改建议:设置系统所有进程一共可以打开的文件数量,设置为cat /proc/meminfo | grep MemTotal | awk '{print $2}' 所查看到的值。 执行命令echo ${file-max} > /proc/sys/fs/file-max****说明:${file-max}为cat /proc/meminfo | grep MemTotal | awk '{print $2}' 所查看到的值。
read_ahead Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞。鉴于从内存读取比从磁盘读取要快很多,预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。 默认值:128 kb修改完后是否需要重启:否现象:预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间。通过/sbin/blockdev --getra /dev/sdb查看修改建议:通过数据预读并且记载到随机访问内存方式提高磁盘读操作,调整为8192 kb。 执行命令/sbin/blockdev --setra /dev/sdb****说明:此处以“/dev/sdb”为例,对所有服务器上的所有数据盘都要修改。
I/O Scheduler Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。 默认值:CFQ修改完后是否需要重启:否现象:要根据不同的存储器来设置Linux I/O 调度器从而达到优化系统性能。修改建议:I/O调度策略,HDD设置为deadline,SSD设置为noop。 执行命令echo deadline > /sys/block/sdb/queue/scheduler****说明:此处以“/dev/sdb”为例,对所有服务器上的所有数据盘都要修改。
nr_requests 在Linux系统中,如果有大量读请求,默认的请求队列或许应付不过来,幸好Linux 可以动态调整请求队列数,默认的请求队列数存放在“/sys/block/hda/queue/nr_requests”文件中 默认值:128修改完后是否需要重启:否现象:通过适当的调整nr_requests 参数可以提升磁盘的吞吐量修改建议:调整硬盘请求队列数,设置为512。 执行命令echo 512 > /sys/block/sdb/queue/nr_requests****说明:此处以“/dev/sdb”为例,对所有服务器上的所有数据盘都要修改。

网络性能参数调优

注意具体的网卡型号来进行适度调优

  • irqbalance:关闭系统中断均衡服务;网卡中断绑核
  • rx_buff
  • ring_buff:增加网卡吞吐量
    • 查看当前buffer大小:ethtool -g <网卡名称>
    • 调整buffer大小:ethtool -G rx 4096 tx 4096
  • 打开网卡lro功能

网卡中断绑核的步骤

# 查询网卡归属于哪个numa节点
cat /sys/class/net/<网口名>/device/numa_node

# lscpu命令查询该numa节点对应哪些CPU core

# 查看网卡中断号
cat /proc/interrupts | grep <网口名> | awk -F ':' '{print $1}'

# 将软中断绑定到该numa节点对应的core上
echo <core编号> > /proc/irq/<中断号>/smp_affinity_list

注:NUMA的功能最好一开始就在BIOS设置中关闭,可减少不必要的绑核操作!

Ceph调优

Ceph配置调优

ceph.conf

[global]#全局设置
fsid = xxxxxxxxxxxxxxx                           #集群标识ID 
mon host = 10.0.1.1,10.0.1.2,10.0.1.3            #monitor IP 地址
auth cluster required = cephx                    #集群认证
auth service required = cephx                           #服务认证
auth client required = cephx                            #客户端认证
osd pool default size = 3                             #最小副本数 默认是3
osd pool default min size = 1                           #PG 处于 degraded 状态不影响其 IO 能力,min_size是一个PG能接受IO的最小副本数
public network = 10.0.1.0/24                            #公共网络(monitorIP段) 
cluster network = 10.0.2.0/24                           #集群网络
max open files = 131072                                 #默认0#如果设置了该选项,Ceph会设置系统的max open fds
mon initial members = node1, node2, node3               #初始monitor (由创建monitor命令而定)
##############################################################
[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

PG分布调优

参数名称 参数说明 优化建议
pg_num Total PGs = (Total_number_of_OSD * 100) / max_replication_count,得出的结果向上取到最近的2的整数次幂。 默认值:8修改完后是否需要重启:否现象:pg数量太少的话会有warning提示。修改建议:根据计算公式具体计算得到的值
pgp_num pgp数量设置为与pg相同。 默认值:8修改完后是否需要重启:否现象:pgp数量建议与pg数量相同修改建议:根据计算公式具体计算得到的值
ceph balancer mode 使能balancer均衡器插件,并设置均衡器插件模式为“upmap”。 默认值:none修改完后是否需要重启:否现象:若PG数量不均衡会出现个别OSD负载较大而成为瓶颈。修改建议:upmap

OSD绑核

在BIOS关闭NUMA,可跳过此步骤 https://blog.csdn.net/qq_34065508/article/details/103358812

绑核方法:

  • numactl
  • cgroup
  • taskset

Bcache使能调优

Bcache是Linux内核块层cache,它使用SSD来作为HDD硬盘的cache,从而起到加速作用。Bcache内核模块需要重新编译内核使能。

zlib硬件加速调优

硬件选型方案6

计算 CentOS7 最新版 存储 CentOS8 最新版

硬件推荐列表

计算节点: R630 双CPU 1系统盘

存储节点内存根据所配容量计算 每TB容量2GB内存 + 16GB缓存 1系统盘

存储节点3.5(SAS/SATA): R730/R720 (单CPU适用SATA/双CPU适用于多NVME高性能)
存储节点2.5(SATA/U2): R630(10盘位 SATAx6 U2x4)

硬盘推荐

HDD(企业级): 希捷或西数HDD
SATA-SSD(企业级): 英特尔S3610/S3710(MLC) 三星PM883 镁光5200MAX
高性能 U2(可做存储盘): 英特尔P4600/P4500/P3700/P3600/P3500 三星PM963
高性能 PCI-E NVME(可做缓存盘): 傲腾905P/900P 英特尔/P4700/P3700 三星1725a/1725b

网卡:Mellanox ConnectX-3(支持RDMA)

计算节点

云平台,给客户虚拟机提供计算资源

节点数量:三台

硬件 配置
服务器 Dell R730
CPU E5-2650 v3 * 2
内存 128GB
硬盘 系统盘(RAID1) + 对接后端的Ceph分布式存储
网卡 40G ib网卡(存储管理网络) + G口板载网卡双绑(出口网络)
OS CentOS 7 最新版本
Kernel 默认内核

存储节点

对接云平台,提供分布式存储

节点数量:三台

硬件 配置
服务器 Dell R630
CPU E5-2609 v3 * 2
内存 128GB
硬盘 系统盘(RAID1) + SSD(NVMe/PCI-E/SATA3) + HDD(SAS) 2.5英寸
网卡 40G万兆 ib网卡 * 2 (前端管理网络+后端存储网络)+ 公网IP * 1
OS CentOS 7 最新版本
Kernel 默认内核
Ceph v14.2.10 (nautilus) OSD+MON+MDS+MGR

三节点,三副本

方案一:Bluestore-Bluefs(block_db+block_wal) + HDD数据盘

intel DC S3700/S3710 * 1(400G) 【¥3000】 + 5 * HDD(2T) 【¥2000】

total:10T

方案二:SSD做cache池 + Bluestore-Bluefs(block_db+block_wal) + HDD数据盘做volume池

intel DC S4600/S4500 * 2 (480G) 【¥2000】 + intel DC S3700/S3710(200G) 【¥3000】* 1 + 3 * HDD(2T) 【¥2000】

total:cache(1T)+volume(6T)

方案三:纯HDD数据盘

DeLL SAS HDD(2T) * 6 【¥2000】

total:12T

方案四:纯SSD数据盘

intel DC S4600/S4500 * 6 (480G) 【¥2000】

total:2.4T

posted @ 2020-08-18 21:59  AshJo  阅读(5836)  评论(0编辑  收藏  举报