01 Ceph简单介绍
Ceph简单介绍
1 存储简单介绍
在可靠性、安全性和可扩展性的聚焦下,集中式存储存放了所有数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
1 Ceph概况
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。
1.1 为什么要用Ceph
- 在过去几年中,数据存储需求急剧增长,传统的存储系统无法管理这样的数据增长;而ceph可支持到PB、EB级别数据
- 软件定义存储(SDS):降低存储成本,提升灵活性、高性能、可伸缩性和可靠性(原则上可以不做raid,但是从硬盘热更换和数据安全性考虑,还是建议做)
- 对云存储支持:openstack后端存储的标配,同时支持k8s动态存储;
1.2 Ceph特点
- 高性能a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等c. 能够支持上千个存储节点的规模,支持TB到PB级的数据
- 高可扩展性a. 去中心化b. 扩展灵活c. 随着节点增加而线性增长
- 特性丰富a. 支持三种存储接口:块存储、文件存储、对象存储b. 支持自定义接口,支持多种语言驱动
2 Ceph架构
2.1 设计思想
集群可靠性、集群可扩展性、数据安全性、接口统一性、充分发挥存储设备自身的计算能力、去除中心化
2.2 架构介绍
Ceph使用RADOS提供对象存储,通过librados封装库提供多种存储方式的文件和对象转换。外层通过RGW(Object)、RBD(Block)、CephFS(File)将数据写入存储。
2.3 支持三种接口
- Object(RGW):有原生的API,而且也兼容Swift和S3的API,适合单客户端使用。
- Block(RBD):支持精简配置、快照、克隆,适合多客户端有目录结构。
- File(CephFS):、Posix接口,支持快照,社会和更新变动少的数据,没有目录结构不能直接打开
3 重要概念
3.1 核心组件
Monitor一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。负责监视整个Ceph集群运行的Map视图(如OSD Map、Monitor Map、PG Map和CRUSH Map),维护集群的健康状态,维护展示集群状态的各种图表,管理集群客户端认证与授权;
OSDOSD是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等;
MDSMDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;
RBDRBD全称RADOS block device,是Ceph对外提供的块设备服务。
RGWRGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
- CephFSCephFS全称Ceph File System,是Ceph对外提供的文件系统服务。
3.2 核心概念
ObjectCeph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写快,利 于共享的出来呢。于是就有了对象存储。
PGPG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略,简单点说就是相同PG内的对象都会放到相同的硬盘上,PG是 ceph的逻辑概念,服务端数据均衡和恢复的最小粒度就是PG,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据;
RADOSRADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
LibradioLibrados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
- CRUSHCrush算法是Ceph的两大创新之一,通过Crush算法的寻址操作,Ceph得以摒弃了传统的集中式存储元数据寻址方案。而Crush算法在一致性哈希基础上很好的考虑了容灾域的隔离,使得Ceph能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时,Crush算法有相当强大的扩展性,理论上可以支持数千个存储节点,这为Ceph在大规模云环境中的应用提供了先天的便利。
4 Ceph三种存储类型
4.1 块存储(RBD)
- 优点:
- 通过Raid与LVM等手段,对数据提供了保护;
- 多块廉价的硬盘组合起来,提高容量;
- 多块磁盘组合出来的逻辑盘,提升读写效率;
- 缺点:
- 采用SAN架构组网时,光纤交换机,造价成本高;
- 主机之间无法共享数据;
- 使用场景
- docker容器、虚拟机磁盘存储分配;
- 日志存储;
- 文件存储;
4.2 文件存储(CephFS)
- 优点:
- 造价低,随便一台机器就可以了;
- 方便文件共享;
- 缺点:
- 读写速率低;
- 传输速率慢;
- 使用场景
- 日志存储;
- FTP、NFS;
- 其它有目录结构的文件存储
4.3 对象存储(Object)(适合更新变动较少的数据)
优点:
- 具备块存储的读写高速;
- 具备文件存储的共享等特性;
- 使用场景
- 图片存储;
- 视频存储;