ceph在品高云中的实践
ceph简介
ceph是业界目前人气最高的开源存储项目之一,关于其定义在官网是这样的:“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”
翻译一下就是:Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。这里面有两个重点,一是分布式的,关于这点我的理解是指其无中心解构和无理论上限系统规模,体现着扩展性与大规模,早在2013年,其在Dreamhost公司最大部署规模已达3PB;二是统一的,关于存储我们明白一般有三种功能即对象存储、块存储和文件存储,而这三种功能在ceph上都可以做统一的交付,所以它几乎可以覆盖了绝大部分企业对存储的需求。
整体架构
从下向上看,我们基本可以把ceph分为三个层次(不包括上层应用),分别是:
1)RADOS(Reliable, Autonomic, Distributed Object Store)即可靠的、自动化的、分布式的对象存储,顾名思义,这是一个基础的对象存储系统,也就是说所有用户写入的数据最终是落在这里的;
2)LIBRADOS 基础库,这一层可以理解是对RADOS进行封装和抽象,并向上层直接提供API,以便用户可以直接对RADOS进行开发,而其也支持多种开发语言,例如C/C++/Java/Python/Ruby和PHP等,需要说明的是因为RADOS是一个对象存储系统,因此librados实现的API也只是针对对象存储功能;
3)高层应用接口,这一层分为三个部分:RADOSGW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System),其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口,关于其介绍可以直接参见图中介绍,总而言之这三者就是向外提供对象存储、块存储和文件存储三种存储的接口.
RADOS运行说明
了解了基础架构后我们不难发现,RADOS其实是ceph的核心,而RADOS其实有两个重要组件分别是OSD和monitor,还有一个可选组件MDS,其中OSD数量一般很多(ceph官方推荐每个OSD对应一个SATA盘),是用来完成数据存储和维护的,monitor则是若干个负责完成系统状态检测和维护的组件。
这里是一张对象写入的过程图,在图中每个笑脸代表一个对象,在开始写入时Client端会跟Monitors通信,获取Cluster Maps信息,然后通过CRUSH算法算出每个Object存储的OSD位置,直接与OSD通信,写入Object数据。也就是说只要有当前集群的拓扑结构,ceph的客户端就能直接计算出文件的存储位置,直接跟OSD 通信获取文件而不在需要询问文件位置,从而避免了单点。另外ceph采用了无Master设计,对象的复制,集群的扩容,数据的迁移,故障的检测和处理等功能由OSD提供, 既避免了单点失败,又提升了集群扩展性,这也为ceph的稳定高质提供了底层条件。
三个特性
在开头我们说“Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统”,其实这里面隐含了三个特性:
1)高扩展性:ceph可以针对OSD和Monitor集群的动态可扩容,每当有新的OSD加入后,Monitor集群会通过两层Map机制(pool, object) -> (pool, PG) -> OSD set)来有效的隔离了集群扩容对上层client的影响,总之底层OSD的扩展对于上层client来说是完全明晰的;
2)高可靠性:针对安全问题,Ceph会在集群中存储同一数据的多个副本,用户也可以通过自定义副本数,来保证在某些设备故障后数据还可用,对于副本存储的逻辑关系,可以在ceph中进行设置,达到不同主机、不同机架、甚至不同机房的互备效果,除此之外,Ceph能自动探测到OSD/Monitor的故障,并自行恢复,有效减少了单设备节点的稳定性对集群的影响。
3)高性能:Ceph中通过文件切分和CRUSH算法,保证数据chunk分布基本均衡,同时Ceph的无元数据信息的设计(CephFS除外),保证了Client可以根据cluster map,通过固定算法确定数据的位置信息,避免了单个元数据节点的性能瓶颈,可以提供非常高的并行化IO性能,其原因是Client端数据经过切分为Objects后,可以同时与多个OSDs交互,写入数据。
ceph在品高云中的实践
ceph在品高云是作为云底层资源池分布式存储的地位存在的,针对RADOSGW、 RBD和Ceph FS 三种都会有很好的支持,而就目前技术成熟度来看,其中块存储RBD是最为成熟的并且也是使用率最高的,以下是ceph作为一个存储类型在品高云中的使用截图
在详情中可以针对名称、Monitor、存储调度标记等进行修改,并且可以将云平台的用户同步到ceph RADOSGW的用户接口中;
当我们需要创建一个实例或者存储卷的时候,可以直接选择将其创建在ceph存储上,这里使用的其实就是ceph的RBD块存储服务;
当然,对于ceph FS的使用则是可以将一个文件目录直接进行挂载,然后可以在其中存储文件,以下是在一台品高云主机中部署ceph FS的截图;
ceph调优
Ceph是一个复杂的系统,官方的默认配置能保证系统基本运行,但不一定能贴合用户实际需求,达到最大化用户物理系统性能的要求,所幸Ceph提供了很多的配置参数来允许用户订制自己的分布式存储系统,这意味着在赋予用户这个便利性的同时,用户可以自行调优。
我们对ceph物理机的配置建议大致如下:
1). 200G+内存(保证良好的系统运行状态)
2). 32核Intel Xeon处理器(保证良好的系统运行状态)
3). 1:5的SSD和SATA配比,SSD分区做Journal,SATA盘做OSD(实践产生的最高性价比)
3). PCIE的存储卡提供超高性能存储Pool (性能更高)
4). 万兆网卡提供Ceph的Cluster Network通信(满足分布式存储之间的通信需求)
5). 千兆网卡提供Ceph的Public Network通信(保证性能同时降低成本)
并且结合我们的研发测试与实践,形成了适合品高云的ceph调优经验,基本有以下几个方面:
1). BIOS设置
2). Linux及磁盘参数调优
3). XFS相关参数调优
4). filestore调整
5). journal性能优化
6). osd相关参数调优
7). crushmap优化,给osd划分合理的pools,故障域切分,降低数据丢失概率
8). RADOSGW的接口功能增加,适应云平台需求
ceph监控
ceph是一个具备自我修复功能的高稳定平台,但这不能降低其作为一个完善的存储系统监控的必要性,因为我们不能长期依靠人工来发现问题,所以针对ceph品高云也有一套完善的监控系统。
首页有针对存储状态、容量、版本信息、同步状况、存储读写的监控信息;
并且可以针对Monitor、osd、MDS、POOL以及PG等进程组件进行监控,一旦发现问题,可以及时排查处理。
总而言之,ceph是一个大型分布式存储系统,品高云对其的研究优化将是一个持续的过程,借助在众多客户中的部署实践和需求改善,ceph在品高云的运行状态将会越来越完善。
ceph在品高云中的实践的更多相关文章
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- 05-雷海林-mysql备份原理与在TDSQL中的实践
05-雷海林-mysql备份原理与在TDSQL中的实践 下载地址: http://files.cnblogs.com/files/MYSQLZOUQI/05-%E9%9B%B7%E6%B5%B7%E6 ...
- 关于Jaccard相似度在竞品分析中的一点思考
上个月对一个小项目的效果进行改进,时间紧,只有不到一周的时间,所以思考了一下就用了最简单的方法来做,跟大家分享一下(项目场景用的类似的场景) 项目场景:分析一个产品的竞品,譬如app的竞品.网站的竞品 ...
- 一致性Hash算法在数据库分表中的实践
最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右.与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移.整个程序细节由我同事完成,我只是将其理 ...
- Jaccard相似度在竞品分析中的应用
上个月对一个小项目的效果进行改进,时间紧,只有不到一周的时间,所以思考了一下就用了最简单的方法来做,效果针对上一版提升了5%左右,跟大家分享一下(项目场景用的类似的场景) 项目场景:分析一个产品的竞品 ...
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...
- React 与 Redux 在生产环境中的实践总结
React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...
- immutable.js 在React、Redux中的实践以及常用API简介
immutable.js 在React.Redux中的实践以及常用API简介 学习下 这个immutable Data 是什么鬼,有什么优点,好处等等 mark : https://yq.aliyu ...
- Immutable.js 以及在 react+redux 项目中的实践
来自一位美团大牛的分享,相信可以帮助到你. 原文链接:https://juejin.im/post/5948985ea0bb9f006bed7472?utm_source=tuicool&ut ...
随机推荐
- js 你所不知道的一面
你真的知道JavaScript吗 JavaScript是一门奇怪的语言,要真正掌握并不容易.废话不多说,来一个快速测试,5道题目,看看你对JavaScript是否真正掌握.准备好了吗?开始咯
- AmpLab Tachyon and Shark update
一个开源的文件系统,拿来主义,先收藏,用得到细品. 简介:https://www.youtube.com/watch?v=cAZ624-69PQ 官网:http://tachyon-project.o ...
- 【Alpha】Daily Scrum Meeting——Day3
站立式会议照片 1.本次会议为第三次 Meeting会议: 2.本次会议于早上9:40在陆大楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 每个人的工作分配 成 员 昨天已完成 ...
- 201521123088《java程序设计》第四次总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.11.2 使用常规方法总结其他上课内容 1.多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性. ...
- 201521123038 《Java程序设计》 第二周学习总结
201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...
- 201521123065《Java程序设计》第1周学习总结
1. 本周学习总结 java是门语言较为简单,并且可以在多种平台运行编译的语言. JDK是java开发工具,可以将源程序编译成字节码. JRE:java运行环境. JVM:虚拟机,是java实现多平台 ...
- 201521123039 《java程序设计》第九周学习总结
1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? ...
- 201521123049 《JAVA程序设计》 第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- PHP面向对象三大特性之一:封装
面向对象的三大特性:封装.继承.多态 1.封装 封装的目的:让类更加安全,做法是不让外界直接访问类的成员 具体做法:1.成员变为私有:访问修饰符(public.private.protected) ...
- 在Myeclipse中用Java语言操作mysql数据库
package OperateMysql; import java.sql.*; public class MysqlTest { public static void main(String[] a ...