《Ceph 架构及性能优化》由会员分享,可在线阅读,更多相关《Ceph 架构及性能优化(7页珍藏版)》请在金锄头文库上搜索。
1、对分布式存储系统的优化离不开以下几点:1. 硬件层面硬件规划 SSD选择 BIOS设置2. 软件层面 Linux OS Ceph Configurations PG Number 调整 CRUSH Map3. 其他因素1硬件层面1、CPU ceph-osd进程在运行过程中会消耗CPU资源,所以一般会为每一个ceph-osd进 程绑定一个CPU核上。 ceph-mon进程并不十分消耗CPU资源,所以不必为ceph-mon进程预留过多的 CPU资源。 ceph-msd也是非常消耗CPU资源的,所以需要提供更多的CPU资源。2、内存ceph-mon和ceph-mds需要2G内存,每个ceph-osd
2、进程需要1G内 存。3、网络万兆网络现在基本上是跑Ceph必备的,网络规划上,也尽量考虑分离cilent 和cluster网络。网络接口上可以使用bond来提供高可用或负载均衡。4、SSDSSD在ceph中的使用可以有几种架构 a、ssd 作为 Journal b、ssd作为高速ssd pool(需要更改crushmap) c、ssd 做为 tier pool5、BIOS a、开启VT和HT, VH是虚拟化云平台必备的,HT是开启超线程单个处理器 都能使用线程级并行计算。 b、关闭节能设置,可有一定的性能提升。 c、NUMA思路就是将内存和CPU分割为多个区域,每个区域叫做NODE,然后 将N
3、ODE高速互联。node内cpu与内存访问速度快于访问其他node的内存, NUMA可能会在某些情况下影响ceph-osd。解决的方案,一种是通过BIOS关 闭NUMA,另外一种就是通过cgroup将ceph-osd进程与某一个CPU Core以及 同一 NODE下的内存进行绑定。但是第二种看起来更麻烦,所以一般部署的时 候可以在系统层面关闭NUMA。CentOS系统下,通过修改/etc/grub.conf文件, 添加numa=off来关闭NUMA。2软件层面1、Kernel pid maxecho 4194303 /proc/sys/kernel/pid_maxBashCopy2、设置MTU
4、,交换机端需要支持该功能,系统网卡设置才有效果配置文件追加MTU=9000BashCopy3、read_ahead,通过数据预读并且记载到随机访问内存方式提高磁盘读操作echo 8192 /sys/block/sda/queue/read_ahead_kbBashCopy4、swapp in ess,主要控制系统对swap的使用echo vm.swappiness = 0/etc/sysctl.conf ; sysctl -pBashCopy5、I/O Scheduler,SSD 要用 noop,SATA/SAS 使用 deadlineecho deadline /sys/block/sdx/
5、queue/scheduler echo noop /sys/block/sdx/queue/schedulerBashCopy6、ceph.conf配置选项global#全局设置fsid = 88caa60a-e6d1-4590-a2b5-bd4e703e46d9#集群标识 IDmon host = 10.0.1.21,10.0.1.22,10.0.1.23#monitor IP 地址auth clus ter required = cephx#集群认证auth service required = cephx#服务认证auth clien t required = cephx# 客户端认证
6、osd pool default size = 2# 最小副本数osd pool default min size = 1#PG 处于 degraded 状态不影响其 IO 能#pool的pg数量#pool的pgp数量#公共网络(m onitorIP段)#集群网络力,min_size是一个PG能接受IO的最小副本数osd pool default pg num = 128 osd pool default pgp num = 128 public ne twork = 10.0.1.0/24 clus ter net work = 10.0.1.0/24max open files = 131
7、072#默认0#如果设置了该选项,Ceph会设置系统的max openfdsmon initial members = controller1, controller2, compute01#初始monitor (由创建monitor命令而定)#mon mon Imonmon 数 mondata = /var/lib/ceph/mon/ceph-id#默认值 0.05, monitor 间的 clock drift#默认值1,向monitor报告down的最小OSDclock drift allowed = 1osd min down reporters = 13osd down out in
8、terval = 600#默认值300,标记一个OSD状态为down和outdata = /var/lib/ceph/osd/ceph-idjournal size = 20000 #默认 5120, osd journal 大小journal = /var/lib/ceph/osd/cluster-id/journal #osd journal 位置mkfs type = xfs#格式化系统类型mkfs opt ions xfs = -f -i size=2048 # 强制格式化#默认 false,为 XATTRS 使用 objectmap,EXT4文件系统时使用,XFS或者btrfs也可以
9、使用filestore(seconds)filestore(seconds)filestorefilestore节数(bytesfilestore操作数filestoremin sync interval = 10max sync interval = 15queuequeuequeuequeue#默认0.1,从日志到数据盘最小同步间隔#默认5,从日志到数据盘最大同步间隔max ops = 25000max bytes = 1048576000#默认500,数据盘最大接受的操作数#默认100,数据盘一次操作最大字committing max ops = 50000 #默认 500,数据盘能够
10、commit 的committing max bytes = 10485760000 #默认 100,数据盘能够之前ceph等待的秒数 # osdosd osd osd osd osd files tore xattr use omap = truecommit的最大字节数(bytes)files tore split mul tiple = 8 #默认值2, #前一个子目录分裂成子目录中的文件的最 大数量files tore merge t hreshold = 40 #默认值10, #前一个子类目录中的文件合并到父类 的最小数量files tore fd cache size = 1024
11、 #默认值128,#对象文件句柄缓存大小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)osd
12、max write size = 512#默认值90,OSD 一次可写入的最大值(MB)osd client message size cap = 2147483648 #默认值100,客户端允许在内存中的 最大数据(bytes)osd deep scrub st ride = 131072# 默认值 524288,在 Deep Scrub 时候允许读取的字节数(bytes)osd op threads = 16#默认值2,并发文件系统操作数osd disk threads = 4 #默认值1, #OSD密集型操作例如恢复和Scrubbing时的线程 osd map cache size =
13、1024#默认值 500,保留 OSD Map 的缓存(MB)osdosdrw,map cache bl size = 128 #默认值50,OSD进程在内存中的OSD Map缓存(MB) mount options xfs = rw,noexec,nodev,noatime,nodiratime,nobarrier #默认值 noatime,inode64, Ceph OSD xfs Mount 选项osd recovery op priority = 2#默认值10,恢复操作优先级,取值1-63,值越高占用资源越高osd recovery max act ive = 10#默认值15,同一
14、时间内活跃的恢复请求数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 = 10
15、48576000 #默认值 104857600,等待派遣的最大消 息数objecter inflight ops = 819200#默认值1024,客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限#默认值5, #一次显示多少操作的log#默认值为1, CRUSH规则用到chooseleaf时的osd op log threshold = 50typeosd crush chooseleafbucket的类型rbd cache max dirty = 134217728 #默认值 25165824,缓存为 write-back 时允许的最 大 dirty 字节数(bytes),如果