ceph文件系统
1.概述
高扩展,分布式的存储文件系统,旨在提供高性能,高可靠性和高可用的对象存储,块存储,文件系统的存储。使用分布式的算法保证数据的高可用和一致性。
2.ceph的架构
(1)ceph minitor
MON: 负责存储和维护整个ceph的状态信息,主要是集群的成员信息,存储状态和配置数据等等。确保整个集群的一致性,处理选举和状态的更新,集群内部成员的通信。
ceph当中的mon至少要有三个节点,确保高可用。
(2)ceph osd
osd(object storage daemon):ceph存储系统的核心组件,负责存储数据,处理读写请求,数据复制,数据恢复。
- 每个osd节点管理一个或者多个硬盘
- 存储实际的数据和副本
- 处理对象级别的数据操作,读,写,删
- 在节点故障时,进行数据恢复
(3)ceph mds
mds(metadata server):对ceph的文件系统的元数据进行管理,文件和目录的结构,文件的权限,mds提供元数据服务。
- 管理集群的元数据信息
- 处理客户端对文件系统的请求
- ceph集群中,至少要有一个mds节点
(4)存储池和pg
存储池(pool):ceph存储数据对象的容器,每个存储池可以定义不同的数据冗余的策略(副本数,默认都是3)crush映射规则等等。
- 存储池是一个逻辑上的概念
- 管理和组织数据的对象
- 定义数据的冗余方式,主要靠副本(一般3个副本)
- 配置crush映射,数据如何在osd之间分布
pg: placement group
pg也是ceph当中的一个逻辑概念,用于数据分布的基本单位,创建存储池时,定义好pg的数量。
pg是由一组对象(object)组成的逻辑集合,每个对象都会映射到一个或者多个pg。
数据分布:数据写入集群,会映射到储存池中的一个pg,crush算法决定将pg分布到哪些osd。在ceph当中,pg和osd的数量是相关的,设置一个合理的pg数,有助于提高集群的性能
3个osd为例
ps数量= (osd数量*100)/存储池的副本数
300/3=100
pg的数量是2的幂值 128 256(取大不取小)
pg的数量一般是osd数量的一百倍,左右。
(5)存储池,pg和osd之间的关系
- 存储池(pool) 管理数据的基本单位,组成和配置数据的存储和冗余方式
- pg:存储池中的数据被划分成多个pg,每个pg是数据分布的最小单位,pg负责对象存储的位置,通过crush的算法把数据分布到osd
- osd是负责存储的数据的基于物理设备的虚拟概念
3.crush算法
crush算法是ceph自带的一种算法。数据分布的算法,把对象分配到集群的osd节点当中。
crush算法使用hash算法来决定数据的存储位置,确保数据是均匀的分布在集群的osd上。
4.实验
集群的架构