Ceph是一个开源的、分布式的、提供软件定义的统一的存储解决方案。是一个可大规模扩展、高性能并且无单点故障的分布式存储系统。
Ceph存储集群是由几个不同的软件守护进程组成,每个守护进程负责Ceph的一个独特功能并将值添加到相应的组件中。每个守护进程是彼此独立的。
可靠、自动、分布式对象存储(RADOS)是Ceph存储集群的基础。
Ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象
,而不考虑数据类型。RADOS层确保数据一致性和可靠性。对于数据一致性,
他执行数据复制、故障检测和恢复,它还包括数据在集群节点间的迁移和再平衡
。
数据分布是分布式存储系统的一个重要部分,数据分布至少要考虑以下3种因素
1、故障域隔离。同份数据的不同副本分布在不同的故障域,降低数据损坏的风险
2、负载均衡。数据能够均匀的分布在磁盘容量不等的存储节点,避免部分节点空闲,部分节点超载,从而影响系统性能。
3、控制节点加入离开时引起的数据迁移量。当节点离开时,最有的数据迁移是只有离线节点上的数据迁移到其他节点,而正常工作的节点的数据不会发生迁移。
Ceph总体表现在:集群可靠性、集群扩展性、数据安全性、接口统一性,充分发挥存储本身计算能力和去除所有的中心节点
存储设备具有吞吐量限制,他影响读写性能和可扩展性能,所以存储系统通常都支持
条带化
以增加存储系统的吞吐量和提升性能。
将条带单元(stripe unit)从阵列的第一个硬盘到最后一个硬盘收集起来,既可以称为条带
数据在阵列中的硬盘上是以条带形式分布的,条带化是指数据在阵列中所有硬盘中的存储过程。文件中的数据被分割成小块的数据段在阵列中的硬盘上顺序存储,这个最小的数据块就叫做条带单元。
决定Ceph条带化数据的3个因素:对象大小、条带宽度、条带总量
对象
一个对象通常包含绑定在一起的数据和元数据,并且用一个全局唯一的标识符标识
。这个唯一的标识符确保在整个存储集群中没有其他对象使用相同的对象ID,从而保证对象的唯一性。
Object与PG
Ceph条带化之后,将获取N个带有唯一oid(object 的id)。Object id是进行线性映射生成的,即由file的元数据、Ceph条带化产生的Object的序列号连缀而成。
此时Object需要映射到PG中,包括:
1、由Ceph集群指定的静态Hash函数计算Object的oid,获取到其Hash值
2、将该Hash值与mask进行操作,从而获得PG ID