目录
什么是Ceph?
简介
什么是块存储、文件存储和对象存储以及区别?
Ceph存储架构
Ceph数据的存储
MinIO和ceph
ceph和hadoop
什么是Ceph?
简介
Ceph则是一个统一分布式存储系统(统一:同时支持块存储、文件存储和对象存储),具有优异的性能、可靠性和可扩展性。
Ceph底层是RADOS,它是分布式对象存储系统,由自修复、自管理、智能的存储节点组成。可以通过LIBRADOS直接访问到RADOS的对象存储系统。RBD(块设备接口)、RADOS Gateway(对象存储接口)、Ceph File System(POSIX接口)都是基于RADOS的。
Ceph能够提供企业中三种常见的存储需求:块存储、文件存储和对象存储,Ceph在一个统一的存储系统中同时提供了对象存储、块存储和文件存储,即Ceph是一个统一存储,能够将企业企业中的三种存储需求统一汇总到一个存储系统中,并提供分布式、横向扩展,高度可靠性的存储系统,Ceph存储提供的三大存储接口:
什么是块存储、文件存储和对象存储以及区别?
块存储:(ceph 虚拟成一个磁盘,文件系统在上层服务器上把ceph集群当成一个磁盘用)
文件存储:(ceph 虚拟成一个文件系统,可以在服务器上挂载成一个目录(文件夹),用户可以直接在文件夹里面创建和删改数据)
对象存储:
Ceph存储架构
Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能。
Ceph还拥有大规模可扩展(PB、甚至EB级的存储空间)、基于CRUSH算法的自我管理和修复、灵活的架构等优点,并且支持OpenStack、CloudStack、OpenNebula、Hadoop等云平台。
Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。
Ceph的主要目标是提供高可扩展性和提供对象存储、块存储和文件系统的存储机制,是一个高扩展、高容错、高一致的开源分布式存储平台。
接下来,我们先来看一下Ceph的存储架构,了解Ceph的分布式架构,功能组件和涉及相关概念。Ceph分布式集群是建立在RADOS算法之上的,RADOS是一个可扩展性,高可靠的存储服务算法,是Ceph的实现的基础。
Ceph有两个重要的组件组成:Ceph Monitors(Ceph监视器)和Ceph OSDs(Ceph OSD 守护进程)。
其中Ceph Monitor作为集群中的控制中心,拥有整个集群的状态信息,Ceph Monitor肩负起整个集群协调工作;
同时Ceph Monitor还负责将集群的指挥工作,将集群的状态同步给客户端。
除了Ceph Monitor之外,还有一个重要的组件是OSD,集群中通常有多个OSD组成,OSD即Object Storage Daemon,负责Ceph集群中真正数据存储的功能,也就是我们的数据最终都会写入到OSD中。除了Monitor之外,根据Ceph提供的不同功能,还有其他组件,包括:
- ceph-mon(Ceph Monitors);
- ceph-osd (Ceph OSDs);
- ceph-mds (Ceph MDS),用于提供CephFS文件存储,提供文件存储所需元数据管理;
- ceph-rgw (Ceph RGW),用于提供Ceph对象存储网关,提供存储网关接入;
- ceph-mgr (Ceph Manager),ceph luminous版本新增组件,提供集群状态监控和性能监控:javascript:void(0)
注:Ceph Monitor监视器维护着集群运行图的主副本。一个监视器集群确保了当某个监视器失效时的高可用性。存储集群客户端向 Ceph Monitor 监视器索取集群运行图的最新副本。而Ceph OSD 守护进程检查自身状态、以及其它 OSD 的状态,并报告给监视器们。存储集群的客户端和各个 Ceph OSD 守护进程使用 CRUSH 算法高效地计算数据位置,而不是依赖于一个中心化的查询表。它的高级功能包括:基于 librados的原生存储接口、和多种基于 librados 的服务接口。
Ceph数据的存储
Ceph中一切皆对象,不管是RBD块存储接口,RGW对象存储接口还是文件存储CephFS接口,其存储如到Ceph中的数据均可以看作是一个对象,一个文件需要切割为多个对象(object),然后将object存储到OSD中,如下图:
未完待续…… Ceph分布式存储详述 :https://zhuanlan.zhihu.com/p/164775822
MinIO和ceph
(http://slack.minio.org.cn/question/5)
之前一直使用MongoDB的GirdFS存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够便利,各种功能都需要自己开发。存储上是wt文件,无法直接识别。
所以,希望找一款替代产品。目前开源的文件存储系统比较多,比较了多个,我们的要求是要支持S3存储,最终选定了minio。
从对比中,目前文件存储在ceph和minio中进行比较选型
ceph优缺点
优点
- 成熟
红帽继子,ceph创始人已经加入红帽,国内有所谓的ceph中国社区,私人机构,不活跃,文档有滞后,而且没有更新的迹象。
从git上提交者来看,中国有几家公司的程序员在提交代码,星辰天合,easystack, 腾讯、阿里基于ceph在做云存储,但是在开源社区中不活跃,阿里一位叫liupan的有参与
- 功能强大
- 支持数千节点
- 支持动态增加节点,自动平衡数据分布。(TODO,需要多长时间,add node时是否可以不间断运行)
- 可配置性强,可针对不同场景进行调优
缺点
学习成本高,安装运维复杂。(或者说这个不是ceph的缺点,是我水平不行)
minio优缺点
优点
学习成本低,安装运维简单,开箱即用
目前minio论坛推广给力,有问必答
有java客户端、js客户端
缺点
社区不够成熟,业界参考资料较少
不支持动态增加节点,minio创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容。
其缺点是目前不支持动态在线扩容。我们业务的使用量不会很大,所以这个问题先不考虑。
当然是用MinIO呀,MinIO的维护特别简单,并且性能和扩展也比Ceph要简单。
Ceph 维护起来多麻烦呀。运维成本太高了。
公司运维每年不投个几千万,ceph玩都别玩。
并且Ceph这玩意是超大型公司才玩玩的。
ceph和hadoop