CentOS7 搭建ceph集群
前言:本来准备的是Ubuntu20,搞了半天上头了把我笔记本正在用的Ubuntu操作系统直接搞崩了,hhhhhh,所以换了CentOS
1 分布式文件存储系统Ceph
Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
| 对比说明 |
TFS |
FASTDFS |
MooseFS |
GlusterFS |
CEPH |
| 开发语言 |
C++ |
C |
C |
C |
C++ |
| 数据存储方式 |
块 |
文件/Trunk |
块 |
文件/块 |
对象/文件/块 |
| 在线扩容 |
支持 |
支持 |
支持 |
支持 |
支持 |
| 冗余备份 |
支持 |
支持 |
支持 |
支持 |
支持 |
| 单点故障 |
存在 |
不存在 |
存在 |
不存在 |
不存在 |
| 易用性 |
安装复杂,官方文档少 |
安装简单,社区相对活跃 |
安装简单 |
官方文档专业化 |
安装有一定复杂度 |
| 适用场景 |
跨集群的小文件 |
单集群的中小文件 |
单集群的大中文件 |
跨集群云存储 |
单集群的大中小文件 |
1.1 Ceph介绍
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Ceph特点:
-
CRUSH算法:Crush算法是ceph的两大创新之一,简单来说,ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush算法有相当强大的扩展性,理论上支持数千个存储节点。
-
高性能:Ceph中的数据副本数量可以由管理员自行定义,并可以通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; ceph可以忍受多种故障场景并自动尝试并行修复。
-
高扩展性:Ceph本身并没有主控节点,扩展起来比较容易,并且理论上,它的性能会随着磁盘数量的增加而线性增长。
-
特性丰富:Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。在国内一些公司的云环境中,通常会采用ceph作为openstack的唯一后端存储来提升数据转发效率。
Ceph架构:
组件对象讲解: - RADOS:就是这样一个可用于PB级规模数据存储集群的可伸缩的、可靠的对象存储服务,可以理解成Ceph的整个存储对象,包括逻辑对象。
- File:用户上传的文件
- object:上传的文件被切成N个小文件块对象,RADOS的基本存储单元。
- MDS:元数据的内存缓存,为了加快元数据的访问。
- CRUSH:Ceph寻址算法,用于计算当前文件存储到哪个PG对应的OSD中。
- PG:对object的存储进行组织和位置映射。具体而言,一个PG负责组织若干个object(可以为数千个甚至更多),但一个object只能被映射到一个PG中,即,PG和object之间是“一对多”映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是“多对多”映射关系。
- OSD:RADOS中的存储节点被称为OSD
复制代码
架构图讲解: - 1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
- 2:切片后的文件object会存入到Ceph中
- 3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
- 4:PG是逻辑概念上对文件存储范围划分的索引
- 5:根据PG索引将文件存储到指定服务器的OSD中
复制代码
1.2 Ceph集群搭建
集群结构如上图,server1作为主节点(Dashbaord、mon、mds、rgw、mgr、osd),server2和server3作为子节点(mon、mds、rgw、mgr、osd)。
节点中信息说明: - dashbaord:Ceph可视化管理界面。
- rgw:RADOSGW,Ceph对象网关,使客户端能够利用标准对象存储API来访问Ceph集群。
- mgr:ceph-mgr,主要目标实现 ceph 集群的管理,为外界提供统一的入口。
复制代码 |