专栏名称: 云技术实践
关注云计算,云技术,云运维,云存储,存储,分布式,OpenStack,SDN,Ceph,虚拟化,运维,分享在云计算/虚拟化/运维项目实施中的资讯、经验、技术,坚持干货。
目录
相关文章推荐
51好读  ›  专栏  ›  云技术实践

企业云存储建设之路

云技术实践  · 公众号  · 架构  · 2018-12-19 19:55

正文

请到「今天看啥」查看全文



在存储物理架构上, 存储集群实现了3(monitor)+N(OSD)+2(client)的建设形式,实现角色隔离,功能分离,互不影响。 3个monitor节点配置有monitor和mgr服务,作为存储的大脑和监控使用。在N(数量可以线性扩展,所以未明确)个OSD节点上进行了一些优化,首先是磁盘的IO调度策略上。


SSD磁盘采用NOOP IO调度策略,NOOP遵循先入先出(FIFO)原则,对请求进行了简单的队列处理,NOOP对bio进行了后向合并,最大程度保证相邻bio进行合并处理,提高了效率。 SAS磁盘采用默认的DeadLine IO调度策略,Deadline调度策略对读和写进行区分,执行FIFO策略,每个请求会被分配一个时间戳,在读优先的情况下,可以知道哪个写请求已经长时间没有被调度,进行优先调度,避免了写饿死的情况发生。


其次,基于存储的读写策略设置,我们进行了OSD硬盘类型的混插,SSD硬盘和SAS硬盘按照1:2的比例配置,保证每次读操作都落在性能较好的SSD硬盘上,同时每次写操作也会相应提高效率。

第三我们对读、写缓存和bluestore缓存进行了优化,增加了预读缓存、写缓存和bluestore缓存的大小,对整体性能表现提高很多。以下是预读缓存大小的一个性能测试:

第四我们对Bucket index进行了重新配置,修改crushmap,将其全部放置在ssd高速磁盘上。单个桶索引大概是200 bytes,当单个桶存放大量对象数据时,索引不进行单独分离或存放在高速磁盘上,会造成性能下降。因此,我们对crushmap进行导出,反编译,修改、重新编译,注入操作,使索引全部放置到ssd磁盘上,减少延迟,提高性能。


最后,我们为存储设计了一个网关,由两个节点组成,将我们的使用场景和存储本身完全解耦,即使存在配置失误或损坏,完全不会影响整个存储的健壮性和数据完整性。在网关节点上安装了Ceph rgw、Nginx和Pacemaker。由于业务对全局共享文件系统读写得需求,需利用高可用软件管理文件系统并对外暴露,供多个容器对同一文件系统进行挂载,读写数据。所以我们选择Pacemaker高可用软件对外提供唯一IP地址,保证服务唯一可访问性。众所周知,rgw单实例在可用性、扩展性和性能上存在低效问题,所以我们利用Nginx负载均衡改善效果。我们对外提供三种类型的基础存储服务,即对象存储、块存储、全局共享存储。

在存储性能优化设计方面,我们大概做了以上五点。当然,还有一些小的优化在这里就不详细介绍了,比如TCMalloc参数调整,ulimit参数调整,kernel pid_max参数调整等。







请到「今天看啥」查看全文