ceph文件系统

ceph文件系统:高度可扩展,分布式的存储文件系统,旨在提高性能,高可靠性和高可用的对

象存储,块存储,文件系统的存储。使用分布式的算法保证数据的高可用和一致性。

ceph的组件

1、MON:ceph monitor,负责存储和维护整个ceph集群的状态信息,主要是集群的成员信息,存

储状态和配置数据等等。

  • 确保集群的一致性
  • 处理选举和状态的更新
  • 处理集群内部成员的通信,包括故障转移
  • ceph当中mon至少要有3个节点确保高可用

2、osd:ceph object storage daemon,ceph存储系统的核心组件,负责存储数据,处理

读写请求,数据复制,数据恢复。每个osd节点管理一个或多个硬盘驱动。

  • 存储实际的数据和副本
  • 处理对象级别的数据操作,读、写、删
  • 在节点付账时,进行数据恢复

3、mds:ceph 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数,有助于提高集群的性

能。pg数量=osd数量*100/存储池的副本数,且pg数量应该是2的幂值。以3个osd为例,pg的数量

为128为宜。pg的数量一般是osd数量的一百倍左右。

存储池和、pg和osd之间的关系

1、存储池是管理数据的基本单位,组成和配置数据存储和冗余的方式。

2、存储池中的数据被划分成多个pg,每个pg是数据分布的最小单位,pg负责对象存储的位置,通过crush算法把数据分布到osd。

3、osd是负责存储数据的基于物理设备的虚拟概念。

数据流向

crush算法,ceph自带的一种算法:

数据分布的算法,把对象分配到集群的osd节点当中。

crush算法使用hash算法来决定数据的存储位置,确保数据是均匀的分布在集群的osd上。

存储类型:

对象存储:ceph object storge,云计算的后台的存储方式一般都是用对象存储,基于apt接口,通过http(s)来对目标发起请求的方式获取数据。

块存储 RDB

文件系统 cephfs

ceph的创建

这里我们使用三台服务器完成ceph架构,另一台服务器作为客户端,具体如下

zw4:192.168.254.14,mon osd admin

zw5:192.168.254.15,mon osd

zw6:192.168.254.16,mon osd

zw7:192.168.254.17,客户端

我们这里使用的是ceph17版本:2024 17.2.4依赖于docker、python3和lvm2,所有准备好阿里

源,不要使用ubuntu官方源。

1、使用免交户方式对四台主机名都进行主机映射

2、三台集群主机安装docker

apt -y install docker.io

apt -y install lvm2

安装cephadm并初始化单节点集群(主节点zw4上执行)并编译安装

wget https://mirrors.aliyun.com/ceph/debian-17.2.4/pool/main/c/ceph/cephadm_17.2.4-1focal_amd64.deb

dkpg -i cephadm_17.2.4-1focal_amd64.deb

3、主节点上开启集群初始化

  • --mon-ip:指定mon进程的节点地址,先指定admin节点。
  • --cluster-network:集群网络的地址范围,ceph节点内部通信。
  • --allow-fqdn-hostname:允许ceph集群使用hostname来对节点进行标识,节点之间可以通过主机名进行通信

初始化后得到账户密码以及登录地址,可以登录ceph可视化界面

4、集群和客户端之间免密登录

主节点zw4和其他三台服务器进行ssh免密登录

主节点与另外两台集群主机进行内部ssh免密登录

5、四台主机安装ceph客户端

apt -y install ceph-common

6、添加osd

ceph添加主机名

查看当前Ceph Orchestrator 管理的所有主机信息,包括它们的状态、角色以及其他相关信息

修改mon节点的数量

把zw4、zw5和zw6添加进mon节点

7、三台集群服务器添加硬盘并刷新接口

这里使用命令行刷新,你可以选择重启

for host in /sys/class/scsi_host/host*/scan; do

echo "- - -" | sudo tee $host

done

作为ceph集群的底层的硬盘必须满足两个条件

  • 容量必须要大于5G
  • 不能对硬盘做任何分区和文件系统

8、添加osd硬盘

首先让ceph获取可用的节点并查看

添加osd硬盘

这时候ceph可视化界面显示我们集群搭建成功

ceph的使用

RDB存储方式

ceph RDB:rados block device,主要用于虚拟化环境和数据库。

虚拟化环境:openstack、KVM

数据库:性能高,延迟低的块存储方式

优点:

  • 支持动态扩展
  • 支持快照和克隆

缺点:

  • RBD的方式必须要创建文件系统
  • 使用方式:在云计算的平台经常被使用,尤其是大规模存储和高性能场景。

