写点什么

Ceph 在手天下我有!

  • 2022 年 7 月 19 日
  • 本文字数:1985 字

    阅读完需:约 7 分钟

Ceph在手天下我有!

在云计算时代,计算虚拟化、软件定义存储、软件定义网络是 IaaS 的三大基础支柱。目前在软件定义存储市场,很多厂商均有自己的产品。有的基于文件系统,有的基于块设备,有的基于对象存储。在云时代,用户需要云门户来调度底层的各种计算资源(物理机、虚拟机、公有云)和存储资源(SAN、NAS、对象存储),这就需要有一种统一存储平台,通过提供统一接口,同时提供块存储、对象存储和文件系统,与云平台对接。在目前的开源界,能够提供统一的、开源的最著名的分布式存储是 Ceph。

1、Ceph 的背景

2014 年,红帽收购 Inktank(Inktank 主要提供基于 Ceph 的企业级产品)。此次收购后,红帽成为 Ceph 开源社区代码贡献最多的贡献者。Ceph 作为一种存储集群,其支持的节点数量和容量无理论上限,可以多达上百个节点、PB 容量级别。


Ceph 内部是一种对象存储,它对外提供三种访问方式。

  • Object:兼容 Swift 和 S3 的 API,提供对象存储访问方式。

  • Block:支持精简配置、快照、克隆,提供块设备、裸设备访问方式。

  • File:Posix 接口,支持快照,提供文件系统访问方式。

2、Ceph 适用的业务场景

目前企业使用 Ceph 的场景有三类。为 KVM 虚拟化、OpenStack 提供后端存储。为容器云提供后端存储。为 Linux 操作系统(物理机或虚拟机)提供后端存储。

  • IOPS 密集型业务场景:这种场景通常是支撑在虚拟化、私有云上运行数据库。如在 OpenStack 上运行 MySQL、MariaDB 或 PostgreSQL 等。IOPS 密集型业务场景对磁盘的性能要求较高,最好使用全闪架构。如果使用混合架构,机械盘转速需要 1.2 万转/秒,并使用高速盘存储频繁写操作的日志或元数据。

  • 高吞吐量型业务场景:这种场景主要是大块数据传输,如图像、视频、音频文件等。高吞吐量型业务场景对磁盘的要求没有 IOPS 密集型业务场景高,但对网络配置要求较高,同时需要配置 SSD 来处理写日志。

  • 高容量型业务场景:这种场景主要用于存储归档、离线数据。它对磁盘的容量要求较高,对性能无过多要求。写日志也可以存储在 HDD 上。

3、Ceph 的架构

Ceph 存储集群由三类守护进程组成:OSDMonitor Manager

  • OSD:OSD 是 Ceph 存储数据的空间,通常一个 HDD 是一个 OSD,并且不建议做 RAID(独立硬盘冗余阵列)。每个 OSD 有一个 OSD 守护进程。Ceph OSD 利用 Ceph 节点的 CPU、内存和网络资源来执行数据复制、纠删码、数据恢复、监控和报告功能。

  • Monitor:Monitor 负责维护 Ceph 存储集群,主要存储集群中数据的主副本以及存储集群的当前状态。注意,多个 Monitor 的信息需要强一致,因此要求 Monitor 节点之间的系统时间是一致的,并且网络延时要低。

  • Manager:Manager 是 Ceph 12.8 中的新功能,它维护放置组(PG)、进程元数据和主机元数据的详细信息。这部分功能此前由 Monitor 完成(其目的是提高 Ceph 集群的性能)。Manager 可以处理只读 Ceph CLI 查询请求,例如放置组统计信息等。此外,Manager 还提供 RESTful API 监控。


如果要使用 Ceph 文件系统和对象接口,Ceph 集群还需要具备如下节点。

  • 元数据服务器(Metadata Server,MDS):每个 MDS 节点运行 MDS 守护程序(ceph-mds),管理与 Ceph 文件系统(CephFS)上存储的文件相关的元数据。

  • 对象网关:Ceph 对象网关节点上运行 Ceph Rados 网关守护程序(ceph-radosgw)。它是一个构建在 librados 之上的对象存储接口,也是一个为应用程序提供 Ceph 存储集群的 RESTful 网关。Ceph 对象网关支持两个接口:S3 和 OpenStack Swift。


在介绍了 Ceph 的相关背景和架构后,我们介绍 Ceph 的配置规范。

4、Ceph 的配置规范

在介绍了 Ceph 的相关背景和架构后,我们介绍 Ceph 的配置规范。

  • 针对 IOPS 密集型业务场景,服务器配置建议如下

OSD:每个 NVMe SSD 上配置四个 OSD(可以使用 lvm)。

日志:存放于 NVMe SSD。

控制器:使用 Native PCIe 总线。

网络:每 12 个 OSD 配置一个万兆网口。

内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。

CPU:每个 NVMe SSD 消耗 10 CPU 内核。


  • 针对高吞吐量型业务场景,服务器配置建议如下。

OSD:使用 7200 转速的机械盘,每个磁盘为一个 OSD。不需要配置 RAID。

日志:如果使用 SATA SSD,日志容量与 OSD 容量的比率控制在 1:4~5。如果使用 NVMe SSD,则容量比率控制在 1:12~18。

网络:每 12 个 OSD 配置一个万兆网口。

内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。

CPU:每个 HDD 消耗 0.5 CPU 内核。


  • 针对高容量型业务场景,服务器配置建议如下。

OSD:使用 7200 转速的机械盘,每个磁盘为一个 OSD。不需要配置 RAID。

日志:使用 HDD 磁盘。

网络:每 12 个 OSD 配置一个万兆网口。

内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。

CPU:每个 HDD 消耗 0.5 CPU 内核。

除此之外,在选择 Ceph 的硬件时也有一些通用的标准,如 Ceph 节点使用相同的 I/O 控制器、磁盘大小、磁盘转速、网络吞吐量和日志配置。


Ceph 集群包含以下两类网络。

  • 前端公共网络:处理客户端发过去的请求并且与 Ceph Monitor 通信。

  • 后端集群网络:处理 OSD 心跳、副本复制等。

从性能角度考虑,这两类网络最好使用不同的网卡。在上面的 Ceph 安装中,我们将两个网络进行了拆分。


发布于: 刚刚阅读数: 5
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
Ceph在手天下我有!_Ceph_穿过生命散发芬芳_InfoQ写作社区