Ceph化简的大致结构图
Ceph网络流量结构
存储类型
存储的类型都是经过历史演化的结果,而ceph都是支持,并且利用rados集群解决了各自的缺点
- 块存储:最接近硬件,直接对硬件进行操作,通过把所有数据按照固定的大小分块,每一块赋予一个用于寻址的编号,但是存储需要建立在连续的编号上,数据按照字节进行读写
- 缺点:容量浪费(连续的编号)和不便管理(硬盘越来越大)
- 文件存储:最常见使用的文件系统,采用树状结构进行目录和文件分类管理
- 缺点:性能不如块存储,因为多了一层管理
- 对象存储:基于前两者的优点,直接对硬件操作和实现数据和元数据打包在一起,通过唯一标识符进行查找读写,底层对象存储也就是k-v存储形式
知乎上看了一篇好文章举例:点击查看 块存储:数据就像玉米粒一样堆放在块存储里,块存储只关心玉米粒进来和出去,不关心玉米粒之间的关系和用途
文件存储:数据像玉米粒一样组成玉米棒子,再对应到不同的玉米杆上,要找到某个玉米粒,先找到玉米杆,再找到玉米棒子,然后根据玉米粒在玉米棒子上的位置找到它
对象存储:数据的玉米粒被做成了玉米罐头,每个玉米罐头都有一个唯一出厂号,但是买卖罐头,都一次是一盒为单位
Ceph架构分析
存储驱动(引擎)
存储引擎就是数据存储的方式,类似数据库的存储引擎概念
- File store:ceph12.2.x版本之前都是基于文件系统存储引擎,而File store存在最大问题是性能问题,每次写需要经过2次I/O,第一次需要先把对象转换能被本地文件系统识别,符合POSIX语义的文件系统,再一个扩展属性都是需要依赖文件系统类型(当然官方推荐XFS)
- Blue store:ceph12.2.x版本之后可以选择的驱动引擎
- 1、直接操作硬盘,避免2次写操作
- 2、用户数据和元数据进行分离,可以存放不同的硬盘上(可以把元数据存储到SSD,提升性能)
- 3、针对SSD做了性能优化(考虑了后期硬盘趋势)
几个逻辑概念
- pool存储池:类似分区的意思,目的是为了实现不同的规则策略,如CRUSH规则,OSD规格,副本物理隔离等等
- image:只是限定对象的作用,划分对象的存储大小
- PG:对象和OSD的中间桥梁,PG是对象的集合
- PG的引入是为了解决怎么通过对象找到OSD并且实现数据平均分布,由于数据进入集群后会被划分为4兆的一个个对象,为了实现最大程度的负载均衡,对象的颗粒度不会设置很大,因此在存储百万级的对象,对于对象的管理带来了挑战,而PG就是类似对象的目录,对象只要找到归属的PG,PG找到OSD(PG的概念很复杂,中间有算法的参与,能力理解有限,参考其他文章便于理解)
用户认证和授权
ceph默认是开启cephx认证系统,通过访问MON获取认证和授权服务
vi /etc/ceph/ceph.conf
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
#认证配置
Ceph网络
- public network:北向流量,用户端发起的流量,也就是客户端到集群的通讯,而客户端必须通过MON才能获取到OSDMap,所有MON只能放到公共网络上
- cluster network:东西流量,OSD与OSD之间的通讯,特点就是流量密集和抢占带宽,避免公共网络出现服务中断
- 1、用于OSD的副本策略数据复制
- 2、数据恢复
- 3、数据自动平衡
网络分离带来的好处:
性能:客户端的流量能完全发挥到最大化
安全:cluster network尽量避免接触到互联网,避免ddos攻击之类的破坏