1、在主节点上创建存储池并给存储池创建类型

  • rdb1:存储池的名称,不能重复
  • 128:pg的数量
  • 128:pgp的数量

查看存储池是否成功,ceph osd pool ls

2、在客户端zw7创建RDB镜像前,先传送主节点的配置文件和秘钥文件给客户端

在客户端上检查是否成功

3、在客户端zw7创建RDB镜像并做映射

  • 镜像是RDB存储的基本单位,是一个虚拟的磁盘。
  • 镜像提供了一个虚拟的块设备的接口,可以挂载的方式进行使用。
  • 创建RDB镜像,实际上就是类似磁盘的一个分区

做映射之后,会虚拟出一个逻辑上的硬盘rbd0,接下来要创建文件系统,然后挂载才可以使用。

4、在客户端创建文件系统、挂载使用

mkfs.ext4 /dev/rbd0 #创建文件系统

mount /dev/rbd0 /data/ #挂载

创建一个100M的文件

这时候我们发现这个文件已经开始占用存储池的空间了

cephfs的存储方式

cephfs是分件系统分布存储方式,基于内核是实现共享文件的存储方式

大数据存储,文件服务器(文件共享,企业的镜像服务器)

优点:内核兼容,NFS方式也可以实现,部署速度较快。跨节点实现

缺点:配置比RBD的比较复杂,在集群群当中比较复杂。

ceph需要两个存储池:

数据池:cephfs.data,用来存储数据,这是根据osd的数量和总空间的大小,创建cephfs的时候,系统自动分配给cephfs文件系统的大小,按照一般情况是总大小的三分之一。

元数据池:cephfs.meta,保存数据的元信息。

1、在主节点上创建cephfs的存储池

可以看出有两个cephfs存储池

查看cephfs存储池的名称和状态

2、在客户端挂载使用

首先在客户端上获取密钥对,ceph auth get-key client.admin

挂载

创建一个100M的文件

这时候我们发现这个文件已经开始占用存储池的空间了

ceph的nfs方式

1、在主节点创建一个nfs服务和一个池

ceph orch apply nfs nfs-share

ceph osd pool create nfs-pools

查看集群当中所有的存储池,ceph osd lspools

2、创建一个nfs的高可用名字是my-nfs,分别运行在zw4,再加入zw5和zw6

ceph orch apply nfs my-nfs nfs-pools --placement="zw5,zw6"

回到ceph的可视化界面,创建NFS

3、客户端挂载使用

mount -t ceph 192.168.254.14:6789,192.168.254.15:6789,192.168.254.16:6789:/ /data2 -o name=admin,secret=AQBTVXdnKEBBKRAA4pFJAA5oG4FwuEIkONCaNg==

可以发现使用nfs的挂载目录和cephfs数据池挂载的大小和可用空间都一样,是因为通过nfs的挂载

方式,依然使用的cephfs.data的数据空间,文件实际上还是存储在cephfs.data的数据池当中。

ceph object storge 对象存储

云计算的后台的存储方式一般都是用对象存储。

对象存储:高扩展,处理文件的级别可以达到PB级别。

缺点:如果数据量不是特别的巨大,一般不需要该场景。

总结

ceph需要使用分布式文件系统的企业一般都是需要存储海量数据,以及保证数据的高可用非常严谨的场景。ceph的存储方式的数据流向:主要包括存储池、pg和osd

创建存储池,分配pg

数据按照对象分配给pg

pg再数据包分配到osd

相关推荐
AOwhisky7 小时前
Ceph系列第三期:Ceph 集群核心配置与管理
linux·运维·数据库·笔记·ceph
AOwhisky11 小时前
Ceph系列第五期:Ceph 对象存储(RADOS Gateway)精讲
linux·运维·笔记·ceph·gateway·对象存储
AOwhisky12 小时前
Ceph系列第四期:Ceph块存储(RBD)精讲
linux·运维·笔记·ceph·云计算·rbd
三十..2 天前
Ceph分布式存储核心技术精要与运维实践指南
运维·分布式·ceph
一个行走的民2 天前
Ceph OSD NUMA 亲和性、Page Cache 跨 NUMA 访问与绑核实践
ceph
潮起鲸落入海2 天前
ceph集群组件管理 ceph orch 和ceph config命令
ceph
bukeyiwanshui2 天前
20260529 Ceph 分布式存储 认证和授权管理
ceph
bukeyiwanshui2 天前
20260528 Ceph 分布式存储 池管理
ceph
一个行走的民2 天前
CephX 认证机制深度解析
ceph
马立杰2 天前
Ceph 集群手动部署
ceph·分布式存储