ceph架构,三个默认接口(块存储RBD,文件存储cephFS,对象存储RGW)
LibRADOS对象访问接口
RADOS基础存储系统(统一存储池) #最底层
ceph架构
osd,负责存储数据,一般一个磁盘对应一个osd,响应客户端的读写请求monitor(mon)负责保存osd的元数据,维护ceph集群状态的map映射视图,管理客户端的认证与授权
Manager(Mgr)负责跟踪集群状态和监控指标,暴露接口给监控软件,MDS负责保存cephFS文件系统的元数据,仅在使用cephFS接口功能时使用。
PG osd的索引,一个pg里包含多个数据对象,一个对象只能属于一个pg
pool数据池,可以理解成一个命名空间,一个pool里有多个pg
ceph的存储过程
1)文件 --分片 默认会按照4M大小进行分片成一个或多个数据对象(object)
2)每个数据对象都有一个oid(文件id+分片编号)通过对oid使用hash算法得到一个16进制数值,再与pool里的pg总数取余得到object的pgid(poolid+pgid)
3)通过对pgid使用crush算法得到pg对应的osd(如有多副本,则是主从osd)
4)存储object数据存储到对应的osd节点上
单机存储设备
DAS直接附加存储,直接到计算机的主板总线上去存储
NAS网络附加存储,通过网络附加当前主机文件系统上的存储
SAN 存储区域网落
存储过程
ceph利用crush算法,由osd和monitor两个主要组件组成,都可以部署在多台服务器上一个大一统存储系统
ceph把每个代管理的数据流(如文件等数据)切分为一个到多个固定大小(默认为4M)并以原子单元完成数据的读写( pg存的是osd的位置信息)
monitor保存osd元数据,保存osd之间的关系,管理客户端认证读写
manger监控读写
ceph 存储类,块存储,一对一,只能被一个服务器挂载使用,数据以块为单位进行存储。典型代表硬盘
文件存储一对多,能被多个主机同时挂载使用,数据以文件形势存储,并且由目录的层级关系典型代表NFS(元数据和实际数据是分开存储的)
对象存储,一对多,能被多个主机通过api接口访问使用,数据以文件进行存储,一个文件即一个对象,元数据和实际数据是存储在一起的,且没有目录的层级关系,典型代表oss ,s3,扁平化存储。
个人总结
monitor 保存osd的元数据,维护ceph集群的状态的MAP映射视图(监控全局状态),管理客户端的认证与授权。
cephf会使用MDS保存cephFS文件系统的元数据
存储前通过monitor进程扫描全局的集群的状态,再将文件进行切片
读取时并行读取
pg和osd的关系创建存储池pool就确定了,即客户端在读写数据前这个关系就确定了,但是该关系不是固定不变的,因为osd有可能会挂掉,pg组内会临时加入新的osd
企业里OSD采用LVM(逻辑卷)当有硬盘换了可动态增加
OSD -> 裸磁盘
OSD -> LVM ->裸磁盘