第三阶段基础

时  间:2023年6月25日

参加人:全班人员

内  容:

Ceph分布式存储系统

目录


一个扩展分布式文件系统对象存储系统具有可用性可靠性和可扩展性,可用于存储海量数据

Ceph设计目标是为分布式存储提供一个简单的,易于管理接口。它提供了强大的块存储,文件系统对象存储功能。Ceph存储集群由许多服务器节点组成,每个节点都运行多个进程,这些进程参与文件对象操作

Ceph架构基于扩展RADOS 分布式对象存储系统主要组件包括:

– Monitor(监视器):负责集群状态的维护,包括 OSD 状态、PG 状态、MON 状态等。

– OSD(对象存储守护进程):负责实际的数据存储以及管理数据重复恢复数据平衡。

– Metadata server(元数据服务器):在 CephFS 中使用负责数据的存储和检索

– RADOS Gateway(对象存储网关):提供了对 Ceph 存储集群中的对象的 HTTP REST 接口和 S3 和 Swift 对象访问协议支持

Ceph 的优点之一是高可用性故障转移能力可以很容易地适应硬件故障网络问题而且 Ceph 支持在线扩容和更换硬件,这使得 Ceph 存储集群更具可扩展性

此外,Ceph 的块存储、文件系统和对象存储功能支持快照和克隆,支持租户多用户这使得 Ceph 可以在各种应用场景下广泛使用

总之,Ceph 是一个强大、可扩展、高可用的存储解决方案,是当前流行的联网、云存储和大数据应用的首选技术之一。

1. 数据写入副本

在 Ceph 中,数据写入会被分为多个对象,并为每一份数据创建多个副本以确保数据可靠性可用性每个对象都是一个小的存储单元,其大小通常在 4KB 到 1MB 之间,每个对象都会被划分一个多个 PG(Placement Group)中。

2. Placement Groups(PG):

PG 是一组 OSD 的逻辑集合,每个 PG 由多个 OSD 组成,每个 PG 中都会包含对象的多个备份。PG 的数量是一个可配置参数,它对 Ceph 的存储容量、性能可用性等方面都有影响在数据写入时,Ceph 会根据 PG 的状态来确定最佳的对象的放置位置,从而实现负载均衡和数据冗余

3. OSD 操作

OSD 是 Ceph 存储集群中的最基本的存储单元,每个 OSD 都负责存储一部分对象,并且不断地监控副本的状态,保证数据的可靠性可用性。在数据读取时,客户端会与 OSD 交互,OSD 会在可用的副本中选择一个并返回客户端

4. 节点间的通讯:

在 Ceph 存储集群中,MON(Monitor)和 MDS(Metadata Server)等节点也会在节点间传递数据和元数据,来实现负载均衡和数据冗余。节点间的数据交换和通讯通常基于 CRUSH 算法实现

5. 客户端操作:

客户端通过 Ceph API 或者其他支持 Ceph 协议网络存储设备行数读写请求客户端向 Ceph 集群的 OSD 发送请求然后确定数据的位置,数据封装为对象的形式并在多个 OSD 上存储。

读取时,Ceph 会从备份选择一个进行读取。如果主副本出现故障,Ceph 会从备份选择一个作为新的主副本。在数据写入、副本、以及读写各个操作中,Ceph 会进行数压缩加密

总之,Ceph 通过对象存储方式为分散在网络各个角落的数据提供了通用的快速可靠访问方式,强调数据的可靠性和可用性,提高了数据持久化和维护的数据一致性

RADOS(Reliable Autonomic Distributed Object Store)是 Ceph 存储系统核心组件。它是一个可扩展高性能、分布式的对象存储系统,为应用程序提供了完整的 API,支持块存储、文件系统和对象存储功能。RADOS 主要由 OSD 和 MON 两个子系统组成。

OSD(Object Storage Daemon)是 Ceph 存储系统中存储对象的核心组件,它负责管理物理磁盘、数据的复制恢复、数据迁移和数据重分配任务。在 Ceph 存储系统中,OSD 是最基本的存储单元,每个 OSD 都负责存储数据的一部分,并且不断地监测数据的状态,保证数据的可靠性和可用性。

MON(Monitor)节点是 Ceph 存储系统中的监控节点,它负责维护集群状态、配置信息、数据位置、PG 和 OSD 的映射关系信息监测集群各个节点的运行状态,以便实现自动故障转移和负载均衡,确保系统的高可用性、高可靠性高性能

MDS(Metadata Server)节点是 Ceph 存储系统的元数据服务器,主要用于文件系统(CephFS)的元数据管理查询。它负责维护文件系统目录结构文件属性等元数据信息,并且支持文件锁定、访问控制功能,在分布式文件系统中实现了高性能和高可靠性

RGW(RADOS Gateway)是 Ceph 存储系统的一个组件,为 Amazon S3 和 OpenStack Swift 提供了对象服务接口,支持与这些服务的互操作,同时也支持内部的 RESTful 语义的 API。

