Ceph
Ceph统一存储架构
相当于原来买三台不一样的存储 现在买一台存储就可以提供3种不一样的接口 可以划分不同的存储池 一个存储池用来对象存储 一个存储池用来块存储 一个存储池用来文件存储 把存储池格式化成Ceph文件系统 用来存放文件即CephFS 一个存储池只能做一个事情
CephFS组件
假设有5台服务器 每台服务器上有12个硬盘 每个硬盘1TB 那么共有60TB的硬盘 数据3副本的话 那么共有200TB的磁盘空间 假设客户端需要存储100M的文件 1、首先客户端会进行分片 2、通过业务网络上传到ceph 3、ceph通过DHT算法进行hash运算 找到一个节点如node1 4、通过后端网络 对在node1上的数据进行备份 如图在node2上有一个备份数据
mon(monitor角色)
存放切片的元数据 记录所有的映射表关系 里面保存的是元数据metadata也需要3个副本 当下次读取数据的时候 通过映射表就可以知道这个文件的数据存储在哪个节点上 比如100M的文件 分2片 一片数据50M记为A 另外一片数据也是50M记为B A数据ceph通过hash算法指向了node1记为D1 同时通过后端网络在node2上有一个备份D1‘ B数据ceph通过hash算法指向了node3记为D2 同时通过后端网络在node4上有一个备份D2’ 那么这个映射关系在monitor中会记录
客户端想要获取该数据的时候 就会从monitor中获取映射关系 然后进行整合各个节点上的分片数据
ceph集群至少3个节点
因为数据需要3副本 mon(monitor)的metadata映射关系数据也需要3副本 所以ceph集群至少需要部署3个节点 如果有100个节点 也需要部署3个节点的monitor即可 其他节点都是OSD角色
OSD(object Storage Device) 对象存储设备
一个硬盘对应一个OSD 一个OSD其实是一个进程 对应一个物理硬盘 OSD相对于Ceph来说 它是一个逻辑硬盘 OSD会存储真正的数据
3节点能解决脑裂
在集群中通过投票机制来防治脑裂 每个节点投一票