[单master节点k8s部署]30.ceph分布式存储(一)

ceph是一种分布式存储系统,包括块存储、对象存储和文件系统。

块存储(RBD)

块是一个字节序列,通常包含512个字节。基于块的存储接口是一种数据存储方式,通过将数据划分为块,并通过特定的接口来访问和管理这些数据块,进行高效的数据存储。常见的存储接口包括SCSI、iSCSI和NVMe等。

基于块的存储接口是旋转介质(硬盘、CD等)存储数据最常见的方法。

RADOS :即 Reliable Autonomic Distributed Object Store,是 Ceph 的底层存储系统,提供可靠的对象存储功能。而这里的块存储RBD的意思是RADOS block device。

对象存储

Ceph 的对象存储是基于 RADOS (Reliable Autonomic Distributed Object Store),允许用户通过 RESTful API 访问对象。Ceph 通过 RADOS Gateway 提供兼容 S3 和 Swift 的对象存储接口。
虽然ceph是使用块存储将数据存储在固定大小的块结构中,但是ceph的对象存储允许将数据以对象的形式存储,本质上还是块存储。每个对象包含实际数据及其相关元数据,通常通过唯一的标识符进行访问。对象存储通过 RESTful API(如 S3、Swift)进行访问,适合大规模的非结构化数据存储。在访问对象存储时,不需要通过文件系统查询地址,而是直接使用对象的标识符进行访问。
通过 Ceph 对象网关(radosgw),Ceph 提供了对象存储的功能。对象网关使得用户能够通过 HTTP 接口与 Ceph 存储集群交互,以对象的形式进行数据存储和管理。对象存储允许用户通过唯一标识符(ID)访问对象,而不是使用传统的文件路径。
通过 Ceph 对象网关,Ceph 实现了块存储和对象存储的结合,使用户能够灵活地在不同存储需求之间进行选择。用户可以选择高性能的块存储,也可以选择支持高并发访问和共享的对象存储,而不需要关注底层的存储实现细节。

文件系统(cephfs)

Ceph 文件系统使用与 Ceph 块设备相同的 Ceph 存储集群系统。
用户可以在块设备上创建 xfs 文件系统,也可以创建 ext4 等其他文件系统,Ceph 集群实现 了自己的文件系统来组织管理集群的存储空间,用户可以直接将 Ceph 集群的文件系统挂载 到用户机上使用。
虽然通过组织块设备的存储接口,可以实现高效的数据存取,但是这样组成的文件系统无法进行多处挂载和同时读写,因此有了CephFS文件系统。
Ceph 文件系统(CephFS) 是一个符合 POSIX 标准的文件系统,使用 Ceph 存储集群来存储数据。CephFS 允许多个客户端同时挂载并访问相同的文件系统,这使得它在文件共享和协作应用中表现出色。

Ceph核心组件

OSD

OSD(Object Storage Daemon) 是 Ceph 中负责存储数据的守护进程,每个 OSD 管理一个存储设备(如硬盘或 SSD)并处理数据的读写请求。它执行数据复制、恢复和再平衡操作,同时监控自身健康状态并与其他 OSD 交换心跳信息,以确保集群的稳定性和冗余性。此外,OSD 采用数据条带化存储技术,将数据分割成多个小块并分散存储在不同的 OSD 上,从而提升存储性能和容错能力,确保在部分节点故障时依然可以可靠地访问数据。

在条带化存储中,数据被分割成多个小块(或称为条带),并将这些条带分散存储在不同的 OSD(Object Storage Daemon)上。例如,假设有一个大文件,如果将它分成 4 个部分(条带),这 4 个部分可能分别存储在 4 个不同的 OSD 上。这样做的好处是提高了数据访问的并行性。例如,当一个客户端请求读取这个大文件时,可以同时从多个 OSD 中获取各个部分的数据,从而加快读取速度。

由于数据被分散存储,多个 OSD 可以同时处理 I/O 请求,因此整体的读写性能得到了提升。尤其在大文件存储或高负载情况下,这种并行访问能显著减少延迟。

Monitor(MON)

Ceph Monitor 负责维护集群的全局状态,包括 OSD 节点的状态、认证信息和集群配置。MON 的主要职责是保证 Ceph 集群的正常运行,跟踪集群中的OSD状态,管理集群配置和状态变化,维护CRUSH映射,并为 OSD 和客户端提供集群状态的最新视图。

MDS(Metadata Server)

MDS 是 Ceph 文件系统(CephFS)的元数据服务器,用于管理文件系统中的元数据(如文件名、目录结构、文件权限等)。MDS 管理CephFS的文件和目录结构,允许 CephFS 提供高效的 POSIX 文件系统访问。多个 MDS 可以并行工作,以提高大规模文件系统的元数据性能。

Ceph 对象网关(RADOS Gateway,RGW)

Ceph对象用于访问Ceph的对象存储,RGW 使 Ceph 支持与 Amazon S3 和 OpenStack Swift 兼容的对象存储 API,适合基于 HTTP 的对象存储访问。

CRUSH(Controlled Replication Under Scalable Hashing)算法

CRUSH 是 Ceph 中用于决定数据如何分布在 OSD 上的算法。与传统的中心化映射不同,CRUSH 算法通过分布式的哈希机制将数据智能分布到 OSD 中,使 Ceph 具备高可扩展性和灵活的数据再平衡能力。

  • RADOS 是 Ceph 存储系统的核心,所有的存储操作最终都在 RADOS 中进行。无论是对象存储、块存储还是文件系统,都依赖 RADOS。
  • OSD 负责具体的对象数据存储,是 RADOS 的核心执行单元。
  • MON 维护集群的全局状态并确保集群的一致性。
  • MDS 则负责 CephFS 的元数据管理,专为文件系统提供服务。
  • RGW 提供对象存储接口,允许用户通过 HTTP 协议操作 Ceph 中的对象。
  • CRUSH 算法确保数据分布在 OSD 上时的高可用性和冗余性。
相关推荐
茶杯梦轩1 天前
从零起步学习RabbitMQ || 第三章:RabbitMQ的生产者、Broker、消费者如何保证消息不丢失(可靠性)详解
分布式·后端·面试
可观测性用观测云3 天前
云原生网关 Ingress-Nginx 链路追踪实战:OpenTelemetry 采集与观测云集成方案
nginx·kubernetes
回家路上绕了弯3 天前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
蝎子莱莱爱打怪5 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
初次攀爬者8 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
蝎子莱莱爱打怪8 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
阿里云云原生9 天前
Kubernetes 官方再出公告,强调立即迁移 Ingress NGINX
kubernetes
至此流年莫相忘9 天前
Kubernetes实战篇之配置与存储
云原生·容器·kubernetes
断手当码农9 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
至此流年莫相忘9 天前
Kubernetes实战篇之服务发现
容器·kubernetes·服务发现