RBD(RADOS Block Device)是 Ceph 存储系统的块存储功能,它支持将 RADOS 对象映射为 Linux设备,并提供了可插拔的 QEMU、Libvirt 和 OpenStack 集成,允许将 Ceph 存储提供给云计算虚拟机管理平台

CephFS 是 Ceph 存储系统的分布式文件系统,它支持标准的 POSIX 接口,并提供了高可用性、高扩展性高性能和高可靠性的分布式共享文件系统

    以上是 Ceph 的一些主要组件介绍,它们各自担任着不同的角色和职责,相互协作实现了 Ceph 存储系统的各种功能

(一)架构图

用三台 CentOS 7 服务器(IP 地址为 192.168.1.10、192.168.1.11 和 192.168.1.12)构建 Ceph 存储集群,以下是可能的架构示意图:

    这个架构图包括一个 Gateway 节点(192.168.1.10),两个 OSD 节点 OSD01 和 OSD02(192.168.1.11 和 192.168.1.12),以及一个 MON 节点(192.168.1.10)。每个 OSD 节点都包含一个 Ceph OSD。Gateway 与 MON 节点在同一服务器上,但在实际环境中,它们可以位于不同的服务器上。注意,除了 Gateway 以外,其他节点都是 OSD 节点和 MON 节点共存。

以下是一个比较简单使用 cephdeploy 工具进行 Ceph 集群部署示例步骤假设我们使用 CentOS 7 系统部署 Ceph,且三台服务器的 IP 地址分别是 192.168.1.116192.168.1.122 和 192.168.1.124

在三台服务器上都执行以下操作:

1). 设置主机名

hostnamectl sethostname huyang1 (或者huyang2或者huyang3)

2). 关闭防火墙

为了简化操作,先在所有节点关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

3). 安装 Ceph 包

在所有节点上安装 EPEL yum 仓库然后安装 Ceph 包:

yum install

https://download.ceph.com/rpm-jewel/el7/noarch/cephrelease-1-1.el7.noarch.rpm -y

yum  -y install epelrelease

yum  -y update

yum  -y install ceph ceph-radosgw radosgw-agent

yum -y install ceph-deploy

4).配置免密登录

huyang1:sshkeygen

huyang1:sshcopyid 192.168.1.116

huyang1:sshcopyid 192.168.1.122

huyang1:ssh-copyid 192.168.1.124

5).添加sdb磁盘格式化

huyang1:mkfs.xfs /dev/sdb

huyang2:mkfs.xfs /dev/sdb

huyang3:mkfs.xfs /dev/sdb

6).配置hosts解析文件

7).同步时区

yum -y install ntp

ntpdate ntp1.aliyun.com

在 Ceph 管理节点(如 192.168.1.116)上,创建一个 Ceph 集群,该集群的名称mycluster使用 huyang1 作为 MON 节点。在 Ceph 管理节点(如 192.168.1.116)上执行以下命令

ceph-deploy new huyang1

编辑配置文件ceph.conf,配置集群选项和 OSD 存储路径 vim ceph.conf

修改 ceph.conf 配置文件如下

[global]

fsid = YOUR_FSID_HERE

mon_initial_members = huyang1

public_network = 192.168.1.0/24

# 集群名

cluster = mycluster

# Ceph Monitor 节点

mon host = 192.168.1.116 192.168.1.122 192.168.1.124

# 文件存储部署路径

osd journal size = 1000

osd pool default size = 2

osd objectstore = filestore

filestore_xattr_use_omap = true

osd pool default pg num = 100

osd pool default pgp num = 100

在 Ceph 管理节点(如 192.168.1.116)上,使用 ceph-deploy 工具在 huyang1 上部署 MON 节点:

ceph-deploy install huyang1

ceph-deploy mon create huyang1

 

然后ceph1 的 monitor key 分发到所有节点:

ceph-deploy admin huyang1 huyang2 huyang3

在 OSD 节点(如 192.168.1.122 和 192.168.1.124)上执行以下命令

ceph-deploy install  huyang2    huyang3

使用以下命令将所有节点创建 OSD:

ceph-deploy disk zap huyang2:/dev/sdb

ceph-deploy disk prepare huyang2:/dev/sdb

ceph-deploy osd create huyang2:/dev/sdb

ceph-deploy disk zap huyang3.com:/dev/sdb

ceph-deploy disk prepare huyang3:/dev/sdb

ceph-deploy osd create huyang3:/dev/sdb

在 MDS 节点(如 192.168.1.116)上执行以下命令

ceph-deploy mds create huyang1

在 Ceph 管理节点(如 192.168.1.116)上执行以下命令,检查 Ceph 集群的状态:

ceph -s

 

如果需要增加 MON、OSD 或 MDS 节点,可以将新节点添加hosts 文件然后使用 ceph-deploy 工具进行操作。

以上是一个简单的 Ceph

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注