Ceph分布式存储解决方案汇总
混合硬件架构方案建议
考虑成本,选择SSD与HDD混合硬件架构
- 方案一:使主本数据放在SSD OSD,副本数据放在HDD OSD,编写新的crush rule
- 方案二:存储池分配优先级,通过编写crush rule来实现,冷热数据分离
- 方案三:分层存储,ceph缓存代理技术
- 方案四:SSD固态盘分配block_db和block_wal分区做加速
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部署的英特尔解决方案
redhat官网给出不同应用场景时,其推荐的Ceph集群服务器硬件配置(包括CPU/Memory/Disk/Network)。仅作为服务器配置选择时参考,不做推荐使用。
场景包含如下:
场景:一侧重IOPS的(IOPS低延迟),例如实时性要求高的,但数据量不大的。比如订单的生成。
场景二:侧重Throughput的 (吞吐量优先),吞吐量大,但IOPS延时性要求适当。例如,实时流。
场景三:侧重容量和价格Cost/Capacity的(大存储量),例如大文件的存储。
企业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 硬件选型、性能调优
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参数
配置表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软件版本对比
版本号具有三个组成部分xyz。 x标识释放周期(例如,模仿为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
硬件选型方案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
- 建立映射关系
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
作者:AshJo
出处:https://www.cnblogs.com/ashjo009/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。