Ceph
Ceph是一个开源的、高度可扩展的、统一的分布式存储系统,由红帽公司开发并维护,它能够提供对象存储、块存储和文件存储的解决方案。
概述[ ]
Ceph使用C++语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。
Ceph项目起源于Sage在攻读博士学位期间的研究工作,其最初的研究成果于2004年发布,并随后作为开源项目贡献给了社区。经过数年的发展和迭代,Ceph已经获得了众多云计算厂商的支持,并在各种环境中得到了广泛应用。RedHat和OpenStack等平台都能够与Ceph无缝整合,利用其强大的存储功能来支持虚拟机镜像的后端存储需求。
Ceph已经广泛获得云计算厂商的支持,并在多个平台中发挥着关键作用。RedHat、OpenStack和Kubernetes等技术都能够与Ceph集成,利用其作为虚拟机镜像的后端存储解决方案。据估计,在中国,大约70%至80%的云平台采用Ceph作为其基础存储平台,这充分证明了Ceph在开源云平台中的普遍应用和重要性。国内许多企业成功地使用Ceph构建了分布式存储系统,其中包括华为、阿里巴巴、中兴通讯、新华三集团、浪潮集团、中国移动、网易、乐视、奇虎360、星辰天合存储、杉岩数据等知名企业。
主要特点[ ]
高性能[ ]
- Ceph放弃了传统的中心化存储元数据索引方式,采用CRUSH算法进行数据分布,实现了高效的负载均衡和高度并行处理能力。
- 考虑到容灾需求,Ceph能够实现跨机房、机架感知等复杂的副本放置策略,以适应不同工作负载。
- 支持大规模部署,可以轻松管理上千个节点,应对从TB到PB级别的数据存储需求。
高可用性[ ]
- 允许灵活配置副本数量,以满足不同的数据安全级别。
- 支持故障域隔离,确保数据的强一致性。
- 在多种故障场景下提供自动修复和自我恢复功能。
- 去除单点故障的可能性,通过自动化管理降低系统维护难度。
高可扩展性[ ]
- 采用去中心化设计,使得系统更加灵活易扩展。
- 随着节点的增加,系统性能呈线性增长,方便按需扩容。
特性丰富[ ]
- 同时支持块存储、文件存储和对象存储三种接口,满足多样化的存储需求。
- 支持自定义接口开发,并提供多种编程语言的SDK支持,便于集成和二次开发。
架构[ ]
1、Object(对象存储)
提供原生的API,使得可以直接与Ceph存储系统交互。 兼容Swift和S3的API,这意味着开发者可以使用这些流行的对象存储协议与Ceph进行集成,便于迁移和开发新的应用。
2、Block(块存储)
支持精简配置(Thin Provisioning),允许更有效地使用存储空间,仅分配实际需要的数据空间。 提供快照功能,可以创建数据的时间点副本,用于数据保护和恢复。 支持克隆操作,方便快速复制数据或创建虚拟机镜像。
3、File(文件存储)
- 提供遵守POSIX标准的文件接口,允许与传统文件系统兼容的操作。
- 同样支持快照功能,为文件系统提供额外的数据保护和恢复选项。
核心组件[ ]
- Monitor:一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
- OSD:OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
- MDS:MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
- Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
- PG:PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
- RADOS:RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
- Libradio:Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
- CRUSH:CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
- RBD:RBD全称RADOS block device,是Ceph对外提供的块设备服务。
- RGW:RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
- CephFS:CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。